tizen 2.3.1 release tizen_2.3.1 submit/tizen_2.3.1/20150915.100243 tizen_2.3.1_release
authorjk7744.park <jk7744.park@samsung.com>
Tue, 8 Sep 2015 17:24:00 +0000 (02:24 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Tue, 8 Sep 2015 17:24:00 +0000 (02:24 +0900)
246 files changed:
AUTHORS
COPYING
ChangeLog
Makefile.DOS
Makefile.am
Makefile.ami
Makefile.in
NEWS
NMakefile
README
README.Amiga
README.DOS
README.OS2
README.W32
README.customs
SMakefile
acinclude.m4
aclocal.m4
amiga.c
amiga.h
ansi2knr.1 [deleted file]
ansi2knr.c [deleted file]
ar.c
arscan.c
build.sh.in
build_w32.bat
commands.c
commands.h
config.ami
config.h-vms
config.h.W32
config.h.in
config/ChangeLog
config/Makefile.am
config/Makefile.in
config/compile
config/config.guess
config/config.sub
config/depcomp
config/dospaths.m4
config/install-sh
config/mdate-sh
config/missing
config/texinfo.tex
configh.dos
configure
configure.bat
configure.in
debug.h
default.c
dep.h
dir.c
doc/Makefile.am
doc/Makefile.in
doc/fdl.texi
doc/make-stds.texi
doc/make.info
doc/make.info-1
doc/make.info-2
doc/make.texi
doc/stamp-vti
doc/version.texi
dosbuild.bat
expand.c
file.c
filedef.h
function.c
getloadavg.c
getopt.c
getopt.h
getopt1.c
gettext.h
glob/ChangeLog
glob/Makefile.am
glob/Makefile.ami
glob/Makefile.in
glob/SMakefile
glob/configure.bat
glob/fnmatch.c
glob/fnmatch.h
glob/glob.c
glob/glob.h
hash.c
hash.h
implicit.c
job.c
job.h
main.c
make.1
make.h
makefile.com
makefile.vms
misc.c
packaging/Makefile [deleted file]
packaging/make-3.79.1-noclock_gettime.patch [deleted file]
packaging/make-3.80-getcwd.patch [deleted file]
packaging/make-3.80-j8k.patch [deleted file]
packaging/make-3.81-err-reporting.patch [deleted file]
packaging/make-3.81-jobserver.patch [deleted file]
packaging/make-3.81-memory.patch [deleted file]
packaging/make-3.81-newlines.patch [deleted file]
packaging/make-3.81-rlimit.patch [deleted file]
packaging/make-Force-intermediate-targets-to-be-considered-if-their.patch [new file with mode: 0644]
packaging/make-disable-broken-tests.diff [new file with mode: 0644]
packaging/make-fix_whitespace_tokenization.diff [new file with mode: 0644]
packaging/make-glob-faster.patch [new file with mode: 0644]
packaging/make-library-search-path.diff [new file with mode: 0644]
packaging/make-savannah-bug30612-handling_of_archives.diff [new file with mode: 0644]
packaging/make-savannah-bug30723-expand_makeflags_before_reexec.diff [new file with mode: 0644]
packaging/make-slowdown-parallelism.diff [new file with mode: 0644]
packaging/make.changes [deleted file]
packaging/make.manifest [deleted file]
packaging/make.spec
packaging/make.yaml [deleted file]
po/ChangeLog
po/LINGUAS
po/Makevars
po/POTFILES.in
po/be.gmo
po/be.po
po/da.gmo
po/da.po
po/de.gmo
po/de.po
po/es.gmo
po/es.po
po/fi.gmo
po/fi.po
po/fr.gmo
po/fr.po
po/ga.gmo
po/ga.po
po/gl.gmo
po/gl.po
po/he.gmo
po/he.po
po/hr.gmo
po/hr.po
po/id.gmo
po/id.po
po/it.gmo [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.gmo
po/ja.po
po/ko.gmo
po/ko.po
po/lt.gmo [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/make.pot
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/pt_BR.gmo
po/pt_BR.po
po/ru.gmo
po/ru.po
po/rw.gmo [deleted file]
po/rw.po [deleted file]
po/sv.gmo
po/sv.po
po/tr.gmo
po/tr.po
po/uk.gmo
po/uk.po
po/vi.gmo
po/vi.po
po/zh_CN.gmo
po/zh_CN.po
read.c
readme.vms
remake.c
remote-cstms.c
remote-stub.c
rule.c
rule.h
signame.c
strcache.c
subproc.bat
tests/COPYING
tests/ChangeLog
tests/NEWS
tests/README
tests/mkshadow
tests/run_make_tests.pl
tests/scripts/features/echoing
tests/scripts/features/export
tests/scripts/features/include
tests/scripts/features/override
tests/scripts/features/parallelism
tests/scripts/features/patspecific_vars
tests/scripts/features/patternrules
tests/scripts/features/recursion
tests/scripts/features/se_explicit
tests/scripts/features/se_implicit
tests/scripts/features/se_statpat
tests/scripts/features/targetvars
tests/scripts/features/vpath
tests/scripts/features/vpath3 [new file with mode: 0644]
tests/scripts/functions/eval
tests/scripts/functions/shell
tests/scripts/functions/wildcard
tests/scripts/misc/close_stdout
tests/scripts/misc/general4
tests/scripts/options/dash-B
tests/scripts/options/dash-l
tests/scripts/options/eval [new file with mode: 0644]
tests/scripts/targets/ONESHELL [new file with mode: 0644]
tests/scripts/targets/POSIX [new file with mode: 0644]
tests/scripts/targets/SECONDARY
tests/scripts/variables/DEFAULT_GOAL
tests/scripts/variables/LIBPATTERNS [new file with mode: 0644]
tests/scripts/variables/MAKE
tests/scripts/variables/MAKEFILES
tests/scripts/variables/MAKEFLAGS [new file with mode: 0644]
tests/scripts/variables/SHELL
tests/scripts/variables/automatic
tests/scripts/variables/define [new file with mode: 0644]
tests/scripts/variables/flavors
tests/scripts/variables/private [new file with mode: 0644]
tests/scripts/variables/special
tests/scripts/variables/undefine [new file with mode: 0644]
tests/test_driver.pl
variable.c
variable.h
version.c
vmsdir.h
vmsfunctions.c
vmsify.c
vmsjobs.c
vpath.c
w32/Makefile
w32/Makefile.am
w32/Makefile.in
w32/compat/dirent.c
w32/include/dirent.h
w32/include/pathstuff.h
w32/include/sub_proc.h
w32/include/w32err.h
w32/pathstuff.c
w32/subproc/NMakefile
w32/subproc/build.bat
w32/subproc/misc.c
w32/subproc/proc.h
w32/subproc/sub_proc.c
w32/subproc/w32err.c

diff --git a/AUTHORS b/AUTHORS
index 10c9258..8de80e6 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -60,23 +60,24 @@ Other contributors:
   Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
   Carl Staelin (Princeton University)
   Ian Stewartson (Data Logic Limited)
+  Ramon Garcia Fernandez <ramon.garcia.f@gmail.com>
 
 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.
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/COPYING b/COPYING
index a3f6b12..94a9ed0 100644 (file)
--- a/COPYING
+++ b/COPYING
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          59 Temple Place - Suite 330, Boston, MA
-                          02111-1307, USA.
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-                           Preamble
+                            Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
 price.  Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
   For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
 this License.
 
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
 be similar in spirit to the present version, but may differ in detail to
 address new problems or concerns.
 
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-       Appendix: How to Apply These Terms to Your New Programs
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -288,15 +628,15 @@ free software which everyone can redistribute and change under these terms.
 
   To do so, attach the following notices to the program.  It is safest
 to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
+state the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
+    Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    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 of the License, or
+    the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -305,36 +645,30 @@ the "copyright" line and a pointer to where the full notice is found.
     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.
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
index df6a509..d135d1c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2010-07-28  Paul Smith  <psmith@gnu.org>
+
+       Version 3.82 released.
+
+       * configure.in: Change release version.
+       * NEWS: Change the date.
+
+       * read.c (parse_file_seq): Remove GLOB_NOSORT for
+       backward-compatibility.  We'll add it back in next release.
+       * NEWS: Note it.
+
+2010-07-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
+       format.
+
+2010-07-18  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Switch bsd_signal to AC_CHECK_DECLS() to make sure
+       we have a declaration.  Fixes Savannah bug #25713 (maybe?)
+       * doc/make.texi (Complex Makefile): Cleanup variable assignments.
+       (One Shell): New subsection for the .ONESHELL special target.
+
+       Patches by Ozkan Sezer <sezeroz@gmail.com>:
+
+       * misc.c (strncasecmp): Local implementation for systems without.
+       * config.h.W32.template (HAVE_STRNICMP): Define on Windows.
+       * configure.in: Check for strncasecmp/strncmpi/strnicmp.
+       * job.c [WINDOWS32]: Don't define dup2 on Windows.
+       (pid2str): Use "%Id" even with MSVC
+       (exec_command): Cast to pid_t when calling pid2str().
+       * w32/subproc/sub_proc.c [WINDOWS32]: Include config.h first.
+       Use stddef.h on MSVC to get intptr_t.
+       * w32/subproc/misc.c [WINDOWS32]: Include config.h first.
+       * w32/compat/dirent.c [WINDOWS32]: Include config.h first.
+       (readdir): Cast -1 to correct type for d_ino.
+       * w32/pathstuff.c [WINDOWS32]: Ensure make.h is included first.
+       * make.h [WINDOWS32]: Don't prototype alloca() on Windows.
+       Add configuration for strncasecmp().
+       * main.c (ADD_SIG) [WINDOWS32]: Avoid warnings in MSVC.
+       * config.h.W32.template [WINDOWS32]: Don't warn on unsafe
+       functions or variables.
+       * NMakefile.template [WINDOWS32]: Remove /MACHINE:I386.
+       * main.c (clean_jobserver): Cast due to MSVC brokenness.
+       (decode_switches): Ditto.
+       * vpath.c (construct_vpath_list): Ditto.
+       * rule.c (freerule): Ditto.
+       * ar.c (ar_glob): Ditto.
+
+2010-07-16  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * misc.c (concat): Fix buffer overrun.
+
+2010-07-12  Paul Smith  <psmith@gnu.org>
+
+       Update copyrights to add 2010.
+
+       * build_w32.bat: Support for MSVC Windows x86_64 builds.
+       * job.c: Don't define execve() on MSVC/64bit.
+       Patch by Viktor Szakats.  Fixes Savannah bug #27590.
+
+2010-07-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * make.h (alloca) [!__GNUC__]: Don't define prototype.
+       (int w32_kill): Use pid_t for process ID argument.
+       Fixes Savannah bug #27809.
+
+2010-07-12  Paul Smith  <psmith@gnu.org>
+
+       Integrated new .ONESHELL feature.
+       Patch by David Boyce <dsb@boyski.com>.  Modified by me.
+
+       * NEWS: Add a note about the new feature.
+       * job.c (is_bourne_compatible_shell): Determine whether we're
+       using a standard POSIX shell or not.
+       (start_job_command): Accept '-ec' as POSIX shell flags.
+       (construct_command_argv_internal): If one_shell is set and we are
+       using a POSIX shell, remove "interior" prefix characters such as
+       "@", "+", "-".  Also treat "\n" as a special character when
+       choosing the slow path, if ONESHELL is set.
+       * job.h (is_bourne_compatible_argv): Define the new function.
+
+       * make.h (one_shell): New global variable to remember setting.
+       * main.c: Declare it.
+       * read.c (record_files): Set it.
+       * commands.c (chop_commands): If one_shell is set, don't chop
+       commands into multiple lines; just keep one line.
+
+2010-07-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/subproc/sub_proc.c: Include stdint.h.
+       (sub_process_t): Use intptr_t for file handles and pid_t for
+       process ID.
+       (process_pipes, process_init_fd, process_begin): Use intptr_t for
+       file handles and pid_t for process ID.  Fixes Savannah bug #27809.
+       Patch by Ozkan Sezer <sezeroz@gmail.com>
+
+       * function.c (abspath): Support absolute file names in UNC format.
+       Fixes Savannah bug #30312.
+
+       * job.c (pid2str) [WINDOWS32]: Don't use %Id with GCC < 4.x.
+       (exec_command) [WINDOWS32]: Use pid2str instead of non-portable
+       %Id.
+
+       * main.c (handle_runtime_exceptions): Use %p to print addresses,
+       to DTRT on both 32-bit and 64-bit hosts.  Savannah bug #27809.
+
+       * job.c (w32_kill, start_job_command, create_batch_file): Use
+       pid_t for process IDs and intptr_t for the 1st arg of
+       _open_osfhandle.
+       * function.c (windows32_openpipe): Use pid_t for process IDs and
+       intptr_t for the 1st arg of _open_osfhandle.
+       (func_shell): Use pid_t for process IDs.
+       * main.c (main) [WINDOWS32]: Pacify the compiler.
+       * config.h.W32.template (pid_t): Add a definition for 64-bit
+       Windows builds that don't use GCC.  Fixes Savannah bug #27809.
+       Patch by Ozkan Sezer <sezeroz@gmail.com>
+
+2010-07-07  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Bump to a new prerelease version 3.81.91.
+
+2010-07-06  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Set a default value of "-c" for .SHELLFLAGS.
+       * NEWS: Mention the new behavior of .POSIX and the new .SHELLFLAGS
+       variable.
+       * job.c (construct_command_argv): Retrieve the .SHELLFLAGS value
+       and pass it to construct_command_argv_internal().
+       (construct_command_argv_internal): If .SHELLFLAGS is non-standard
+       use the slow path.  Use that value instead of hard-coded "-c".
+
+2010-07-05  Paul Smith  <psmith@gnu.org>
+
+       * implicit.c (pattern_search): lastslash can be const.
+       * dir.c (downcase): Remove unused variable.
+       * hash.c (hash_init): Cast sizeof for error message.
+       * arscan.c (ar_scan): Cast to char* for WINDOWS32.
+       (ar_member_touch): Ditto.
+       * ar.c (glob_pattern_p): Avoid symbol collision: open -> opened
+       * signame.c (strsignal): Ditto: signal -> sig
+       * job.c (create_batch_file): Ditto: error -> error_string
+       (pid2str): Portably convert a pid_t into a string
+       (reap_children): Use it.
+       (start_waiting_job): Use it.
+       Savannah bug #27809.  Patch by Ozkan Sezer <sezeroz@gmail.com>
+
+2010-07-03  Paul Smith  <psmith@gnu.org>
+
+       * read.c (parse_file_seq): All archive groups must end with ')' as
+       the LAST character in a word.  If there is no word ending in ')'
+       then it's not an archive group.  Fixes Savannah bug #28525.
+
+2010-07-01  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Append optional features using separate calls.
+       Not as efficient but not all compilers allow conditionals inside
+       macro calls.  Fixes Savannah bug #29244.
+
+2010-01-10  Paul Smith  <psmith@gnu.org>
+
+       * make.h (patheq): Rename strieq() to patheq() for clarity.
+       * dir.c (dir_contents_file_exists_p): Use it.
+
+       * dir.c (file_impossible): Convert xmalloc/memset to xcalloc.
+       * file.c (enter_file): Ditto.
+       * job.c (new_job): Ditto.
+
+2009-12-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (construct_command_argv_internal) <sh_cmds_dos>
+       [WINDOWS32]: Add "echo." and a few more commands that are built
+       into cmd.exe.  Fixes Savannah bug #28126.
+
+       * file.c (lookup_file) [HAVE_DOS_PATHS]: Treat '\\' like we do
+       with '/'.
+
+2009-11-15  Paul Smith  <psmith@gnu.org>
+
+       Patches for VMS provided by Hartmut Becker <Hartmut.Becker@hp.com>
+
+       * vmsjobs.c (ctrlYPressed) [VMS]: Deal with CTRL-Y.
+       (vmsHandleChildTerm) [VMS]: Ditto.
+       (astYHandler) [VMS]: Ditto.
+       (tryToSetupYAst) [VMS]: Ditto.
+       (child_execute_job) [VMS]: Ditto.
+
+       * vmsify.c (trnlog) [VMS]: Fix const errors.
+       (vmsify) [VMS]: Ditto.
+
+       * readme.vms [VMS]: Update with notes for 3.82.
+
+       * job.h (comname) [VMS]: Remember the temporary command filename
+
+       * dir.c (vmsify) [VMS]: Fix const errors.
+       (vms_hash) [VMS]: Ditto.
+       (vmsstat_dir) [VMS]: Ditto.
+       (find_directory) [VMS]: Fix case-insensitive option for VMS
+       (dir_contents_file_exists_p) [VMS]: Ditto.
+       (file_impossible) [VMS]: Ditto.
+
+       * config.h-vms.template (HAVE_FDOPEN) [VMS]: Have it.
+       (HAVE_STRCASECMP) [VMS]: Ditto.
+
+       * arscan.c (VMS_get_member_info) [VMS]: Fix timezone computation.
+       (ar_scan) [VMS]: Fix const error.
+
+2009-11-12  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * vpath.c (vpath_search, selective_vpath_search): Add index arguments
+       which allows the caller to get the index of the matching directory.
+
+       * make.h (vpath_search): Update prototype.
+
+       * remake.c (library_search): Implement linker-compatible library
+       search. Use the new VPATH_SEARCH index functionality to keep track
+       of the directory index for each match. Select the match with the
+       lowest directory index.
+
+       * implicit.c (pattern_search): Pass NULL for the index arguments in
+       the VPATH_SEARCH call.
+
+       * doc/make.texi (Directory Search for Link Libraries): Describe the
+       new search behavior.
+
+       * NEWS: Add a note about the new behavior.
+
+2009-10-25  Paul Smith  <psmith@gnu.org>
+
+       * AUTHORS, et.al.: Update copyright years.
+
+       * implicit.c (stemlen_compare): Fix qsort() compare bug that
+       caused implicit rules with equal stem lengths to be sorted
+       indeterminately.
+
+2009-10-24  Paul Smith  <psmith@gnu.org>
+
+       * main.c (usage): Add --eval to the usage string.
+       (switches): Add the --eval switch.
+       (main): If --eval is given, add them to the simply-expanded variable
+       -*-eval-flags-*- (necessary to allow recursion to work properly).
+       (define_makeflags): Add -*-eval-flags-*- to MAKEFLAGS.
+
+       * NEWS: Describe the new --eval command line argument.
+       * doc/make.texi (Options Summary): Document --eval.
+
+       * dep.h: eval_buffer() returns void.
+       * read.c (eval_buffer): Ditto.
+       (eval): Ditto.
+
+       * variable.h (define_variable_cname): New macro for constant
+       variable names.
+       * default.c (set_default_suffixes): Use it.
+       * main.c (main): Ditto.
+       (handle_non_switch_argument): Ditto.
+       (define_makeflags): Ditto.
+       * read.c (read_all_makefiles): Ditto.
+       * variable.c (define_automatic_variables): Ditto.
+
+       * commands.c (dep_hash_cmp): Avoid casts.
+       (dep_hash_1): Ditto.
+       (dep_hash_2): Ditto.
+
+2009-10-22  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * read.c (read_all_makefiles): Mark the default makefile dependency
+       dontcare.
+
+2009-10-07  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * read.c (do_undefine): Free the expanded variable name.
+
+       * commands.c (dep_hash_cmp, set_file_variables): Move the order-only
+       to normal upgrade logic from  dep_hash_cmp to set_file_variables.
+
+2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * dep.h (uniquize_deps): Remove.
+
+       * read.c (uniquize_deps): Merge into set_file_variables in
+       commands.c.
+       (dep_hash_1, dep_hash_2, dep_hash_cmp): Move to commands.c.
+
+       * commands.c (set_file_variables): Avoid modifying the dep
+       chain to achieve uniqueness. Fixes savannah bug 25780.
+
+       * implicit.c (pattern_search): Instead of re-setting all automatic
+       variables for each rule we try, just update $*.
+
+2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * variable.h (undefine_variable_in_set): New function declaration.
+       (undefine_variable_global): New macro.
+
+       * variable.c (undefine_variable_in_set): New function implementation.
+
+       * read.c (vmodifiers): Add undefine_v modifier.
+       (parse_var_assignment): Parse undefine.
+       (do_undefine): Handle the undefine directive.
+       (eval): Call do_undefine if undefine_v is set.
+
+       * main.c (.FEATURES): Add a keyword to indicate the new feature.
+
+       * doc/make.texi (Undefine Directive): Describe the new directive.
+
+       * NEWS: Add a note about the new directive.
+
+2009-10-05  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * implicit.c (pattern_search): Initialize file variables only
+       if we need to parse a rule that requires the second expansion.
+
+2009-10-03  Paul Smith  <psmith@gnu.org>
+
+       * make.h: Include <alloca.h> even on systems where __GNUC__ is
+       defined.  Not sure why it was done the other way.
+       Requested by David Boyce <dsb@boyski.com>.
+
+2009-09-30  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * dep.h (dep): Add the DONTCARE bitfield.
+
+       * filedef.h (file):Add the NO_DIAG bitfield.
+
+        * read.c (eval_makefile): Set the DONTCARE flag in struct dep,
+       not struct file (a file can be a dependency of many targets,
+       some don't care, some do).
+
+       * remake.c (update_goal_chain): Propagate DONTCARE from struct
+       dep to struct file before updating the goal and restore it
+       afterwards.
+       (update_file): Don't prune the dependency graph if this target
+       has failed but the diagnostics hasn't been issued.
+       (complain): Scan the file's dependency graph to find the file
+       that caused the failure.
+       (update_file_1): Use NO_DIAG instead of DONTCARE to decide
+       whether to print diagnostics.
+
+       Fixes Savannah bugs #15110, #25493, #12686, and #17740.
+
+2009-09-28  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Pattern Intro): Move the match algorithm
+       discussion into the "Pattern Match" node.
+       (Pattern Match): Expand on the pattern rule matching algorithm.
+
+2009-09-28  Andreas Buening  <andreas.buening@nexgo.de>
+
+       * job.c (construct_command_argv_internal) [OS2]: Don't eat too
+       much of the command line on a single pass.
+
+2009-09-28  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * varible.c (create_pattern_var): Insert variables into the
+       PATTERN_VARS list in the shortest patterns first order.
+
+       * implicit.c (tryrule): Add STEMLEN and ORDER members. These are
+       used to sort the rules.
+       (stemlen_compare): Compare two tryrule elements.
+       (pattern_search): Sort the rules so that they are in the shortest
+       stem first order.
+
+       * main.c (.FEATURES): Add a keyword to indicate the new behavior.
+
+       * doc/make.texi (Pattern-specific Variable Values): Describe the
+       new pattern-specific variables application order.
+       (Introduction to Pattern Rules): Describe the new pattern rules
+       search order.
+
+       * NEWS: Add a note about the new behavior.
+
+2009-09-27  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Double-Colon): Mention that pattern rules with
+       double-colons have a different meaning.  Savannah bug #27497.
+
+2009-09-27  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       * configh.dos.template: Remove unconditional definition of
+       SYS_SIGLIST_DECLARED.
+       Include <sys/version.h> because ports of GCC 4.3.0 and later no
+       longer include it, so macros like __DJGPP_MINOR__ are no longer
+       defined automatically.
+
+       * Makefile.DOS.template (INCLUDES): Use $(prefix) and the
+       corresponding variables to define LIBDIR, INCLUDEDIR and LOCALEDIR
+       instead of using the hardcoded ones.
+       (SUBDIRS): doc subdir added.
+       (INFO_DEPS, DVIS): Values changed to 'make.info' and 'make.dvi'.
+       (TEXI2HTML, TEXI2HTML_FLAGS): Removed.  Use makeinfo --html to
+       create html formated docs.  texi2html may not be ported to DOS.
+       (make.info, make.dvi, make.ps, make.html): Make targets depend on
+       'make.texi'.
+       (.texi.info, .texi, .texi.dvi): Now invoked recursively.  Change
+       -I switch to look in ./ instead of ./doc.
+       (html): Target depend on html-recursive instead of make_1.html.
+       (make_1.html): Removed.
+       (mostlyclean-aminfo): Use $(srcdir)/doc instead of ./ as prefix.
+       (all-recursive): Allow for more than one subdir in the build
+       process.
+       (mostlyclean-recursive, clean-recursive, distclean-recursive)
+       (maintainer-clean-recursive, check-recursive): Enter in doc/ too.
+       (tags-recursive): Allow for more than one subdir in the build
+       process.
+       (info-recursive, dvi-recursive, ps-recursive, html-recursive): New
+       targets.  Enter into doc/ to produce the targets.
+       (all-am): $(INFO_DEPS) replaced by info.
+
+2009-09-26  Paul Smith  <psmith@gnu.org>
+
+       * read.c (record_files): Use free_ns() to free struct nameseq.
+       (eval): Ditto.
+
+       * rule.c (freerule): Use free_dep_chain().
+
+       * read.c (record_files): Free FILENAMES chain for implicit rules.
+       (eval): Static pattern targets go into the string cache.
+
+       * function.c (string_glob): Free NAME in the nameseq chain.
+
+2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * implicit.c (pattern_search): Terminate early if we haven't
+       found any rules to try (performance improvement).
+
+2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * implicit.c (pattern_search): Merge three parallel arrays,
+       TRYRULES, MATCHES, and CHECKED_LASTSLASH, into one array
+       of struct TRYRULE. In the old version the latter two arrays
+       had insufficient length.
+
+2009-09-24  Paul Smith  <psmith@gnu.org>
+
+       * implicit.c (pattern_search): Add back support for order-only
+       prerequisites for secondary expansion implicit rules, that were
+       accidentally dropped.  If we find a "|", enable order-only mode
+       and set IGNORE_MTIME on all deps that are seen afterward.
+       (pattern_search): Fix memory leaks: for intermediate files where
+       we've already set the file variable and pattern variable sets, be
+       sure to either save or free them as appropriate.
+
+2009-09-23  Paul Smith  <psmith@gnu.org>
+
+       Rework the way secondary expansion is stored, for efficiency.
+       This changes secondary expansion so that ONLY WHEN we know we have
+       a possibility of needing secondary expansion, do we defer the
+       secondary expansion.  This means more parsing the deps but we use
+       a lot less memory (due to the strcache).  Also, this fixes
+       Savannah bug #18622.
+
+       * read.c (eval): Don't parse the dep string here anymore.
+       (record_files): Take the dep argument as an unparsed string.  If
+       secondary expansion is enabled AND the prereq string has a '$' in
+       it, then set NEED_2ND_EXPANSION and keep the entire string.
+       Otherwise, parse the dep string here to construct the dep list
+       with the names in the strcache.
+
+       * misc.c (copy_dep_chain): For NEED_2ND_EXPANSION, we need to
+       duplicate the name string (others are in the strcache).
+
+       * implicit.c: Remove struct idep and free_idep_chain(): unused.
+       (struct patdeps): New structure to store prereq information.
+       (pattern_search): Use the NEED_2ND_EXPANSION flag to determine
+       which prerequisites need expansion, and expand only those.
+
+       * file.c (split_prereqs): Break parse_prereqs() into two parts: this
+       and enter_prereqs().  split_prereqs() takes a fully-expanded string
+       and splits it into a DEP list, handling order-only prereqs.
+       (enter_prereqs): This function enters a list of DEPs into the file
+       database.  If there's a stem defined, expand any pattern chars.
+       (expand_deps): Only try to expand DEPs which have NEED_2ND_EXPANSION
+       set.  Use the above functions.
+       (snap_deps): Only perform second expansion on prereqs that need it,
+       as defined by the NEED_2ND_EXPANSION flag.
+       (print_prereqs): New function to print the prereqs
+       (print_file): Call print_prereqs() rather than print inline.
+
+       * hash.h (STRING_COMPARE): Take advantage of strcache() by
+       comparing pointers.
+       (STRING_N_COMPARE): Ditto.
+       (ISTRING_COMPARE): Ditto.
+
+       * dep.h (PARSE_FILE_SEQ): New macro to reduce casts.
+       (parse_file_seq): Return void*
+       * read.c (parse_file_seq): Return void*.
+       (eval): Invoke macroized version of parse_file_seq()
+       * default.c (set_default_suffixes): Ditto.
+       * file.c (split_prereqs): Ditto.
+       * function.c (string_glob): Ditto.
+       * main.c (main): Ditto.
+       * rule.c (install_pattern_rule): Ditto.
+
+       * filedef.h: Add split_prereqs(), enter_prereqs(), etc.
+
+2009-09-16  Paul Smith  <psmith@gnu.org>
+
+       * misc.c (alloc_dep, free_dep): Now that we have xcalloc(),
+       convert to macros.
+       * dep.h: Create alloc_dep() / free_dep() macros.
+
+       * implicit.c (pattern_search): Take advantage of the new
+       parse_file_seq() to add the directory prefix to each prereq.
+
+       * dep.h: Remove multi_glob() and enhance parse_file_seq() to do it
+       all.  Avoid reversing chains.  Support adding prefixes.
+       * read.c (parse_file_seq): Rewrite to support globbing.  Allow for
+       cached/non-cached results.
+       (eval): Remove multi_glob() & invoke new parse_file_seq().
+       * rule.c (install_pattern_rule): Ditto.
+       * main.c (main): Ditto.
+       * implicit.c (pattern_search): Ditto.
+       * function.c (string_glob): Ditto.
+       * file.c (parse_prereqs): Ditto.
+       * default.c (set_default_suffixes): Ditto.
+
+       * variable.c (parse_variable_definition): Don't run off the end of
+       the string if it ends in whitespace (found with valgrind).
+
+       * commands.c (set_file_variables): Keep space for all targets in
+       $? if -B is given (found with valgrind).
+
+2009-09-15  Paul Smith  <psmith@gnu.org>
+
+       * misc.c (concat): Make concat() variadic so it takes >3 arguments.
+       (xcalloc): Add new function.
+       * make.h: New declarations.
+
+       * ar.c (ar_glob_match): New calling method for concat().
+       * main.c (main): Ditto.
+       (decode_env_switches): Ditto.
+       * read.c (eval_makefile): Ditto.
+       (tilde_expand): Ditto.
+       (parse_file_seq): Ditto.
+       * variable.c (target_environment): Ditto.
+       (sync_Path_environment): Ditto.
+
+       * ar.c (ar_glob_match): Use xcalloc().
+       * dir.c (file_impossible): Ditto.
+       * file.c (enter_file): Ditto.
+       * job.c (new_job): Ditto.
+       * read.c (parse_file_seq): Ditto.
+       * vmsfunctions.c (opendir): Ditto.
+
+2009-09-14  Rafi Einstein  <rafi.einstein@gmail.com>  (tiny patch)
+
+       * w32/subproc/sub_proc.c (process_begin): Check *ep non-NULL
+       inside the loop that looks up environment for PATH.
+
+2009-08-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (windows32_openpipe): Update envp after calling
+       sync_Path_environment.
+
+2009-08-02  Paul Smith  <psmith@gnu.org>
+
+       * remake.c (notice_finished_file): Ensure file->cmds is not null
+       before looping through them.  Fixes Savannah bug #21824.
+
+       * doc/make.texi (Wildcard Examples): Clarify when objects is
+       wildcard-expanded.  Fixes Savannah bug #24509.  Patch by Martin Dorey.
+       (Include): Clarify the behavior of -include.
+       Fixes Savannah bug #18963.
+
+2009-08-01  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Catalogue of Rules): Clarify where -c, -F,
+       etc. come on the command line.  Fixes Savannah bug #27093.
+
+       * expand.c (expand_argument): If the argument is large enough use
+       xmalloc() instead of alloca().  Fixes Savannah bug #27143.
+
+       * variable.c (do_variable_definition): Avoid using alloca() to
+       hold values, which can be large.  Fixes Savannah bug #23960.
+
+       * job.c (new_job): Use memmove() instead of strcpy() since both
+       pointers are in the same memory block.  Fixes Savannah bug #27148.
+       Patch by Petr Machata.
+
+2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+        * job.c (construct_command_argv_internal): Add "ulimit" and
+        "unset" to the sh_cmds for Unixy shells.
+
+2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+        * configure.in: Move side-effects outside AC_CACHE_VAL arguments
+        that set make_cv_sys_gnu_glob, so they are also correctly set
+        when the cache has been populated before.
+
+2009-07-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (func_realpath) [!HAVE_REALPATH]: Require the file to
+       exist, as realpath(3) does where it's supported.
+
+2006-07-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (IS_ABSOLUTE, ROOT_LEN): New macros.
+       (abspath): Support systems that define HAVE_DOS_PATHS (have
+       drive letters in their file names).  Use IS_PATHSEP instead of a
+       literal '/' comparison.  Fixes Savannah bug #26886.
+
+2009-06-14  Paul Smith  <psmith@gnu.org>
+
+       * remake.c (update_file_1): Remember the original file we marked
+       as updating, so we can clear that flag again.  If we find a target
+       via vpath, FILE might change.
+       (check_dep): Ditto.  Fixes Savannah bug #13529.
+       Patch by Reid Madsen <reid.madsen@tek.com>.
+
+2009-06-13  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (MAKEFILES Variable): Be explicit that files
+       included by MAKEFILES cannot give default goals.
+       * read.c (eval): If set_default is not set, pass the no-default-goal
+       value when we read included makefiles.  Fixes Savannah bug #13401.
+
+       * ar.c (ar_name): Ensure that targets with empty parens aren't
+       considered archive member references: archive members must have a
+       non-empty "member" string.  Fixes Savannah bug #18435.
+
+       * function.c (string_glob): Rely on multi_glob() to determine
+       whether files exist or not.  Remove call to file_exists_p() which
+       is not always correct.  Fixes Savannah bug #21231.
+       * read.c (multi_glob): Add a new argument EXISTS_ONLY; if true
+       then only files that really exist will be returned.
+       * dep.h: Add new argument to multi_glob().
+       * rule.c (install_pattern_rule): Ditto.
+       * read.c (eval): Ditto.
+       * main.c (main): Ditto.
+       * implicit.c (pattern_search): Ditto.
+       * file.c (parse_prereqs): Ditto.
+       * default.c (set_default_suffixes): Ditto.
+
+2009-06-09  Paul Smith  <psmith@gnu.org>
+
+       * commands.c (set_file_variables): If always_make_flag is set,
+       always add the prereq to $?.  Fixes Savannah bug #17825.
+
+       * remake.c (update_file_1): When rebuilding deps of FILE, also try
+       to rebuild the deps of all the also_make targets for that file.
+       Fixes Savannah bug #19108.
+
+       * implicit.c (pattern_search): Undo test for is_target, added by
+       BorisK on 21 Sep 2004.  This goes against step 5c in the "Implicit
+       Rule Search Algorithm".  Fixes Savannah bug #17752.
+
+       * main.c (clean_jobserver): Clear the jobserver_fds options and
+       set job_slots to the default when we clean up.
+       (define_makeflags): Return the new MAKEFLAGS value.
+       (main): Reset MAKEFLAGS in the environment when we re-exec.
+       Fixes Savannah bug #18124.
+
+2009-06-08  Paul Smith  <psmith@gnu.org>
+
+       * read.c (eval): Collapse continuations post-semicolon on target-
+       specific variables.  Fixes Savannah bug #17521.
+
+2009-06-07  Paul Smith  <psmith@gnu.org>
+
+       * job.c (reap_children): For older systems without waitpid() (are
+       there any of these left?) run wait(2) inside EINTRLOOP to handle
+       EINTR errors.  Fixes Savannah bug #16401.
+
+       * (various): Debug message cleanup.  Fixes Savannah bug #16469.
+
+       * main.c: Fix bsd_signal() typedef.  Fixes Savannah bug #16473.
+
+       * file.c (snap_deps): Set SNAPPED_DEPS at the start of snapping,
+       not the end, to catch second expansion $(eval ...) defining new
+       target/prereq relationships during snap_deps.
+       Fixes Savannah bug #24622.
+
+       * read.c (record_files): The second-expansion "f->updating" hack
+       was not completely correct: if assumed that the target with
+       commands always had prerequisites; if one didn't then the ordering
+       was messed up.  Fixed for now to use f->updating to decide whether
+       to preserve the last element in the deps list... but this whole
+       area of constructing and reversing the deps list is too confusing
+       and needs to be reworked.  Fixes Savannah bug #21198.
+
+2009-06-06  Paul Smith  <psmith@gnu.org>
+
+       * hash.c (hash_insert): Remove useless test for NULL.
+       Fixes Savannah bug #21823.
+
+       * make.h: Move SET_STACK_SIZE determination to make.h.
+       * main.c (main): New global variable, STACK_LIMIT, holds the
+       original stack limit when make was started.
+       * job.c (start_job_command): Reset the stack limit, if we changed it.
+       Fixes Savannah bug #22010.
+
+       * remake.c (check_dep): Only set the target's state to not-started
+       if it's not already running.  Found this while testing -j10 builds
+       of glibc: various targets were being rebuilt multiple times.
+       Fix from Knut St. Osmundsen; fixes a problem reported in Savannah
+       bug #15919.
+
+       * read.c (multi_glob): Don't pass GLOB_NOCHECK to glob(3); instead
+       handle the GLOB_NOMATCH error.  This is to work around Sourceware.org
+       Bugzilla bug 10246.
+
+2009-06-04  Paul Smith  <psmith@gnu.org>
+
+       * read.c (eval): Skip initial whitespace (ffeed, vtab, etc.)
+
+       * maintMakefile: Modify access of config and gnulib Savannah
+       modules to use GIT instead of CVS.
+
+       * main.c (main): Initialize the LENGTH field in SHELL_VAR.
+       Fixes Savannah bug #24655.
+
+       * read.c (eval_buffer): Don't dereference reading_file if it's NULL;
+       this can happen during some invocations of $(eval ...) for example.
+       Fixes Savannah bug #24588.  Patch by Lars Jessen <ljessen@ljessen.dk>
+
+2009-06-02  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Check for fileno()
+       * read.c (eval_makefile): If fileno() is available, set CLOSE_ON_EXEC
+       for the makefile file so invocations of $(shell ...) don't inherit it.
+       Fixes Savannah bug #24277.
+
+2009-06-01  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): The previous fix for .DEFAULT_GOAL had issues;
+       expansion was handled incorrectly.  Rework the default goal
+       handling to save the variable only.  Remove default_goal_file and
+       default_goal_name.
+       * read.c (eval): Check default_goal_var, not default_goal_name.
+       * read.c (record_target_var): Don't check default_goal_file here.
+
+2009-05-31  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Expand the .DEFAULT_GOAL variable before using
+       it, and if the multi_glob() returns nothing (say it expanded to
+       nothing but spaces) then don't crash.  Fixes Savannah bug #25697.
+
+       * doc/make.texi (Quick Reference): Add $(if ..), $(or ..), and
+       $(and ..) to the reference.  Fixes Savannah bug #25694.
+
+       * make.1: Be clear that some recipes will be executed even with -n.
+       * doc/make.texi: Ditto.  Fixes Savannah bug #25460.
+
+       * doc/make.texi (Override Directive): Make more clear how
+       overrides and appends interact.
+       Elucidates part of Savannah bug #26207.
+
+       * read.c (record_target_var): Don't reset the origin on
+       target-specific variables; try_variable_definition() will handle
+       this correctly.  Fixes Savannah bug #26207.
+
+       * maintMakefile (do-po-update): Copy PO files into $(top_srcdir).
+       Fixes Savannah bug #25712.
+
+       * implicit.c (pattern_search): Keep a pointer to the beginning of
+       the filename and save that instead of the constructed pointer.
+       Fixes Savannah bug #26593.
+       Patch by Mark Seaborn <mrs@mythic-beasts.com>
+
+2009-05-30  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Multi-Line): Add a description of the new abilities
+       of define/endef.  Rename "Sequences" to "Multi-Line" and fix some
+       "command sequence" vs. "recipe" syntax.
+       * read.c (do_define): Modify to allow assignment tokens (=, :=, etc.)
+       after a define, to create variables with those flavors.
+
+2009-05-25  Paul Smith  <psmith@gnu.org>
+
+       Reworked the parser for variable assignments to allow multiple
+       modifiers, and in any order.  Also allows variable and
+       prerequisites to be modifier names ('export', 'private', etc.)
+
+       * NEWS: Add notes about user-visible changes.
+
+       * read.c (struct vmodifiers): Remember what modifiers were seen.
+       (parse_var_assignment): New function to parse variable assignments.
+       (eval): Call the new function.  Handle variable assignments earlier.
+
+       * variable.c (parse_variable_definition): Only parse; don't create var.
+       (assign_variable_definition): Call parse, then create the var.
+
+2009-05-24  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi: Fix the ISBN for the GNU make manual.  Incorrect
+       value noticed by Hans Stol <hans.stol@nc3a.nato.int>.
+
+2009-03-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/pathstuff.c (convert_Path_to_windows32): Fix last change.
+       Fixes Savannah bug #25412.
+
+       * w32/subproc/sub_proc.c <top level>: Update Copyright years.  Add
+       prototype for xmalloc.
+       (find_file): Accept 3 arguments PATH_VAR, FULL_FNAME, and FULL_LEN
+       instead of an LPOFSTRUCT pointer.  Use xmalloc instead of malloc.
+       Loop over an array of extensions, instead of duplicating the same
+       code inline.  Use SearchPath followed by CreateFile, instead of
+       the obsolete OpenFile.  Fixes Savannah bug #17277.
+       (process_begin): Find $(PATH) in `envp', and pass a pointer to it
+       to `find_file'.  Fixes Savannah bug #25662.
+
+2009-03-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (func_shell): Don't close pipedes[1] if it is -1.
+       Fixes Savannah bug #20495.
+
+2009-02-28  Ralf Wildenhues  <address@hidden>
+
+        * doc/make.texi (Instead of Execution): Document interaction of
+        -t with phony targets.
+
+2009-02-23  Ramon Garcia  <ramon.garcia.f@gmail.com>
+
+       Introduce a new keyword "private" which applies to target-specific
+       variables and prevents their values from being inherited.
+
+       * variable.h (struct variable): Add private_var flag to each variable.
+       Add a flag to specify which list entry switches to the parent target.
+       * variable.c (define_variable_in_set): Initialize private_var flag.
+       (lookup_variable): Skip private variables in parent contexts.
+       (initialize_file_variables): Set next_is_parent appropriately.
+       (print_variable): Show the private_var flag.
+       * read.c (eval): Recognize the private keyword.
+       (record_target_var): Set private_var.
+       * doc/make.texi (Suppressing Inheritance): Add documentation.
+
+2008-10-26  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Check for strndup().
+       * misc.c (xstrndup): Rename savestring to xstrndup.  Use strndup
+       if it's available.
+       * make.h: Rename savestring to xstrndup.
+       * commands.c (chop_commands): Ditto.
+       * function.c (func_foreach): Ditto.
+       * read.c (eval, record_files): Ditto.
+       * variable.c (define_variable_in_set): Ditto.
+
+2008-09-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * build_w32.bat (GCCBuild): Use "-gdwarf-2 -g3" instead of
+       "-gstabs+ -ggdb3".
+
+       * w32/subproc/build.bat (GCCBuild): Likewise.
+
+2008-09-30  David Russo  <d-russo@ti.com>  (tiny change)
+
+       * job.c (construct_command_argv_internal): Avoid extra backslash
+       in batch-mode Unixy shells.  Under DB_JOBS, display the contents
+       of the batch file.
+
+2008-05-31  Eli Zaretskii  <eliz@gnu.org>
+
+       * README.W32.template: Remove obsolete text about non-support for
+       -jN without Unixy shell.  Remove obsolete text about not supplying
+       Visual Studio project files (we do supply them).  Modify text to
+       prefer GCC builds to MSC builds.
+
+2008-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * doc/make.texi (Empty Targets): Fix typo.
+
+2008-03-27  Paul Smith  <psmith@gnu.org>
+
+       Fix Savannah bug #22379:
+       * ar.c (ar_glob_match): Zero the allocated structure.
+       * read.c (parse_file_seq): Ditto.
+
+2008-03-08  Brian Dessent  <brian@dessent.net>
+
+       * maintMakefile: Update Translation Project location.
+
+2008-01-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * variable.c (target_environment): Don't use shell_var if its
+       `value' field is NULL.
+
+2007-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       Suggested by Juan Manuel Guerrero <juan.guerrero@gmx.de>:
+
+       * Makefile.DOS.template (info_TEXINFOS): Remove unused variable.
+       (TEXINFOS): Value changed to `doc/make.texi'.
+       (.SUFFIXES): Use .texi instead of .texinfo.
+       (make.info, make.dvi): Depend on doc/make.texi.
+       (.texi.info): New target, instead of ".texinfo.info".  Change -I
+       switch to $(MAKEINFO) to look in doc/.  Use --no-split.
+       (.texi): New target, instead of ".texinfo".  Change -I switch to
+       $(MAKEINFO) to look in doc/.  Use --no-split.
+       (.texi.dvi): New target, instead of ".texinfo.dvi".  Change -I
+       switch to $(MAKEINFO) to look in doc/.
+       (install-info-am, uninstall-info): Don't look for "*.i[0-9]" and
+       "*.i[0-9][0-9]" (due to --no-split above).
+       (noinst_TEXINFOS, TEXI2HTML, TEXI2HTML_FLAGS): New variables.
+       (html, make_1.html): New targets.
+       (.PHONY): Add "html".
+       (.SUFFIXES): Add .html.
+
+2007-12-22  Juan Manuel Guerrero  <juan.guerrero@gmx.de>  (tiny change)
+
+       * configh.dos.template [__DJGPP__]: Replace HAVE_SYS_SIGLIST with
+       HAVE_DECL_SYS_SIGLIST.
+
+       * job.c (child_execute_job): Remove __MSDOS__ because MSDOS/DJGPP
+       build does not use child_execute_job.
+
+       * variable.c (define_automatic_variables) [__MSDOS__]: Always
+       export the SHELL environment variable to the child.
+
+2007-12-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.h.W32: Include sys/types.h.
+       [!_PID_T_] (pid_t): Define only if not already defined by sys/types.h.
+
+       * vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH
+       values that use `:' in drive letters, when PATH_SEPARATOR_CHAR is
+       also `:'.
+
+2007-11-04  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi: Convert references to "commands", "command
+       lines", and "command script" to "recipe".
+       * NEWS: Ditto.
+       * commands.c, file.c, job.c, remake.c, read.c, variable.c, main.c:
+       Ditto.
+
+2007-10-27  Bruno Haible  <bruno@clisp.org>
+
+       * remake.c (f_mtime): Print time difference values between 100 and
+       ULONG_MAX in fixed-point notation rather than in exponention notation.
+
+2007-10-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * variable.c (do_variable_definition): Allow $(SHELL) to expand to
+       a more complex value than a simple shell: if it's not a default
+       shell now then expand it and see if is a default shell then.
+
+2007-10-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * dir.c (find_directory) [WINDOWS32]: Remove trailing slashes from
+       pathnames, with const strings.
+       * build_w32.bat [WINDOWS32]: If no config.h.W32 exists, create one
+       from the template (used for building from CVS, not a dist).
+
+2007-10-10  Paul Smith  <psmith@gnu.org>
+
+       * make.h: Add a prototype for w32_kill() (change suggested by
+       Yongwei Wu <wuyongwei@gmail.com>).
+
+2007-09-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/pathstuff.c (convert_Path_to_windows32): Handle quoted
+       directories in Path.
+
+2007-09-12  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi: Applied wording cleanups from Savannah patch #6195.
+       Provided by Diego Biurrun <diego@biurrun.de>
+       (Complex Makefile): Remove .PHONY setting for tar: patch #6196.
+       Provided by Diego Biurrun <diego@biurrun.de>
+
+2007-09-11  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Special Variables): Moved this into the "How to
+       Use Variables" chapter.  Added a table entry for .RECIPEPREFIX.
+       (MAKEFILE_LIST) No longer a section; this was added into the
+       "Special Variables" section.
+       (Rule Introduction): Reference .RECIPEPREFIX.
+       (Simple Makefile): Ditto.
+       (Rule Syntax): Ditto.
+       (Command Syntax): Ditto.
+       (Error Messages): Ditto.
+
+2007-09-10  Paul Smith  <psmith@gnu.org>
+
+       * commands.c (print_commands): Don't print an extra line in the
+       command scripts.  Prefix the command scripts with cmd_prefix, not \t.
+
+       * read.c (construct_include_path): Add the full string to the cache; we
+       were chopping the last char.
+
+       * NEWS: Announce the .RECIPEPREFIX special variable.
+       * variable.c (lookup_special_var): Rename from handle_special_var().
+       (lookup_variable): Call the new name.
+       (set_special_var): New function: handle setting of special variables.
+       When setting .RECIPEPREFIX, reset the cmd_prefix global variable.
+       (do_variable_definition): Call it.
+       * make.h (RECIPEPREFIX_DEFAULT): Define the default command prefix char.
+       (RECIPEPREFIX_NAME): Define the command prefix special variable name.
+       * main.c (main): Create the .RECIPEPREFIX special variable.
+       * read.c (eval): Remove the cmd_prefix characters from the command
+       scripts here, so they're not stored in the commands array at all,
+       rather than waiting and stripping them out during command construction.
+       * job.c (construct_command_argv_internal): Don't skip cmd_prefix here.
+
+2007-08-15  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (GNU Free Documentation License): The fdl.texi
+       file has had the section info removed, so add some to make.texi
+       before we include it.
+
+2007-08-15  Icarus Sparry  <savannah@icarus.freeuk.com>
+
+       * remake.c (check_dep): Reset the target state for intermediate
+       files.  They might have been considered before but not updated
+       then (order-only for example) but they will be this time.
+       Fixes Savannah bug #'s 3330 and 15919.
+
+2007-07-21  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix Savannah bug #20549:
+       * function.c (func_shell): Call construct_command_argv with zero
+       value of FLAGS.
+       * job.c (construct_command_argv_internal): New argument FLAGS; all
+       callers changed.
+       [WINDOWS32]: If FLAGS has the COMMANDS_RECURSE bit set, ignore
+       just_print_flag.
+       * job.h (construct_command_argv_internal): Update prototype.
+
+2007-07-13  Paul Smith  <psmith@gnu.org>
+
+       * file.c (expand_deps): Use variable_buffer as the start of the
+       buffer, not the original pointer (in case it was reallocated).
+       Fix suggested by Rafi Einstein <rafi.einstein@formalism-labs.com>.
+       Fixes Savannah bug #20452.
+
+2007-07-04  Paul Smith  <psmith@gnu.org>
+
+       * (ALL FILES): Update to GPLv3.
+       * (ALL FILES): Update copyright for 2007.
+
+       * main.c (print_version): Move the host type info to the second line.
+
+2007-06-29  Thiemo Seufer  <ths@mips.com>
+
+       * maintMakefile: Update Translation Project location.
+
+2007-06-13  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Reading Makefiles): "Expansion of deferred" ->
+       "Expansion of a deferred"
+       Fixes Savannah bug #20018.
+
+       * expand.c (variable_expand_for_file): Preserve the value of
+       reading_file rather than setting it to 0 at the end.
+       Fixes Savannah bug #20033.
+
+2007-05-11  Paul Smith  <psmith@gnu.org>
+
+       * job.c (new_job): Add debug info to specify where make found the
+       command script it is running to build a target.
+       Fixes Savannah bug #18617.
+
+       * default.c (default_suffixes,default_suffix_rules,default_variables):
+       Add support for Objective C.  Fixes Savannah bug #16389.
+       Based on a patch provided by Peter O'Gorman <peter@pogma.com>.
+
+       * function.c (func_lastword): Initialize p.
+
+       * doc/make.texi (Eval Function, Implicit Variables, Special Targets):
+       Doc fixes noticed by Bob <twobanjobob@sbcglobal.net>.  Patch from
+       Dave Korn <dave.korn@artimi.com>
+
+2007-05-08  Paul Smith  <psmith@gnu.org>
+
+       Fix Savannah bug #19656:
+
+       * configure.in: Check for strcasecmp(), strcmpi(), and stricmp().
+
+       * make.h: Change all case-insensitive string compares to use
+       strcasecmp() (from POSIX).  If we don't have that but do have one
+       of the others, define strcasecmp to be one of those instead.  If
+       we don't have any, declare a prototype for our own version.
+
+       * misc.c (strcasecmp): Use this if we can't find any native
+       case-insensitive string comparison function.
+       * vmsfunctions.c: Remove strcmpi(); we'll use misc.c:strcasecmp().
+       * main.c (find_and_set_default_shell): Use strcasecmp() instead of
+       strcmpi().
+       * job.c (_is_unixy_shell, construct_command_argv_internal): Use
+       strcasecmp() instead of stricmp().
+       * hash.h (ISTRING_COMPARE, return_ISTRING_COMPARE): Use strcasecmp()
+       instead of strcmpi().
+       * acinclude.m4: Remove the strcasecmp() check from here.
+
+2007-03-21  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Don't turn on case-insensitive file system support
+       if --disable-... is given.  Fixes Savannah bug #19348.
+
+2007-03-19  Paul Smith  <psmith@gnu.org>
+
+       * ALL: Use the strcache for all file name strings, or other
+       strings which we will never free.  The goal is to save memory by
+       avoiding duplicate copies of strings.  However, at the moment this
+       doesn't save much memory in most situations: due to secondary
+       expansion we actually save prerequisite lists twice (once before
+       the secondary expansion, and then again after it's been parsed
+       into individual file names in the dep list).  We will resolve this
+       in a future change, by doing the parsing up-front for targets
+       where secondary expansion is not set.
+
+       Moving things into the strcache also allows us to use const
+       pointers in many more places.
+
+2007-01-03  Paul Smith  <psmith@gnu.org>
+
+       * make.h (ENULLLOOP): Reset errno after each failed invocation of
+       the function, not just the first.  Fixes Savannah bug #18680.
+
+2006-11-18  Paul Smith  <psmith@gnu.org>
+
+       * strcache.c (strcache_add_len): Don't allocate a new buffer
+       unless the string is not already nil-terminated.  Technically this
+       is a violation of the standard, since we may be passed an array
+       that is not long enough to test one past.  However, in make this
+       is never true since we only use nil-terminated strings or
+       sub-strings thereof.
+
+       * read.c (eval, do_define): Use cmd_prefix instead of '\t'.
+
+       * main.c: New global cmd_prefix, defaults to '\t'.
+       * job.c (construct_command_argv_internal): Use cmd_prefix instead
+       of '\t'.
+
+       * dir.c: Constified.
+       (dir_contents_file_exists_p): Check for an error return from
+       readdir(), just in case.
+
+       * commands.c: Constified.
+       * default.c: Constified.
+       * expand.c: Constified.
+       * function.c: Partial constification.
+       * variable.c: Partial constification.
+       * vmsify.c: Constification.  Hard to test this but I hope I didn't
+       screw it up!
+       * vpath.c: Partial constification.
+       * w32/pathstuff.c: Partial constification.
+
+2006-11-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * main.c (main) [HAVE_DOS_PATHS]: Treat DOS style argv[0] with
+       backslashes and drive letters as absolute.
+
+2006-10-22  Paul Smith  <psmith@gnu.org>
+
+       * main.c (struct command_switch): Use const and void*.
+
+2006-10-21  Paul Smith  <psmith@gnu.org>
+
+       * ar.c: Constified.
+       * arscan.c: Constified.
+
+2006-09-30  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (MAKEFILE_LIST Variable): Modify reference to
+       point to lastword since the example was updated.
+       Fixes Savannah bug #16304.
+       (Secondary Expansion): Correct example description.
+       Fixes Savannah bug #16468.
+       (Makefile Contents): Clarify that comments cannot appear within
+       variable references or function calls.
+       Fixes Savannah bug #16577.
+       (Special Targets): Clarify how .NOTPARALLEL works in recursion.
+       Fixes Savannah bug #17701.
+       Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
+       (Prerequisite Types): Added an example of using order-only
+       prerequisites.  Fixes Savannah bug #17880.
+       (Rule Syntax): "lise" -> "list"
+       (Multiple Rules): ... -> @dots{}
+       (Splitting Lines): ditto.
+
+       * remake.c (update_file_1): Prereqs that don't exist should be
+       considered changed, for the purposes of $?.
+       Fixes Savannah bug #16051.
+
+       * make.1: Remove extraneous "+".
+       Fixes Savannah bug #16652.
+
+2006-09-06  Paul D. Smith  <psmith@gnu.org>
+
+       * configure.in: Include sys/types.h when checking for sys/wait.h.
+
+2006-08-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * configure.in (PATH_SEPARATOR_CHAR): Define to the value of
+       $PATH_SEPARATOR.
+
+       * make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
+       Normally, it is defined in config.h.
+
+       * config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin as
+       well.
+
+       * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Define
+       sh_chars_sh for Windows platforms that emulate Unix.
+
+2006-05-07  Paul D. Smith  <psmith@gnu.org>
+
+       * README.OS2.template: Updates provided by Andreas Buening
+       <andreas.buening@nexgo.de>.
+
+2006-04-30  Paul D. Smith  <psmith@gnu.org>
+
+       * make.h: Include <direct.h> if HAVE_DIRECT_H.
+       * config.h.W32.template (HAVE_DIRECT_H): Set it if it's available.
+
+2006-04-26  Paul D. Smith  <psmith@gnu.org>
+
+       * README.cvs: Add a reminder to notify the GNU translation robot.
+
+       * doc/make.texi: Change @direcategory (requested by Karl Berry).
+
+2006-04-20  Paul D. Smith  <psmith@gnu.org>
+
+       * maintMakefile (po-check): Use Perl instead of grep -E, for systems
+       that don't have extended grep.
+       (cvsclean): Use $(PERL) instead of perl.
+
+2006-04-09  Paul D. Smith  <psmith@gnu.org>
+
+       * maintMakefile: Add some extra warning options (GCC 4.1 only?)
+
+       * expand.c, implicit.c, main.c, read.c: Rename variables so that
+       inner-scope variables don't mask outer-scope variables.
+
+       * ar.c, arscan.c, commands.c, default.c, dir.c, expand.c, file.c:
+       * function.c, getloadavg.c, implicit.c, job.c, main.c, misc.c, read.c:
+       * remake.c, remote-cstms.c, rule.c, strcache.c, variable.c:
+       * vmsfunctions.c, vmsify.c, vpath.c: Remove all casts of returned
+       values from memory allocation functions: they return void* and so
+       don't need to be cast.  Also remove (char *) casts of arguments to
+       xrealloc().
+
+       * configure.in: Remove checks for memcpy/memmove/strchr.
+
+       * make.h: Remove bcmp/bcopy/bzero/strchr/strrchr macros.
+
+       * ar.c, arscan.c, commands.c, dir.c: Convert all bzero/bcopy/bcmp
+       calls to memset/memcpy/memmove/memcmp calls.
+       * expand.c, file.c, function.c, getloadavg.c, implicit.c: Ditto.
+       * job.c, main.c, misc.c, read.c, remake.c, rule.c: Ditto.
+       * variable.c, vpath.c: Ditto.
+
+       * make.h (EXIT_FAILURE): Should be 1, not 0.
+
+2006-04-06  Paul D. Smith  <psmith@gnu.org>
+
+       * configure.in: Removed AM_C_PROTOTYPES.  Starting now on we
+       require an ISO C 1989 standard compiler and runtime library.
+
+       * Makefile.am: Remove the ansi2knr feature.
+
+       * make.h: Remove the PARAMS() macro definition and all uses of it.
+
+       * amiga.h, ar.c, arscan.c: Remove all uses of the PARAMS() macro.
+       * commands.c, commands.h, config.h-vms.template: Ditto.
+       * dep.h, dir.c, expand.c, filedef.h, function.c: Ditto.
+       * implicit.c, job.c, job.h, main.c, read.c, remake.c: Ditto.
+       * rule.c, rule.h, variable.h, vmsdir.h, vmsjobs.c, vpath.c: Ditto.
+
+       * NEWS: Update.
+
 2006-04-01  Paul D. Smith  <psmith@gnu.org>
 
        Version 3.81 released.
        (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>.
+       Reported by Craig Fithian <craig.fithian@citigroup.com>
 
 2006-03-17  Paul D. Smith  <psmith@gnu.org>
 
 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>.
+       Patch by Mike Frysinger <vapier@gentoo.org>.
 
 2005-12-11  Paul D. Smith  <psmith@gnu.org>
 
@@ -2737,18 +4001,18 @@ See ChangeLog.2, available in the CVS repository at:
 for earlier changes.
 
 
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 96c0ec2..58c950c 100644 (file)
@@ -2,20 +2,21 @@
 # Makefile.in generated automatically by automake 1.2 from Makefile.am
 #
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 SHELL = /bin/sh
 
@@ -71,7 +72,7 @@ PACKAGE = make
 PERL = perl
 RANLIB = ranlib
 REMOTE = stub
-VERSION = 3.81
+VERSION = 3.82
 
 AUTOMAKE_OPTIONS = 1.2
 
@@ -82,16 +83,15 @@ make_SOURCES =      ar.c arscan.c commands.c default.c dir.c expand.c file.c function
 libglob_a_SOURCES =    glob/fnmatch.c glob/glob.c glob/fnmatch.h glob/glob.h
 make_LDADD =     glob/libglob.a
 
-info_TEXINFOS =        make.texinfo
 man_MANS =     make.1
 
-INCLUDES =     -I$(srcdir)/glob -DLIBDIR=\"c:/djgpp/lib\" -DINCLUDEDIR=\"c:/djgpp/include\" -DLOCALEDIR=\"$(localedir)\"
+INCLUDES =     -I$(srcdir)/glob -DLIBDIR=\"$(prefix)$(libdir)\" -DINCLUDEDIR=\"$(prefix)$(includedir)\" -DLOCALEDIR=\"$(prefix)$(localedir)\"
 
 BUILT_SOURCES =        README build.sh-in
 
 EXTRA_DIST =   $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c  make-stds.texi texinfo.tex SCOPTIONS SMakefile  Makefile.ami README.Amiga config.ami amiga.c amiga.h  NMakefile README.DOS configh.dos configure.bat makefile.com  README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk  config.h-vms makefile.vms readme.vms vmsdir.h vmsfunctions.c  vmsify.c
 
-SUBDIRS =      glob
+SUBDIRS =      glob doc
 mkinstalldirs = ${exec_prefix}/bin/gmkdir -p
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =  build.sh
@@ -115,9 +115,10 @@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
 LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
 TEXI2DVI = texi2dvi
 TEXINFO_TEX = $(srcdir)/config/texinfo.tex
-INFO_DEPS = make.info
-DVIS = make.dvi
-TEXINFOS = make.texinfo
+INFO_DEPS = doc/make.info
+DVIS = doc/make.dvi
+TEXINFOS = doc/make.texi
+noinst_TEXINFOS = doc/fdl.texi doc/make-stds.texi
 man1dir = $(mandir)/man1
 MANS = $(man_MANS)
 
@@ -135,7 +136,7 @@ HEADERS = $(wildcard $(srcdir)/*.h)
 default: all
 
 .SUFFIXES:
-.SUFFIXES: .c .dvi .info .o .obj .ps .texinfo .tex
+.SUFFIXES: .c .dvi .info .o .obj .ps .texi .tex .html
 
 mostlyclean-hdr:
 
@@ -185,56 +186,70 @@ make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES)
        @command.com /c if exist make.exe del make.exe
        $(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
 
-make.info: make.texinfo
-make.dvi: make.texinfo
+# Documentation
+
+make.info: make.texi
+make.dvi: make.texi
+make.ps: make.dvi make.texi
+make.html: make.texi
 
 
 DVIPS = dvips
 
-.texinfo.info:
+.texi.info:
        @command.com /c if exist make.info* del make.info*
        @command.com /c if exist make.i* del make.i*
-       $(MAKEINFO) -I$(srcdir) $< -o ./$@
+       $(MAKEINFO) -I$(srcdir) --no-split $< -o ./$@
 
-.texinfo:
+.texi:
        @command.com /c if exist make.info* del make.info*
        @command.com /c if exist make.i* del make.i*
-       $(MAKEINFO) -I$(srcdir) $< -o ./$@
+       $(MAKEINFO) -I$(srcdir) --no-split $< -o ./$@
 
-.texinfo.dvi:
+.texi.dvi:
        TEXINPUTS="$(srcdir);$$TEXINPUTS"    MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
 
-
 .dvi.ps:
        $(DVIPS) $< -o $@
 
+# Other documentation formats
+
+html: html-recursive
+
+.texi.html:
+       @command.com /c if exist make.html* del make.html*
+       $(MAKEINFO) --html -I$(srcdir) --no-split $< -o ./$@
+
 install-info-am: $(INFO_DEPS)
        @$(NORMAL_INSTALL)
        $(mkinstalldirs) $(DESTDIR)$(infodir)
-       @for file in $(INFO_DEPS) make.i; do    d=$(srcdir);    for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9] $$file[0-9] $$file[0-9][0-9]`; do      if test -f $$d/$$ifile; then        echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; else : ; fi;    done;  done
+       @for file in $(INFO_DEPS); do    iifile=`echo $$file | sed "s|doc/||"`;    d=$(srcdir);    for ifile in `cd $$d && echo $$file`; do      if test -f $$d/$$ifile; then        echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile"; $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile; else : ; fi;    done;  done
        @$(POST_INSTALL)
-       @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then    for file in $(INFO_DEPS); do      echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";     install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;   done;  else : ; fi
+       @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then    for file in $(INFO_DEPS); do    iifile=`echo $$file | sed "s|doc/||"`;      echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile";     install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile || :;   done;  else : ; fi
 
 uninstall-info:
        $(PRE_UNINSTALL)
        @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then    ii=yes;  else ii=; fi;  for file in $(INFO_DEPS); do    test -z $ii || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file;  done
        $(NORMAL_UNINSTALL)
-       for file in $(INFO_DEPS) make.i; do    (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9] $$file[0-9] $$file[0-9][0-9]);  done
+       for file in $(INFO_DEPS); do (cd $(DESTDIR)$(infodir) && rm -f $$file);  done
 
 dist-info: $(INFO_DEPS)
        for base in $(INFO_DEPS); do    d=$(srcdir);    for file in `cd $$d && eval echo $$base*`; do      test -f $(distdir)/$$file      || ln $$d/$$file $(distdir)/$$file 2> /dev/null      || cp -p $$d/$$file $(distdir)/$$file;    done;  done
 
 mostlyclean-aminfo:
-       -rm -f make.aux make.cp make.cps make.dvi make.fn make.fns make.ky \
-         make.kys make.ps make.log make.pg make.toc make.tp make.tps \
-         make.vr make.vrs make.op make.tr make.cv make.cn
+       -rm -f $(srcdir)/doc/make.aux $(srcdir)/doc/make.cp $(srcdir)/doc/make.cps $(srcdir)/doc/make.dvi \
+         $(srcdir)/doc/make.fn $(srcdir)/doc/make.fns $(srcdir)/doc/make.ky $(srcdir)/doc/make.kys \
+         $(srcdir)/doc/make.ps $(srcdir)/doc/make.log $(srcdir)/doc/make.pg $(srcdir)/doc/make.toc \
+         $(srcdir)/doc/make.tp $(srcdir)/doc/make.tps $(srcdir)/doc/make.vr $(srcdir)/doc/make.vrs \
+         $(srcdir)/doc/make.op $(srcdir)/doc/make.tr $(srcdir)/doc/make.cv $(srcdir)/doc/make.cn \
+         $(srcdir)/doc/make.html
 
 clean-aminfo:
 
 distclean-aminfo:
 
 maintainer-clean-aminfo:
-       for i in $(INFO_DEPS) make.i; do rm -f `eval echo $$i*`; done
+       for i in $(INFO_DEPS); do rm -f $$i*; done
 
 install-man1:
        $(mkinstalldirs) $(DESTDIR)$(man1dir)
@@ -279,13 +294,10 @@ uninstall-man:
 # but do a sanity check: if $SUBDIRS will ever have more than
 # a single directory, yell bloody murder.
 all-recursive:
-ifeq ($(words $(SUBDIRS)), 1)
+ifeq ($(findstring glob, $(SUBDIRS)), glob)
        @command.com /c if not exist glob\\nul md glob
-       @echo Making all in $(SUBDIRS)
-       $(MAKE) -C $(SUBDIRS) -f ../Makefile INCLUDES='-I$(srcdir) -I$(srcdir)/glob' DEFS='-I.. -I$(srcdir)' VPATH=$(srcdir)/glob libglob.a
-else
-       @echo FATAL: There is more than one directory in "($(SUBDIRS))"
-       @$(EXIT_FAIL)
+       @echo Making all in glob
+       $(MAKE) -C glob -f ../Makefile INCLUDES='-I$(srcdir) -I$(srcdir)/glob' DEFS='-I.. -I$(srcdir)' VPATH=$(srcdir)/glob libglob.a
 endif
 
 $(SUBDIRS):
@@ -298,11 +310,13 @@ libglob.a: $(libglob_a_OBJECTS)
 
 mostlyclean-recursive clean-recursive distclean-recursive \
 maintainer-clean-recursive check-recursive:
-ifeq ($(words $(SUBDIRS)), 1)
-       @echo Making $(shell echo $@ | sed s/-recursive//) in $(SUBDIRS)
-       $(MAKE) -C $(SUBDIRS) -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
+ifeq ($(words $(SUBDIRS)), 2)
+       @echo Making $(shell echo $@ | sed s/-recursive//) in glob
+       $(MAKE) -C glob -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
+       @echo Making $(shell echo $@ | sed s/-recursive//) in doc
+       $(MAKE) -C doc -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
 else
-       @echo FATAL: There is more than one directory in "($(SUBDIRS))"
+       @echo FATAL: There is more than two directory in "($(SUBDIRS))"
        @$(EXIT_FAIL)
 endif
 
@@ -310,10 +324,10 @@ tags-in-glob: $(libglob_a_SOURCES)
        etags $(addprefix $(srcdir)/,$^) -o ./glob/TAGS
 
 tags-recursive:
-ifeq ($(words $(SUBDIRS)), 1)
+ifeq ($(words $(SUBDIRS)), 2)
        $(MAKE) tags-in-glob
 else
-       @echo FATAL: There is more than one directory in "($(SUBDIRS))"
+       @echo FATAL: There is more than two directory in "($(SUBDIRS))"
        @$(EXIT_FAIL)
 endif
 
@@ -364,15 +378,44 @@ distdir: $(DISTFILES)
        $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
        $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
 
-info: $(INFO_DEPS) info-recursive
-dvi: $(DVIS) dvi-recursive
+info: info-recursive
+info-recursive:
+ifeq ($(findstring doc, $(SUBDIRS)), doc)
+       @command.com /c if not exist doc\\nul md doc
+       @echo Making all in doc
+       $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.info
+endif
+
+dvi: dvi-recursive
+dvi-recursive:
+ifeq ($(findstring doc, $(SUBDIRS)), doc)
+       @command.com /c if not exist doc\\nul md doc
+       @echo Making all in doc
+       $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.dvi
+endif
+
+ps: ps-recursive
+ps-recursive:
+ifeq ($(findstring doc, $(SUBDIRS)), doc)
+       @command.com /c if not exist doc\\nul md doc
+       @echo Making all in doc
+       $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.ps
+endif
+
+html-recursive:
+ifeq ($(findstring doc, $(SUBDIRS)), doc)
+       @command.com /c if not exist doc\\nul md doc
+       @echo Making all in doc
+       $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.html
+endif
+
 check: all-am check-recursive check-local
        @:
 installcheck: installcheck-recursive
 all-recursive-am: config.h
        $(MAKE) all-recursive
 
-all-am: Makefile $(INFO_DEPS) $(PROGRAMS) config.h
+all-am: Makefile $(PROGRAMS) config.h info
 
 install-exec-am: install-binPROGRAMS
 
@@ -454,7 +497,8 @@ maintainer-clean-depend info dvi check-local installcheck \
 all-recursive-am all-am install-exec-am install-data-am uninstall-am \
 install-exec install-data install uninstall all installdirs \
 mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean \
+html
 
 
 # --------------- Local DIST Section
@@ -550,152 +594,170 @@ check-regression:
 # dummy
 
 # .deps/ar.Po
-ar.o ar.o: ar.c make.h config.h \
-  getopt.h \
-  gettext.h filedef.h hash.h dep.h \
+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 \
+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
+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
+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 \
+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
+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
+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
+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 \
+getopt.o: getopt.c config.h \
 
 # .deps/getopt1.Po
-getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+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
+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
+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 \
+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 \
+# dummy
 
 # .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 \
+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
+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 \
+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
+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
+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
+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
+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
+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
+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
+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
+vpath.o: vpath.c make.h config.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h variable.h
index 82274bb..92acdc2 100644 (file)
@@ -1,22 +1,23 @@
 # This is a -*-Makefile-*-, or close enough
 #
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news ansi2knr
+AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news
 ACLOCAL_AMFLAGS        =  -I config
 
 MAKE_HOST =    @MAKE_HOST@
index 131e913..8cc67df 100644 (file)
@@ -4,20 +4,21 @@
 # `build.sh' instead.
 #
 # Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 #      Makefile for GNU Make
index 4148c69..6481e99 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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 is a -*-Makefile-*-, or close enough
 #
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = .
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -55,7 +54,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-ANSI2KNR = @ANSI2KNR@
 bin_PROGRAMS = make$(EXEEXT)
 # Only process if target is MS-Windows
 @WINDOWSENV_TRUE@am__append_1 = $(W32LIB)
@@ -66,11 +64,11 @@ subdir = .
 DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
        $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \
-       AUTHORS COPYING ChangeLog INSTALL NEWS alloca.c ansi2knr.1 \
-       ansi2knr.c getloadavg.c
+       AUTHORS COPYING ChangeLog INSTALL NEWS alloca.c getloadavg.c
 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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -79,14 +77,14 @@ am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno configure.status.lineno
+ configure.lineno config.status.lineno
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-nodist_loadavg_OBJECTS = loadavg-getloadavg$U.$(OBJEXT)
+nodist_loadavg_OBJECTS = loadavg-getloadavg.$(OBJEXT)
 loadavg_OBJECTS = $(nodist_loadavg_OBJECTS)
 loadavg_DEPENDENCIES =
 am__make_SOURCES_DIST = ar.c arscan.c commands.c default.c dir.c \
@@ -94,25 +92,25 @@ am__make_SOURCES_DIST = ar.c arscan.c commands.c default.c dir.c \
        main.c misc.c read.c remake.c remote-stub.c remote-cstms.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)
-am_make_OBJECTS = ar$U.$(OBJEXT) arscan$U.$(OBJEXT) \
-       commands$U.$(OBJEXT) default$U.$(OBJEXT) dir$U.$(OBJEXT) \
-       expand$U.$(OBJEXT) file$U.$(OBJEXT) function$U.$(OBJEXT) \
-       getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) implicit$U.$(OBJEXT) \
-       job$U.$(OBJEXT) main$U.$(OBJEXT) misc$U.$(OBJEXT) \
-       read$U.$(OBJEXT) remake$U.$(OBJEXT) $(am__objects_1) \
-       rule$U.$(OBJEXT) signame$U.$(OBJEXT) strcache$U.$(OBJEXT) \
-       variable$U.$(OBJEXT) version$U.$(OBJEXT) vpath$U.$(OBJEXT) \
-       hash$U.$(OBJEXT)
+@USE_CUSTOMS_FALSE@am__objects_1 = remote-stub.$(OBJEXT)
+@USE_CUSTOMS_TRUE@am__objects_1 = remote-cstms.$(OBJEXT)
+am_make_OBJECTS = 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) \
+       $(am__objects_1) rule.$(OBJEXT) signame.$(OBJEXT) \
+       strcache.$(OBJEXT) variable.$(OBJEXT) version.$(OBJEXT) \
+       vpath.$(OBJEXT) hash.$(OBJEXT)
 make_OBJECTS = $(am_make_OBJECTS)
 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.
+DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -122,14 +120,41 @@ SOURCES = $(nodist_loadavg_SOURCES) $(make_SOURCES) \
 DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
-       install-exec-recursive install-info-recursive \
-       install-recursive installcheck-recursive installdirs-recursive \
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-recursive
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
 HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = glob config po doc w32
@@ -137,17 +162,40 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -171,6 +219,8 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -187,6 +237,7 @@ LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
 MSGMERGE = @MSGMERGE@
@@ -197,6 +248,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
@@ -206,21 +258,14 @@ 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@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 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@
@@ -232,29 +277,43 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+
+# --------------- Internationalization Section
+localedir = $(datadir)/locale
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
-AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news ansi2knr
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news
 ACLOCAL_AMFLAGS = -I config
 
 # Only process if target is MS-Windows
@@ -293,9 +352,6 @@ EXTRA_DIST = README build.sh.in $(man_MANS) \
 # This is built during configure, but behind configure's back
 DISTCLEANFILES = build.sh
 
-# --------------- Internationalization Section
-localedir = $(datadir)/locale
-
 # --------------- Local INSTALL Section
 
 # If necessary, change the gid of the app and turn on the setgid flag.
@@ -333,15 +389,15 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-             cd $(srcdir) && $(AUTOMAKE) --gnu  \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -357,21 +413,22 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
        $(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(srcdir) && $(AUTOCONF)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
 
 config.h: stamp-h1
        @if test ! -f $@; then \
          rm -f stamp-h1; \
-         $(MAKE) stamp-h1; \
+         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
        else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
        cd $(top_builddir) && $(SHELL) ./config.status config.h
 $(srcdir)/config.h.in:  $(am__configure_deps) 
-       cd $(top_srcdir) && $(AUTOHEADER)
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h1
        touch $@
 
@@ -379,24 +436,38 @@ distclean-hdr:
        -rm -f config.h stamp-h1
 install-binPROGRAMS: $(bin_PROGRAMS)
        @$(NORMAL_INSTALL)
-       test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         if test -f $$p \
-         ; then \
-           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-          echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-          $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
-         else :; fi; \
-       done
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+             echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+             $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
 
 uninstall-binPROGRAMS:
        @$(NORMAL_UNINSTALL)
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-         echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-         rm -f "$(DESTDIR)$(bindir)/$$f"; \
-       done
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
        -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
@@ -405,193 +476,112 @@ clean-checkPROGRAMS:
        -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
 loadavg$(EXEEXT): $(loadavg_OBJECTS) $(loadavg_DEPENDENCIES) 
        @rm -f loadavg$(EXEEXT)
-       $(LINK) $(loadavg_LDFLAGS) $(loadavg_OBJECTS) $(loadavg_LDADD) $(LIBS)
+       $(LINK) $(loadavg_OBJECTS) $(loadavg_LDADD) $(LIBS)
 make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) 
        @rm -f make$(EXEEXT)
-       $(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
+       $(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
-ansi2knr: ansi2knr.$(OBJEXT)
-       $(LINK) ansi2knr.$(OBJEXT) $(LIBS)
-ansi2knr.$(OBJEXT): $(CONFIG_HEADER)
-
-clean-krextra:
-       -rm -f ansi2knr
-
-mostlyclean-kr:
-       -test "$U" = "" || rm -f *_.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getloadavg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ar$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arscan$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commands$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/function$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/implicit$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadavg-getloadavg$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remake$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-cstms$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-stub$U.Po@am__quote@
-@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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arscan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commands.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/function.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/implicit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadavg-getloadavg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remake.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-cstms.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-stub.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rule.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmsjobs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpath.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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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) '$<'`
 
-loadavg-getloadavg$U.o: getloadavg$U.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg$U.o -MD -MP -MF "$(DEPDIR)/loadavg-getloadavg$U.Tpo" -c -o loadavg-getloadavg$U.o `test -f 'getloadavg$U.c' || echo '$(srcdir)/'`getloadavg$U.c; \
-@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@
+loadavg-getloadavg.o: getloadavg.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg.o -MD -MP -MF $(DEPDIR)/loadavg-getloadavg.Tpo -c -o loadavg-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='getloadavg.c' object='loadavg-getloadavg.o' libtool=no @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
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c
 
-loadavg-getloadavg$U.obj: getloadavg$U.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg$U.obj -MD -MP -MF "$(DEPDIR)/loadavg-getloadavg$U.Tpo" -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`; \
-@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@
+loadavg-getloadavg.obj: getloadavg.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg.obj -MD -MP -MF $(DEPDIR)/loadavg-getloadavg.Tpo -c -o loadavg-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='getloadavg.c' object='loadavg-getloadavg.obj' libtool=no @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)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/alloca.c; then echo $(srcdir)/alloca.c; else echo alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ar_.c: ar.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ar.c; then echo $(srcdir)/ar.c; else echo ar.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-arscan_.c: arscan.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/arscan.c; then echo $(srcdir)/arscan.c; else echo arscan.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-commands_.c: commands.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/commands.c; then echo $(srcdir)/commands.c; else echo commands.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-default_.c: default.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/default.c; then echo $(srcdir)/default.c; else echo default.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-dir_.c: dir.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dir.c; then echo $(srcdir)/dir.c; else echo dir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-expand_.c: expand.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/expand.c; then echo $(srcdir)/expand.c; else echo expand.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-file_.c: file.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/file.c; then echo $(srcdir)/file.c; else echo file.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-function_.c: function.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/function.c; then echo $(srcdir)/function.c; else echo function.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-getloadavg_.c: getloadavg.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getloadavg.c; then echo $(srcdir)/getloadavg.c; else echo getloadavg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-getopt_.c: getopt.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-getopt1_.c: getopt1.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-hash_.c: hash.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-implicit_.c: implicit.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/implicit.c; then echo $(srcdir)/implicit.c; else echo implicit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-job_.c: job.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/job.c; then echo $(srcdir)/job.c; else echo job.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-main_.c: main.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-misc_.c: misc.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/misc.c; then echo $(srcdir)/misc.c; else echo misc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-read_.c: read.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/read.c; then echo $(srcdir)/read.c; else echo read.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-remake_.c: remake.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/remake.c; then echo $(srcdir)/remake.c; else echo remake.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-remote-cstms_.c: remote-cstms.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/remote-cstms.c; then echo $(srcdir)/remote-cstms.c; else echo remote-cstms.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-remote-stub_.c: remote-stub.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/remote-stub.c; then echo $(srcdir)/remote-stub.c; else echo remote-stub.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-rule_.c: rule.c $(ANSI2KNR)
-       $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rule.c; then echo $(srcdir)/rule.c; else echo rule.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-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 $@
-alloca_.$(OBJEXT) ar_.$(OBJEXT) arscan_.$(OBJEXT) commands_.$(OBJEXT) \
-default_.$(OBJEXT) dir_.$(OBJEXT) expand_.$(OBJEXT) file_.$(OBJEXT) \
-function_.$(OBJEXT) getloadavg_.$(OBJEXT) getopt_.$(OBJEXT) \
-getopt1_.$(OBJEXT) hash_.$(OBJEXT) implicit_.$(OBJEXT) job_.$(OBJEXT) \
-main_.$(OBJEXT) misc_.$(OBJEXT) read_.$(OBJEXT) remake_.$(OBJEXT) \
-remote-cstms_.$(OBJEXT) remote-stub_.$(OBJEXT) rule_.$(OBJEXT) \
-signame_.$(OBJEXT) strcache_.$(OBJEXT) variable_.$(OBJEXT) \
-version_.$(OBJEXT) vmsjobs_.$(OBJEXT) vpath_.$(OBJEXT) : $(ANSI2KNR)
-uninstall-info-am:
-install-man1: $(man1_MANS) $(man_MANS)
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi`
+install-man1: $(man_MANS)
        @$(NORMAL_INSTALL)
-       test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
-       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
+       test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+       @list=''; test -n "$(man1dir)" || exit 0; \
+       { for i in $$list; do echo "$$i"; done; \
+       l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.1[a-z]*$$/p'; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+         fi; \
        done; \
-       for i in $$list; do \
-         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-         else file=$$i; fi; \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           1*) ;; \
-           *) ext='1' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-         $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-       done
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+       done; }
+
 uninstall-man1:
        @$(NORMAL_UNINSTALL)
-       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
-       done; \
-       for i in $$list; do \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           1*) ;; \
-           *) ext='1' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-         rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-       done
+       @list=''; test -n "$(man1dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.1[a-z]*$$/p'; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       test -z "$$files" || { \
+         echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+         cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -600,7 +590,7 @@ uninstall-man1:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -617,16 +607,15 @@ $(RECURSIVE_TARGETS):
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-       @failcom='exit 1'; \
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -652,16 +641,16 @@ maintainer-clean-recursive:
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done && test -z "$$fail"
 tags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
        done
 ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -669,14 +658,14 @@ ID: $(HEADERS) $(SOURCES) $(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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
@@ -688,39 +677,43 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test ! -f $$subdir/TAGS || \
-             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
        list='$(SOURCES) $(HEADERS) config.h.in $(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 \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS) config.h.in $(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" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -732,46 +725,74 @@ distdir: $(DISTFILES)
          echo "NEWS not updated; not releasing" 1>&2; \
          exit 1;; \
        esac
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically \`make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
        $(am__remove_distdir)
-       mkdir $(distdir)
-       $(mkdir_p) $(distdir)/config $(distdir)/po
-       @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; \
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
-       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test -d "$(distdir)/$$subdir" \
-           || $(mkdir_p) "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
            || exit 1; \
-           distdir=`$(am__cd) $(distdir) && pwd`; \
-           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-           (cd $$subdir && \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
              $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$top_distdir" \
-               distdir="$$distdir/$$subdir" \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
                distdir) \
              || exit 1; \
          fi; \
@@ -779,11 +800,13 @@ distdir: $(DISTFILES)
        $(MAKE) $(AM_MAKEFLAGS) \
          top_distdir="$(top_distdir)" distdir="$(distdir)" \
          dist-hook
-       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
          ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r $(distdir)
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        $(am__remove_distdir)
@@ -791,6 +814,14 @@ dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
        $(am__remove_distdir)
 
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
+
 dist-tarZ: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__remove_distdir)
@@ -815,13 +846,17 @@ dist dist-all: distdir
 distcheck: dist
        case '$(DIST_ARCHIVES)' in \
        *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
-         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
          uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
        *.shar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
@@ -829,9 +864,11 @@ distcheck: dist
        mkdir $(distdir)/_build
        mkdir $(distdir)/_inst
        chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && cd $(distdir)/_build \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
            $(DISTCHECK_CONFIGURE_FLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) \
@@ -853,13 +890,15 @@ distcheck: dist
          && rm -rf "$$dc_destdir" \
          && $(MAKE) $(AM_MAKEFLAGS) dist \
          && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
        $(am__remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-       @cd $(distuninstallcheck_dir) \
+       @$(am__cd) '$(distuninstallcheck_dir)' \
        && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
           || { echo "ERROR: files left after uninstall:" ; \
                if test -n "$(DESTDIR)"; then \
@@ -880,11 +919,11 @@ check-am: all-am
        $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
        $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-recursive
-all-am: Makefile $(ANSI2KNR) $(PROGRAMS) $(MANS) $(HEADERS) config.h
+all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) config.h
 installdirs: installdirs-recursive
 installdirs-am:
        for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -906,6 +945,7 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
        -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -914,7 +954,7 @@ maintainer-clean-generic:
 clean: clean-recursive
 
 clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-       clean-krextra mostlyclean-am
+       mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -927,18 +967,38 @@ dvi: dvi-recursive
 
 dvi-am:
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-man
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am: install-binPROGRAMS install-exec-local
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man: install-man1
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -950,7 +1010,7 @@ maintainer-clean-am: distclean-am maintainer-clean-generic
 
 mostlyclean: mostlyclean-recursive
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
 
 pdf: pdf-recursive
 
@@ -960,30 +1020,31 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
-
-uninstall-info: uninstall-info-recursive
+uninstall-am: uninstall-binPROGRAMS uninstall-man
 
 uninstall-man: uninstall-man1
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-       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 \
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
+       ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am check-local clean \
+       clean-binPROGRAMS clean-checkPROGRAMS clean-generic ctags \
+       ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
+       dist-lzma dist-shar dist-tarZ dist-xz 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 \
+       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-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-local \
+       install-html install-html-am install-info install-info-am \
+       install-man install-man1 install-pdf install-pdf-am install-ps \
+       install-ps-am 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
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \
+       uninstall-man1
 
 
 # Forward targets
@@ -1064,6 +1125,7 @@ check-regression:
 README:
 
 @MAINT_MAKEFILE@
+
 # 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:
diff --git a/NEWS b/NEWS
index fdeb5be..523c9a7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  1 April 2006
+  28 July 2010
 
 See the end of this file for copyrights and conditions.
 
@@ -9,6 +9,112 @@ manual, which is contained in this distribution as the file doc/make.texi.
 See the README file and the GNU make manual for instructions for
 reporting bugs.
 \f
+Version 3.82
+
+A complete list of bugs fixed in this version is available here:
+
+http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
+
+* Compiling GNU make now requires a conforming ISO C 1989 compiler and
+  standard runtime library.
+
+* WARNING: Future backward-incompatibility!
+  Wildcards are not documented as returning sorted values, but up to and
+  including this release the results have been sorted and some makefiles are
+  apparently depending on that.  In the next release of GNU make, for
+  performance reasons, we may remove that sorting.  If your makefiles
+  require sorted results from wildcard expansions, use the $(sort ...)
+  function to request it explicitly.
+
+* WARNING: Backward-incompatibility!
+  The POSIX standard for make was changed in the 2008 version in a
+  fundamentally incompatible way: make is required to invoke the shell as if
+  the '-e' flag were provided.  Because this would break many makefiles that
+  have been written to conform to the original text of the standard, the
+  default behavior of GNU make remains to invoke the shell with simply '-c'.
+  However, any makefile specifying the .POSIX special target will follow the
+  new POSIX standard and pass '-e' to the shell.  See also .SHELLFLAGS
+  below.
+
+* WARNING: Backward-incompatibility!
+  The '$?' variable now contains all prerequisites that caused the target to
+  be considered out of date, even if they do not exist (previously only
+  existing targets were provided in $?).
+
+* WARNING: Backward-incompatibility!
+  As a result of parser enhancements, three backward-compatibility issues
+  exist: first, a prerequisite containing an "=" cannot be escaped with a
+  backslash any longer.  You must create a variable containing an "=" and
+  use that variable in the prerequisite.  Second, variable names can no
+  longer contain whitespace, unless you put the whitespace in a variable and
+  use the variable.  Third, in previous versions of make it was sometimes
+  not flagged as an error for explicit and pattern targets to appear in the
+  same rule.  Now this is always reported as an error.
+
+* WARNING: Backward-incompatibility!
+  The pattern-specific variables and pattern rules are now applied in the
+  shortest stem first order instead of the definition order (variables
+  and rules with the same stem length are still applied in the definition
+  order). This produces the usually-desired behavior where more specific
+  patterns are preferred. To detect this feature search for 'shortest-stem'
+  in the .FEATURES special variable.
+
+* WARNING: Backward-incompatibility!
+  The library search behavior has changed to be compatible with the standard
+  linker behavior. Prior to this version for prerequisites specified using
+  the -lfoo syntax make first searched for libfoo.so in the current
+  directory, vpath directories, and system directories. If that didn't yield
+  a match, make then searched for libfoo.a in these directories. Starting
+  with this version make searches first for libfoo.so and then for libfoo.a
+  in each of these directories in order.
+
+* New command line option: --eval=STRING causes STRING to be evaluated as
+  makefile syntax (akin to using the $(eval ...) function).  The evaluation
+  is performed after all default rules and variables are defined, but before
+  any makefiles are read.
+
+* New special variable: .RECIPEPREFIX allows you to reset the recipe
+  introduction character from the default (TAB) to something else.  The
+  first character of this variable value is the new recipe introduction
+  character.  If the variable is set to the empty string, TAB is used again.
+  It can be set and reset at will; recipes will use the value active when
+  they were first parsed.  To detect this feature check the value of
+  $(.RECIPEPREFIX).
+
+* New special variable: .SHELLFLAGS allows you to change the options passed
+  to the shell when it invokes recipes.  By default the value will be "-c"
+  (or "-ec" if .POSIX is set).
+
+* New special target: .ONESHELL instructs make to invoke a single instance
+  of the shell and provide it with the entire recipe, regardless of how many
+  lines it contains.  As a special feature to allow more straightforward
+  conversion of makefiles to use .ONESHELL, any recipe line control
+  characters ('@', '+', or '-') will be removed from the second and
+  subsequent recipe lines.  This happens _only_ if the SHELL value is deemed
+  to be a standard POSIX-style shell.  If not, then no interior line control
+  characters are removed (as they may be part of the scripting language used
+  with the alternate SHELL).
+
+* New variable modifier 'private': prefixing a variable assignment with the
+  modifier 'private' suppresses inheritance of that variable by
+  prerequisites.  This is most useful for target- and pattern-specific
+  variables.
+
+* New make directive: 'undefine' allows you to undefine a variable so that
+  it appears as if it was never set. Both $(flavor) and $(origin) functions
+  will return 'undefined' for such a variable. To detect this feature search
+  for 'undefine' in the .FEATURES special variable.
+
+* The parser for variable assignments has been enhanced to allow multiple
+  modifiers ('export', 'override', 'private') on the same line as variables,
+  including define/endef variables, and in any order.  Also, it is possible
+  to create variables and targets named as these modifiers.
+
+* The 'define' make directive now allows a variable assignment operator
+  after the variable name, to allow for simple, conditional, or appending
+  multi-line variable assignment.
+
+\f
 Version 3.81
 
 * GNU make is ported to OS/2.
@@ -45,12 +151,12 @@ Version 3.81
 
 * 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.
+  backslash-newline sequences in recipes has changed.  If your makefiles
+  use backslash-newline sequences inside of single-quoted strings in
+  recipes you will be impacted by this change.  See the GNU make manual
+  subsection "Splitting Recipe Lines" (node "Splitting Lines"), in
+  section "Recipe Syntax", chapter "Writing Recipe in Rules", for
+  details.
 
 * WARNING: Backward-incompatibility!
   Some previous versions of GNU make had a bug where "#" in a function
@@ -59,7 +165,7 @@ Version 3.81
   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
+* New command line option: -L (--check-symlink-times).  On systems that
   support symbolic links, if this option is given then GNU make will
   use the most recent modification time of any symbolic links that are
   used to resolve target files.  The default behavior remains as it
@@ -120,7 +226,7 @@ Version 3.81
      argument if all arguments are true.
 
 * Changes made for POSIX compatibility:
-   - Only touch targets (under -t) if they have at least one command.
+   - Only touch targets (under -t) if they have a recipe.
    - Setting the SHELL make variable does NOT change the value of the
      SHELL environment variable given to programs invoked by make.  As
      an enhancement to POSIX, if you export the make variable SHELL then
@@ -193,7 +299,7 @@ Version 3.80
   expanded it returns a complete list of variable names defined by all
   makefiles at that moment.
 
-* A new command-line option is defined, -B or --always-make.  If
+* A new command line option is defined, -B or --always-make.  If
   specified GNU make will consider all targets out-of-date even if they
   would otherwise not be.
 
@@ -474,7 +580,7 @@ Version 3.72
 
 * The `MAKEFLAGS' variable (in the environment or in a makefile) can now
   contain variable definitions itself; these are treated just like
-  command-line variable definitions.  Make will automatically insert any
+  command line variable definitions.  Make will automatically insert any
   variable definitions from the environment value of `MAKEFLAGS' or from
   the command line, into the `MAKEFLAGS' value exported to children.  The
   `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
@@ -483,8 +589,8 @@ Version 3.72
   in the environment when its size is limited.
 
 * If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
-  a rule if it has changed when its commands exit with a nonzero status,
-  just as when the commands get a signal.
+  a rule if it has changed when its recipe exits with a nonzero status,
+  just as when the recipe gets a signal.
 
 * The automatic variable `$+' is new.  It lists all the dependencies like
   `$^', but preserves duplicates listed in the makefile.  This is useful
@@ -494,9 +600,9 @@ Version 3.72
 * You can now specify the `.IGNORE' and `.SILENT' special targets with
   dependencies to limit their effects to those files.  If a file appears as
   a dependency of `.IGNORE', then errors will be ignored while running the
-  commands to update that file.  Likewise if a file appears as a dependency
-  of `.SILENT', then the commands to update that file will not be printed
-  before they are run.  (This change was made to conform to POSIX.2.)
+  recipe to update that file.  Likewise if a file appears as a dependency
+  of `.SILENT', then the recipe to update that file will not be printed
+  before it is run.  (This change was made to conform to POSIX.2.)
 \f
 Version 3.71
 
@@ -544,22 +650,22 @@ Version 3.69
   Make, and a string describing the remote job support compiled in (if any).
   Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
 
-* Commands in an invocation of the `shell' function are no longer run with
-  a modified environment like target commands are.  As in versions before
+* Commands in an invocation of the `shell' function are no longer run
+  with a modified environment like recipes are.  As in versions before
   3.68, they now run with the environment that `make' started with.  We
   have reversed the change made in version 3.68 because it turned out to
   cause a paradoxical situation in cases like:
 
        export variable = $(shell echo value)
 
-  When Make attempted to put this variable in the environment for a target
-  command, it would try expand the value by running the shell command
+  When Make attempted to put this variable in the environment for a
+  recipe, it would try expand the value by running the shell command
   `echo value'.  In version 3.68, because it constructed an environment
   for that shell command in the same way, Make would begin to go into an
   infinite loop and then get a fatal error when it detected the loop.
 
-* The commands given for `.DEFAULT' are now used for phony targets with no
-  commands.
+* The recipe given for `.DEFAULT' is now used for phony targets with no
+  recipe.
 \f
 Version 3.68
 
@@ -583,8 +689,8 @@ Version 3.68
   no error (not even a warning) for a nonexistent makefile.
 
 * Commands in an invocation of the `shell' function are now run with a
-  modified environment like target commands are, so you can use `export' et
-  al to set up variables for them.  They used to run with the environment
+  modified environment like recipes are, so you can use `export' et al
+  to set up variables for them.  They used to run with the environment
   that `make' started with.
 \f
 Version 3.66
@@ -628,8 +734,8 @@ Version 3.63
   change directory, and recursive use of Make, now set `-w' automatically.
 
 * Multiple double-colon rules for the same target will no longer have their
-  commands run simultaneously under -j, as this could result in the two
-  commands trying to change the file at the same time and interfering with
+  recipes run simultaneously under -j, as this could result in the two
+  recipes trying to change the file at the same time and interfering with
   one another.
 
 * The `SHELL' variable is now never taken from the environment.
@@ -641,7 +747,7 @@ Version 3.63
   that tells you what all the options are and what they do.  Try `make --help'.
 
 * There are two new directives: `export' and `unexport'.  All variables are
-  no longer automatically put into the environments of the commands that
+  no longer automatically put into the environments of the recipe lines that
   Make runs.  Instead, only variables specified on the command line or in
   the environment are exported by default.  To export others, use:
        export VARIABLE
@@ -656,8 +762,8 @@ Version 3.63
   to get the old behavior.  See the node `Variables/Recursion' in the manual
   for a full description.
 
-* The commands from the `.DEFAULT' special target are only applied to
-  targets which have no rules at all, not all targets with no commands.
+* The recipe from the `.DEFAULT' special target is only applied to
+  targets which have no rules at all, not all targets with no recipe.
   This change was made for compatibility with Unix make.
 
 * All fatal error messages now contain `***', so they are easy to find in
@@ -709,8 +815,8 @@ Version 3.61
 * Built-in rules for C++ source files with the `.C' suffix.
   We still recommend that you use `.cc' instead.
 
-* If commands are given too many times for a single target,
-  the last set given is used, and a warning message is printed.
+* If a recipe is given too many times for a single target, the last one
+  given is used, and a warning message is printed.
 
 * Error messages about makefiles are in standard GNU error format,
   so C-x ` in Emacs works on them.
@@ -727,7 +833,7 @@ Version 3.60
 
 * Archives on AIX now supposedly work.
 
-* When the commands specified for .DEFAULT are used to update a target,
+* When the recipes specified for .DEFAULT are used to update a target,
   the $< automatic variable is given the same value as $@ for that target.
   This is how Unix make behaves, and this behavior is mandated by POSIX.2.
 \f
@@ -752,18 +858,18 @@ Version 3.57
 \f
 Version 3.55
 
-* There is now a Unix man page for GNU Make.  It is certainly not a replacement
-for the Texinfo manual, but it documents the basic functionality and the
-switches.  For full documentation, you should still read the Texinfo manual.
-Thanks to Dennis Morse of Stanford University for contributing the initial
-version of this.
+* There is now a Unix man page for GNU Make.  It is certainly not a
+  replacement for the Texinfo manual, but it documents the basic
+  functionality and the switches.  For full documentation, you should
+  still read the Texinfo manual.  Thanks to Dennis Morse of Stanford
+  University for contributing the initial version of this.
 
-* Variables which are defined by default (e.g., `CC') will no longer be put
-into the environment for child processes.  (If these variables are reset by the
-environment, makefiles, or the command line, they will still go into the
-environment.)
+* Variables which are defined by default (e.g., `CC') will no longer be
+  put into the environment for child processes.  (If these variables are
+  reset by the environment, makefiles, or the command line, they will
+  still go into the environment.)
 
-* Makefiles which have commands but no dependencies (and thus are always
+* Makefiles which have recipes but no dependencies (and thus are always
   considered out of date and in need of remaking), will not be remade (if they
   were being remade only because they were makefiles).  This means that GNU
   Make will no longer go into an infinite loop when fed the makefiles that
@@ -775,45 +881,45 @@ pathname (instead of a `%' pattern).
 Version 3.51
 
 * When removing intermediate files, only one `rm' command line is printed,
-listing all file names.
+  listing all file names.
 
 * There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
-These are the directory-only and file-only versions of `$^' and `$?'.
+  These are the directory-only and file-only versions of `$^' and `$?'.
 
 * Library dependencies given as `-lNAME' will use "libNAME.a" in the current
-directory if it exists.
+  directory if it exists.
 
 * The automatic variable `$($/)' is no longer defined.
 
-* Leading `+' characters on a command line make that line be executed even
-under -n, -t, or -q (as if the line contained `$(MAKE)').
+* Leading `+' characters on a recipe line make that line be executed even
+  under -n, -t, or -q (as if the line contained `$(MAKE)').
 
-* For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
-only those lines are executed, not their entire rules.
-(This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
+* For recipe lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
+  only those lines are executed, not the entire recipe.
+  (This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
 \f
 Version 3.50
 
 * Filenames in rules will now have ~ and ~USER expanded.
 
 * The `-p' output has been changed so it can be used as a makefile.
-(All information that isn't specified by makefiles is prefaced with comment
-characters.)
+  (All information that isn't specified by makefiles is prefaced with comment
+  characters.)
 \f
 Version 3.49
 
 * The % character can be quoted with backslash in implicit pattern rules,
-static pattern rules, `vpath' directives, and `patsubst', `filter', and
-`filter-out' functions.  A warning is issued if a `vpath' directive's
-pattern contains no %.
+  static pattern rules, `vpath' directives, and `patsubst', `filter', and
+  `filter-out' functions.  A warning is issued if a `vpath' directive's
+  pattern contains no %.
 
 * The `wildcard' variable expansion function now expands ~ and ~USER.
 
-* Messages indicating failed commands now contain the target name:
+* Messages indicating failed recipe lines now contain the target name:
        make: *** [target] Error 1
 
 * The `-p' output format has been changed somewhat to look more like
-makefile rules and to give all information that Make has about files.
+  makefile rules and to give all information that Make has about files.
 \f
 Version 3.48
 \f
@@ -822,49 +928,49 @@ Version 3.47
 * The `-l' switch with no argument removes any previous load-average limit.
 
 * When the `-w' switch is in effect, and Make has updated makefiles,
-it will write a `Leaving directory' messagfe before re-executing itself.
-This makes the `directory change tracking' changes to Emacs's compilation
-commands work properly.
+  it will write a `Leaving directory' message before re-executing itself.
+  This makes the `directory change tracking' changes to Emacs's compilation
+  commands work properly.
 \f
 Version 3.46
 
 * The automatic variable `$*' is now defined for explicit rules,
-as it is in Unix make.
+  as it is in Unix make.
 \f
 Version 3.45
 
 * The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
-specified without an argument (indicating infinite jobs).
-The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
+  specified without an argument (indicating infinite jobs).
+  The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
 
-* Make no longer checks hashed directories after running commands.
-The behavior implemented in 3.41 caused too much slowdown.
+* Make no longer checks hashed directories after running recipes.
+  The behavior implemented in 3.41 caused too much slowdown.
 \f
 Version 3.44
 
 * A dependency is NOT considered newer than its dependent if
-they have the same modification time.  The behavior implemented
-in 3.43 conflicts with RCS.
+  they have the same modification time.  The behavior implemented
+  in 3.43 conflicts with RCS.
 \f
 Version 3.43
 
 * Dependency loops are no longer fatal errors.
 
 * A dependency is considered newer than its dependent if
-they have the same modification time.
+  they have the same modification time.
 \f
 Version 3.42
 
 * The variables F77 and F77FLAGS are now set by default to $(FC) and
-$(FFLAGS).  Makefiles designed for System V make may use these variables in
-explicit rules and expect them to be set.  Unfortunately, there is no way to
-make setting these affect the Fortran implicit rules unless FC and FFLAGS
-are not used (and these are used by BSD make).
+  $(FFLAGS).  Makefiles designed for System V make may use these variables in
+  explicit rules and expect them to be set.  Unfortunately, there is no way to
+  make setting these affect the Fortran implicit rules unless FC and FFLAGS
+  are not used (and these are used by BSD make).
 \f
 Version 3.41
 
-* Make now checks to see if its hashed directories are changed by commands.
-Other makes that hash directories (Sun, 4.3 BSD) don't do this.
+* Make now checks to see if its hashed directories are changed by recipes.
+  Other makes that hash directories (Sun, 4.3 BSD) don't do this.
 \f
 Version 3.39
 
@@ -873,7 +979,7 @@ Version 3.39
 Version 3.32
 
 * A file beginning with a dot can be the default target if it also contains
-a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
+  a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
 \f
 Version 3.31
 
@@ -882,8 +988,8 @@ Version 3.31
 * Yet more USG stuff.
 
 * Minimal support for Microport System V (a 16-bit machine and a
-brain-damaged compiler).  This has even lower priority than other USG
-support, so if it gets beyond trivial, I will take it out completely.
+  brain-damaged compiler).  This has even lower priority than other USG
+  support, so if it gets beyond trivial, I will take it out completely.
 
 * Revamped default implicit rules (not much visible change).
 
@@ -894,13 +1000,13 @@ Version 3.30
 * Improved support for USG and HPUX (hopefully).
 
 * A variable reference like `$(foo:a=b)', if `a' contains a `%', is
-equivalent to `$(patsubst a,b,$(foo))'.
+  equivalent to `$(patsubst a,b,$(foo))'.
 
-* Defining .DEFAULT with no deps or commands clears its commands.
+* Defining .DEFAULT with no deps or recipe clears its recipe.
 
-* New default implicit rules for .S (cpp, then as), and .sh (copy and make
-executable).  All default implicit rules that use cpp (even indirectly), use
-$(CPPFLAGS).
+* New default implicit rules for .S (cpp, then as), and .sh (copy and
+  make executable).  All default implicit rules that use cpp (even
+  indirectly), use $(CPPFLAGS).
 \f
 Version 3.29
 
@@ -909,21 +1015,21 @@ Version 3.29
 Version 3.28
 
 * New option: "-l LOAD" says not to start any new jobs while others are
-running if the load average is not below LOAD (a floating-point number).
+  running if the load average is not below LOAD (a floating-point number).
 
 * There is support in place for implementations of remote command execution
-in Make.  See the file remote.c.
+  in Make.  See the file remote.c.
 \f
 Version 3.26
 
 * No more than 10 directories will be kept open at once.
-(This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
+  (This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
 \f
 Version 3.25
 
 * Archive files will have their modification times recorded before doing
-anything that might change their modification times by updating an archive
-member.
+  anything that might change their modification times by updating an archive
+  member.
 \f
 Version 3.20
 
@@ -932,25 +1038,25 @@ Version 3.20
 Version 3.19
 
 * The recursion level indications in error messages are much shorter than
-they were in version 3.14.
+  they were in version 3.14.
 \f
 Version 3.18
 
 * Leading spaces before directives are ignored (as documented).
 
 * Included makefiles can determine the default goal target.
-(System V Make does it this way, so we are being compatible).
+  (System V Make does it this way, so we are being compatible).
 \f
 Version 3.14.
 
 * Variables that are defaults built into Make will not be put in the
-environment for children.  This just saves some environment space and,
-except under -e, will be transparent to sub-makes.
+  environment for children.  This just saves some environment space and,
+  except under -e, will be transparent to sub-makes.
 
 * Error messages from sub-makes will indicate the level of recursion.
 
 * Hopefully some speed-up for large directories due to a change in the
-directory hashing scheme.
+  directory hashing scheme.
 
 * One child will always get a standard input that is usable.
 
@@ -959,7 +1065,7 @@ directory hashing scheme.
 Version 3.13.
 
 * Count parentheses inside expansion function calls so you can
-have nested calls: `$(sort $(foreach x,a b,$(x)))'.
+  have nested calls: `$(sort $(foreach x,a b,$(x)))'.
 \f
 Version 3.12.
 
@@ -975,15 +1081,15 @@ Version 3.12.
 
 * Makefiles will be updated and re-read if necessary.
 
-* Can now run several commands at once (parallelism), -j option.
+* Can now run several recipes at once (parallelism), -j option.
 
 * Error messages will contain the level of Make recursion, if any.
 
 * The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
-makefiles are read.
+  makefiles are read.
 
-* A double-colon rule with no dependencies will always have its commands run.
-(This is how both the BSD and System V versions of Make do it.)
+* A double-colon rule with no dependencies will always have its recipe run.
+  (This is how both the BSD and System V versions of Make do it.)
 \f
 Version 3.05
 
@@ -991,18 +1097,17 @@ Version 3.05
 \f
 -------------------------------------------------------------------------------
 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 924b663..f4a6fe5 100644 (file)
--- a/NMakefile
+++ b/NMakefile
@@ -4,20 +4,21 @@
 # run 'build_w32.bat' instead.
 #
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+# 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 LINK = link
 CC = cl
@@ -32,10 +33,9 @@ CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug
 CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
 
 LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\
-       /INCREMENTAL:no /PDB:WinDebug/make.pdb /MACHINE:I386 \
-       /OUT:WinDebug/make.exe /DEBUG
+       /INCREMENTAL:no /PDB:WinDebug/make.pdb /OUT:WinDebug/make.exe /DEBUG
 LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\
-       /INCREMENTAL:no /MACHINE:I386 /OUT:WinRel/make.exe
+       /INCREMENTAL:no /OUT:WinRel/make.exe
 
 all: config.h subproc Release Debug
 
@@ -128,152 +128,170 @@ $(OUTDIR)/pathstuff.obj : w32/pathstuff.c
 # dummy
 
 # .deps/ar.Po
-ar.o ar.o: ar.c make.h config.h \
-  getopt.h \
-  gettext.h filedef.h hash.h dep.h \
+$(OUTDIR)/ar.obj: 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 \
+$(OUTDIR)/arscan.obj: 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
+$(OUTDIR)/commands.obj: 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
+$(OUTDIR)/default.obj: 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 \
+$(OUTDIR)/dir.obj: 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
+$(OUTDIR)/expand.obj: 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
+$(OUTDIR)/file.obj: 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
+$(OUTDIR)/function.obj: 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 \
+$(OUTDIR)/getopt.obj: getopt.c config.h \
 
 # .deps/getopt1.Po
-getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+$(OUTDIR)/getopt1.obj: 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
+$(OUTDIR)/hash.obj: 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
+$(OUTDIR)/implicit.obj: 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 \
+$(OUTDIR)/job.obj: 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 \
+# dummy
 
 # .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 \
+$(OUTDIR)/main.obj: 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
+$(OUTDIR)/misc.obj: 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 \
+$(OUTDIR)/read.obj: 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
+$(OUTDIR)/remake.obj: 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
+$(OUTDIR)/remote-stub.obj: 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
+$(OUTDIR)/rule.obj: 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
+$(OUTDIR)/signame.obj: 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
+$(OUTDIR)/strcache.obj: 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
+$(OUTDIR)/variable.obj: 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
+$(OUTDIR)/version.obj: 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
+$(OUTDIR)/vpath.obj: vpath.c make.h config.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h variable.h
diff --git a/README b/README
index 14277e5..07e5dc5 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This directory contains the 3.81 release of GNU Make.
+This directory contains the 3.82 release of GNU Make.
 
 See the file NEWS for the user-visible changes from previous releases.
 In addition, there have been bugs fixed.
@@ -172,18 +172,18 @@ at the right README!
 \f
 -------------------------------------------------------------------------------
 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 3824ae0..091b8b4 100644 (file)
@@ -62,17 +62,17 @@ If you plan to use recursive makes, install make resident:
 \f
 -------------------------------------------------------------------------------
 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006 Free Software Foundation, Inc.
+2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 7cf6f40..52529ab 100644 (file)
@@ -62,7 +62,7 @@ To build from sources:
       [Enter].  Otherwise, you need to supply the path to the source
       directory as an argument to the batch file, like this:
 
-       c:\djgpp\gnu\make-3.81\configure.bat c:/djgpp/gnu/make-3.81
+       c:\djgpp\gnu\make-3.82\configure.bat c:/djgpp/gnu/make-3.82
 
       Note the forward slashes in the source path argument: you MUST
       use them here.
@@ -84,7 +84,7 @@ To build from sources:
       If you are building from outside of the source directory, you
       need to tell Make where the sources are, like this:
 
-               make srcdir=c:/djgpp/gnu/make-3.81
+               make srcdir=c:/djgpp/gnu/make-3.82
 
       (configure.bat will tell you this when it finishes).  You MUST
       use a full, not relative, name of the source directory here, or
@@ -325,17 +325,17 @@ Bug reports:
 \f
 -------------------------------------------------------------------------------
 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 77b6bf0..0da6385 100644 (file)
@@ -13,7 +13,7 @@ GNU make supports both shell types. The following list defines the order
 that is used to determine the shell:
 
  1. The shell specified by the environment variable MAKESHELL.
- 2. The shell specified by the SHELL variable within a Makefile. As on
+ 2. The shell specified by the SHELL variable within a Makefile. Like
     Unix, SHELL is NOT taken from the environment.
  3. The shell specified by the COMSPEC environment variable.
  4. The shell specified by the OS2_SHELL environment variable.
@@ -64,7 +64,7 @@ A standard Unix like build environment:
  - GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
 
 If you want to recreate the configuration files (developers only!)
-you need also: GNU m4 1.4, autoconf 2.59, automake 1.8.2 (or compatible)
+you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible)
 
 
 III. ***** COMPILATION AND INSTALLATION *****
@@ -83,7 +83,7 @@ b) Installation into x:/usr
 
    Note: Although it is possible to compile make using "./configure",
          "make", "make install" this is not recommended.  In particular,
-         you must ALWAYS use LDFLAGS="-Zstack 0x8000" because the default
+         you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default
          stack size is far to small and make will not work properly!
 
 Recommended environment variables and installation options:
@@ -91,13 +91,13 @@ Recommended environment variables and installation options:
     export ac_executable_extensions=".exe"
     export CPPFLAGS="-D__ST_MT_ERRNO__"
     export CFLAGS="-O2 -Zomf -Zmt"
-    export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+    export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
     export RANLIB="echo"
     ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext
     make AR=emxomfar
     make install
 
-Note: If you use gcc 2.9.x or higher I recommend to set also LIBS="-lgcc"
+Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc"
 
 Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
       See section I. for details.
@@ -148,29 +148,30 @@ To run the testsuite do the following:
 
   export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
   export CFLAGS="-Zomf -O2 -Zmt"
-  export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+  export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
   export RANLIB="echo"
   ./configure --prefix=x:/usr --disable-nls
   make AR=emxomfar
   make check
 
-All tests should work fine with the exception of "default_names" which
-is because OS/2 file systems are not case sensitive ("makefile" and
-"Makefile" specify the same file).
+All tests should work fine with the exception of one of the "INCLUDE_DIRS"
+tests which will fail if your /usr/include directory is on a drive different
+from the make source tree.
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 11e9ef8..60025d0 100644 (file)
@@ -1,10 +1,10 @@
 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 (tested with GCC 3.4.2).
 
-It builds with the MinGW port of GCC 3.x (tested with GCC 3.4.2).
+It also builds with MSVC 2.x, 4.x, 5.x, 6.x, and 2003 as well as
+with .NET 7.x and .NET 2003.
 
 The Windows 32-bit port of GNU make is maintained jointly by various
 people.  It was originally made by Rob Tulloh.
@@ -27,7 +27,8 @@ 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.
+    then build this project as usual.  There's also a solution file for
+    Studio 2003.
 
 
 Building with (MinGW-)GCC using build_w32.bat
@@ -68,10 +69,12 @@ Building with (MSVC++-)cl using build_w32.bat or NMakefile
 GNU make on Windows 32-bit platforms:
 
        This version of make is ported natively to Windows32 platforms
-       (Windows NT 3.51, Windows NT 4.0, Windows 95, and Windows 98). It
-       does not rely on any 3rd party software or add-on packages for
-       building. The only thing needed is a version of Visual C++,
-       which is the predominant compiler used on Windows32 platforms.
+       (Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP,
+       Windows 95, and Windows 98). It does not rely on any 3rd party
+       software or add-on packages for building. The only thing
+       needed is a Windows compiler.  Two compilers supported
+       officially are the MinGW port of GNU GCC, and the various
+       versions of the Microsoft C compiler.
 
        Do not confuse this port of GNU make with other Windows32 projects
        which provide a GNU make binary. These are separate projects
@@ -79,11 +82,11 @@ GNU make on Windows 32-bit platforms:
 
 GNU make and sh.exe:
 
-       This port prefers you have a working sh.exe somewhere on your
-       system. If you don't have sh.exe, the port falls back to
-       MSDOS mode for launching programs (via a batch file).
-       The MSDOS mode style execution has not been tested that
-       carefully though (The author uses GNU bash as sh.exe).
+       This port prefers if you have a working sh.exe somewhere on
+       your system. If you don't have sh.exe, the port falls back to
+       MSDOS mode for launching programs (via a batch file).  The
+       MSDOS mode style execution has not been tested that carefully
+       though (The author uses GNU bash as sh.exe).
 
        There are very few true ports of Bourne shell for NT right now.
        There is a version of GNU bash available from Cygnus "Cygwin"
@@ -108,9 +111,25 @@ GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL):
 
        A native Windows32 system with no Bourne shell will also run
        in batch mode.  All command lines will be put into batch files
-       and executed via $(COMSPEC) (%COMSPEC%).  Note that parallel
-        builds (-j) require a working Bourne shell; they will not work
-        with COM.
+       and executed via $(COMSPEC) (%COMSPEC%).  However, parallel
+       builds ARE supported with Windows shells (cmd.exe and
+       command.com).  See the next section about some peculiarities
+       of parallel builds on Windows.
+
+Support for parallel builds
+
+       Parallel builds (-jN) are supported in this port, with 2
+       limitations:
+
+         - The number of concurrent processes has a hard limit of 64,
+            due to the way this port implements waiting for its
+            subprocesses;
+
+         - The job server method (available when Make runs on Posix
+            platforms) is not supported, which means you must pass an
+            explicit -jN switch to sub-Make's in a recursive Makefile.
+            If a sub-Make does not receive an explicit -jN switch, it
+            will default to -j1, i.e. no parallelism in sub-Make's.
 
 GNU make and Cygnus GNU Windows32 tools:
 
@@ -167,33 +186,15 @@ GNU make handling of drive letters in pathnames (PATH, vpath, VPATH):
 GNU make test suite:
 
        I verified all functionality with a slightly modified version
-       of make-test-3.81 (modifications to get test suite to run
+       of make-test-3.82 (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.
 
-Building GNU make on Windows NT and Windows 95/98 with Microsoft Visual C:
-
-       I did not provide a Visual C project file with this port as
-       the project file would not be considered freely distributable
-       (or so I think). It is easy enough to create one, though, if
-       you know how to use Visual C.
-
-       I build the program statically to avoid problems locating DLL's
-       on machines that may not have MSVC runtime installed. If you
-       prefer, you can change make to build with shared libraries by
-       changing /MT to /MD in the NMakefile (or in build_w32.bat).
-
-       The program has not been built for non-Intel architectures (yet).
-
-       I have not tried to build with any other compilers than MSVC. I
-       have heard that this is possible though so don't be afraid to
-       notify me of your successes!
-
 Pathnames and white space:
 
        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.
+       pathnames are valid on 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
@@ -272,17 +273,17 @@ Bug reports:
 \f
 -------------------------------------------------------------------------------
 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 327886f..0ad1837 100644 (file)
@@ -96,18 +96,18 @@ SunOS 4.1.x:
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-Free Software Foundation, Inc.
+Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index d60a5ce..2a46032 100644 (file)
--- a/SMakefile
+++ b/SMakefile
@@ -4,29 +4,30 @@
 # run 'build.sh' instead.
 #
 # Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 #      Makefile for GNU Make
 #
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /make-3.81/
+VPATH = /make-3.82/
 # This must repeat the value, because configure will remove `VPATH = .'.
-srcdir = /make-3.81/
+srcdir = /make-3.82/
 
 CC = sc
 RM = delete
@@ -219,152 +220,170 @@ glob-clean glob-realclean:
 # dummy
 
 # .deps/ar.Po
-ar.o ar.o: ar.c make.h config.h \
-  getopt.h \
-  gettext.h filedef.h hash.h dep.h \
+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 \
+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
+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
+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 \
+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
+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
+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
+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 \
+getopt.o: getopt.c config.h \
 
 # .deps/getopt1.Po
-getopt1.o getopt1.o: getopt1.c config.h getopt.h \
+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
+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
+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 \
+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 \
+# dummy
 
 # .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 \
+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
+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 \
+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
+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
+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
+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
+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
+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
+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
+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
+vpath.o: vpath.c make.h config.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h variable.h
index c98da21..0e56441 100644 (file)
@@ -1,25 +1,22 @@
 dnl acinclude.m4 -- Extra macros needed for GNU make.
 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 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+dnl 2008, 2009, 2010 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 GNU Make is free software; you can redistribute it and/or modify it under
+dnl the terms of the GNU General Public License as published by the Free
+dnl Software Foundation; either version 3 of the License, 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 GNU Make is distributed in the hope that it will be useful, but WITHOUT
+dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+dnl FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.
+dnl 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 You should have received a copy of the GNU General Public License along
+dnl with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 dnl ---------------------------------------------------------------------------
 dnl Got this from the lynx 2.8 distribution.
@@ -62,9 +59,6 @@ fi
 #
 AC_CHECK_FUNCS(gethostbyname,,[
        CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)])
-#
-AC_CHECK_FUNCS(strcasecmp,,[
-       CF_RECHECK_FUNC(strcasecmp,resolv,cf_cv_netlibs)])
 ])
 LIBS="$LIBS $cf_cv_netlibs"
 test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG
index 22362db..b3ea5ea 100644 (file)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009  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.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # ----------------------------
 # 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.9"])
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
 
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.9.6])])
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
@@ -85,14 +110,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
 # 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
+# serial 9
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -101,8 +126,11 @@ AC_DEFUN([AM_CONDITIONAL],
 [AC_PREREQ(2.52)dnl
  ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -116,15 +144,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
 # 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 8
+# serial 10
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -152,6 +179,7 @@ AC_REQUIRE([AM_DEP_TRACK])dnl
 ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
        [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
        [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
        [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
                    [depcc="$$1"   am_compiler_list=])
 
@@ -180,6 +208,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -197,7 +235,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -207,18 +255,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
        break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -269,61 +322,74 @@ if test "x$enable_dependency_tracking" != xno; then
   AMDEPBACKSLASH='\'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # 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
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # So let's grep whole file.
-  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-    dirpart=`AS_DIRNAME("$mf")`
-  else
-    continue
-  fi
-  # 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"`
-  # 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.
-    test -f "$dirpart/$file" && continue
-    fdir=`AS_DIRNAME(["$file"])`
-    AS_MKDIR_P([$dirpart/$fdir])
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # 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"`
+    # 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.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
   done
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -370,14 +436,14 @@ AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC])
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 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
+# serial 16
 
 # 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.
@@ -394,16 +460,20 @@ AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC])
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.58])dnl
+[AC_PREREQ([2.62])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
 AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
 AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
 fi
 
 # test whether we have cygpath
@@ -423,6 +493,9 @@ m4_ifval([$2],
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
@@ -438,8 +511,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
@@ -447,20 +520,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
 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([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                  [_AM_DEPENDENCIES(CC)],
-                  [define([AC_PROG_CC],
-                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -471,18 +561,19 @@ AC_PROVIDE_IFELSE([AC_PROG_CXX],
 # our stamp files there.
 AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
 [# Compute $1's index in $config_headers.
+_am_arg=$1
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $1 | $1:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -493,7 +584,14 @@ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 AC_SUBST(install_sh)])
 
 # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
@@ -519,13 +617,13 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  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
+# serial 4
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -534,7 +632,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -544,24 +642,24 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -569,13 +667,14 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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
+# serial 6
 
 # AM_PROG_CC_C_O
 # --------------
@@ -583,11 +682,13 @@ rm -f confinc confmf
 AC_DEFUN([AM_PROG_CC_C_O],
 [AC_REQUIRE([AC_PROG_CC_C_O])dnl
 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
 # FIXME: we rely on the cache variable name because
 # there is no other way.
 set dummy $CC
-ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
@@ -595,18 +696,22 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    CC="$am_aux_dir/compile $CC"
 fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
 ])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # 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
+# serial 6
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -622,7 +727,15 @@ AC_SUBST($1)])
 # If it does, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -632,7 +745,7 @@ else
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -640,70 +753,33 @@ fi
 
 # AM_PROG_MKDIR_P
 # ---------------
-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
-# created by `make install' are always world readable, even if the
-# installer happens to have an overly restrictive umask (e.g. 077).
-# This was a mistake.  There are at least two reasons why we must not
-# use `-m 0755':
-#   - it causes special bits like SGID to be ignored,
-#   - it may be too restrictive (some setups expect 775 directories).
-#
-# Do not use -m 0755 and let people choose whatever they expect by
-# setting umask.
-#
-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
-# Some implementations (such as Solaris 8's) are not thread-safe: if a
-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
-# concurrently, both version can detect that a/ is missing, but only
-# one can create it and the other will error out.  Consequently we
-# restrict ourselves to GNU make (using the --version option ensures
-# this.)
+# Check for `mkdir -p'.
 AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # 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.  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
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-AC_SUBST([mkdir_p])])
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  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
+# serial 4
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -720,7 +796,7 @@ AC_DEFUN([_AM_SET_OPTION],
 # ----------------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
@@ -728,41 +804,16 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1996, 1997, 1998, 2000, 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 4
-
-AC_DEFUN([AM_C_PROTOTYPES],
-[AC_REQUIRE([AC_C_PROTOTYPES])
-if test "$ac_cv_prog_cc_stdc" != no; then
-  U= ANSI2KNR=
-else
-  U=_ ANSI2KNR=./ansi2knr
-fi
-# Ensure some checks needed by ansi2knr itself.
-AC_REQUIRE([AC_HEADER_STDC])
-AC_CHECK_HEADERS(string.h)
-AC_SUBST(U)dnl
-AC_SUBST(ANSI2KNR)dnl
-])
-
-AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
-
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
 # 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
+# serial 5
 
 # AM_SANITY_CHECK
 # ---------------
@@ -771,16 +822,29 @@ AC_DEFUN([AM_SANITY_CHECK],
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$[*]" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -830,9 +894,28 @@ dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# Copyright (C) 2006, 2008  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_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
 # Copyright (C) 2004, 2005  Free Software Foundation, Inc.
@@ -932,6 +1015,7 @@ AC_SUBST([am__untar])
 m4_include([config/dospaths.m4])
 m4_include([config/gettext.m4])
 m4_include([config/iconv.m4])
+m4_include([config/isc-posix.m4])
 m4_include([config/lib-ld.m4])
 m4_include([config/lib-link.m4])
 m4_include([config/lib-prefix.m4])
diff --git a/amiga.c b/amiga.c
index ade8239..6e70f65 100644 (file)
--- a/amiga.c
+++ b/amiga.c
@@ -1,19 +1,19 @@
 /* Running commands on Amiga
 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006 Free Software Foundation, Inc.
+2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "variable.h"
@@ -116,4 +116,3 @@ wildcard_expansion (char *wc, char *o)
 
     return o;
 }
-
diff --git a/amiga.h b/amiga.h
index 4b035a8..ee2aa32 100644 (file)
--- a/amiga.h
+++ b/amiga.h
@@ -1,20 +1,19 @@
 /* Definitions for amiga specific things
 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006 Free Software Foundation, Inc.
+2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
-
-extern int MyExecute PARAMS ((char ** argv));
-extern char * wildcard_expansion PARAMS ((char * wc, char * o));
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+int MyExecute (char ** argv);
+char * wildcard_expansion (char * wc, char * o);
diff --git a/ansi2knr.1 b/ansi2knr.1
deleted file mode 100644 (file)
index f9ee5a6..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH ANSI2KNR 1 "19 Jan 1996"
-.SH NAME
-ansi2knr \- convert ANSI C to Kernighan & Ritchie C
-.SH SYNOPSIS
-.I ansi2knr
-[--varargs] input_file [output_file]
-.SH DESCRIPTION
-If no output_file is supplied, output goes to stdout.
-.br
-There are no error messages.
-.sp
-.I ansi2knr
-recognizes function definitions by seeing a non-keyword identifier at the left
-margin, followed by a left parenthesis, with a right parenthesis as the last
-character on the line, and with a left brace as the first token on the
-following line (ignoring possible intervening comments).  It will recognize a
-multi-line header provided that no intervening line ends with a left or right
-brace or a semicolon.  These algorithms ignore whitespace and comments, except
-that the function name must be the first thing on the line.
-.sp
-The following constructs will confuse it:
-.br
-     - Any other construct that starts at the left margin and follows the
-above syntax (such as a macro or function call).
-.br
-     - Some macros that tinker with the syntax of the function header.
-.sp
-The --varargs switch is obsolete, and is recognized only for
-backwards compatibility.  The present version of
-.I ansi2knr
-will always attempt to convert a ... argument to va_alist and va_dcl.
-.SH AUTHOR
-L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
-continues to maintain the current version; most of the code in the current
-version is his work.  ansi2knr also includes contributions by Francois
-Pinard <pinard@iro.umontreal.ca> and Jim Avera <jima@netcom.com>.
diff --git a/ansi2knr.c b/ansi2knr.c
deleted file mode 100644 (file)
index a042674..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-/* Copyright (C) 1989, 2000 Aladdin Enterprises.  All rights reserved. */
-
-/*$Id: ansi2knr.c,v 1.3 2000/04/13 03:41:48 lpd Exp $*/
-/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
-
-/*
-ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY.  No author or distributor accepts responsibility to anyone for the
-consequences of using it or for whether it serves any particular purpose or
-works at all, unless he says so in writing.  Refer to the GNU General Public
-License (the "GPL") for full details.
-
-Everyone is granted permission to copy, modify and redistribute ansi2knr,
-but only under the conditions described in the GPL.  A copy of this license
-is supposed to have been given to you along with ansi2knr so you can know
-your rights and responsibilities.  It should be in a file named COPYLEFT,
-or, if there is no file named COPYLEFT, a file named COPYING.  Among other
-things, the copyright notice and this notice must be preserved on all
-copies.
-
-We explicitly state here what we believe is already implied by the GPL: if
-the ansi2knr program is distributed as a separate set of sources and a
-separate executable file which are aggregated on a storage medium together
-with another program, this in itself does not bring the other program under
-the GPL, nor does the mere fact that such a program or the procedures for
-constructing it invoke the ansi2knr executable bring any other part of the
-program under the GPL.
-*/
-
-/*
- * Usage:
-       ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]
- * --filename provides the file name for the #line directive in the output,
- * overriding input_file (if present).
- * If no input_file is supplied, input is read from stdin.
- * If no output_file is supplied, output goes to stdout.
- * There are no error messages.
- *
- * ansi2knr recognizes function definitions by seeing a non-keyword
- * identifier at the left margin, followed by a left parenthesis, with a
- * right parenthesis as the last character on the line, and with a left
- * brace as the first token on the following line (ignoring possible
- * intervening comments and/or preprocessor directives), except that a line
- * consisting of only
- *     identifier1(identifier2)
- * will not be considered a function definition unless identifier2 is
- * the word "void", and a line consisting of
- *     identifier1(identifier2, <<arbitrary>>)
- * will not be considered a function definition.
- * ansi2knr will recognize a multi-line header provided that no intervening
- * line ends with a left or right brace or a semicolon.  These algorithms
- * ignore whitespace, comments, and preprocessor directives, except that
- * the function name must be the first thing on the line.  The following
- * constructs will confuse it:
- *     - Any other construct that starts at the left margin and
- *         follows the above syntax (such as a macro or function call).
- *     - Some macros that tinker with the syntax of function headers.
- */
-
-/*
- * The original and principal author of ansi2knr is L. Peter Deutsch
- * <ghost@aladdin.com>.  Other authors are noted in the change history
- * that follows (in reverse chronological order):
-
-       lpd 2000-04-12 backs out Eggert's changes because of bugs:
-       - concatlits didn't declare the type of its bufend argument;
-       - concatlits didn't recognize when it was inside a comment;
-       - scanstring could scan backward past the beginning of the string; when
-       - the check for \ + newline in scanstring was unnecessary.
-
-       2000-03-05  Paul Eggert  <eggert@twinsun.com>
-
-       Add support for concatenated string literals.
-       * ansi2knr.c (concatlits): New decl.
-       (main): Invoke concatlits to concatenate string literals.
-       (scanstring): Handle backslash-newline correctly.  Work with
-       character constants.  Fix bug when scanning backwards through
-       backslash-quote.  Check for unterminated strings.
-       (convert1): Parse character constants, too.
-       (appendline, concatlits): New functions.
-       * ansi2knr.1: Document this.
-
-       lpd 1999-08-17 added code to allow preprocessor directives
-               wherever comments are allowed
-       lpd 1999-04-12 added minor fixes from Pavel Roskin
-               <pavel_roskin@geocities.com> for clean compilation with
-               gcc -W -Wall
-       lpd 1999-03-22 added hack to recognize lines consisting of
-               identifier1(identifier2, xxx) as *not* being procedures
-       lpd 1999-02-03 made indentation of preprocessor commands consistent
-       lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an
-               endless loop; quoted strings within an argument list
-               confused the parser
-       lpd 1999-01-24 added a check for write errors on the output,
-               suggested by Jim Meyering <meyering@ascend.com>
-       lpd 1998-11-09 added further hack to recognize identifier(void)
-               as being a procedure
-       lpd 1998-10-23 added hack to recognize lines consisting of
-               identifier1(identifier2) as *not* being procedures
-       lpd 1997-12-08 made input_file optional; only closes input and/or
-               output file if not stdin or stdout respectively; prints
-               usage message on stderr rather than stdout; adds
-               --filename switch (changes suggested by
-               <ceder@lysator.liu.se>)
-       lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with
-               compilers that don't understand void, as suggested by
-               Tom Lane
-       lpd 1996-01-15 changed to require that the first non-comment token
-               on the line following a function header be a left brace,
-               to reduce sensitivity to macros, as suggested by Tom Lane
-               <tgl@sss.pgh.pa.us>
-       lpd 1995-06-22 removed #ifndefs whose sole purpose was to define
-               undefined preprocessor symbols as 0; changed all #ifdefs
-               for configuration symbols to #ifs
-       lpd 1995-04-05 changed copyright notice to make it clear that
-               including ansi2knr in a program does not bring the entire
-               program under the GPL
-       lpd 1994-12-18 added conditionals for systems where ctype macros
-               don't handle 8-bit characters properly, suggested by
-               Francois Pinard <pinard@iro.umontreal.ca>;
-               removed --varargs switch (this is now the default)
-       lpd 1994-10-10 removed CONFIG_BROKETS conditional
-       lpd 1994-07-16 added some conditionals to help GNU `configure',
-               suggested by Francois Pinard <pinard@iro.umontreal.ca>;
-               properly erase prototype args in function parameters,
-               contributed by Jim Avera <jima@netcom.com>;
-               correct error in writeblanks (it shouldn't erase EOLs)
-       lpd 1989-xx-xx original version
- */
-
-/* Most of the conditionals here are to make ansi2knr work with */
-/* or without the GNU configure machinery. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if HAVE_CONFIG_H
-
-/*
-   For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
-   This will define HAVE_CONFIG_H and so, activate the following lines.
- */
-
-# if STDC_HEADERS || HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-#else /* not HAVE_CONFIG_H */
-
-/* Otherwise do it the hard way */
-
-# ifdef BSD
-#  include <strings.h>
-# else
-#  ifdef VMS
-    extern int strlen(), strncmp();
-#  else
-#   include <string.h>
-#  endif
-# endif
-
-#endif /* not HAVE_CONFIG_H */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#else
-/*
-   malloc and free should be declared in stdlib.h,
-   but if you've got a K&R compiler, they probably aren't.
- */
-# ifdef MSDOS
-#  include <malloc.h>
-# else
-#  ifdef VMS
-     extern char *malloc();
-     extern void free();
-#  else
-     extern char *malloc();
-     extern int free();
-#  endif
-# endif
-
-#endif
-
-/* Define NULL (for *very* old compilers). */
-#ifndef NULL
-# define NULL (0)
-#endif
-
-/*
- * The ctype macros don't always handle 8-bit characters correctly.
- * Compensate for this here.
- */
-#ifdef isascii
-# undef HAVE_ISASCII           /* just in case */
-# define HAVE_ISASCII 1
-#else
-#endif
-#if STDC_HEADERS || !HAVE_ISASCII
-# define is_ascii(c) 1
-#else
-# define is_ascii(c) isascii(c)
-#endif
-
-#define is_space(c) (is_ascii(c) && isspace(c))
-#define is_alpha(c) (is_ascii(c) && isalpha(c))
-#define is_alnum(c) (is_ascii(c) && isalnum(c))
-
-/* Scanning macros */
-#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
-#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
-
-/* Forward references */
-char *ppdirforward();
-char *ppdirbackward();
-char *skipspace();
-char *scanstring();
-int writeblanks();
-int test1();
-int convert1();
-
-/* The main program */
-int
-main(argc, argv)
-    int argc;
-    char *argv[];
-{      FILE *in = stdin;
-       FILE *out = stdout;
-       char *filename = 0;
-       char *program_name = argv[0];
-       char *output_name = 0;
-#define bufsize 5000                   /* arbitrary size */
-       char *buf;
-       char *line;
-       char *more;
-       char *usage =
-         "Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]\n";
-       /*
-        * In previous versions, ansi2knr recognized a --varargs switch.
-        * If this switch was supplied, ansi2knr would attempt to convert
-        * a ... argument to va_alist and va_dcl; if this switch was not
-        * supplied, ansi2knr would simply drop any such arguments.
-        * Now, ansi2knr always does this conversion, and we only
-        * check for this switch for backward compatibility.
-        */
-       int convert_varargs = 1;
-       int output_error;
-
-       while ( argc > 1 && argv[1][0] == '-' ) {
-         if ( !strcmp(argv[1], "--varargs") ) {
-           convert_varargs = 1;
-           argc--;
-           argv++;
-           continue;
-         }
-         if ( !strcmp(argv[1], "--filename") && argc > 2 ) {
-           filename = argv[2];
-           argc -= 2;
-           argv += 2;
-           continue;
-         }
-         fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name,
-                 argv[1]);
-         fprintf(stderr, usage);
-         exit(1);
-       }
-       switch ( argc )
-          {
-       default:
-               fprintf(stderr, usage);
-               exit(0);
-       case 3:
-               output_name = argv[2];
-               out = fopen(output_name, "w");
-               if ( out == NULL ) {
-                 fprintf(stderr, "%s: Cannot open output file %s\n",
-                         program_name, output_name);
-                 exit(1);
-               }
-               /* falls through */
-       case 2:
-               in = fopen(argv[1], "r");
-               if ( in == NULL ) {
-                 fprintf(stderr, "%s: Cannot open input file %s\n",
-                         program_name, argv[1]);
-                 exit(1);
-               }
-               if ( filename == 0 )
-                 filename = argv[1];
-               /* falls through */
-       case 1:
-               break;
-          }
-       if ( filename )
-         fprintf(out, "#line 1 \"%s\"\n", filename);
-       buf = malloc(bufsize);
-       if ( buf == NULL )
-          {
-               fprintf(stderr, "Unable to allocate read buffer!\n");
-               exit(1);
-          }
-       line = buf;
-       while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
-          {
-test:          line += strlen(line);
-               switch ( test1(buf) )
-                  {
-               case 2:                 /* a function header */
-                       convert1(buf, out, 1, convert_varargs);
-                       break;
-               case 1:                 /* a function */
-                       /* Check for a { at the start of the next line. */
-                       more = ++line;
-f:                     if ( line >= buf + (bufsize - 1) ) /* overflow check */
-                         goto wl;
-                       if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
-                         goto wl;
-                       switch ( *skipspace(ppdirforward(more), 1) )
-                         {
-                         case '{':
-                           /* Definitely a function header. */
-                           convert1(buf, out, 0, convert_varargs);
-                           fputs(more, out);
-                           break;
-                         case 0:
-                           /* The next line was blank or a comment: */
-                           /* keep scanning for a non-comment. */
-                           line += strlen(line);
-                           goto f;
-                         default:
-                           /* buf isn't a function header, but */
-                           /* more might be. */
-                           fputs(buf, out);
-                           strcpy(buf, more);
-                           line = buf;
-                           goto test;
-                         }
-                       break;
-               case -1:                /* maybe the start of a function */
-                       if ( line != buf + (bufsize - 1) ) /* overflow check */
-                         continue;
-                       /* falls through */
-               default:                /* not a function */
-wl:                    fputs(buf, out);
-                       break;
-                  }
-               line = buf;
-          }
-       if ( line != buf )
-         fputs(buf, out);
-       free(buf);
-       if ( output_name ) {
-         output_error = ferror(out);
-         output_error |= fclose(out);
-       } else {                /* out == stdout */
-         fflush(out);
-         output_error = ferror(out);
-       }
-       if ( output_error ) {
-         fprintf(stderr, "%s: error writing to %s\n", program_name,
-                 (output_name ? output_name : "stdout"));
-         exit(1);
-       }
-       if ( in != stdin )
-         fclose(in);
-       return 0;
-}
-
-/*
- * Skip forward or backward over one or more preprocessor directives.
- */
-char *
-ppdirforward(p)
-    char *p;
-{
-    for (; *p == '#'; ++p) {
-       for (; *p != '\r' && *p != '\n'; ++p)
-           if (*p == 0)
-               return p;
-       if (*p == '\r' && p[1] == '\n')
-           ++p;
-    }
-    return p;
-}
-char *
-ppdirbackward(p, limit)
-    char *p;
-    char *limit;
-{
-    char *np = p;
-
-    for (;; p = --np) {
-       if (*np == '\n' && np[-1] == '\r')
-           --np;
-       for (; np > limit && np[-1] != '\r' && np[-1] != '\n'; --np)
-           if (np[-1] == 0)
-               return np;
-       if (*np != '#')
-           return p;
-    }
-}
-
-/*
- * Skip over whitespace, comments, and preprocessor directives,
- * in either direction.
- */
-char *
-skipspace(p, dir)
-    char *p;
-    int dir;                   /* 1 for forward, -1 for backward */
-{
-    for ( ; ; ) {
-       while ( is_space(*p) )
-           p += dir;
-       if ( !(*p == '/' && p[dir] == '*') )
-           break;
-       p += dir;  p += dir;
-       while ( !(*p == '*' && p[dir] == '/') ) {
-           if ( *p == 0 )
-               return p;       /* multi-line comment?? */
-           p += dir;
-       }
-       p += dir;  p += dir;
-    }
-    return p;
-}
-
-/* Scan over a quoted string, in either direction. */
-char *
-scanstring(p, dir)
-    char *p;
-    int dir;
-{
-    for (p += dir; ; p += dir)
-       if (*p == '"' && p[-dir] != '\\')
-           return p + dir;
-}
-
-/*
- * Write blanks over part of a string.
- * Don't overwrite end-of-line characters.
- */
-int
-writeblanks(start, end)
-    char *start;
-    char *end;
-{      char *p;
-       for ( p = start; p < end; p++ )
-         if ( *p != '\r' && *p != '\n' )
-           *p = ' ';
-       return 0;
-}
-
-/*
- * Test whether the string in buf is a function definition.
- * The string may contain and/or end with a newline.
- * Return as follows:
- *     0 - definitely not a function definition;
- *     1 - definitely a function definition;
- *     2 - definitely a function prototype (NOT USED);
- *     -1 - may be the beginning of a function definition,
- *             append another line and look again.
- * The reason we don't attempt to convert function prototypes is that
- * Ghostscript's declaration-generating macros look too much like
- * prototypes, and confuse the algorithms.
- */
-int
-test1(buf)
-    char *buf;
-{      char *p = buf;
-       char *bend;
-       char *endfn;
-       int contin;
-
-       if ( !isidfirstchar(*p) )
-         return 0;             /* no name at left margin */
-       bend = skipspace(ppdirbackward(buf + strlen(buf) - 1, buf), -1);
-       switch ( *bend )
-          {
-          case ';': contin = 0 /*2*/; break;
-          case ')': contin = 1; break;
-          case '{': return 0;          /* not a function */
-          case '}': return 0;          /* not a function */
-          default: contin = -1;
-          }
-       while ( isidchar(*p) )
-         p++;
-       endfn = p;
-       p = skipspace(p, 1);
-       if ( *p++ != '(' )
-         return 0;             /* not a function */
-       p = skipspace(p, 1);
-       if ( *p == ')' )
-         return 0;             /* no parameters */
-       /* Check that the apparent function name isn't a keyword. */
-       /* We only need to check for keywords that could be followed */
-       /* by a left parenthesis (which, unfortunately, is most of them). */
-          {    static char *words[] =
-                  {    "asm", "auto", "case", "char", "const", "double",
-                       "extern", "float", "for", "if", "int", "long",
-                       "register", "return", "short", "signed", "sizeof",
-                       "static", "switch", "typedef", "unsigned",
-                       "void", "volatile", "while", 0
-                  };
-               char **key = words;
-               char *kp;
-               unsigned len = endfn - buf;
-
-               while ( (kp = *key) != 0 )
-                  {    if ( strlen(kp) == len && !strncmp(kp, buf, len) )
-                         return 0;     /* name is a keyword */
-                       key++;
-                  }
-          }
-          {
-              char *id = p;
-              int len;
-              /*
-               * Check for identifier1(identifier2) and not
-               * identifier1(void), or identifier1(identifier2, xxxx).
-               */
-
-              while ( isidchar(*p) )
-                  p++;
-              len = p - id;
-              p = skipspace(p, 1);
-              if (*p == ',' ||
-                  (*p == ')' && (len != 4 || strncmp(id, "void", 4)))
-                  )
-                  return 0;    /* not a function */
-          }
-       /*
-        * If the last significant character was a ), we need to count
-        * parentheses, because it might be part of a formal parameter
-        * that is a procedure.
-        */
-       if (contin > 0) {
-           int level = 0;
-
-           for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1))
-               level += (*p == '(' ? 1 : *p == ')' ? -1 : 0);
-           if (level > 0)
-               contin = -1;
-       }
-       return contin;
-}
-
-/* Convert a recognized function definition or header to K&R syntax. */
-int
-convert1(buf, out, header, convert_varargs)
-    char *buf;
-    FILE *out;
-    int header;                        /* Boolean */
-    int convert_varargs;       /* Boolean */
-{      char *endfn;
-       char *p;
-       /*
-        * The breaks table contains pointers to the beginning and end
-        * of each argument.
-        */
-       char **breaks;
-       unsigned num_breaks = 2;        /* for testing */
-       char **btop;
-       char **bp;
-       char **ap;
-       char *vararg = 0;
-
-       /* Pre-ANSI implementations don't agree on whether strchr */
-       /* is called strchr or index, so we open-code it here. */
-       for ( endfn = buf; *(endfn++) != '('; )
-         ;
-top:   p = endfn;
-       breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
-       if ( breaks == NULL )
-          {    /* Couldn't allocate break table, give up */
-               fprintf(stderr, "Unable to allocate break table!\n");
-               fputs(buf, out);
-               return -1;
-          }
-       btop = breaks + num_breaks * 2 - 2;
-       bp = breaks;
-       /* Parse the argument list */
-       do
-          {    int level = 0;
-               char *lp = NULL;
-               char *rp = NULL;
-               char *end = NULL;
-
-               if ( bp >= btop )
-                  {    /* Filled up break table. */
-                       /* Allocate a bigger one and start over. */
-                       free((char *)breaks);
-                       num_breaks <<= 1;
-                       goto top;
-                  }
-               *bp++ = p;
-               /* Find the end of the argument */
-               for ( ; end == NULL; p++ )
-                  {    switch(*p)
-                          {
-                          case ',':
-                               if ( !level ) end = p;
-                               break;
-                          case '(':
-                               if ( !level ) lp = p;
-                               level++;
-                               break;
-                          case ')':
-                               if ( --level < 0 ) end = p;
-                               else rp = p;
-                               break;
-                          case '/':
-                               if (p[1] == '*')
-                                   p = skipspace(p, 1) - 1;
-                               break;
-                          case '"':
-                              p = scanstring(p, 1) - 1;
-                              break;
-                          default:
-                               ;
-                          }
-                  }
-               /* Erase any embedded prototype parameters. */
-               if ( lp && rp )
-                 writeblanks(lp + 1, rp);
-               p--;                    /* back up over terminator */
-               /* Find the name being declared. */
-               /* This is complicated because of procedure and */
-               /* array modifiers. */
-               for ( ; ; )
-                  {    p = skipspace(p - 1, -1);
-                       switch ( *p )
-                          {
-                          case ']':    /* skip array dimension(s) */
-                          case ')':    /* skip procedure args OR name */
-                          {    int level = 1;
-                               while ( level )
-                                switch ( *--p )
-                                  {
-                                  case ']': case ')':
-                                      level++;
-                                      break;
-                                  case '[': case '(':
-                                      level--;
-                                      break;
-                                  case '/':
-                                      if (p > buf && p[-1] == '*')
-                                          p = skipspace(p, -1) + 1;
-                                      break;
-                                  case '"':
-                                      p = scanstring(p, -1) + 1;
-                                      break;
-                                  default: ;
-                                  }
-                          }
-                               if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
-                                  {    /* We found the name being declared */
-                                       while ( !isidfirstchar(*p) )
-                                         p = skipspace(p, 1) + 1;
-                                       goto found;
-                                  }
-                               break;
-                          default:
-                               goto found;
-                          }
-                  }
-found:         if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
-                 {     if ( convert_varargs )
-                         {     *bp++ = "va_alist";
-                               vararg = p-2;
-                         }
-                       else
-                         {     p++;
-                               if ( bp == breaks + 1 ) /* sole argument */
-                                 writeblanks(breaks[0], p);
-                               else
-                                 writeblanks(bp[-1] - 1, p);
-                               bp--;
-                         }
-                  }
-               else
-                  {    while ( isidchar(*p) ) p--;
-                       *bp++ = p+1;
-                  }
-               p = end;
-          }
-       while ( *p++ == ',' );
-       *bp = p;
-       /* Make a special check for 'void' arglist */
-       if ( bp == breaks+2 )
-          {    p = skipspace(breaks[0], 1);
-               if ( !strncmp(p, "void", 4) )
-                  {    p = skipspace(p+4, 1);
-                       if ( p == breaks[2] - 1 )
-                          {    bp = breaks;    /* yup, pretend arglist is empty */
-                               writeblanks(breaks[0], p + 1);
-                          }
-                  }
-          }
-       /* Put out the function name and left parenthesis. */
-       p = buf;
-       while ( p != endfn ) putc(*p, out), p++;
-       /* Put out the declaration. */
-       if ( header )
-         {     fputs(");", out);
-               for ( p = breaks[0]; *p; p++ )
-                 if ( *p == '\r' || *p == '\n' )
-                   putc(*p, out);
-         }
-       else
-         {     for ( ap = breaks+1; ap < bp; ap += 2 )
-                 {     p = *ap;
-                       while ( isidchar(*p) )
-                         putc(*p, out), p++;
-                       if ( ap < bp - 1 )
-                         fputs(", ", out);
-                 }
-               fputs(")  ", out);
-               /* Put out the argument declarations */
-               for ( ap = breaks+2; ap <= bp; ap += 2 )
-                 (*ap)[-1] = ';';
-               if ( vararg != 0 )
-                 {     *vararg = 0;
-                       fputs(breaks[0], out);          /* any prior args */
-                       fputs("va_dcl", out);           /* the final arg */
-                       fputs(bp[0], out);
-                 }
-               else
-                 fputs(breaks[0], out);
-         }
-       free((char *)breaks);
-       return 0;
-}
diff --git a/ar.c b/ar.c
index 4d9f1bb..95dcbbb 100644 (file)
--- a/ar.c
+++ b/ar.c
@@ -1,20 +1,21 @@
 /* Interface to `ar' archives 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -24,29 +25,23 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #include "dep.h"
 #include <fnmatch.h>
 
-/* Defined in arscan.c.  */
-extern long int ar_scan PARAMS ((char *archive, long int (*function) (), long int arg));
-extern int ar_name_equal PARAMS ((char *name, char *mem, int truncated));
-#ifndef VMS
-extern int ar_member_touch PARAMS ((char *arname, char *memname));
-#endif
-
-/* Return nonzero if NAME is an archive-member reference, zero if not.
-   An archive-member reference is a name like `lib(member)'.
+/* Return nonzero if NAME is an archive-member reference, zero if not.  An
+   archive-member reference is a name like `lib(member)' where member is a
+   non-empty string.
    If a name like `lib((entry))' is used, a fatal error is signaled at
    the attempt to use this unsupported feature.  */
 
 int
-ar_name (char *name)
+ar_name (const char *name)
 {
-  char *p = strchr (name, '(');
-  char *end;
+  const char *p = strchr (name, '(');
+  const char *end;
 
   if (p == 0 || p == name)
     return 0;
 
   end = p + strlen (p) - 1;
-  if (*end != ')')
+  if (*end != ')' || end == p + 1)
     return 0;
 
   if (p[1] == '(' && end[-1] == ')')
@@ -57,31 +52,41 @@ ar_name (char *name)
 
 
 /* Parse the archive-member reference NAME into the archive and member names.
-   Put the malloc'd archive name in *ARNAME_P if ARNAME_P is non-nil;
-   put the malloc'd member name in *MEMNAME_P if MEMNAME_P is non-nil.  */
+   Creates one allocated string containing both names, pointed to by ARNAME_P.
+   MEMNAME_P points to the member.  */
 
 void
-ar_parse_name (char *name, char **arname_p, char **memname_p)
+ar_parse_name (const char *name, char **arname_p, char **memname_p)
 {
-  char *p = strchr (name, '('), *end = name + strlen (name) - 1;
+  char *p;
 
-  if (arname_p != 0)
-    *arname_p = savestring (name, p - name);
-
-  if (memname_p != 0)
-    *memname_p = savestring (p + 1, end - (p + 1));
+  *arname_p = xstrdup (name);
+  p = strchr (*arname_p, '(');
+  *(p++) = '\0';
+  p[strlen(p) - 1] = '\0';
+  *memname_p = p;
 }
 \f
-static long int ar_member_date_1 PARAMS ((int desc, char *mem, int truncated, long int hdrpos,
-       long int datapos, long int size, long int date, int uid, int gid, int mode, char *name));
+
+/* This function is called by `ar_scan' to find which member to look at.  */
+
+/* ARGSUSED */
+static long int
+ar_member_date_1 (int desc UNUSED, const char *mem, int truncated,
+                 long int hdrpos UNUSED, long int datapos UNUSED,
+                  long int size UNUSED, long int date,
+                  int uid UNUSED, int gid UNUSED, int mode UNUSED,
+                 const void *name)
+{
+  return ar_name_equal (name, mem, truncated) ? date : 0;
+}
 
 /* Return the modtime of NAME.  */
 
 time_t
-ar_member_date (char *name)
+ar_member_date (const char *name)
 {
   char *arname;
-  int arname_used = 0;
   char *memname;
   long int val;
 
@@ -98,67 +103,43 @@ ar_member_date (char *name)
     struct file *arfile;
     arfile = lookup_file (arname);
     if (arfile == 0 && file_exists_p (arname))
-      {
-       arfile = enter_file (arname);
-       arname_used = 1;
-      }
+      arfile = enter_file (strcache_add (arname));
 
     if (arfile != 0)
       (void) f_mtime (arfile, 0);
   }
 
-  val = ar_scan (arname, ar_member_date_1, (long int) memname);
+  val = ar_scan (arname, ar_member_date_1, memname);
 
-  if (!arname_used)
-    free (arname);
-  free (memname);
+  free (arname);
 
   return (val <= 0 ? (time_t) -1 : (time_t) val);
 }
-
-/* This function is called by `ar_scan' to find which member to look at.  */
-
-/* ARGSUSED */
-static long int
-ar_member_date_1 (int desc UNUSED, char *mem, int truncated,
-                 long int hdrpos UNUSED, long int datapos UNUSED,
-                  long int size UNUSED, long int date,
-                  int uid UNUSED, int gid UNUSED, int mode UNUSED, char *name)
-{
-  return ar_name_equal (name, mem, truncated) ? date : 0;
-}
 \f
 /* Set the archive-member NAME's modtime to now.  */
 
 #ifdef VMS
 int
-ar_touch (char *name)
+ar_touch (const char *name)
 {
   error (NILF, _("touch archive member is not available on VMS"));
   return -1;
 }
 #else
 int
-ar_touch (char *name)
+ar_touch (const char *name)
 {
   char *arname, *memname;
-  int arname_used = 0;
-  register int val;
+  int val;
 
   ar_parse_name (name, &arname, &memname);
 
   /* Make sure we know the modtime of the archive itself before we
-     touch the member, since this will change the archive itself.  */
+     touch the member, since this will change the archive modtime.  */
   {
     struct file *arfile;
-    arfile = lookup_file (arname);
-    if (arfile == 0)
-      {
-       arfile = enter_file (arname);
-       arname_used = 1;
-      }
-
-    (void) f_mtime (arfile, 0);
+    arfile = enter_file (strcache_add (arname));
+    f_mtime (arfile, 0);
   }
 
   val = 1;
@@ -185,9 +166,7 @@ ar_touch (char *name)
              _("touch: Bad return code from ar_member_touch on `%s'"), name);
     }
 
-  if (!arname_used)
-    free (arname);
-  free (memname);
+  free (arname);
 
   return val;
 }
@@ -197,8 +176,8 @@ ar_touch (char *name)
 
 struct ar_glob_state
   {
-    char *arname;
-    char *pattern;
+    const char *arname;
+    const char *pattern;
     unsigned int size;
     struct nameseq *chain;
     unsigned int n;
@@ -208,16 +187,18 @@ struct ar_glob_state
    element against the pattern in STATE.  */
 
 static long int
-ar_glob_match (int desc UNUSED, char *mem, int truncated UNUSED,
+ar_glob_match (int desc UNUSED, const char *mem, int truncated UNUSED,
               long int hdrpos UNUSED, long int datapos UNUSED,
                long int size UNUSED, long int date UNUSED, int uid UNUSED,
-               int gid UNUSED, int mode UNUSED, struct ar_glob_state *state)
+               int gid UNUSED, int mode UNUSED, const void *arg)
 {
+  struct ar_glob_state *state = (struct ar_glob_state *)arg;
+
   if (fnmatch (state->pattern, mem, FNM_PATHNAME|FNM_PERIOD) == 0)
     {
       /* We have a match.  Add it to the chain.  */
-      struct nameseq *new = (struct nameseq *) xmalloc (state->size);
-      new->name = concat (state->arname, mem, ")");
+      struct nameseq *new = xcalloc (state->size);
+      new->name = strcache_add (concat (4, state->arname, "(", mem, ")"));
       new->next = state->chain;
       state->chain = new;
       ++state->n;
@@ -232,7 +213,7 @@ static int
 glob_pattern_p (const char *pattern, int quote)
 {
   const char *p;
-  int open = 0;
+  int opened = 0;
 
   for (p = pattern; *p != '\0'; ++p)
     switch (*p)
@@ -247,11 +228,11 @@ glob_pattern_p (const char *pattern, int quote)
        break;
 
       case '[':
-       open = 1;
+       opened = 1;
        break;
 
       case ']':
-       if (open)
+       if (opened)
          return 1;
        break;
       }
@@ -263,11 +244,11 @@ glob_pattern_p (const char *pattern, int quote)
    Return a malloc'd chain of matching elements (or nil if none).  */
 
 struct nameseq *
-ar_glob (char *arname, char *member_pattern, unsigned int size)
+ar_glob (const char *arname, const char *member_pattern, unsigned int size)
 {
   struct ar_glob_state state;
-  char **names;
   struct nameseq *n;
+  const char **names;
   unsigned int i;
 
   if (! glob_pattern_p (member_pattern, 1))
@@ -275,28 +256,25 @@ ar_glob (char *arname, char *member_pattern, unsigned int size)
 
   /* Scan the archive for matches.
      ar_glob_match will accumulate them in STATE.chain.  */
-  i = strlen (arname);
-  state.arname = (char *) alloca (i + 2);
-  bcopy (arname, state.arname, i);
-  state.arname[i] = '(';
-  state.arname[i + 1] = '\0';
+  state.arname = arname;
   state.pattern = member_pattern;
   state.size = size;
   state.chain = 0;
   state.n = 0;
-  (void) ar_scan (arname, ar_glob_match, (long int) &state);
+  ar_scan (arname, ar_glob_match, &state);
 
   if (state.chain == 0)
     return 0;
 
   /* Now put the names into a vector for sorting.  */
-  names = (char **) alloca (state.n * sizeof (char *));
+  names = alloca (state.n * sizeof (const char *));
   i = 0;
   for (n = state.chain; n != 0; n = n->next)
     names[i++] = n->name;
 
   /* Sort them alphabetically.  */
-  qsort ((char *) names, i, sizeof (*names), alpha_compare);
+  /* MSVC erroneously warns without a cast here.  */
+  qsort ((void *)names, i, sizeof (*names), alpha_compare);
 
   /* Put them back into the chain in the sorted order.  */
   i = 0;
index dbc4afd..4ef8375 100644 (file)
--- a/arscan.c
+++ b/arscan.c
@@ -1,20 +1,20 @@
 /* Library function for scanning an archive file.
 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -25,7 +25,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #endif
 
 #ifndef        NO_ARCHIVES
-\f
+
 #ifdef VMS
 #include <lbrdef.h>
 #include <mhddef.h>
@@ -66,7 +66,7 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
                           &bufdesc.dsc$w_length, 0);
   if (! (status & 1))
     {
-      error (NILF, _("lbr$set_module failed to extract module info, status = %d"),
+      error (NILF, _("lbr$set_module() failed to extract module info, status = %d"),
             status);
 
       lbr$close (&VMS_lib_idx);
@@ -81,7 +81,28 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
    * but that decc$fix_time() isn't documented to work this way.  Let me
    * know if this causes problems in other VMS environments.
    */
-  val = decc$fix_time (&mhd->mhd$l_datim) + timezone - daylight*3600;
+  {
+    /* Modified by M. Gehre at 11-JAN-2008 because old formula is wrong:
+     * val = decc$fix_time (&mhd->mhd$l_datim) + timezone - daylight*3600;
+     * a) daylight specifies, if the timezone has daylight saving enabled, not
+     *    if it is active
+     * b) what we need is the information, if daylight saving was active, if
+     *    the library module was replaced. This information we get using the
+     *    localtime function
+     */
+
+    struct tm *tmp;
+
+    /* Conversion from VMS time to C time */
+    val = decc$fix_time (&mhd->mhd$l_datim);
+
+    /*
+     * Conversion from local time (stored in library) to GMT (needed for gmake)
+     * Note: The tm_gmtoff element is a VMS extension to the ANSI standard.
+     */
+    tmp = localtime (&val);
+    val -= tmp->tm_gmtoff;
+  }
 #endif
 
   for (i = 0; i < module->dsc$w_length; i++)
@@ -134,7 +155,7 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
    Returns 0 if have scanned successfully.  */
 
 long int
-ar_scan (char *archive, long int (*function) PARAMS ((void)), long int arg)
+ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 {
   char *p;
 
@@ -151,11 +172,12 @@ ar_scan (char *archive, long int (*function) PARAMS ((void)), long int arg)
 
   if (! (status & 1))
     {
-      error (NILF, _("lbr$ini_control failed with status = %d"),status);
+      error (NILF, _("lbr$ini_control() failed with status = %d"), status);
       return -2;
     }
 
-  libdesc.dsc$a_pointer = archive;
+  /* there is no such descriptor with "const char *dsc$a_pointer" */
+  libdesc.dsc$a_pointer = (char *)archive;
   libdesc.dsc$w_length = strlen (archive);
 
   status = lbr$open (&VMS_lib_idx, &libdesc, 0, 0, 0, 0, 0);
@@ -250,6 +272,7 @@ struct ar_hdr
     char ar_fmag[2];           /* Always contains ARFMAG.  */
   };
 # endif
+# define TOCHAR(_m)     (_m)
 #else
 /* These should allow us to read Windows (VC++) libraries (according to Frank
  * Libbrecht <frankl@abzx.belgium.hp.com>)
@@ -266,6 +289,8 @@ struct ar_hdr
 # define ar_date    Date
 # define ar_uid     UserID
 # define ar_gid     GroupID
+/* In Windows the member names have type BYTE so we must cast them.  */
+# define TOCHAR(_m)     ((char *)(_m))
 #endif
 
 /* Cray's <ar.h> apparently defines this.  */
@@ -301,7 +326,7 @@ struct ar_hdr
    Returns 0 if have scanned successfully.  */
 
 long int
-ar_scan (char *archive, long int (*function)(), long int arg)
+ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 {
 #ifdef AIAMAG
   FL_HDR fl_header;
@@ -313,14 +338,14 @@ ar_scan (char *archive, long int (*function)(), long int arg)
   int long_name = 0;
 #endif
   char *namemap = 0;
-  register int desc = open (archive, O_RDONLY, 0);
+  int desc = open (archive, O_RDONLY, 0);
   if (desc < 0)
     return -1;
 #ifdef SARMAG
   {
     char buf[SARMAG];
     register int nread = read (desc, buf, SARMAG);
-    if (nread != SARMAG || bcmp (buf, ARMAG, SARMAG))
+    if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG))
       {
        (void) close (desc);
        return -2;
@@ -329,7 +354,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 #else
 #ifdef AIAMAG
   {
-    register int nread = read (desc, (char *) &fl_header, FL_HSZ);
+    register int nread = read (desc, &fl_header, FL_HSZ);
 
     if (nread != FL_HSZ)
       {
@@ -339,7 +364,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 #ifdef AIAMAGBIG
     /* If this is a "big" archive, then set the flag and
        re-read the header into the "big" structure. */
-    if (!bcmp (fl_header.fl_magic, AIAMAGBIG, SAIAMAG))
+    if (!memcmp (fl_header.fl_magic, AIAMAGBIG, SAIAMAG))
       {
        big_archive = 1;
 
@@ -351,7 +376,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
          }
 
        /* re-read the header into the "big" structure */
-       nread = read (desc, (char *) &fl_header_big, FL_HSZ_BIG);
+       nread = read (desc, &fl_header_big, FL_HSZ_BIG);
        if (nread != FL_HSZ_BIG)
          {
            (void) close (desc);
@@ -361,7 +386,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
     else
 #endif
        /* Check to make sure this is a "normal" archive. */
-      if (bcmp (fl_header.fl_magic, AIAMAG, SAIAMAG))
+      if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG))
        {
           (void) close (desc);
           return -2;
@@ -455,7 +480,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 #ifdef AIAMAGBIG
        if (big_archive)
          {
-           nread = read (desc, (char *) &member_header_big,
+           nread = read (desc, &member_header_big,
                          AR_MEMHDR_SZ(member_header_big) );
 
            if (nread != AR_MEMHDR_SZ(member_header_big))
@@ -487,7 +512,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
        else
 #endif
          {
-           nread = read (desc, (char *) &member_header,
+           nread = read (desc, &member_header,
                          AR_MEMHDR_SZ(member_header) );
 
            if (nread != AR_MEMHDR_SZ(member_header))
@@ -525,7 +550,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
                       eltmode, arg);
 
 #else  /* Not AIAMAG.  */
-       nread = read (desc, (char *) &member_header, AR_HDR_SIZE);
+       nread = read (desc, &member_header, AR_HDR_SIZE);
        if (nread == 0)
          /* No data left means end of file; that is OK.  */
          break;
@@ -534,13 +559,13 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 #if defined(ARFMAG) || defined(ARFZMAG)
            || (
 # ifdef ARFMAG
-                bcmp (member_header.ar_fmag, ARFMAG, 2)
+                memcmp (member_header.ar_fmag, ARFMAG, 2)
 # else
                 1
 # endif
                 &&
 # ifdef ARFZMAG
-                bcmp (member_header.ar_fmag, ARFZMAG, 2)
+                memcmp (member_header.ar_fmag, ARFZMAG, 2)
 # else
                 1
 # endif
@@ -553,7 +578,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
          }
 
        name = namebuf;
-       bcopy (member_header.ar_name, name, sizeof member_header.ar_name);
+       memcpy (name, member_header.ar_name, sizeof member_header.ar_name);
        {
          register char *p = name + sizeof member_header.ar_name;
          do
@@ -563,11 +588,11 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 #ifndef AIAMAG
          /* If the member name is "//" or "ARFILENAMES/" this may be
             a list of file name mappings.  The maximum file name
-            length supported by the standard archive format is 14
-            characters.  This member will actually always be the
-            first or second entry in the archive, but we don't check
-            that.  */
-         is_namemap = (!strcmp (name, "//")
+            length supported by the standard archive format is 14
+            characters.  This member will actually always be the
+            first or second entry in the archive, but we don't check
+            that.  */
+         is_namemap = (!strcmp (name, "//")
                        || !strcmp (name, "ARFILENAMES/"));
 #endif /* Not AIAMAG. */
          /* On some systems, there is a slash after each member name.  */
@@ -575,41 +600,41 @@ ar_scan (char *archive, long int (*function)(), long int arg)
            *p = '\0';
 
 #ifndef AIAMAG
-         /* If the member name starts with a space or a slash, this
-            is an index into the file name mappings (used by GNU ar).
-            Otherwise if the member name looks like #1/NUMBER the
-            real member name appears in the element data (used by
-            4.4BSD).  */
-         if (! is_namemap
-             && (name[0] == ' ' || name[0] == '/')
-             && namemap != 0)
+         /* If the member name starts with a space or a slash, this
+            is an index into the file name mappings (used by GNU ar).
+            Otherwise if the member name looks like #1/NUMBER the
+            real member name appears in the element data (used by
+            4.4BSD).  */
+         if (! is_namemap
+             && (name[0] == ' ' || name[0] == '/')
+             && namemap != 0)
            {
              name = namemap + atoi (name + 1);
              long_name = 1;
            }
-         else if (name[0] == '#'
-                  && name[1] == '1'
-                  && name[2] == '/')
-           {
-             int namesize = atoi (name + 3);
-
-             name = (char *) alloca (namesize + 1);
-             nread = read (desc, name, namesize);
-             if (nread != namesize)
-               {
-                 close (desc);
-                 return -2;
-               }
-             name[namesize] = '\0';
+         else if (name[0] == '#'
+                  && name[1] == '1'
+                  && name[2] == '/')
+           {
+             int namesize = atoi (name + 3);
+
+             name = alloca (namesize + 1);
+             nread = read (desc, name, namesize);
+             if (nread != namesize)
+               {
+                 close (desc);
+                 return -2;
+               }
+             name[namesize] = '\0';
 
              long_name = 1;
-           }
+           }
 #endif /* Not AIAMAG. */
        }
 
 #ifndef        M_XENIX
-       sscanf (member_header.ar_mode, "%o", &eltmode);
-       eltsize = atol (member_header.ar_size);
+       sscanf (TOCHAR (member_header.ar_mode), "%o", &eltmode);
+       eltsize = atol (TOCHAR (member_header.ar_size));
 #else  /* Xenix.  */
        eltmode = (unsigned short int) member_header.ar_mode;
        eltsize = member_header.ar_size;
@@ -619,9 +644,9 @@ ar_scan (char *archive, long int (*function)(), long int arg)
          (*function) (desc, name, ! long_name, member_offset,
                       member_offset + AR_HDR_SIZE, eltsize,
 #ifndef        M_XENIX
-                      atol (member_header.ar_date),
-                      atoi (member_header.ar_uid),
-                      atoi (member_header.ar_gid),
+                      atol (TOCHAR (member_header.ar_date)),
+                      atoi (TOCHAR (member_header.ar_uid)),
+                      atoi (TOCHAR (member_header.ar_gid)),
 #else  /* Xenix.  */
                       member_header.ar_date,
                       member_header.ar_uid,
@@ -644,7 +669,7 @@ ar_scan (char *archive, long int (*function)(), long int arg)
 
 #ifdef AIAMAGBIG
        if (big_archive)
-          sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset);
+         sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset);
        else
 #endif
          sscanf (member_header.ar_nxtmem, "%12ld", &member_offset);
@@ -656,38 +681,38 @@ ar_scan (char *archive, long int (*function)(), long int arg)
          }
 #else
 
-       /* If this member maps archive names, we must read it in.  The
-          name map will always precede any members whose names must
-          be mapped.  */
+       /* If this member maps archive names, we must read it in.  The
+          name map will always precede any members whose names must
+          be mapped.  */
        if (is_namemap)
-         {
-           char *clear;
-           char *limit;
-
-           namemap = (char *) alloca (eltsize);
-           nread = read (desc, namemap, eltsize);
-           if (nread != eltsize)
-             {
-               (void) close (desc);
-               return -2;
-             }
-
-           /* The names are separated by newlines.  Some formats have
-              a trailing slash.  Null terminate the strings for
-              convenience.  */
-           limit = namemap + eltsize;
-           for (clear = namemap; clear < limit; clear++)
-             {
-               if (*clear == '\n')
-                 {
-                   *clear = '\0';
-                   if (clear[-1] == '/')
-                     clear[-1] = '\0';
-                 }
-             }
+         {
+           char *clear;
+           char *limit;
+
+           namemap = alloca (eltsize);
+           nread = read (desc, namemap, eltsize);
+           if (nread != eltsize)
+             {
+               (void) close (desc);
+               return -2;
+             }
+
+           /* The names are separated by newlines.  Some formats have
+              a trailing slash.  Null terminate the strings for
+              convenience.  */
+           limit = namemap + eltsize;
+           for (clear = namemap; clear < limit; clear++)
+             {
+               if (*clear == '\n')
+                 {
+                   *clear = '\0';
+                   if (clear[-1] == '/')
+                     clear[-1] = '\0';
+                 }
+             }
 
            is_namemap = 0;
-         }
+         }
 
        member_offset += AR_HDR_SIZE + eltsize;
        if (member_offset % 2 != 0)
@@ -706,9 +731,9 @@ ar_scan (char *archive, long int (*function)(), long int arg)
    sizeof (struct ar_hdr.ar_name) - 1.  */
 
 int
-ar_name_equal (char *name, char *mem, int truncated)
+ar_name_equal (const char *name, const char *mem, int truncated)
 {
-  char *p;
+  const char *p;
 
   p = strrchr (name, '/');
   if (p != 0)
@@ -737,10 +762,10 @@ ar_name_equal (char *name, char *mem, int truncated)
 #ifndef VMS
 /* ARGSUSED */
 static long int
-ar_member_pos (int desc UNUSED, char *mem, int truncated,
+ar_member_pos (int desc UNUSED, const char *mem, int truncated,
               long int hdrpos, long int datapos UNUSED, long int size UNUSED,
                long int date UNUSED, int uid UNUSED, int gid UNUSED,
-               int mode UNUSED, char *name)
+               int mode UNUSED, const void *name)
 {
   if (!ar_name_equal (name, mem, truncated))
     return 0;
@@ -755,9 +780,9 @@ ar_member_pos (int desc UNUSED, char *mem, int truncated,
    1 if valid but member MEMNAME does not exist.  */
 
 int
-ar_member_touch (char *arname, char *memname)
+ar_member_touch (const char *arname, const char *memname)
 {
-  long int pos = ar_scan (arname, ar_member_pos, (long int) memname);
+  long int pos = ar_scan (arname, ar_member_pos, memname);
   int fd;
   struct ar_hdr ar_hdr;
   int i;
@@ -775,12 +800,12 @@ ar_member_touch (char *arname, char *memname)
   /* Read in this member's header */
   if (lseek (fd, pos, 0) < 0)
     goto lose;
-  if (AR_HDR_SIZE != read (fd, (char *) &ar_hdr, AR_HDR_SIZE))
+  if (AR_HDR_SIZE != read (fd, &ar_hdr, AR_HDR_SIZE))
     goto lose;
   /* Write back the header, thus touching the archive file.  */
   if (lseek (fd, pos, 0) < 0)
     goto lose;
-  if (AR_HDR_SIZE != write (fd, (char *) &ar_hdr, AR_HDR_SIZE))
+  if (AR_HDR_SIZE != write (fd, &ar_hdr, AR_HDR_SIZE))
     goto lose;
   /* The file's mtime is the time we we want.  */
   EINTRLOOP (i, fstat (fd, &statbuf));
@@ -790,7 +815,7 @@ ar_member_touch (char *arname, char *memname)
   /* Advance member's time to that time */
   for (ui = 0; ui < sizeof ar_hdr.ar_date; ui++)
     ar_hdr.ar_date[ui] = ' ';
-  sprintf (ar_hdr.ar_date, "%ld", (long int) statbuf.st_mtime);
+  sprintf (TOCHAR (ar_hdr.ar_date), "%ld", (long int) statbuf.st_mtime);
 #ifdef AIAMAG
   ar_hdr.ar_date[strlen(ar_hdr.ar_date)] = ' ';
 #endif
@@ -800,7 +825,7 @@ ar_member_touch (char *arname, char *memname)
   /* Write back this member's header */
   if (lseek (fd, pos, 0) < 0)
     goto lose;
-  if (AR_HDR_SIZE != write (fd, (char *) &ar_hdr, AR_HDR_SIZE))
+  if (AR_HDR_SIZE != write (fd, &ar_hdr, AR_HDR_SIZE))
     goto lose;
   close (fd);
   return 0;
@@ -816,9 +841,9 @@ ar_member_touch (char *arname, char *memname)
 #ifdef TEST
 
 long int
-describe_member (int desc, char *name, int truncated,
+describe_member (int desc, const char *name, int truncated,
                 long int hdrpos, long int datapos, long int size,
-                 long int date, int uid, int gid, int mode)
+                 long int date, int uid, int gid, int mode, const void *arg)
 {
   extern char *ctime ();
 
@@ -834,7 +859,7 @@ describe_member (int desc, char *name, int truncated,
 int
 main (int argc, char **argv)
 {
-  ar_scan (argv[1], describe_member);
+  ar_scan (argv[1], describe_member, NULL);
   return 0;
 }
 
index a6bc032..213df8d 100755 (executable)
@@ -3,20 +3,21 @@
 # @configure_input@
 
 # Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # See Makefile.in for comments describing these variables.
 
index a6508af..de758b0 100644 (file)
@@ -1,20 +1,26 @@
 @echo off\r
 rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-rem 2006 Free Software Foundation, Inc.\r
+rem 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
+rem\r
+rem GNU Make is free software; you can redistribute it and/or modify it under\r
+rem the terms of the GNU General Public License as published by the Free\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
+rem more details.\r
+rem\r
+rem You should have received a copy of the GNU General Public License along\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
-rem GNU Make is free software; you can redistribute it and/or modify it under the\r
-rem terms of the GNU General Public License as published by the Free Software\r
-rem Foundation; either version 2, or (at your option) any later version.\r
-\r
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-rem You should have received a copy of the GNU General Public License along with\r
-rem GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
-\r
+if exist config.h.W32 GoTo NotCVS\r
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.in > config.h.W32.sed\r
+echo s,%%PACKAGE%%,make,g >> config.h.W32.sed\r
+sed -f config.h.W32.sed config.h.W32.template > config.h.W32\r
+:NotCVS\r
 if not exist config.h copy config.h.W32 config.h\r
 cd w32\subproc\r
 echo "Creating the subproc library"\r
@@ -88,9 +94,9 @@ cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D
 echo WinDebug\pathstuff.obj >>link.dbg\r
 echo off\r
 echo "Linking WinDebug/%make%.exe"\r
-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\r
+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 /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\r
 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\r
-link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /MACHINE:I386 /OUT:.\WinDebug/%make%.exe @link.dbg\r
+link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /OUT:.\WinDebug/%make%.exe @link.dbg\r
 if not exist .\WinDebug/%make%.exe echo "WinDebug build failed"\r
 if exist .\WinDebug/%make%.exe echo "WinDebug build succeeded!"\r
 if not exist .\WinRel\nul mkdir .\WinRel\r
@@ -155,43 +161,43 @@ cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WIND
 echo WinRel\pathstuff.obj >>link.rel\r
 echo off\r
 echo "Linking WinRel/%make%.exe"\r
-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\r
+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 /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\r
 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\r
-link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /MACHINE:I386 /OUT:.\WinRel/%make%.exe @link.rel\r
+link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /OUT:.\WinRel/%make%.exe @link.rel\r
 if not exist .\WinRel/%make%.exe echo "WinRel build failed"\r
 if exist .\WinRel/%make%.exe echo "WinRel build succeeded!"\r
 set make=\r
 GoTo BuildEnd\r
 :GCCBuild\r
 echo on\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c main.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o\r
-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\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c main.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o\r
+gcc -mthreads -gdwarf-2 -g3 -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\r
 :BuildEnd\r
 echo on\r
index a0a7c5c..f360bd4 100644 (file)
@@ -1,20 +1,20 @@
 /* Command processing 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "dep.h"
@@ -33,19 +33,42 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 # define FILE_LIST_SEPARATOR ' '
 #endif
 
-extern int remote_kill PARAMS ((int id, int sig));
+int remote_kill (int id, int sig);
 
 #ifndef        HAVE_UNISTD_H
-extern int getpid ();
+int getpid ();
 #endif
 \f
+
+static unsigned long
+dep_hash_1 (const void *key)
+{
+  const struct dep *d = key;
+  return_STRING_HASH_1 (dep_name (d));
+}
+
+static unsigned long
+dep_hash_2 (const void *key)
+{
+  const struct dep *d = key;
+  return_STRING_HASH_2 (dep_name (d));
+}
+
+static int
+dep_hash_cmp (const void *x, const void *y)
+{
+  const struct dep *dx = x;
+  const struct dep *dy = y;
+  return strcmp (dep_name (dx), dep_name (dy));
+}
+
 /* Set FILE's automatic variables up.  */
 
 void
 set_file_variables (struct file *file)
 {
   struct dep *d;
-  char *at, *percent, *star, *less;
+  const char *at, *percent, *star, *less;
 
 #ifndef        NO_ARCHIVES
   /* If the target is an archive member `lib(member)',
@@ -54,16 +77,19 @@ set_file_variables (struct file *file)
   if (ar_name (file->name))
     {
       unsigned int len;
+      const char *cp;
       char *p;
 
-      p = strchr (file->name, '(');
-      at = (char *) alloca (p - file->name + 1);
-      bcopy (file->name, at, p - file->name);
-      at[p - file->name] = '\0';
-      len = strlen (p + 1);
-      percent = (char *) alloca (len);
-      bcopy (p + 1, percent, len - 1);
-      percent[len - 1] = '\0';
+      cp = strchr (file->name, '(');
+      p = alloca (cp - file->name + 1);
+      memcpy (p, file->name, cp - file->name);
+      p[cp - file->name] = '\0';
+      at = p;
+      len = strlen (cp + 1);
+      p = alloca (len);
+      memcpy (p, cp + 1, len - 1);
+      p[len - 1] = '\0';
+      percent = p;
     }
   else
 #endif /* NO_ARCHIVES.  */
@@ -78,8 +104,7 @@ set_file_variables (struct file *file)
       /* In Unix make, $* is set to the target name with
         any suffix in the .SUFFIXES list stripped off for
         explicit rules.  We store this in the `stem' member.  */
-      register struct dep *d;
-      char *name;
+      const char *name;
       unsigned int len;
 
 #ifndef        NO_ARCHIVES
@@ -95,12 +120,12 @@ set_file_variables (struct file *file)
          len = strlen (name);
        }
 
-      for (d = enter_file (".SUFFIXES")->deps; d != 0; d = d->next)
+      for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next)
        {
          unsigned int slen = strlen (dep_name (d));
          if (len > slen && strneq (dep_name (d), name + (len - slen), slen))
            {
-             file->stem = savestring (name, len - slen);
+             file->stem = strcache_add_len (name, len - slen);
              break;
            }
        }
@@ -114,7 +139,8 @@ set_file_variables (struct file *file)
   for (d = file->deps; d != 0; d = d->next)
     if (!d->ignore_mtime)
       {
-        less = dep_name (d);
+        if (!d->need_2nd_expansion)
+          less = dep_name (d);
         break;
       }
 
@@ -137,7 +163,7 @@ set_file_variables (struct file *file)
 
   {
     static char *plus_value=0, *bar_value=0, *qmark_value=0;
-    static unsigned int qmark_max=0, plus_max=0, bar_max=0;
+    static unsigned int plus_max=0, bar_max=0, qmark_max=0;
 
     unsigned int qmark_len, plus_len, bar_len;
     char *cp;
@@ -146,25 +172,41 @@ set_file_variables (struct file *file)
     char *bp;
     unsigned int len;
 
+    struct hash_table dep_hash;
+    void **slot;
+
     /* Compute first the value for $+, which is supposed to contain
        duplicate dependencies as they were listed in the makefile.  */
 
     plus_len = 0;
+    bar_len = 0;
     for (d = file->deps; d != 0; d = d->next)
-      if (! d->ignore_mtime)
-       plus_len += strlen (dep_name (d)) + 1;
+      {
+        if (!d->need_2nd_expansion)
+          {
+            if (d->ignore_mtime)
+              bar_len += strlen (dep_name (d)) + 1;
+            else
+              plus_len += strlen (dep_name (d)) + 1;
+          }
+      }
+
+    if (bar_len == 0)
+      bar_len++;
+
     if (plus_len == 0)
       plus_len++;
 
     if (plus_len > plus_max)
       plus_value = xrealloc (plus_value, plus_max = plus_len);
+
     cp = plus_value;
 
     qmark_len = plus_len + 1;  /* Will be this or less.  */
     for (d = file->deps; d != 0; d = d->next)
-      if (! d->ignore_mtime)
+      if (! d->ignore_mtime && ! d->need_2nd_expansion)
         {
-          char *c = dep_name (d);
+          const char *c = dep_name (d);
 
 #ifndef        NO_ARCHIVES
           if (ar_name (c))
@@ -176,10 +218,10 @@ set_file_variables (struct file *file)
 #endif
             len = strlen (c);
 
-          bcopy (c, cp, len);
+          memcpy (cp, c, len);
           cp += len;
           *cp++ = FILE_LIST_SEPARATOR;
-          if (! d->changed)
+          if (! (d->changed || always_make_flag))
             qmark_len -= len + 1;      /* Don't space in $? for this one.  */
         }
 
@@ -188,19 +230,6 @@ set_file_variables (struct file *file)
     cp[cp > plus_value ? -1 : 0] = '\0';
     DEFINE_VARIABLE ("+", 1, plus_value);
 
-    /* Make sure that no dependencies are repeated.  This does not
-       really matter for the purpose of updating targets, but it
-       might make some names be listed twice for $^ and $?.  */
-
-    uniquize_deps (file->deps);
-
-    bar_len = 0;
-    for (d = file->deps; d != 0; d = d->next)
-      if (d->ignore_mtime)
-       bar_len += strlen (dep_name (d)) + 1;
-    if (bar_len == 0)
-      bar_len++;
-
     /* Compute the values for $^, $?, and $|.  */
 
     cp = caret_value = plus_value; /* Reuse the buffer; it's big enough.  */
@@ -213,12 +242,43 @@ set_file_variables (struct file *file)
       bar_value = xrealloc (bar_value, bar_max = bar_len);
     bp = bar_value;
 
+    /* Make sure that no dependencies are repeated in $^, $?, and $|.  It
+       would be natural to combine the next two loops but we can't do it
+       because of a situation where we have two dep entries, the first
+       is order-only and the second is normal (see below).  */
+
+    hash_init (&dep_hash, 500, dep_hash_1, dep_hash_2, dep_hash_cmp);
+
+    for (d = file->deps; d != 0; d = d->next)
+      {
+        if (d->need_2nd_expansion)
+          continue;
+
+        slot = hash_find_slot (&dep_hash, d);
+        if (HASH_VACANT (*slot))
+          hash_insert_at (&dep_hash, d, slot);
+        else
+          {
+            /* Check if the two prerequisites have different ignore_mtime.
+               If so then we need to "upgrade" one that is order-only.  */
+
+            struct dep* hd = (struct dep*) *slot;
+
+            if (d->ignore_mtime != hd->ignore_mtime)
+              d->ignore_mtime = hd->ignore_mtime = 0;
+          }
+      }
+
     for (d = file->deps; d != 0; d = d->next)
       {
-       char *c = dep_name (d);
+        const char *c;
+
+        if (d->need_2nd_expansion || hash_find_item (&dep_hash, d) != d)
+          continue;
 
+        c = dep_name (d);
 #ifndef        NO_ARCHIVES
-       if (ar_name (c))
+        if (ar_name (c))
          {
            c = strchr (c, '(') + 1;
            len = strlen (c) - 1;
@@ -229,24 +289,26 @@ set_file_variables (struct file *file)
 
         if (d->ignore_mtime)
           {
-           bcopy (c, bp, len);
+            memcpy (bp, c, len);
            bp += len;
            *bp++ = FILE_LIST_SEPARATOR;
          }
        else
-         {
-            bcopy (c, cp, len);
+          {
+            memcpy (cp, c, len);
             cp += len;
             *cp++ = FILE_LIST_SEPARATOR;
-            if (d->changed)
+            if (d->changed || always_make_flag)
               {
-                bcopy (c, qp, len);
+                memcpy (qp, c, len);
                 qp += len;
                 *qp++ = FILE_LIST_SEPARATOR;
               }
           }
       }
 
+    hash_free (&dep_hash, 0);
+
     /* Kill the last spaces and define the variables.  */
 
     cp[cp > caret_value ? -1 : 0] = '\0';
@@ -268,7 +330,6 @@ set_file_variables (struct file *file)
 void
 chop_commands (struct commands *cmds)
 {
-  register char *p;
   unsigned int nlines, idx;
   char **lines;
 
@@ -278,66 +339,82 @@ chop_commands (struct commands *cmds)
   if (!cmds || cmds->command_lines != 0)
     return;
 
-  /* Chop CMDS->commands up into lines in CMDS->command_lines.
-        Also set the corresponding CMDS->lines_flags elements,
-        and the CMDS->any_recurse flag.  */
+  /* Chop CMDS->commands up into lines in CMDS->command_lines.  */
 
-  nlines = 5;
-  lines = (char **) xmalloc (5 * sizeof (char *));
-  idx = 0;
-  p = cmds->commands;
-  while (*p != '\0')
+  if (one_shell)
     {
-      char *end = p;
-    find_end:;
-      end = strchr (end, '\n');
-      if (end == 0)
-        end = p + strlen (p);
-      else if (end > p && end[-1] == '\\')
+      int l = strlen (cmds->commands);
+
+      nlines = 1;
+      lines = xmalloc (nlines * sizeof (char *));
+      lines[0] = xstrdup (cmds->commands);
+
+      /* Strip the trailing newline.  */
+      if (l > 0 && lines[0][l-1] == '\n')
+        lines[0][l-1] = '\0';
+    }
+  else
+    {
+      const char *p;
+
+      nlines = 5;
+      lines = xmalloc (nlines * sizeof (char *));
+      idx = 0;
+      p = cmds->commands;
+      while (*p != '\0')
         {
-          int backslash = 1;
-          register char *b;
-          for (b = end - 2; b >= p && *b == '\\'; --b)
-            backslash = !backslash;
-          if (backslash)
+          const char *end = p;
+        find_end:;
+          end = strchr (end, '\n');
+          if (end == 0)
+            end = p + strlen (p);
+          else if (end > p && end[-1] == '\\')
             {
-              ++end;
-              goto find_end;
+              int backslash = 1;
+              const char *b;
+              for (b = end - 2; b >= p && *b == '\\'; --b)
+                backslash = !backslash;
+              if (backslash)
+                {
+                  ++end;
+                  goto find_end;
+                }
             }
+
+          if (idx == nlines)
+            {
+              nlines += 2;
+              lines = xrealloc (lines, nlines * sizeof (char *));
+            }
+          lines[idx++] = xstrndup (p, end - p);
+          p = end;
+          if (*p != '\0')
+            ++p;
         }
 
-      if (idx == nlines)
+      if (idx != nlines)
         {
-          nlines += 2;
-          lines = (char **) xrealloc ((char *) lines,
-                                      nlines * sizeof (char *));
+          nlines = idx;
+          lines = xrealloc (lines, nlines * sizeof (char *));
         }
-      lines[idx++] = savestring (p, end - p);
-      p = end;
-      if (*p != '\0')
-        ++p;
     }
 
-  if (idx != nlines)
-    {
-      nlines = idx;
-      lines = (char **) xrealloc ((char *) lines,
-                                  nlines * sizeof (char *));
-    }
+  /* Finally, set the corresponding CMDS->lines_flags elements and the
+     CMDS->any_recurse flag.  */
 
   cmds->ncommand_lines = nlines;
   cmds->command_lines = lines;
 
   cmds->any_recurse = 0;
-  cmds->lines_flags = (char *) xmalloc (nlines);
+  cmds->lines_flags = xmalloc (nlines);
+
   for (idx = 0; idx < nlines; ++idx)
     {
       int flags = 0;
+      const char *p = lines[idx];
 
-      for (p = lines[idx];
-           isblank ((unsigned char)*p) || *p == '-' || *p == '@' || *p == '+';
-           ++p)
-        switch (*p)
+      while (isblank (*p) || *p == '-' || *p == '@' || *p == '+')
+        switch (*(p++))
           {
           case '+':
             flags |= COMMANDS_RECURSE;
@@ -367,7 +444,7 @@ chop_commands (struct commands *cmds)
 void
 execute_file_commands (struct file *file)
 {
-  register char *p;
+  const char *p;
 
   /* Don't go through all the preparations if
      the commands are nothing but whitespace.  */
@@ -455,7 +532,7 @@ fatal_error_signal (int sig)
 
   if (sig == SIGTERM)
     {
-      register struct child *c;
+      struct child *c;
       for (c = children; c != 0; c = c->next)
        if (!c->remote)
          (void) kill (c->pid, SIGTERM);
@@ -473,7 +550,7 @@ fatal_error_signal (int sig)
 #endif
     )
     {
-      register struct child *c;
+      struct child *c;
 
       /* Remote children won't automatically get signals sent
         to the process group, so we must send them.  */
@@ -525,7 +602,7 @@ fatal_error_signal (int sig)
    and it has changed on disk since we last stat'd it.  */
 
 static void
-delete_target (struct file *file, char *on_behalf_of)
+delete_target (struct file *file, const char *on_behalf_of)
 {
   struct stat st;
   int e;
@@ -580,7 +657,7 @@ delete_child_targets (struct child *child)
     return;
 
   /* Delete the target file if it changed.  */
-  delete_target (child->file, (char *) 0);
+  delete_target (child->file, NULL);
 
   /* Also remove any non-precious targets listed in the `also_make' member.  */
   for (d = child->file->also_make; d != 0; d = d->next)
@@ -592,11 +669,11 @@ delete_child_targets (struct child *child)
 /* Print out the commands in CMDS.  */
 
 void
-print_commands (struct commands *cmds)
+print_commands (const struct commands *cmds)
 {
-  register char *s;
+  const char *s;
 
-  fputs (_("#  commands to execute"), stdout);
+  fputs (_("#  recipe to execute"), stdout);
 
   if (cmds->fileinfo.filenm == 0)
     puts (_(" (built-in):"));
@@ -607,17 +684,14 @@ print_commands (struct commands *cmds)
   s = cmds->commands;
   while (*s != '\0')
     {
-      char *end;
-
-      while (isspace ((unsigned char)*s))
-       ++s;
+      const char *end;
 
       end = strchr (s, '\n');
       if (end == 0)
        end = s + strlen (s);
 
-      printf ("\t%.*s\n", (int) (end - s), s);
+      printf ("%c%.*s\n", cmd_prefix, (int) (end - s), s);
 
-      s = end;
+      s = end + (end[0] == '\n');
     }
 }
index 96a1a4d..24426fa 100644 (file)
@@ -1,20 +1,20 @@
 /* Definition of data structures describing shell commands 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Structure that gives the commands to make a file
    and information about where these commands came from.  */
@@ -35,8 +35,8 @@ struct commands
 #define        COMMANDS_SILENT         2 /* Silent: @.  */
 #define        COMMANDS_NOERROR        4 /* No errors: -.  */
 
-extern void execute_file_commands PARAMS ((struct file *file));
-extern void print_commands PARAMS ((struct commands *cmds));
-extern void delete_child_targets PARAMS ((struct child *child));
-extern void chop_commands PARAMS ((struct commands *cmds));
-extern void set_file_variables PARAMS ((struct file *file));
+void execute_file_commands (struct file *file);
+void print_commands (const struct commands *cmds);
+void delete_child_targets (struct child *child);
+void chop_commands (struct commands *cmds);
+void set_file_variables (struct file *file);
index d2dc5b3..6d86c23 100644 (file)
@@ -1,19 +1,19 @@
 /* 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.
+2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Define if on AIX 3.
    System headers sometimes define this.
@@ -190,7 +190,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #define PACKAGE "make"
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.81"
+#define VERSION "3.82"
 
 /* Define to the name of the SCCS `get' command.  */
 #define SCCS_GET "get"
@@ -262,9 +262,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define if you have the socket function.  */
 /* #undef HAVE_SOCKET */
 
-/* Define if you have the strcasecmp function.  */
+/* Define to 1 if you have the strcasecmp function.  */
 /* #undef HAVE_STRCASECMP */
 
+/* Define to 1 if you have the strcmpi function.  */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the stricmp function.  */
+/* #undef HAVE_STRICMP */
+
 /* Define if you have the strerror function.  */
 #define HAVE_STRERROR 1
 
index f1aaf63..a6f19b6 100644 (file)
@@ -1,25 +1,25 @@
 /* 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.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* config.h.  Generated automatically by configure.  */
 /* config.h.in.  Generated automatically from configure.in by autoheader.  */
 
-/* Define if on AIX 3.
+/* Define to 1 if on AIX 3.
    System headers sometimes define this.
    We just want to avoid a redefinition error message.  */
 #ifndef _ALL_SOURCE
@@ -35,7 +35,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define as 1 if you have gettext and don't want to use GNU gettext.  */
 /* #undef HAVE_GETTEXT */
 
-/* Define if your locale.h file contains LC_MESSAGES.  */
+/* Define to 1 if your locale.h file contains LC_MESSAGES.  */
 /* #undef HAVE_LC_MESSAGES */
 
 /* Define to the installation directory for locales.  */
@@ -44,7 +44,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define as 1 if you have the stpcpy function.  */
 /* #undef HAVE_STPCPY */
 
-/* Define if the closedir function returns void instead of int.  */
+/* Define to 1 if the closedir function returns void instead of int.  */
 /* #undef CLOSEDIR_VOID */
 
 /* Define to empty if the keyword does not work.  */
@@ -57,7 +57,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define for DGUX with <sys/dg_sys_info.h>.  */
 /* #undef DGUX */
 
-/* Define if the `getloadavg' function needs to be run setuid or setgid.  */
+/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid.  */
 /* #undef GETLOADAVG_PRIVILEGED */
 
 /* Define to `unsigned long' or `unsigned long long'
@@ -67,89 +67,92 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define to `int' if <sys/types.h> doesn't define.  */
 /* #undef gid_t */
 
-/* Define if you have alloca, as a function or macro.  */
+/* Define to 1 if you have alloca, as a function or macro.  */
 #define HAVE_ALLOCA 1
 
-/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).  */
 /* #undef HAVE_ALLOCA_H */
 
-/* Define if you don't have vprintf but do have _doprnt.  */
+/* Define to 1 if you don't have vprintf but do have _doprnt.  */
 /* #undef HAVE_DOPRNT */
 
-/* Define if your system has a working fnmatch function.  */
+/* Define to 1 if you have the fdopen function.  */
+#define HAVE_FDOPEN 1
+
+/* Define to 1 if your system has a working fnmatch function.  */
 /* #undef HAVE_FNMATCH */
 
-/* Define if your system has its own `getloadavg' function.  */
+/* Define to 1 if your system has its own `getloadavg' function.  */
 /* #undef HAVE_GETLOADAVG */
 
-/* Define if you have the getmntent function.  */
+/* Define to 1 if you have the getmntent function.  */
 /* #undef HAVE_GETMNTENT */
 
-/* Define if the `long double' type works.  */
+/* Define to 1 if the `long double' type works.  */
 /* #undef HAVE_LONG_DOUBLE */
 
-/* Define if you support file names longer than 14 characters.  */
+/* Define to 1 if you support file names longer than 14 characters.  */
 #define HAVE_LONG_FILE_NAMES 1
 
-/* Define if you have a working `mmap' system call.  */
+/* Define to 1 if you have a working `mmap' system call.  */
 /* #undef HAVE_MMAP */
 
-/* Define if system calls automatically restart after interruption
+/* Define to 1 if system calls automatically restart after interruption
    by a signal.  */
 /* #undef HAVE_RESTARTABLE_SYSCALLS */
 
-/* Define if your struct stat has st_blksize.  */
+/* Define to 1 if your struct stat has st_blksize.  */
 /* #undef HAVE_ST_BLKSIZE */
 
-/* Define if your struct stat has st_blocks.  */
+/* Define to 1 if your struct stat has st_blocks.  */
 /* #undef HAVE_ST_BLOCKS */
 
-/* Define if you have the strcoll function and it is properly defined.  */
+/* Define to 1 if you have the strcoll function and it is properly defined.  */
 /* #undef HAVE_STRCOLL */
 
-/* Define if your struct stat has st_rdev.  */
+/* Define to 1 if your struct stat has st_rdev.  */
 /* #undef HAVE_ST_RDEV */
 
-/* Define if you have the strftime function.  */
+/* Define to 1 if you have the strftime function.  */
 /* #undef HAVE_STRFTIME */
 
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible.  */
 /* #undef HAVE_SYS_WAIT_H */
 
-/* Define if your struct tm has tm_zone.  */
+/* Define to 1 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
+/* Define to 1 if you don't have tm_zone but do have the external array
    tzname.  */
 /* #undef HAVE_TZNAME */
 
-/* Define if you have <unistd.h>.  */
+/* Define to 1 if you have <unistd.h>.  */
 #ifdef __DECC
 #define HAVE_UNISTD_H 1
 #endif
 
-/* Define if utime(file, NULL) sets file's timestamp to the present.  */
+/* Define to 1 if utime(file, NULL) sets file's timestamp to the present.  */
 /* #undef HAVE_UTIME_NULL */
 
-/* Define if you have <vfork.h>.  */
+/* Define to 1 if you have <vfork.h>.  */
 /* #undef HAVE_VFORK_H */
 
-/* Define if you have the vprintf function.  */
+/* Define to 1 if you have the vprintf function.  */
 #define HAVE_VPRINTF 1
 
-/* Define if you have the wait3 system call.  */
+/* Define to 1 if you have the wait3 system call.  */
 /* #undef HAVE_WAIT3 */
 
-/* Define if on MINIX.  */
+/* Define to 1 if on MINIX.  */
 /* #undef _MINIX */
 
-/* Define if your struct nlist has an n_un member.  */
+/* Define to 1 if your struct nlist has an n_un member.  */
 /* #undef NLIST_NAME_UNION */
 
-/* Define if you have <nlist.h>.  */
+/* Define to 1 if you have <nlist.h>.  */
 /* #undef NLIST_STRUCT */
 
-/* Define if your C compiler doesn't accept -c and -o together.  */
+/* Define to 1 if your C compiler doesn't accept -c and -o together.  */
 /* #undef NO_MINUS_C_MINUS_O */
 
 /* Define to `int' if <sys/types.h> doesn't define.  */
@@ -158,17 +161,17 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #define pid_t int
 #endif
 
-/* Define if the system does not provide POSIX.1 features except
+/* Define to 1 if the system does not provide POSIX.1 features except
    with this defined.  */
 /* #undef _POSIX_1_SOURCE */
 
-/* Define if you need to in order for stat and other things to work.  */
+/* Define to 1 if you need to in order for stat and other things to work.  */
 /* #undef _POSIX_SOURCE */
 
 /* Define as the return type of signal handlers (int or void).  */
 #define RETSIGTYPE void
 
-/* Define if the setvbuf function takes the buffering type as its second
+/* 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 */
@@ -182,16 +185,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
  */
 /* #undef STACK_DIRECTION */
 
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
 /* #undef STAT_MACROS_BROKEN */
 
-/* Define if you have the ANSI C header files.  */
+/* Define to 1 if you have the ANSI C header files.  */
 /* #undef STDC_HEADERS */
 
 /* Define on System V Release 4.  */
 /* #undef SVR4 */
 
-/* Define if `sys_siglist' is declared by <signal.h>.  */
+/* Define to 1 if `sys_siglist' is declared by <signal.h>.  */
 /* #undef SYS_SIGLIST_DECLARED */
 
 /* Define to `int' if <sys/types.h> doesn't define.  */
@@ -213,7 +216,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #define PACKAGE "make"
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.81"
+#define VERSION "3.82"
 
 /* Define to the name of the SCCS `get' command.  */
 /* #undef SCCS_GET */
@@ -228,137 +231,143 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
    if it exists.  */
 /* #undef ST_MTIM_NSEC */
 
-/* Define this if the C library defines the variable `sys_siglist'.  */
+/* Define to 1 if the C library defines the variable `sys_siglist'.  */
 /* #undefine HAVE_SYS_SIGLIST */
 
-/* Define this if the C library defines the variable `_sys_siglist'.  */
+/* Define to 1 if the C library defines the variable `_sys_siglist'.  */
 /* #undef HAVE__SYS_SIGLIST */
 
-/* Define this if you have the `union wait' type in <sys/wait.h>.  */
+/* Define to 1 if you have the `union wait' type in <sys/wait.h>.  */
 /* #undef HAVE_UNION_WAIT */
 
-/* Define if you have the dup2 function.  */
+/* Define to 1 if you have the dup2 function.  */
 #define HAVE_DUP2 1
 
-/* Define if you have the getcwd function.  */
+/* Define to 1 if you have the getcwd function.  */
 #define HAVE_GETCWD 1
 
-/* Define if you have the getgroups function.  */
+/* Define to 1 if you have the getgroups function.  */
 /* #undef HAVE_GETGROUPS */
 
-/* Define if you have the gethostbyname function.  */
+/* Define to 1 if you have the gethostbyname function.  */
 /* #undef HAVE_GETHOSTBYNAME */
 
-/* Define if you have the gethostname function.  */
+/* Define to 1 if you have the gethostname function.  */
 /* #undef HAVE_GETHOSTNAME */
 
-/* Define if you have the getloadavg function.  */
+/* Define to 1 if you have the getloadavg function.  */
 /* #undef HAVE_GETLOADAVG */
 
-/* Define if you have the memmove function.  */
+/* Define to 1 if you have the memmove function.  */
 #define HAVE_MEMMOVE 1
 
-/* Define if you have the mktemp function.  */
+/* Define to 1 if you have the mktemp function.  */
 #define HAVE_MKTEMP 1
 
-/* Define if you have the psignal function.  */
+/* Define to 1 if you have the psignal function.  */
 /* #undef HAVE_PSIGNAL */
 
-/* Define if you have the pstat_getdynamic function.  */
+/* Define to 1 if you have the pstat_getdynamic function.  */
 /* #undef HAVE_PSTAT_GETDYNAMIC */
 
-/* Define if you have the setegid function.  */
+/* Define to 1 if you have the setegid function.  */
 /* #undef HAVE_SETEGID */
 
-/* Define if you have the seteuid function.  */
+/* Define to 1 if you have the seteuid function.  */
 /* #undef HAVE_SETEUID */
 
-/* Define if you have the setlinebuf function.  */
+/* Define to 1 if you have the setlinebuf function.  */
 /* #undef HAVE_SETLINEBUF */
 
-/* Define if you have the setregid function.  */
+/* Define to 1 if you have the setregid function.  */
 /* #undefine HAVE_SETREGID */
 
-/* Define if you have the setreuid function.  */
+/* Define to 1 if you have the setreuid function.  */
 /* #define HAVE_SETREUID */
 
-/* Define if you have the sigsetmask function.  */
+/* Define to 1 if you have the sigsetmask function.  */
 #define HAVE_SIGSETMASK 1
 
-/* Define if you have the socket function.  */
+/* Define to 1 if you have the socket function.  */
 /* #undef HAVE_SOCKET */
 
-/* Define if you have the strcasecmp function.  */
-/* #undef HAVE_STRCASECMP */
+/* Define to 1 if you have the strcasecmp function.  */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the strcmpi function.  */
+/* #undef HAVE_STRCMPI */
 
-/* Define if you have the strerror function.  */
+/* Define to 1 if you have the stricmp function.  */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the strerror function.  */
 #define HAVE_STRERROR 1
 
-/* Define if you have the strsignal function.  */
+/* Define to 1 if you have the strsignal function.  */
 /* #undef HAVE_STRSIGNAL */
 
-/* Define if you have the wait3 function.  */
+/* Define to 1 if you have the wait3 function.  */
 /* #undef HAVE_WAIT3 */
 
-/* Define if you have the waitpid function.  */
+/* Define to 1 if you have the waitpid function.  */
 /* #undef HAVE_WAITPID */
 
-/* Define if you have the <dirent.h> header file.  */
+/* Define to 1 if you have the <dirent.h> header file.  */
 #define HAVE_DIRENT_H 1
 
-/* Define if you have the <fcntl.h> header file.  */
+/* Define to 1 if you have the <fcntl.h> header file.  */
 #ifdef __DECC
 #define HAVE_FCNTL_H 1
 #endif
 
-/* Define if you have the <limits.h> header file.  */
+/* Define to 1 if you have the <limits.h> header file.  */
 #define HAVE_LIMITS_H 1
 
-/* Define if you have the <mach/mach.h> header file.  */
+/* Define to 1 if you have the <mach/mach.h> header file.  */
 /* #undef HAVE_MACH_MACH_H */
 
-/* Define if you have the <memory.h> header file.  */
+/* Define to 1 if you have the <memory.h> header file.  */
 /* #undef HAVE_MEMORY_H */
 
-/* Define if you have the <ndir.h> header file.  */
+/* Define to 1 if you have the <ndir.h> header file.  */
 /* #undef HAVE_NDIR_H */
 
-/* Define if your compiler conforms to the ANSI C standard. */
+/* Define to 1 if your compiler conforms to the ANSI C standard. */
 #define HAVE_ANSI_COMPILER 1
 
 /* Define to 1 if you have the <stdarg.h> header file. */
 #define HAVE_STDARG_H 1
 
-/* Define if you have the <stdlib.h> header file.  */
+/* Define to 1 if you have the <stdlib.h> header file.  */
 #define HAVE_STDLIB_H 1
 
-/* Define if you have the <string.h> header file.  */
+/* Define to 1 if you have the <string.h> header file.  */
 #define HAVE_STRING_H 1
 
-/* Define if you have the <sys/dir.h> header file.  */
+/* Define to 1 if you have the <sys/dir.h> header file.  */
 /* #undef HAVE_SYS_DIR_H */
 
-/* Define if you have the <sys/ndir.h> header file.  */
+/* Define to 1 if you have the <sys/ndir.h> header file.  */
 /* #undef HAVE_SYS_NDIR_H */
 
-/* Define if you have the <sys/param.h> header file.  */
+/* Define to 1 if you have the <sys/param.h> header file.  */
 /* #undef HAVE_SYS_PARAM_H */
 
-/* Define if you have the <sys/timeb.h> header file.  */
+/* Define to 1 if you have the <sys/timeb.h> header file.  */
 #ifndef __GNUC__
 #define HAVE_SYS_TIMEB_H 1
 #endif
 
-/* Define if you have the <sys/wait.h> header file.  */
+/* Define to 1 if you have the <sys/wait.h> header file.  */
 /* #undef HAVE_SYS_WAIT_H */
 
-/* Define if you have the dgc library (-ldgc).  */
+/* Define to 1 if you have the dgc library (-ldgc).  */
 /* #undef HAVE_LIBDGC */
 
-/* Define if you have the kstat library (-lkstat).  */
+/* Define to 1 if you have the kstat library (-lkstat).  */
 /* #undef HAVE_LIBKSTAT *
 
-/* Define if you have the sun library (-lsun).  */
+/* Define to 1 if you have the sun library (-lsun).  */
 /* #undef HAVE_LIBSUN */
 
 /* Use high resolution file timestamps if nonzero. */
@@ -409,14 +418,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #define glob     gnu_glob
 #endif
 
-#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
-#undef  PARAMS
-#define PARAMS(protos)  protos
-#else /* Not C++ or ANSI C.  */
-#undef  PARAMS
-#define PARAMS(protos)  ()
-#endif /* C++ or ANSI C.  */
-
 /* Define if using alloca.c.  */
 /* #undef C_ALLOCA */
 /* maybe this should be placed into make.h */
index 6d140bb..4ac84f7 100644 (file)
@@ -1,20 +1,20 @@
 /* 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.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Suppress some Visual C++ warnings.
    Maybe after the code cleanup for ISO C we can remove some/all of these.  */
@@ -24,6 +24,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 # pragma warning(disable:4127) /* conditional expression is constant */
 # pragma warning(disable:4131) /* uses old-style declarator */
 # pragma warning(disable:4702) /* unreachable code */
+# define _CRT_SECURE_NO_WARNINGS  /* function or variable may be unsafe */
+# define _CRT_NONSTDC_NO_WARNINGS /* functions w/o a leading underscore */
 #endif
 
 /* Define to 1 if the `closedir' function returns void instead of `int'. */
@@ -81,6 +83,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
    */
 #define HAVE_DIRENT_H 1
 
+/* Define to 1 if you have the <direct.h> header file, and it defines getcwd()
+   and chdir().
+   */
+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__INTERIX)
+# define HAVE_DIRECT_H 1
+#endif
+
 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
 /* #undef HAVE_DOPRNT */
 
@@ -219,6 +228,21 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define to 1 if you have the `strcasecmp' function. */
 /* #undef HAVE_STRCASECMP */
 
+/* Define to 1 if you have the `strcmpi' function. */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the `stricmp' function. */
+#define HAVE_STRICMP 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+/* #undef HAVE_STRNCASECMP */
+
+/* Define to 1 if you have the `strncmpi' function. */
+/* #undef HAVE_STRNCMPI */
+
+/* Define to 1 if you have the `strnicmp' function. */
+#define HAVE_STRNICMP 1
+
 /* Define to 1 if you have the `strchr' function. */
 #define HAVE_STRCHR 1
 
@@ -371,7 +395,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* #undef UMAX4_3 */
 
 /* Version number of package */
-#define VERSION "3.81"
+#define VERSION "3.82"
 
 /* Define if using the dmalloc debugging malloc package */
 /* #undef WITH_DMALLOC */
@@ -405,11 +429,20 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define to empty if `const' does not conform to ANSI C. */
 /* #undef const */
 
+#include <sys/types.h>
+
 /* Define to `int' if <sys/types.h> doesn't define. */
 #define gid_t int
 
 /* Define to `int' if <sys/types.h> does not define. */
+/* GCC 4.x reportedly defines pid_t.  */
+#ifndef _PID_T_
+#ifdef _WIN64
+#define pid_t __int64
+#else
 #define pid_t int
+#endif
+#endif
 
 /* Define to `int' if <sys/types.h> doesn't define. */
 #define uid_t int
index c49ebf5..da28f93 100644 (file)
    */
 #undef HAVE_ALLOCA_H
 
-/* Define if your compiler conforms to the ANSI C standard. */
+/* Define to 1 if your compiler conforms to the ANSI C standard. */
 #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. */
+/* Define to 1 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 declaration of `bsd_signal', and to 0 if you
+   don't. */
+#undef HAVE_DECL_BSD_SIGNAL
+
 /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_SIGLIST
@@ -85,6 +86,9 @@
 /* Define to 1 if you have the `fdopen' function. */
 #undef HAVE_FDOPEN
 
+/* Define to 1 if you have the `fileno' function. */
+#undef HAVE_FILENO
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
-/* Define if you have a standard gettimeofday function */
+/* Define to 1 if you have a standard gettimeofday function */
 #undef HAVE_GETTIMEOFDAY
 
 /* Define if you have the iconv() function. */
 /* Define to 1 if you have the <mach/mach.h> header file. */
 #undef HAVE_MACH_MACH_H
 
-/* Define to 1 if you have the `memcpy' function. */
-#undef HAVE_MEMCPY
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
 /* Define to 1 if you have the `realpath' function. */
 #undef HAVE_REALPATH
 
-/* Define if <signal.h> defines the SA_RESTART constant. */
+/* Define to 1 if <signal.h> defines the SA_RESTART constant. */
 #undef HAVE_SA_RESTART
 
 /* Define to 1 if you have the `setegid' function. */
 /* Define to 1 if you have the `strcasecmp' function. */
 #undef HAVE_STRCASECMP
 
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
+/* Define to 1 if you have the `strcmpi' function. */
+#undef HAVE_STRCMPI
 
 /* Define to 1 if you have the `strcoll' function and it is properly defined.
    */
 /* Define to 1 if you have the `strerror' function. */
 #undef HAVE_STRERROR
 
+/* Define to 1 if you have the `stricmp' function. */
+#undef HAVE_STRICMP
+
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strncmpi' function. */
+#undef HAVE_STRNCMPI
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the `strnicmp' function. */
+#undef HAVE_STRNICMP
+
 /* 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'. */
+/* 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'.
 /* 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>. */
+/* Define to 1 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. */
 /* Build host information. */
 #undef MAKE_HOST
 
-/* Define this to enable job server support in GNU make. */
+/* Define to 1 to enable job server support in GNU make. */
 #undef MAKE_JOBSERVER
 
-/* Define this to enable symbolic link timestamp checking. */
+/* Define to 1 to enable symbolic link timestamp checking. */
 #undef MAKE_SYMLINKS
 
 /* 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. */
+/* Define to 1 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. */
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* Define to 1 if the C compiler supports function prototypes. */
-#undef PROTOTYPES
+/* Define to the character that separates directories in PATH. */
+#undef PATH_SEPARATOR_CHAR
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 /* Define to the name of the SCCS 'get' command. */
 #undef SCCS_GET
 
-/* Define this if the SCCS 'get' command understands the '-G<file>' option. */
+/* Define to 1 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.
+   automatically deduced at runtime.
        STACK_DIRECTION > 0 => grows toward higher addresses
        STACK_DIRECTION < 0 => grows toward lower addresses
        STACK_DIRECTION = 0 => direction of growth unknown */
    <sys/cpustats.h>. */
 #undef UMAX4_3
 
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
 /* Version number of package */
 #undef VERSION
 
 /* 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 to 1 if you need to in order for `stat' and other things to work. */
 #undef _POSIX_SOURCE
 
-/* Define like PROTOTYPES; this can be used by system headers. */
-#undef __PROTOTYPES
-
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
index 3aebc08..aed4694 100644 (file)
        * Makefile.am: New file.
 \f
 
-Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 27f18bd..203a5ee 100644 (file)
@@ -1,18 +1,20 @@
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 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 \
index bb2def4..41127d6 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
 @SET_MAKE@
 
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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@
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -58,6 +58,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
 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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -68,13 +69,12 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 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@
@@ -98,6 +98,8 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -114,6 +116,7 @@ LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
 MSGMERGE = @MSGMERGE@
@@ -124,6 +127,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
@@ -133,21 +137,14 @@ 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@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 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@
@@ -159,28 +156,40 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 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 \
@@ -195,14 +204,14 @@ $(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; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  config/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  config/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu config/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu config/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -220,7 +229,7 @@ $(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
-uninstall-info-am:
+$(am__aclocal_m4_deps):
 tags: TAGS
 TAGS:
 
@@ -229,29 +238,32 @@ CTAGS:
 
 
 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; \
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -279,6 +291,7 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -297,18 +310,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -327,16 +360,20 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic distclean \
        distclean-generic 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 install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-strip installcheck installcheck-am installdirs \
        maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-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.
index 1b1d232..c0096a7 100755 (executable)
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2005-05-14.22
+scriptversion=2009-10-06.20; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
+# Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,8 +18,7 @@ scriptversion=2005-05-14.22
 # 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.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -103,13 +103,13 @@ if test -z "$ofile" || test -z "$cfile"; then
 fi
 
 # Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
 
 # Create the lock directory.
-# Note: use `[/.-]' here to ensure that we don't use the same name
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
 # 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
     break
@@ -124,9 +124,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15
 ret=$?
 
 if test -f "$cofile"; then
-  mv "$cofile" "$ofile"
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
 elif test -f "${cofile}bj"; then
-  mv "${cofile}bj" "$ofile"
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
 fi
 
 rmdir "$lockdir"
@@ -138,5 +138,6 @@ exit $ret
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index 22906b3..115f944 100644 (file)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   Free Software Foundation, Inc.
 
-timestamp='2006-03-13'
+timestamp='2010-04-03'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2006-03-13'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +56,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -91,7 +92,7 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
+trap 'exit 1' HUP INT TERM
 
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
@@ -105,7 +106,7 @@ trap 'exit 1' 1 2 15
 
 set_cc_for_build='
 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
 : ${TMPDIR=/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) ; } ||
@@ -161,6 +162,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
            *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
        esac
        # The Operating System including object format, if it has switched
@@ -169,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
                eval $set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep __ELF__ >/dev/null
+                       | grep -q __ELF__
                then
                    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
                    # Return netbsd for either.  FIX?
@@ -211,7 +213,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
        exit ;;
     macppc:MirBSD:*:*)
-       echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
        exit ;;
     *:MirBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
@@ -323,14 +325,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        case `/usr/bin/uname -p` in
            sparc) echo sparc-icl-nx7; exit ;;
        esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
     sun4H:SunOS:5.*:*)
        echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
        echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
-    i86pc:SunOS:5.*:*)
-       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:6*:*)
        # According to config.sub, this is the proper way to canonicalize
@@ -531,7 +552,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[45])
+    *:AIX:*:[456])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
        if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
@@ -639,7 +660,7 @@ EOF
            # => hppa64-hp-hpux11.23
 
            if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep __LP64__ >/dev/null
+               grep -q __LP64__
            then
                HP_ARCH="hppa2.0w"
            else
@@ -771,6 +792,8 @@ EOF
        case ${UNAME_MACHINE} in
            pc98)
                echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
            *)
                echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
        esac
@@ -778,7 +801,7 @@ EOF
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit ;;
-    i*:MINGW*:*)
+    *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
     i*:windows32*:*)
@@ -788,15 +811,24 @@ EOF
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
-    x86:Interix*:[345]*)
-       echo i586-pc-interix${UNAME_RELEASE}
-       exit ;;
-    EM64T:Interix*:[345]*)
-       echo x86_64-unknown-interix${UNAME_RELEASE}
-       exit ;;
+    *:Interix*:*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           authenticamd | genuineintel | EM64T)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
        echo i${UNAME_MACHINE}-pc-mks
        exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -826,7 +858,31 @@ EOF
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
     arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     cris:Linux:*:*)
@@ -838,6 +894,17 @@ EOF
     frv:Linux:*:*)
        echo frv-unknown-linux-gnu
        exit ;;
+    i*86:Linux:*:*)
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       exit ;;
     ia64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
@@ -847,74 +914,33 @@ EOF
     m68*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
-    mips:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef mips
-       #undef mipsel
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=mipsel
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=mips
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       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:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
        sed 's/^        //' << EOF >$dummy.c
        #undef CPU
-       #undef mips64
-       #undef mips64el
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
        #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=mips64el
+       CPU=${UNAME_MACHINE}el
        #else
        #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=mips64
+       CPU=${UNAME_MACHINE}
        #else
        CPU=
        #endif
        #endif
 EOF
-       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-           /^CPU/{
-               s: ::g
-               p
-           }'`"
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        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
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
        exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
-       exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
@@ -924,8 +950,11 @@ EOF
          *)    echo hppa-unknown-linux-gnu ;;
        esac
        exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux
@@ -945,69 +974,9 @@ EOF
     x86_64:Linux:*:*)
        echo x86_64-unknown-linux-gnu
        exit ;;
-    i*86:Linux:*:*)
-       # The BFD linker knows what the default object file format is, so
-       # first see if it will tell us. cd to the root directory to prevent
-       # problems with other programs or directories called `ld' in the path.
-       # Set LC_ALL=C to ensure ld outputs messages in English.
-       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-                        | sed -ne '/supported targets:/!d
-                                   s/[         ][      ]*/ /g
-                                   s/.*supported targets: *//
-                                   s/ .*//
-                                   p'`
-        case "$ld_supported_targets" in
-         elf32-i386)
-               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-               ;;
-         a.out-i386-linux)
-               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-               exit ;;
-         coff-i386)
-               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-               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 ;;
-       esac
-       # Determine whether the default compiler is a.out or elf
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #include <features.h>
-       #ifdef __ELF__
-       # ifdef __GLIBC__
-       #  if __GLIBC__ >= 2
-       LIBC=gnu
-       #  else
-       LIBC=gnulibc1
-       #  endif
-       # else
-       LIBC=gnulibc1
-       # endif
-       #else
-       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)
-       LIBC=gnu
-       #else
-       LIBC=gnuaout
-       #endif
-       #endif
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       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; }
-       ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
        # earlier versions are messed up and put the nodename in both
@@ -1036,7 +1005,7 @@ EOF
     i*86:syllable:*:*)
        echo ${UNAME_MACHINE}-pc-syllable
        exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     i*86:*DOS:*:*)
@@ -1080,8 +1049,11 @@ EOF
     pc:*:*:*)
        # Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-       echo i386-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
@@ -1119,6 +1091,16 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       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; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
        echo m68k-unknown-lynxos${UNAME_RELEASE}
        exit ;;
@@ -1131,7 +1113,7 @@ EOF
     rs6000:LynxOS:2.*:*)
        echo rs6000-unknown-lynxos${UNAME_RELEASE}
        exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
        echo powerpc-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1194,6 +1176,9 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
@@ -1203,6 +1188,15 @@ EOF
     SX-6:SUPER-UX:*:*)
        echo sx6-nec-superux${UNAME_RELEASE}
        exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
     Power*:Rhapsody:*:*)
        echo powerpc-apple-rhapsody${UNAME_RELEASE}
        exit ;;
@@ -1212,6 +1206,16 @@ EOF
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
        case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
            unknown) UNAME_PROCESSOR=powerpc ;;
        esac
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1293,6 +1297,9 @@ EOF
     i*86:rdos:*:*)
        echo ${UNAME_MACHINE}-pc-rdos
        exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1453,9 +1460,9 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
index 5705e54..204218c 100644 (file)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-#   Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   Free Software Foundation, Inc.
 
-timestamp='2006-03-07'
+timestamp='2010-05-21'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2006-03-07'
 
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -120,8 +124,10 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,10 +154,13 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray)
+       -apple | -axis | -knuth | -cray | -microblaze)
                os=
                basic_machine=$1
                ;;
+        -bluegene*)
+               os=-cnk
+               ;;
        -sim | -cisco | -oki | -wec | -winbond)
                os=
                basic_machine=$1
@@ -241,20 +250,24 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
-       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
        | bfin \
        | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
-       | fr30 | frv \
+       | fido | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
-       | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
-       | mips64vr | mips64vrel \
+       | mips64octeon | mips64octeonel \
        | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
        | mips64vr4100 | mips64vr4100el \
        | mips64vr4300 | mips64vr4300el \
        | mips64vr5000 | mips64vr5000el \
@@ -267,6 +280,7 @@ case $basic_machine in
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
+       | moxie \
        | mt \
        | msp430 \
        | nios | nios2 \
@@ -275,22 +289,31 @@ case $basic_machine in
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
        | pyramid \
-       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | strongarm \
-       | tahoe | thumb | tic4x | tic80 | tron \
+       | spu | strongarm \
+       | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
        | v850 | v850e \
        | we32k \
-       | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
-       | z8k)
+       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k | z80)
                basic_machine=$basic_machine-unknown
                ;;
-       m32c)
-               basic_machine=$basic_machine-unknown
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12)
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
                # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
                os=-none
@@ -319,25 +342,28 @@ case $basic_machine in
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
        | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* \
+       | avr-* | avr32-* \
        | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
-       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
-       | m32r-* | m32rle-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
-       | mips64vr-* | mips64vrel-* \
+       | mips64octeon-* | mips64octeonel-* \
        | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
        | mips64vr4100-* | mips64vr4100el-* \
        | mips64vr4300-* | mips64vr4300el-* \
        | mips64vr5000-* | mips64vr5000el-* \
@@ -358,23 +384,27 @@ case $basic_machine in
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
        | pyramid-* \
-       | romp-* | rs6000-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
        | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
        | tahoe-* | thumb-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile-* | tilegx-* \
        | tron-* \
+       | ubicom32-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
-       | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-       | xstormy16-* | xtensa-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa*-* \
        | ymp-* \
-       | z8k-*)
+       | z8k-* | z80-*)
                ;;
-       m32c-*)
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -438,6 +468,10 @@ case $basic_machine in
                basic_machine=m68k-apollo
                os=-bsd
                ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -446,10 +480,35 @@ case $basic_machine in
                basic_machine=ns32k-sequent
                os=-dynix
                ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
                ;;
+        cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
        convex-c1)
                basic_machine=c1-convex
                os=-bsd
@@ -478,8 +537,8 @@ case $basic_machine in
                basic_machine=craynv-cray
                os=-unicosmp
                ;;
-       cr16c)
-               basic_machine=cr16c-unknown
+       cr16)
+               basic_machine=cr16-unknown
                os=-elf
                ;;
        crds | unos)
@@ -517,6 +576,10 @@ case $basic_machine in
                basic_machine=m88k-motorola
                os=-sysv3
                ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
        djgpp)
                basic_machine=i586-pc
                os=-msdosdjgpp
@@ -671,6 +734,14 @@ case $basic_machine in
                basic_machine=m68k-isi
                os=-sysv
                ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
        m88k-omron*)
                basic_machine=m88k-omron
                ;;
@@ -682,10 +753,17 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
+        microblaze)
+               basic_machine=microblaze-xilinx
+               ;;
        mingw32)
                basic_machine=i386-pc
                os=-mingw32
                ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
        miniframe)
                basic_machine=m68000-convergent
                ;;
@@ -812,6 +890,14 @@ case $basic_machine in
                basic_machine=i860-intel
                os=-osf
                ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
        pbd)
                basic_machine=sparc-tti
                ;;
@@ -913,6 +999,10 @@ case $basic_machine in
        sb1el)
                basic_machine=mipsisa64sb1el-unknown
                ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
        sei)
                basic_machine=mips-sei
                os=-seiux
@@ -924,6 +1014,9 @@ case $basic_machine in
                basic_machine=sh-hitachi
                os=-hms
                ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
        sh64)
                basic_machine=sh64-unknown
                ;;
@@ -1001,17 +1094,14 @@ case $basic_machine in
                basic_machine=t90-cray
                os=-unicos
                ;;
-       tic54x | c54x*)
-               basic_machine=tic54x-unknown
-               os=-coff
-               ;;
-       tic55x | c55x*)
-               basic_machine=tic55x-unknown
-               os=-coff
+        # This must be matched before tile*.
+        tilegx*)
+               basic_machine=tilegx-unknown
+               os=-linux-gnu
                ;;
-       tic6x | c6x*)
-               basic_machine=tic6x-unknown
-               os=-coff
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
                ;;
        tx39)
                basic_machine=mipstx39-unknown
@@ -1088,6 +1178,10 @@ case $basic_machine in
                basic_machine=z8k-unknown
                os=-sim
                ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
        none)
                basic_machine=none-none
                os=-none
@@ -1126,7 +1220,7 @@ case $basic_machine in
        we32k)
                basic_machine=we32k-att
                ;;
-       sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
                basic_machine=sh-unknown
                ;;
        sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1176,6 +1270,9 @@ case $os in
         # First match some system type aliases
         # that might get confused with valid system types.
        # -solaris* is a basic system type, with this one exception.
+        -auroraux)
+               os=-auroraux
+               ;;
        -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
                ;;
@@ -1196,10 +1293,11 @@ case $os in
        # Each alternative MUST END IN A *, to match a version number.
        # -sysv* is not here because it comes later, after sysvr4.
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* \
+             | -aos* | -aros* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1208,9 +1306,10 @@ case $os in
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1218,7 +1317,7 @@ case $os in
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1348,6 +1447,11 @@ case $os in
        -zvmoe)
                os=-zvmoe
                ;;
+       -dicos*)
+               os=-dicos
+               ;;
+        -nacl*)
+               ;;
        -none)
                ;;
        *)
@@ -1370,6 +1474,12 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
+        score-*)
+               os=-elf
+               ;;
+        spu-*)
+               os=-elf
+               ;;
        *-acorn)
                os=-riscix1.2
                ;;
@@ -1379,9 +1489,18 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
-    c4x-* | tic4x-*)
-        os=-coff
-        ;;
+        c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
        # This must come before the *-dec entry.
        pdp10-*)
                os=-tops20
@@ -1407,6 +1526,9 @@ case $basic_machine in
        m68*-cisco)
                os=-aout
                ;;
+        mep-*)
+               os=-elf
+               ;;
        mips*-cisco)
                os=-elf
                ;;
@@ -1536,7 +1658,7 @@ case $basic_machine in
                        -sunos*)
                                vendor=sun
                                ;;
-                       -aix*)
+                       -cnk*|-aix*)
                                vendor=ibm
                                ;;
                        -beos*)
index 04701da..df8eea7 100755 (executable)
@@ -1,9 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2005-07-09.11
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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
@@ -16,9 +17,7 @@ scriptversion=2005-07-09.11
 # 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.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -86,12 +85,34 @@ if test "$depmode" = dashXmstdout; then
    depmode=dashmstdout
 fi
 
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
 ## it if -MD -MP comes after the -MF stuff.  Hmm.
-  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
   stat=$?
   if test $stat -eq 0; then :
   else
@@ -178,14 +199,14 @@ sgi)
 ' < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
     tr '
-' ' ' >> $depfile
-    echo >> $depfile
+' ' ' >> "$depfile"
+    echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
     tr ' ' '
 ' < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> $depfile
+   >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -201,34 +222,39 @@ aix)
   # current directory.  Also, the AIX compiler puts `$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
-  tmpdepfile="$stripped.u"
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
   if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
     "$@" -Wc,-M
   else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
     "$@" -M
   fi
   stat=$?
 
-  if test -f "$tmpdepfile"; then :
-  else
-    stripped=`echo "$stripped" | sed 's,^.*/,,'`
-    tmpdepfile="$stripped.u"
-  fi
-
   if test $stat -eq 0; then :
   else
-    rm -f "$tmpdepfile"
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
 
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
   if test -f "$tmpdepfile"; then
-    outname="$stripped.o"
     # Each line is of the form `foo.o: dependent.h'.
     # Do two passes, one to just change these to
     # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
-    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -276,6 +302,51 @@ icc)
   rm -f "$tmpdepfile"
   ;;
 
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
 tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side
    # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
@@ -288,13 +359,13 @@ tru64)
 
    if test "$libtool" = yes; then
       # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mecanism is used in libtool 1.4 series to
+      # static library.  This mechanism 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
+      # compilations output dependencies 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
@@ -345,7 +416,7 @@ dashmstdout)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -396,32 +467,39 @@ makedepend)
   "$@" || exit $?
   # Remove any Libtool call
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
   fi
   # X makedepend
   shift
-  cleared=no
-  for arg in "$@"; do
+  cleared=no eat=no
+  for arg
+  do
     case $cleared in
     no)
       set ""; shift
       cleared=yes ;;
     esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
     case "$arg" in
     -D*|-I*)
       set fnord "$@" "$arg"; shift ;;
     # Strip any option that makedepend may not understand.  Remove
     # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
     -*|$object)
       ;;
     *)
       set fnord "$@" "$arg"; shift ;;
     esac
   done
-  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
@@ -441,7 +519,7 @@ cpp)
 
   # Remove the call to Libtool.
   if test "$libtool" = yes; then
-    while test $1 != '--mode=compile'; do
+    while test "X$1" != 'X--mode=compile'; do
       shift
     done
     shift
@@ -479,13 +557,27 @@ cpp)
 
 msvisualcpp)
   # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o,
-  # because we must use -o when running libtool.
+  # always write the preprocessed file to stdout.
   "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
   IFS=" "
   for arg
   do
     case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
        set fnord "$@"
        shift
@@ -498,16 +590,23 @@ msvisualcpp)
        ;;
     esac
   done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
   echo "       " >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 none)
   exec "$@"
   ;;
@@ -526,5 +625,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index 1f40640..da544f8 100644 (file)
@@ -1,28 +1,29 @@
 # 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.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AC_DEFUN([pds_AC_DOS_PATHS],
   [
     AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths],
       [
         AC_COMPILE_IFELSE([
-#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
 neither MSDOS nor Windows nor OS2
 #endif
 ],
index 4d4a951..6781b98 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2005-05-14.22
+scriptversion=2009-04-28.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -39,38 +39,68 @@ scriptversion=2005-05-14.22
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
 
 # set DOITPROG to echo to test this script
 
 # Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
 
-# put in absolute paths if you don't have them in your path; or use env. vars.
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
 
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
 
-chmodcmd="$chmodprog 0755"
-chowncmd=
 chgrpcmd=
-stripcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
 rmcmd="$rmprog -f"
-mvcmd="$mvprog"
+stripcmd=
+
 src=
 dst=
 dir_arg=
-dstarg=
+dst_arg=
+
+copy_on_change=false
 no_target_directory=
 
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
    or: $0 [OPTION]... SRCFILES... DIRECTORY
    or: $0 [OPTION]... -t DIRECTORY SRCFILES...
    or: $0 [OPTION]... -d DIRECTORIES...
@@ -80,81 +110,86 @@ In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
 In the 4th, create DIRECTORIES.
 
 Options:
--c         (ignored)
--d         create directories instead of installing files.
--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.
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -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.
 
 Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
 "
 
-while test -n "$1"; do
+while test $# -ne 0; do
   case $1 in
-    -c) shift
-        continue;;
+    -c) ;;
+
+    -C) copy_on_change=true;;
 
-    -d) dir_arg=true
-        shift
-        continue;;
+    -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-        shift
-        shift
-        continue;;
+       shift;;
 
     --help) echo "$usage"; exit $?;;
 
-    -m) chmodcmd="$chmodprog $2"
-        shift
-        shift
-        continue;;
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
 
     -o) chowncmd="$chownprog $2"
-        shift
-        shift
-        continue;;
+       shift;;
 
-    -s) stripcmd=$stripprog
-        shift
-        continue;;
+    -s) stripcmd=$stripprog;;
 
-    -t) dstarg=$2
-       shift
-       shift
-       continue;;
+    -t) dst_arg=$2
+       shift;;
 
-    -T) no_target_directory=true
-       shift
-       continue;;
+    -T) no_target_directory=true;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    *)  # When -d is used, all remaining arguments are directories to create.
-       # 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
-       do
-          if test -n "$dstarg"; then
-           # $@ is not empty: it contains at least $arg.
-           set fnord "$@" "$dstarg"
-           shift # fnord
-         fi
-         shift # arg
-         dstarg=$arg
-       done
+    --)        shift
        break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
   esac
+  shift
 done
 
-if test -z "$1"; then
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
   if test -z "$dir_arg"; then
     echo "$0: no input file specified." >&2
     exit 1
@@ -164,24 +199,47 @@ if test -z "$1"; then
   exit 0
 fi
 
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
 for src
 do
   # Protect names starting with `-'.
   case $src in
-    -*) src=./$src ;;
+    -*) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
     dst=$src
-    src=
-
-    if test -d "$dst"; then
-      mkdircmd=:
-      chmodcmd=
-    else
-      mkdircmd=$mkdirprog
-    fi
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
   else
+
     # 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 '*'.
@@ -190,71 +248,199 @@ do
       exit 1
     fi
 
-    if test -z "$dstarg"; then
+    if test -z "$dst_arg"; then
       echo "$0: no destination specified." >&2
       exit 1
     fi
 
-    dst=$dstarg
+    dst=$dst_arg
     # Protect names starting with `-'.
     case $dst in
-      -*) dst=./$dst ;;
+      -*) dst=./$dst;;
     esac
 
     # If destination is a directory, append the input filename; won't work
     # 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
+       echo "$0: $dst_arg: Is a directory" >&2
        exit 1
       fi
-      dst=$dst/`basename "$src"`
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
     fi
   fi
 
-  # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
 
-  # Make sure that the destination directory exists.
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
 
-  # Skip lots of stat calls in the usual case.
-  if test ! -d "$dstdir"; then
-    defaultIFS='
-        '
-    IFS="${IFS-$defaultIFS}"
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
 
-    oIFS=$IFS
-    # Some sh's can't handle IFS=/ for some reason.
-    IFS='%'
-    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-    shift
-    IFS=$oIFS
+      case $dstdir in
+       /*) prefix='/';;
+       -*) prefix='./';;
+       *)  prefix='';;
+      esac
 
-    pathcomp=
+      eval "$initialize_posix_glob"
 
-    while test $# -ne 0 ; do
-      pathcomp=$pathcomp$1
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
       shift
-      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
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test -z "$d" && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
       fi
-      pathcomp=$pathcomp/
-    done
+    fi
   fi
 
   if test -n "$dir_arg"; then
-    $doit $mkdircmd "$dst" \
-      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
   else
-    dstfile=`basename "$dst"`
 
     # Make a couple of temp file names in the proper directory.
     dsttmp=$dstdir/_inst.$$_
@@ -262,10 +448,9 @@ do
 
     # Trap to clean up those temp files at exit.
     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-    trap '(exit $?); exit' 1 2 13 15
 
     # Copy the file name to the temp name.
-    $doit $cpprog "$src" "$dsttmp" &&
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
 
     # and set any options; do chmod last to preserve setuid bits.
     #
@@ -273,51 +458,63 @@ do
     # ignore errors from any of these, just make sure not to ignore
     # errors from the above "$doit $cpprog $src $dsttmp" command.
     #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
-    # Now rename the file to the real destination.
-    { $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; }
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 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.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
 done
 
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
-  (exit 0); exit 0
-}
-
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index cd916c0..e631b22 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 # Get modification time of a file or directory and pretty-print it.
 
-scriptversion=2005-06-29.22
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
-# Foundation, Inc.
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 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
@@ -18,8 +18,7 @@ scriptversion=2005-06-29.22
 # 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.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -75,6 +74,10 @@ if ls -L /dev/null 1>/dev/null 2>&1; then
 else
   ls_command='ls -l -d'
 fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
 
 # A `ls -l' line looks as follows on OS/2.
 #  drwxrwx---        0 Aug 11  2001 foo
@@ -89,7 +92,7 @@ fi
 # 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 /`
+set x`$ls_command /`
 
 # Find which argument is the month.
 month=
@@ -197,5 +200,6 @@ echo $day $month $year
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index 894e786..28055d2 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2005-06-08.21
+scriptversion=2009-04-28.21; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-#   Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -18,9 +18,7 @@ scriptversion=2005-06-08.21
 # 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.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -33,6 +31,8 @@ if test $# -eq 0; then
 fi
 
 run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
 # In the cases where this matters, `missing' is being run in the
 # srcdir already.
@@ -44,7 +44,7 @@ fi
 
 msg="missing on your system"
 
-case "$1" in
+case $1 in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
@@ -77,6 +77,7 @@ Supported PROGRAM values:
   aclocal      touch file \`aclocal.m4'
   autoconf     touch file \`configure'
   autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
   automake     touch all \`Makefile.in' files
   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
   flex         create \`lex.yy.c', if possible, from existing .c
@@ -86,6 +87,9 @@ Supported PROGRAM values:
   tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
     ;;
@@ -103,15 +107,22 @@ Send bug reports to <bug-automake@gnu.org>."
 
 esac
 
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
 # 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)
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar)
+  tar*)
     if test -n "$run"; then
        echo 1>&2 "ERROR: \`tar' requires --run"
        exit 1
@@ -135,7 +146,7 @@ esac
 
 # If it does not exist, or fails to run (possibly an outdated version),
 # try to emulate it.
-case "$1" in
+case $program in
   aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -145,7 +156,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch aclocal.m4
     ;;
 
-  autoconf)
+  autoconf*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
@@ -154,7 +165,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch configure
     ;;
 
-  autoheader)
+  autoheader*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
@@ -164,7 +175,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     test -z "$files" && files="config.h"
     touch_files=
     for f in $files; do
-      case "$f" in
+      case $f in
       *:*) touch_files="$touch_files "`echo "$f" |
                                       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
       *) touch_files="$touch_files $f.in";;
@@ -184,7 +195,7 @@ WARNING: \`$1' is $msg.  You should only need it if
           while read f; do touch "$f"; done
     ;;
 
-  autom4te)
+  autom4te*)
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
@@ -192,8 +203,8 @@ WARNING: \`$1' is needed, but is $msg.
          You can get \`$1' as part of \`Autoconf' from any GNU
          archive site."
 
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -f "$file"; then
        touch $file
     else
@@ -207,80 +218,78 @@ WARNING: \`$1' is needed, but is $msg.
     fi
     ;;
 
-  bison|yacc)
+  bison*|yacc*)
     echo 1>&2 "\
 WARNING: \`$1' $msg.  You should only need it if
          you modified a \`.y' file.  You may need the \`Bison' package
          in order for those modifications to take effect.  You can get
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.c
            fi
            SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.h
            fi
          ;;
        esac
     fi
-    if [ ! -f y.tab.h ]; then
+    if test ! -f y.tab.h; then
        echo >y.tab.h
     fi
-    if [ ! -f y.tab.c ]; then
+    if test ! -f y.tab.c; then
        echo 'main() { return 0; }' >y.tab.c
     fi
     ;;
 
-  lex|flex)
+  lex*|flex*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.l' file.  You may need the \`Flex' package
          in order for those modifications to take effect.  You can get
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" lex.yy.c
            fi
          ;;
        esac
     fi
-    if [ ! -f lex.yy.c ]; then
+    if test ! -f lex.yy.c; then
        echo 'main() { return 0; }' >lex.yy.c
     fi
     ;;
 
-  help2man)
+  help2man*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
         you modified a dependency of a manual page.  You may need the
         \`Help2man' package in order for those modifications to take
         effect.  You can get \`Help2man' from any GNU archive site."
 
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-       file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
        touch $file
     else
        test -z "$file" || exec >$file
        echo ".ab help2man is required to generate this page"
-       exit 1
+       exit $?
     fi
     ;;
 
-  makeinfo)
+  makeinfo*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -289,11 +298,17 @@ WARNING: \`$1' is $msg.  You should only need it if
          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'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -z "$file"; then
       # ... or it is the one specified with @setfilename ...
       infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      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
@@ -303,7 +318,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar)
+  tar*)
     shift
 
     # We have already tried tar in the generic part.
@@ -317,13 +332,13 @@ WARNING: \`$1' is $msg.  You should only need it if
     fi
     firstarg="$1"
     if shift; then
-       case "$firstarg" in
+       case $firstarg in
        *o*)
            firstarg=`echo "$firstarg" | sed s/o//`
            tar "$firstarg" "$@" && exit 0
            ;;
        esac
-       case "$firstarg" in
+       case $firstarg in
        *h*)
            firstarg=`echo "$firstarg" | sed s/h//`
            tar "$firstarg" "$@" && exit 0
@@ -356,5 +371,6 @@ exit 0
 # eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
index 7ed20f0..bab1b33 100644 (file)
@@ -1,18 +1,18 @@
 % texinfo.tex -- TeX macros to handle Texinfo files.
-%
+% 
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2006-03-21.13}
+\def\texinfoversion{2010-06-17.11}
 %
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
-% Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 %
-% This texinfo.tex file is free software; you can redistribute it and/or
+% This texinfo.tex file 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.
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
 %
 % This texinfo.tex file is distributed in the hope that it will be
 % useful, but WITHOUT ANY WARRANTY; without even the implied warranty
@@ -20,9 +20,7 @@
 % General Public License for more details.
 %
 % 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., 51 Franklin Street, Fifth Floor,
-% Boston, MA 02110-1301, USA.
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
 %
 % As a special exception, when this file is read by TeX when processing
 % a Texinfo source document, you may use the result without
@@ -67,7 +65,6 @@
 \everyjob{\message{[Texinfo version \texinfoversion]}%
   \catcode`+=\active \catcode`\_=\active}
 
-\message{Basics,}
 \chardef\other=12
 
 % We never want plain's \outer definition of \+ in Texinfo.
 \let\ptexnewwrite\newwrite
 \let\ptexnoindent=\noindent
 \let\ptexplus=+
+\let\ptexraggedright=\raggedright
 \let\ptexrbrace=\}
 \let\ptexslash=\/
 \let\ptexstar=\*
 \let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
 
 % If this character appears in an error message or help string, it
 % starts a new line in the output.
 \chardef\spacecat = 10
 \def\spaceisspace{\catcode`\ =\spacecat}
 
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
 % Ignore a token.
 %
 \def\gobble#1{}
 % that mark overfull boxes (in case you have decided
 % that the text looks ok even though it passes the margin).
 %
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
+\def\finalout{\overfullrule=0pt }
 
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
   \removelastskip\penalty-200\bigskip\fi\fi}
 
-% For @cropmarks command.
 % Do @cropmarks to get crop marks.
 %
 \newif\ifcropmarks
 \newdimen\cornerthick \cornerthick=.3pt
 \newdimen\topandbottommargin \topandbottommargin=.75in
 
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
 % Main output routine.
 \chardef\PAGE = 255
 \output = {\onepageout{\pagecontents\PAGE}}
   %
   % Do this outside of the \shipout so @code etc. will be expanded in
   % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
   \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
   \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
   %
   {%
                % 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 
+               % it needs to be
                % {\code {{\tt \backslashcurfont }acronym}
     \shipout\vbox{%
       % Do this early so pdf references go to the beginning of the page.
       \pagebody{#1}%
       \ifdim\ht\footlinebox > 0pt
         % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingxxx.)
+        % (We lessened \vsize for it in \oddfootingyyy.)
         % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 2\baselineskip
+        \vskip 24pt
         \unvbox\footlinebox
       \fi
       %
 % marginal hacks, juha@viisa.uucp (Juha Takala)
 \ifvoid\margin\else % marginal info is present
   \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
+\dimen@=\dp#1\relax \unvbox#1\relax
 \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
 \ifr@ggedbottom \kern-\dimen@ \vfil \fi}
 }
 \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
 \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
 
-% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
 %
 % \argremovec might leave us with trailing space, e.g.,
 %    @end itemize  @c foo
 % 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 \argtorun.
-% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% (Similarly, 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
 % that a pair of braces would be stripped.
 %
 % 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
+% are not treated as environments; they don't open a group.  (The
 % implementation of @end takes care not to call \endgroup in this
 % special case.)
 
 
-% At runtime, environments start with this:
+% At run-time, environments start with this:
 \def\startenvironment#1{\begingroup\def\thisenv{#1}}
 % initialize
 \let\thisenv\empty
   \fi
 }
 
-% Evironment mismatch, #1 expected:
+% Environment mismatch, #1 expected:
 \def\badenverr{%
   \errhelp = \EMsimple
   \errmessage{This command can appear only \inenvironment\temp,
 \newhelp\EMsimple{Press RETURN to continue.}
 
 
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ptexi
-  \else\ifx\temp\jmacro \j
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% 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=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
-  \kern-.15em
-  \TeX
-}
-
 % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space
 % at the beginning of a line will start with \penalty -- and
 \def\?{?\spacefactor=\endofsentencespacefactor\space}
 
 % @frenchspacing on|off  says whether to put extra space after punctuation.
-% 
+%
 \def\onword{on}
 \def\offword{off}
 %
@@ -813,7 +762,7 @@ where each line of input produces a line of output.}
 
 % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
 % paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
 %
 \newskip\inmarginspacing \inmarginspacing=1cm
 \def\strutdepth{\dp\strutbox}
@@ -860,15 +809,50 @@ where each line of input produces a line of output.}
   \temp
 }
 
-% @include file    insert text of that file as input.
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% @include FILE -- \input text of FILE.
 %
 \def\include{\parseargusing\filenamecatcodes\includezzz}
 \def\includezzz#1{%
   \pushthisfilestack
   \def\thisfile{#1}%
   {%
-    \makevalueexpandable
-    \def\temp{\input #1 }%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
     \expandafter
   }\temp
   \popthisfilestack
@@ -883,6 +867,8 @@ where each line of input produces a line of output.}
   \catcode`>=\other
   \catcode`+=\other
   \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
 }
 
 \def\pushthisfilestack{%
@@ -1028,86 +1014,6 @@ where each line of input produces a line of output.}
 }
 
 
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-  }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{$\ptexbullet$}
-\def\minus{$-$}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
-  \leavevmode
-  \hbox to 1.5em{%
-    \hskip 0pt plus 0.25fil
-    .\hfil.\hfil.%
-    \hskip 0pt plus 0.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
 % @refill is a no-op.
 \let\refill=\relax
 
@@ -1195,7 +1101,7 @@ where each line of input produces a line of output.}
 % that's what we do).
 
 % double active backslashes.
-% 
+%
 {\catcode`\@=0 \catcode`\\=\active
  @gdef@activebackslashdouble{%
    @catcode`@\=@active
@@ -1204,13 +1110,14 @@ where each line of input produces a line of output.}
 
 % 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.
-% 
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
 % #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%
@@ -1234,44 +1141,131 @@ where each line of input produces a line of output.}
   \HyPsdSubst{)}{\realbackslash)}{#1}%
 }
 
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
 \ifpdf
-  \input pdfcolor
-  \pdfcatalog{/PageMode /UseOutlines}%
+  %
+  % Color manipulation macros based on pdfcolor.tex,
+  % except using rgb instead of cmyk; the latter is said to render as a
+  % very dark gray on-screen and a very dark halftone in print, instead
+  % of actual black.
+  \def\rgbDarkRed{0.50 0.09 0.12}
+  \def\rgbBlack{0 0 0}
+  %
+  % k sets the color for filling (usual text, etc.);
+  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\rgbBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}%
-    \def\imageheight{#3}%
-    % without \immediate, pdftex seg faults when the same image is
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \openin 1 #1.PDF \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{PDF}%
+                \fi
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
     % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
     \ifnum\pdftexversion < 14
       \immediate\pdfimage
     \else
       \immediate\pdfximage
     \fi
-      \ifx\empty\imagewidth\else width \imagewidth \fi
-      \ifx\empty\imageheight\else height \imageheight \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
       \ifnum\pdftexversion<13
-         #1.pdf%
+         #1.\pdfimgext
        \else
-         {#1.pdf}%
+         {#1.\pdfimgext}%
        \fi
     \ifnum\pdftexversion < 14 \else
       \pdfrefximage \pdflastximage
     \fi}
+  %
   \def\pdfmkdest#1{{%
     % We have to set dummies so commands such as @code, and characters
     % such as \, aren't expanded when present in a section title.
-    \atdummies
+    \indexnofonts
+    \turnoffactive
     \activebackslashdouble
+    \makevalueexpandable
     \def\pdfdestname{#1}%
     \backslashparens\pdfdestname
-    \pdfdest name{\pdfdestname} xyz%
-  }}%
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
   %
   % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}%
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\rgbDarkRed}
+  \def\linkcolor{\rgbDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
   %
-  \let\linkcolor = \Blue  % was Cyan, but that seems light?
-  \def\endlink{\Black\pdfendlink}
   % Adding outlines to PDF; macros for calculating structure of outlines
   % come from Petr Olsak
   \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1314,6 +1308,7 @@ where each line of input produces a line of output.}
       \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
       %
       % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
       \def\numchapentry##1##2##3##4{%
        \def\thischapnum{##2}%
        \def\thissecnum{0}%
@@ -1373,7 +1368,7 @@ where each line of input produces a line of output.}
       \indexnofonts
       \setupdatafile
       \catcode`\\=\active \otherbackslash
-      \input \jobname.toc
+      \input \tocreadfilename
     \endgroup
   }
   %
@@ -1398,12 +1393,16 @@ where each line of input produces a line of output.}
       % 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
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
       \startlink attr{/Border [0 0 0]}%
         user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
     \endgroup}
@@ -1430,13 +1429,15 @@ where each line of input produces a line of output.}
     {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
   \def\pdflink#1{%
     \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
-    \linkcolor #1\endlink}
+    \setcolor{\linkcolor}#1\endlink}
   \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
 \else
+  % non-pdf mode
   \let\pdfmkdest = \gobble
   \let\pdfurl = \gobble
   \let\endlink = \relax
-  \let\linkcolor = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
   \let\pdfmakeoutlines = \relax
 \fi  % \ifx\pdfoutput
 
@@ -1462,6 +1463,10 @@ where each line of input produces a line of output.}
 \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
 \def\tt{\fam=\ttfam \setfontstyle{tt}}
 
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
 % Texinfo sort of supports the sans serif font style, which plain TeX does not.
 % So we set up a \sf.
 \newfam\sffam
@@ -1471,6 +1476,7 @@ where each line of input produces a line of output.}
 % We don't need math for this font style.
 \def\ttsl{\setfontstyle{ttsl}}
 
+
 % Default leading.
 \newdimen\textleading  \textleading = 13.2pt
 
@@ -1482,8 +1488,12 @@ where each line of input produces a line of output.}
 \def\strutheightpercent{.70833}
 \def\strutdepthpercent {.29167}
 %
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
 \def\setleading#1{%
-  \normalbaselineskip = #1\relax
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
   \normallineskip = \lineskipfactor\normalbaselineskip
   \normalbaselines
   \setbox\strutbox =\hbox{%
@@ -1492,10 +1502,279 @@ where each line of input produces a line of output.}
   }%
 }
 
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
 % Set the font macro #1 to the font named #2, adding on the
 % specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
 
 % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix
@@ -1520,126 +1799,300 @@ where each line of input produces a line of output.}
 \def\scshape{csc}
 \def\scbshape{csc}
 
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
 % Text fonts (11.2pt, magstep1).
 \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}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
 \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
 
 % A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}
-\setfont\deftt\ttshape{10}{\magstep1}
-\setfont\defttsl\ttslshape{10}{\magstep1}
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
 \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
 \font\smalli=cmmi9
 \font\smallsy=cmsy9
+\def\smallecsize{0900}
 
 % Fonts for small examples (8pt).
 \def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
 \font\smalleri=cmmi8
 \font\smallersy=cmsy8
+\def\smallerecsize{0800}
 
 % Fonts for title page (20.4pt):
 \def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
 \let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
 \font\titlei=cmmi12 scaled \magstep3
 \font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
+\def\titleecsize{2074}
 
 % Chapter (and unnumbered) fonts (17.28pt).
 \def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
 \let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
 \font\chapi=cmmi12 scaled \magstep2
 \font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
 
 % Section fonts (14.4pt).
 \def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
 \let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
 \font\seci=cmmi12 scaled \magstep1
 \font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
 
 % Subsection fonts (13.15pt).
 \def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
 \let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
 \font\sseci=cmmi12 scaled \magstephalf
 \font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
 
 % Reduced fonts for @acro in text (10pt).
 \def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}
-\setfont\reducedtt\ttshape{10}{1000}
-\setfont\reducedbf\bfshape{10}{1000}
-\setfont\reducedit\itshape{10}{1000}
-\setfont\reducedsl\slshape{10}{1000}
-\setfont\reducedsf\sfshape{10}{1000}
-\setfont\reducedsc\scshape{10}{1000}
-\setfont\reducedttsl\ttslshape{10}{1000}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
 \font\reducedi=cmmi10
 \font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
 
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families.  Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  \wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  %
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
   \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
   \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
   \textfont\ttfam=\tentt \textfont\sffam=\tensf
@@ -1671,8 +2124,8 @@ where each line of input produces a line of output.}
   \let\tenttsl=\titlettsl
   \def\curfontsize{title}%
   \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
+  \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
@@ -1723,6 +2176,16 @@ where each line of input produces a line of output.}
   \def\lsize{smaller}\def\lllsize{smaller}%
   \resetmathfonts \setleading{9.5pt}}
 
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
 % Set the fonts to use with the @small... environments.
 \let\smallexamplefonts = \smallfonts
 
@@ -1736,53 +2199,176 @@ where each line of input produces a line of output.}
 %
 % By the way, for comparison, here's what fits with @example (10pt):
 %   8.5x11=71  smallbook=60  a4=75  a5=58
-%
-% I wish the USA used A4 paper.
 % --karl, 24jan03.
 
-
 % Set up the default fonts, so we can use them for creating boxes.
 %
-\textfonts \rm
+\definetextfontsizexi
 
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.
+%
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
 
 % Count depth in font-changes, for error checks
 \newcount\fontdepth \fontdepth=0
 
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
-                    \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-% like \smartslanted except unconditionally uses \ttsl.
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+  \ifusingtt 
+    {\ttsl #2\let\next=\relax}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+  \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+  \ifx\next,%
+  \else\ifx\next-%
+  \else\ifx\next.%
+  \else\ptexslash
+  \fi\fi\fi}
+
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
 % @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+\def\ttslanted#1{{\ttsl #1}}
 
-% like \smartslanted except unconditionally use \sl.  We never want
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
 % ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\let\var=\smartslanted
+\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
-% @b, explicit bold.
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @b, explicit bold.  Also @strong.
 \def\b#1{{\bf #1}}
 \let\strong=\b
 
@@ -1800,13 +2386,6 @@ where each line of input produces a line of output.}
 % Can't use plain's \frenchspacing because it uses the `\x notation, and
 % 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\plainfrenchspacing{%
     \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
@@ -1821,21 +2400,35 @@ where each line of input produces a line of output.}
 \catcode`@=\other
 \def\endofsentencespacefactor{3000}% default
 
+% @t, explicit typewriter.
 \def\t#1{%
   {\tt \rawbackslash \plainfrenchspacing #1}%
   \null
 }
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-    \vbox{\hrule\kern-0.4pt
-     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-    \kern-0.4pt\hrule}%
-  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% ctrl is no longer a Texinfo command.
 \def\ctrl #1{{\tt \rawbackslash \hat}#1}
 
 % @file, @option are the same as @samp.
@@ -1875,11 +2468,14 @@ where each line of input produces a line of output.}
 % and arrange explicitly to hyphenate at a dash.
 %  -- rms.
 {
-  \catcode`\-=\active
-  \catcode`\_=\active
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
   %
   \global\def\code{\begingroup
-    \catcode`\-=\active  \catcode`\_=\active
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
     \ifallowcodebreaks
      \let-\codedash
      \let_\codeunder
@@ -1910,7 +2506,7 @@ where each line of input produces a line of output.}
 % 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}
@@ -1930,6 +2526,7 @@ where each line of input produces a line of output.}
 
 % @kbd is like @code, except that if the argument is just one @key command,
 % then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
 
 % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
 %   `example' (@kbd uses ttsl only inside of @example and friends),
@@ -1951,20 +2548,27 @@ where each line of input produces a line of output.}
 \def\wordexample{example}
 \def\wordcode{code}
 
-% Default is `distinct.'
+% Default is `distinct'.
 \kbdinputstyle distinct
 
 \def\xkey{\key}
 \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
 \ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
 
 % For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
 \let\indicateurl=\code
 \let\env=\code
 \let\command=\code
 
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
 % @uref (abbreviation for `urlref') takes an optional (comma-separated)
 % second argument specifying the text to display and an optional third
 % arg as text to display instead of (rather than in addition to) the url
@@ -2014,34 +2618,20 @@ where each line of input produces a line of output.}
   \let\email=\uref
 \fi
 
-% Check if we are currently using a typewriter font.  Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
 % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
 % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
 %
 \def\dmn#1{\thinspace #1}
 
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
 % @l was never documented to mean ``switch to the Lisp font'',
 % and it is not used as such in any manual I can find.  We need it for
 % Polish suppressed-l.  --karl, 22sep96.
 %\def\l#1{{\li #1}\null}
 
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}}              % roman font
-\def\sc#1{{\smallcaps#1}}       % smallcaps font
-\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{%
   {\selectfonts\lsize #1}%
@@ -2053,7 +2643,7 @@ where each line of input produces a line of output.}
 
 % @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}%
@@ -2063,6 +2653,224 @@ where each line of input produces a line of output.}
   \fi
 }
 
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @.
+\def\@{\char64 }
+
+% Used to generate quoted braces.  Unless we're in typewriter, use
+% \ecfont because the CM text fonts do not have braces, and we don't
+% want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% 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=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
 % @pounds{} is a sterling sign, which Knuth put in the CM italic font.
 %
 \def\pounds{{\it\$}}
@@ -2072,49 +2880,113 @@ where each line of input produces a line of output.}
 % 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 
+  \ifx\curfontstyle\bfstylename
     % bold:
     \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
-  \else 
+  \else
     % regular:
     \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
   \fi
   \thiseurofont
 }
 
+% Glyphs from the EC fonts.  We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
 % @registeredsymbol - R in a circle.  The font for the R should really
 % be smaller yet, but lllsize is the best we can do for now.
 % Adapted from the plain.tex definition of \copyright.
@@ -2125,14 +2997,24 @@ where each line of input produces a line of output.}
     }$%
 }
 
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
 % 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
 
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
 
 \message{page headings,}
 
@@ -2217,12 +3099,9 @@ where each line of input produces a line of output.}
 \let\subtitlerm=\tenrm
 \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
 
-\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
-               \let\tt=\authortt}
-
 \parseargdef\title{%
   \checkenv\titlepage
-  \leftline{\titlefonts\rm #1}
+  \leftline{\titlefonts\rmisbold #1}
   % print a rule at the page bottom also.
   \finishedtitlepagefalse
   \vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -2243,7 +3122,7 @@ where each line of input produces a line of output.}
   \else
     \checkenv\titlepage
     \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
-    {\authorfont \leftline{#1}}%
+    {\secfonts\rmisbold \leftline{#1}}%
   \fi
 }
 
@@ -2296,12 +3175,39 @@ where each line of input produces a line of output.}
   %
   % Leave some space for the footline.  Hopefully ok to assume
   % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -\baselineskip
-  \global\advance\vsize by -\baselineskip
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
 }
 
 \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
 
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
 
 % @headings double      turns headings on for double-sided printing.
 % @headings single      turns headings on for single-sided printing.
@@ -2315,10 +3221,14 @@ where each line of input produces a line of output.}
 
 \def\headings #1 {\csname HEADINGS#1\endcsname}
 
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
 % When we turn headings on, set the page number to 1.
 % For double-sided printing, put current file name in lower left corner,
 % chapter name on inside top of right hand pages, document
@@ -2430,7 +3340,7 @@ where each line of input produces a line of output.}
     \begingroup
       \advance\leftskip by-\tableindent
       \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil
+      \advance\rightskip by0pt plus1fil\relax
       \leavevmode\unhbox0\par
     \endgroup
     %
@@ -2444,7 +3354,7 @@ where each line of input produces a line of output.}
     % 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
     \itemxneedsnegativevskipfalse
@@ -2538,9 +3448,18 @@ where each line of input produces a line of output.}
   \parindent=0pt
   \parskip=\smallskipamount
   \ifdim\parskip=0pt \parskip=2pt \fi
+  %
+  % Try typesetting the item mark that if the document erroneously says
+  % something like @itemize @samp (intending @table), there's an error
+  % right away at the @itemize.  It's not the best error message in the
+  % world, but it's better than leaving it to the @item.  This means if
+  % the user wants an empty mark, they have to say @w{} not just @w.
   \def\itemcontents{#1}%
+  \setbox0 = \hbox{\itemcontents}%
+  %
   % @itemize with no arg is equivalent to @itemize @bullet.
   \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  %
   \let\item=\itemizeitem
 }
 
@@ -2561,6 +3480,7 @@ where each line of input produces a line of output.}
    \ifnum\lastpenalty<10000 \parskip=0in \fi
    \noindent
    \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   %
    \vadjust{\penalty 1200}}% not good to break after first line of item.
   \flushcr
 }
@@ -2782,12 +3702,19 @@ where each line of input produces a line of output.}
 %
 % @headitem starts a heading row, which we typeset in bold.
 % Assignments have to be global since we are inside the implicit group
-% of an alignment entry.  Note that \everycr resets \everytab.
-\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+% of an alignment entry.  \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+  \checkenv\multitable
+  \crcr
+  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+  \the\everytab % for the first item
+}%
 %
 % A \tab used to include \hskip1sp.  But then the space in a template
 % line is not enough.  That is bad.  So let's go back to just `&' until
-% we encounter the problem it was intended to solve again.
+% we again encounter the problem the 1sp was intended to solve.
 %                                      --karl, nathan@acm.org, 20apr99.
 \def\tab{\checkenv\multitable &\the\everytab}%
 
@@ -3186,11 +4113,11 @@ where each line of input produces a line of output.}
 \def\dosynindex#1#2#3{%
   % Only do \closeout if we haven't already done it, else we'll end up
   % closing the target index.
-  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
     % The \closeout helps reduce unnecessary open files; the limit on the
     % Acorn RISC OS is a mere 16 files.
     \expandafter\closeout\csname#2indfile\endcsname
-    \expandafter\let\csname\donesynindex#2\endcsname = 1
+    \expandafter\let\csname donesynindex#2\endcsname = 1
   \fi
   % redefine \fooindfile:
   \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
@@ -3224,11 +4151,41 @@ where each line of input produces a line of output.}
   \escapechar = `\\     % use backslash in output files.
   \def\@{@}% change to @@ when we switch to @ as escape char in index files.
   \def\ {\realbackslash\space }%
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
+  %
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  %
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  %
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  %
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  %
+  % So:
+  \let\endinput = \empty
   %
   % Do the redefinitions.
   \commondummies
@@ -3278,19 +4235,23 @@ where each line of input produces a line of output.}
   % Non-English letters.
   \definedummyword\AA
   \definedummyword\AE
+  \definedummyword\DH
   \definedummyword\L
-  \definedummyword\OE
   \definedummyword\O
+  \definedummyword\OE
+  \definedummyword\TH
   \definedummyword\aa
   \definedummyword\ae
+  \definedummyword\dh
+  \definedummyword\exclamdown
   \definedummyword\l
-  \definedummyword\oe
   \definedummyword\o
-  \definedummyword\ss
-  \definedummyword\exclamdown
-  \definedummyword\questiondown
+  \definedummyword\oe
   \definedummyword\ordf
   \definedummyword\ordm
+  \definedummyword\questiondown
+  \definedummyword\ss
+  \definedummyword\th
   %
   % Although these internal commands shouldn't show up, sometimes they do.
   \definedummyword\bf
@@ -3312,15 +4273,28 @@ where each line of input produces a line of output.}
   \definedummyword\registeredsymbol
   \definedummyword\dots
   \definedummyword\enddots
+  \definedummyword\entrybreak
   \definedummyword\equiv
   \definedummyword\error
   \definedummyword\euro
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
   \definedummyword\expansion
   \definedummyword\minus
+  \definedummyword\ogonek
   \definedummyword\pounds
   \definedummyword\point
   \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
   \definedummyword\result
+  \definedummyword\textdegree
   %
   % We want to disable all macros so that they are not expanded by \write.
   \macrolist
@@ -3353,6 +4327,7 @@ where each line of input produces a line of output.}
   \definedummyword\v
   \definedummyword\H
   \definedummyword\dotaccent
+  \definedummyword\ogonek
   \definedummyword\ringaccent
   \definedummyword\tieaccent
   \definedummyword\ubaraccent
@@ -3372,6 +4347,7 @@ where each line of input produces a line of output.}
   \definedummyword\code
   \definedummyword\command
   \definedummyword\dfn
+  \definedummyword\email
   \definedummyword\emph
   \definedummyword\env
   \definedummyword\file
@@ -3420,19 +4396,23 @@ where each line of input produces a line of output.}
   % Non-English letters.
   \def\AA{AA}%
   \def\AE{AE}%
+  \def\DH{DZZ}%
   \def\L{L}%
   \def\OE{OE}%
   \def\O{O}%
+  \def\TH{ZZZ}%
   \def\aa{aa}%
   \def\ae{ae}%
+  \def\dh{dzz}%
+  \def\exclamdown{!}%
   \def\l{l}%
   \def\oe{oe}%
-  \def\o{o}%
-  \def\ss{ss}%
-  \def\exclamdown{!}%
-  \def\questiondown{?}%
   \def\ordf{a}%
   \def\ordm{o}%
+  \def\o{o}%
+  \def\questiondown{?}%
+  \def\ss{ss}%
+  \def\th{zzz}%
   %
   \def\LaTeX{LaTeX}%
   \def\TeX{TeX}%
@@ -3442,32 +4422,51 @@ where each line of input produces a line of output.}
   \def\bullet{bullet}%
   \def\comma{,}%
   \def\copyright{copyright}%
-  \def\registeredsymbol{R}%
   \def\dots{...}%
   \def\enddots{...}%
   \def\equiv{==}%
   \def\error{error}%
   \def\euro{euro}%
   \def\expansion{==>}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
   \def\minus{-}%
-  \def\pounds{pounds}%
   \def\point{.}%
+  \def\pounds{pounds}%
   \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\registeredsymbol{R}%
   \def\result{=>}%
+  \def\textdegree{o}%
+  %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
   %
   % 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
 }
 
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
 \let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
@@ -3493,11 +4492,7 @@ where each line of input produces a line of output.}
     %
     \edef\writeto{\csname#1indfile\endcsname}%
     %
-    \ifvmode
-      \dosubindsanitize
-    \else
-      \dosubindwrite
-    \fi
+    \safewhatsit\dosubindwrite
   }%
   \fi
 }
@@ -3534,13 +4529,13 @@ where each line of input produces a line of output.}
   \temp
 }
 
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
 %
 % If a skip is the last thing on the list now, preserve it
 % by backing up by \lastskip, doing the \write, then inserting
 % the skip again.  Otherwise, the whatsit generated by the
-% \write will make \lastskip zero.  The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
 % @end defun
 % @tindex whatever
 % @defun ...
@@ -3564,25 +4559,31 @@ where each line of input produces a line of output.}
 %
 \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
 %
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
 % ..., ready, GO:
 %
-\def\dosubindsanitize{%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
   % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \skip0 = \lastskip
+  \whatsitskip = \lastskip
   \edef\lastskipmacro{\the\lastskip}%
-  \count255 = \lastpenalty
+  \whatsitpenalty = \lastpenalty
   %
   % If \lastskip is nonzero, that means the last item was a
   % skip.  And since a skip is discardable, that means this
-  % -\skip0 glue we're inserting is preceded by a
+  % -\whatsitskip glue we're inserting is preceded by a
   % non-discardable item, therefore it is not a potential
   % breakpoint, therefore no \nobreak needed.
   \ifx\lastskipmacro\zeroskipmacro
   \else
-    \vskip-\skip0
+    \vskip-\whatsitskip
   \fi
   %
-  \dosubindwrite
+  #1%
   %
   \ifx\lastskipmacro\zeroskipmacro
     % If \lastskip was zero, perhaps the last item was a penalty, and
@@ -3590,19 +4591,20 @@ where each line of input produces a line of output.}
     % 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
     %   Description.
     % would allow a break between the index-whatever whatsit
     % and the "Description." paragraph.
-    \ifnum\count255>9999 \penalty\count255 \fi
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
   \else
     % On the other hand, if we had a nonzero \lastskip,
     % this make-up glue would be preceded by a non-discardable item
     % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\skip0
+    \nobreak\vskip\whatsitskip
   \fi
+\fi
 }
 
 % The index entry written in the file actually looks like
@@ -3645,6 +4647,7 @@ where each line of input produces a line of output.}
   %
   \smallfonts \rm
   \tolerance = 9500
+  \plainfrenchspacing
   \everypar = {}% don't want the \kern\-parindent from indentation suppression.
   %
   % See if the index file exists and is nonempty.
@@ -3718,10 +4721,9 @@ where each line of input produces a line of output.}
 %
 % A straightforward implementation would start like this:
 %      \def\entry#1#2{...
-% But this frozes the catcodes in the argument, and can cause problems to
+% But this freezes the catcodes in the argument, and can cause problems to
 % @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
 \def\entry{%
@@ -3758,10 +4760,17 @@ where each line of input produces a line of output.}
     % columns.
     \vskip 0pt plus1pt
     %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
     % Swallow the left brace of the text (first parameter):
     \afterassignment\doentry
     \let\temp =
 }
+\def\entrybreak{\unskip\space\ignorespaces}%
 \def\doentry{%
     \bgroup % Instead of the swallowed brace.
       \noindent
@@ -3774,11 +4783,8 @@ where each line of input produces a line of output.}
     % The following is kludged to not output a line of dots in the index if
     % there are no page numbers.  The next person who breaks this will be
     % cursed by a Unix daemon.
-    \def\tempa{{\rm }}%
-    \def\tempb{#1}%
-    \edef\tempc{\tempa}%
-    \edef\tempd{\tempb}%
-    \ifx\tempc\tempd
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
       \ %
     \else
       %
@@ -3802,9 +4808,9 @@ where each line of input produces a line of output.}
   \endgroup
 }
 
-% Like \dotfill except takes at least 1 em.
+% Like plain.tex's \dotfill, except uses up at least 1 em.
 \def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
 
 \def\primary #1{\line{#1\hfil}}
 
@@ -3914,6 +4920,34 @@ where each line of input produces a line of output.}
 %
 % All done with double columns.
 \def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
   \output = {%
     % Split the last of the double-column material.  Leave it on the
     % current page, no automatic page break.
@@ -3969,7 +5003,22 @@ where each line of input produces a line of output.}
 \message{sectioning,}
 % Chapters, sections, etc.
 
-% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
 % sections so that we can refer to them unambiguously in the pdf
 % outlines by their "section number".  We avoid collisions with chapter
 % numbers by starting them at 10000.  (If a document ever has 10000
@@ -4023,11 +5072,15 @@ where each line of input produces a line of output.}
   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
 
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it.  @section does likewise.
-% However, they are not reliable, because we don't use marks.
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
 \def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
 \def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
 
 \newcount\absseclevel % used to calculate proper heading level
 \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
@@ -4044,8 +5097,8 @@ where each line of input produces a line of output.}
 \chardef\maxseclevel = 3
 %
 % A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
 %
 % Trace whether the current chapter is an appendix or not:
 % \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -4070,8 +5123,8 @@ where each line of input produces a line of output.}
   % The heading type:
   \def\headtype{#1}%
   \if \headtype U%
-    \ifnum \absseclevel < \unmlevel
-      \chardef\unmlevel = \absseclevel
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
     \fi
   \else
     % Check for appendix sections:
@@ -4083,10 +5136,10 @@ where each line of input produces a line of output.}
       \fi\fi
     \fi
     % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unmlevel
+    \ifnum \absseclevel > \unnlevel
       \def\headtype{U}%
     \else
-      \chardef\unmlevel = 3
+      \chardef\unnlevel = 3
     \fi
   \fi
   % Now print the heading:
@@ -4140,7 +5193,9 @@ where each line of input produces a line of output.}
   \gdef\chaplevelprefix{\the\chapno.}%
   \resetallfloatnos
   %
-  \message{\putwordChapter\space \the\chapno}%
+  % \putwordChapter can contain complex things in translations.
+  \toks0=\expandafter{\putwordChapter}%
+  \message{\the\toks0 \space \the\chapno}%
   %
   % Write the actual heading.
   \chapmacro{#1}{Ynumbered}{\the\chapno}%
@@ -4151,15 +5206,17 @@ where each line of input produces a line of output.}
   \global\let\subsubsection = \numberedsubsubsec
 }
 
-\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
 \def\appendixzzz#1{%
   \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
     \global\advance\appendixno by 1
   \gdef\chaplevelprefix{\appendixletter.}%
   \resetallfloatnos
   %
-  \def\appendixnum{\putwordAppendix\space \appendixletter}%
-  \message{\appendixnum}%
+  % \putwordAppendix can contain complex things in translations.
+  \toks0=\expandafter{\putwordAppendix}%
+  \message{\the\toks0 \space \appendixletter}%
   %
   \chapmacro{#1}{Yappendix}{\appendixletter}%
   %
@@ -4291,7 +5348,6 @@ where each line of input produces a line of output.}
 %       3) Likewise, headings look best if no \parindent is used, and
 %          if justification is not attempted.  Hence \raggedright.
 
-
 \def\majorheading{%
   {\advance\chapheadingskip by 10pt \chapbreak }%
   \parsearg\chapheadingzzz
@@ -4300,8 +5356,8 @@ where each line of input produces a line of output.}
 \def\chapheading{\chapbreak \parsearg\chapheadingzzz}
 \def\chapheadingzzz#1{%
   {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\raggedright
-                    \rm #1\hfill}}%
+                    \parindent=0pt\ptexraggedright
+                    \rmisbold #1\hfill}}%
   \bigskip \par\penalty 200\relax
   \suppressfirstparagraphindent
 }
@@ -4328,7 +5384,19 @@ where each line of input produces a line of output.}
 
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
 \def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \headingsoff
+      \null
+      \chappager
+    \endgroup
+  \fi
+}
 
 \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
 
@@ -4362,41 +5430,78 @@ where each line of input produces a line of output.}
 \def\Yappendixkeyword{Yappendix}
 %
 \def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
   \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
   {%
-    \chapfonts \rm
+    \chapfonts \rmisbold
     %
-    % Have to define \thissection before calling \donoderef, because the
+    % Have to define \lastsection before calling \donoderef, because the
     % xref code eventually uses it.  On the other hand, it has to be called
     % after \pchapsepmacro, or the headline will change too soon.
-    \gdef\thissection{#1}%
-    \gdef\thischaptername{#1}%
+    \gdef\lastsection{#1}%
     %
     % Only insert the separating space if we have a chapter/appendix
     % number, and don't print the unnumbered ``number''.
-    \def\temptype{#2}%
     \ifx\temptype\Ynothingkeyword
       \setbox0 = \hbox{}%
       \def\toctype{unnchap}%
-      \gdef\thischapter{#1}%
     \else\ifx\temptype\Yomitfromtockeyword
       \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
       \def\toctype{omit}%
-      \gdef\thischapter{}%
     \else\ifx\temptype\Yappendixkeyword
       \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
       \def\toctype{app}%
-      % We don't substitute the actual chapter name into \thischapter
-      % because we don't want its macros evaluated now.  And we don't
-      % use \thissection because that changes with each section.
-      %
-      \xdef\thischapter{\putwordAppendix{} \appendixletter:
-                        \noexpand\thischaptername}%
     \else
       \setbox0 = \hbox{#3\enspace}%
       \def\toctype{numchap}%
-      \xdef\thischapter{\putwordChapter{} \the\chapno:
-                        \noexpand\thischaptername}%
     \fi\fi\fi
     %
     % Write the toc entry for this chapter.  Must come before the
@@ -4412,7 +5517,8 @@ where each line of input produces a line of output.}
     \donoderef{#2}%
     %
     % Typeset the actual heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
           \hangindent=\wd0 \centerparametersmaybe
           \unhbox0 #1\par}%
   }%
@@ -4436,8 +5542,8 @@ where each line of input produces a line of output.}
 %
 \def\unnchfopen #1{%
 \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}\bigskip \par\nobreak
+                       \parindent=0pt\ptexraggedright
+                       \rmisbold #1\hfill}}\bigskip \par\nobreak
 }
 \def\chfopen #1#2{\chapoddpage {\chapfonts
 \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
@@ -4446,7 +5552,7 @@ where each line of input produces a line of output.}
 \def\centerchfopen #1{%
 \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                        \parindent=0pt
-                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
 }
 \def\CHAPFopen{%
   \global\let\chapmacro=\chfopen
@@ -4474,36 +5580,89 @@ where each line of input produces a line of output.}
 % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
 % section number.
 %
+\def\seckeyword{sec}
+%
 \def\sectionheading#1#2#3#4{%
   {%
     % Switch to the right set of fonts.
-    \csname #2fonts\endcsname \rm
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Go into vertical mode.  Usually we'll already be there, but we
+    % don't want the following whatsit to end up in a preceding paragraph
+    % if the document didn't happen to have a blank line.
+    \par
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
     %
     % Insert space above the heading.
     \csname #2headingbreak\endcsname
     %
-    % Only insert the space after the number if we have a section number.
-    \def\sectionlevel{#2}%
-    \def\temptype{#3}%
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
     %
+    % Only insert the space after the number if we have a section number.
     \ifx\temptype\Ynothingkeyword
       \setbox0 = \hbox{}%
       \def\toctype{unn}%
-      \gdef\thissection{#1}%
+      \gdef\lastsection{#1}%
     \else\ifx\temptype\Yomitfromtockeyword
       % for @headings -- no section number, don't include in toc,
-      % and don't redefine \thissection.
+      % and don't redefine \lastsection.
       \setbox0 = \hbox{}%
       \def\toctype{omit}%
       \let\sectionlevel=\empty
     \else\ifx\temptype\Yappendixkeyword
       \setbox0 = \hbox{#4\enspace}%
       \def\toctype{app}%
-      \gdef\thissection{#1}%
+      \gdef\lastsection{#1}%
     \else
       \setbox0 = \hbox{#4\enspace}%
       \def\toctype{num}%
-      \gdef\thissection{#1}%
+      \gdef\lastsection{#1}%
     \fi\fi\fi
     %
     % Write the toc entry (before \donoderef).  See comments in \chapmacro.
@@ -4522,7 +5681,7 @@ where each line of input produces a line of output.}
     \nobreak
     %
     % Output the actual section heading.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
           \hangindent=\wd0  % zero if no section number
           \unhbox0 #1}%
   }%
@@ -4538,11 +5697,11 @@ where each line of input produces a line of output.}
   % glue accumulate.  (Not a breakpoint because it's preceded by a
   % discardable item.)
   \vskip-\parskip
-  % 
+  %
   % 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
   \penalty 10001
@@ -4600,7 +5759,7 @@ where each line of input produces a line of output.}
 % 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
@@ -4618,7 +5777,7 @@ where each line of input produces a line of output.}
 \def\readtocfile{%
   \setupdatafile
   \activecatcodes
-  \input \jobname.toc
+  \input \tocreadfilename
 }
 
 \newskip\contentsrightmargin \contentsrightmargin=1in
@@ -4637,7 +5796,6 @@ where each line of input produces a line of output.}
   %
   % Don't need to put `Contents' or `Short Contents' in the headline.
   % It is abundantly clear what they are.
-  \def\thischapter{}%
   \chapmacro{#1}{Yomitfromtoc}{}%
   %
   \savepageno = \pageno
@@ -4649,11 +5807,16 @@ where each line of input produces a line of output.}
     \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
 }
 
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
 
 % Normal (long) toc.
+%
 \def\contents{%
   \startcontents{\putwordTOC}%
-    \openin 1 \jobname.toc
+    \openin 1 \tocreadfilename\space
     \ifeof 1 \else
       \readtocfile
     \fi
@@ -4672,6 +5835,7 @@ where each line of input produces a line of output.}
 \def\summarycontents{%
   \startcontents{\putwordShortTOC}%
     %
+    \let\partentry = \shortpartentry
     \let\numchapentry = \shortchapentry
     \let\appentry = \shortchapentry
     \let\unnchapentry = \shortunnchapentry
@@ -4691,7 +5855,7 @@ where each line of input produces a line of output.}
     \let\numsubsubsecentry = \numsecentry
     \let\appsubsubsecentry = \numsecentry
     \let\unnsubsubsecentry = \numsecentry
-    \openin 1 \jobname.toc
+    \openin 1 \tocreadfilename\space
     \ifeof 1 \else
       \readtocfile
     \fi
@@ -4727,6 +5891,19 @@ where each line of input produces a line of output.}
 % The last argument is the page number.
 % The arguments in between are the chapter number, section number, ...
 
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
 %
@@ -4816,45 +5993,12 @@ where each line of input produces a line of output.}
 \message{environments,}
 % @foo ... @end foo.
 
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
-   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
-   \advance\hsize by -2\dimen2 % Rules.
-   \vbox{%
-      \hrule height\dimen2
-      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
-         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
-         \kern3pt\vrule width\dimen2}% Space to right.
-      \hrule height\dimen2}
-    \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex    escapes into raw Tex temporarily.
+% @tex ... @end tex    escapes into raw TeX temporarily.
 % One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
 
 \envdef\tex{%
+  \setupmarkupstyle{tex}%
   \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
   \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
   \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
@@ -4864,8 +6008,14 @@ where each line of input produces a line of output.}
   \catcode `\|=\other
   \catcode `\<=\other
   \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
   \escapechar=`\\
   %
+  % ' is active in math mode (mathcode"8000).  So reset it, and all our
+  % other math active characters (just in case), to plain's definitions.
+  \mathactive
+  %
   \let\b=\ptexb
   \let\bullet=\ptexbullet
   \let\c=\ptexc
@@ -4883,6 +6033,7 @@ where each line of input produces a line of output.}
   \let\/=\ptexslash
   \let\*=\ptexstar
   \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
   \let\frenchspacing=\plainfrenchspacing
   %
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -4998,6 +6149,7 @@ where each line of input produces a line of output.}
 
 % This macro is called at the beginning of all the @example variants,
 % inside a group.
+\newdimen\nonfillparindent
 \def\nonfillstart{%
   \aboveenvbreak
   \hfuzz = 12pt % Don't be fussy
@@ -5005,7 +6157,12 @@ where each line of input produces a line of output.}
   \let\par = \lisppar % don't ignore blank lines
   \obeylines % each line of input is a line of output
   \parskip = 0pt
+  % Turn off paragraph indentation but redefine \indent to emulate
+  % the normal \indent.
+  \nonfillparindent=\parindent
   \parindent = 0pt
+  \let\indent\nonfillindent
+  %
   \emergencystretch = 0pt % don't try to avoid overfull boxes
   \ifx\nonarrowing\relax
     \advance \leftskip by \lispnarrowing
@@ -5016,6 +6173,24 @@ where each line of input produces a line of output.}
   \let\exdent=\nofillexdent
 }
 
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
 % If you want all examples etc. small: @set dispenvsize small.
 % If you want even small examples the full size: @set dispenvsize nosmall.
 % This affects the following displayed environments:
@@ -5026,53 +6201,59 @@ where each line of input produces a line of output.}
 \let\SETdispenvsize\relax
 \def\setnormaldispenv{%
   \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
 \def\setsmalldispenv{%
   \ifx\SETdispenvsize\nosmallword
   \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
 
 % We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
   \expandafter\let\csname E#1\endcsname \afterenvbreak
   \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
 }
 
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
-  \makedispenv{#1}{#3}
-  \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
 }
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
 %
 % @smallexample and @smalllisp: use smaller fonts.
 % Originally contributed by Pavel@xerox.
 %
-\maketwodispenv{lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
   \nonfillstart
-  \tt
+  \tt\setupmarkupstyle{example}%
   \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
+  \gobble % eat return
 }
-
 % @display/@smalldisplay: same as @lisp except keep current font.
 %
-\makedispenv {display}{%
+\makedispenvdef{display}{%
   \nonfillstart
   \gobble
 }
 
 % @format/@smallformat: same as @display except don't narrow margins.
 %
-\makedispenv{format}{%
+\makedispenvdef{format}{%
   \let\nonarrowing = t%
   \nonfillstart
   \gobble
@@ -5091,18 +6272,44 @@ where each line of input produces a line of output.}
 \envdef\flushright{%
   \let\nonarrowing = t%
   \nonfillstart
-  \advance\leftskip by 0pt plus 1fill
+  \advance\leftskip by 0pt plus 1fill\relax
   \gobble
 }
 \let\Eflushright = \afterenvbreak
 
 
+% @raggedright does more-or-less normal line breaking but no right
+% justification.  From plain.tex.
+\envdef\raggedright{%
+  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
 % @quotation does normal linebreaking (hence we can't use \nonfillstart)
 % and narrows the margins.  We keep \parskip nonzero in general, since
 % we're doing normal filling.  So, when using \aboveenvbreak and
 % \afterenvbreak, temporarily make \parskip 0.
 %
-\envdef\quotation{%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
   {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
   \parindent=0pt
   %
@@ -5128,6 +6335,7 @@ where each line of input produces a line of output.}
   \fi
   {\parskip=0pt \afterenvbreak}%
 }
+\def\Esmallquotation{\Equotation}
 
 % If we're given an argument, typeset it in bold with a colon after.
 \def\quotationlabel#1{%
@@ -5152,18 +6360,16 @@ where each line of input produces a line of output.}
   \do\ \do\\\do\{\do\}\do\$\do\&%
   \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
   \do\<\do\>\do\|\do\@\do+\do\"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
 }
 %
 % [Knuth] p. 380
 \def\uncatcodespecials{%
   \def\do##1{\catcode`##1=\other}\dospecials}
 %
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
-  \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
 % Setup for the @verb command.
 %
 % Eight spaces for a tab
@@ -5175,7 +6381,7 @@ where each line of input produces a line of output.}
 \def\setupverb{%
   \tt  % easiest (and conventionally used) font for verbatim
   \def\par{\leavevmode\endgraf}%
-  \catcode`\`=\active
+  \setupmarkupstyle{verb}%
   \tabeightspaces
   % Respect line breaks,
   % print special symbols as themselves, and
@@ -5186,35 +6392,46 @@ where each line of input produces a line of output.}
 
 % Setup for the @verbatim environment
 %
-% Real tab expansion
+% Real tab expansion.
 \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
 %
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
 \begingroup
   \catcode`\^^I=\active
   \gdef\tabexpand{%
     \catcode`\^^I=\active
     \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
     }%
   }
 \endgroup
+
+% start the verbatim environment.
 \def\setupverbatim{%
   \let\nonarrowing = t%
   \nonfillstart
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
-  \catcode`\`=\active
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
   \tabexpand
+  \setupmarkupstyle{verbatim}%
   % Respect line breaks,
   % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
+  % make each space count.
+  % Must do in this order:
   \obeylines \uncatcodespecials \sepspaces
   \everypar{\starttabbox}%
 }
@@ -5270,6 +6487,7 @@ where each line of input produces a line of output.}
   {%
     \makevalueexpandable
     \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
     \input #1
     \afterenvbreak
   }%
@@ -5295,27 +6513,35 @@ where each line of input produces a line of output.}
   \endgroup
 }
 
+
 \message{defuns,}
 % @defun etc.
 
 \newskip\defbodyindent \defbodyindent=.4in
 \newskip\defargsindent \defargsindent=50pt
 \newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
 
 % Start the processing of @deffn:
 \def\startdefun{%
   \ifnum\lastpenalty<10000
     \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
   \else
     % If there are two @def commands in a row, we'll have a \nobreak,
     % 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 specifically for penalty 10002, inserted
-    % by \defargscommonending, instead of 10000, since the sectioning
+    % by \printdefunline, 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
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
     %
     % Similarly, after a section heading, do not allow a break.
     % But do insert the glue.
@@ -5333,7 +6559,7 @@ where each line of input produces a line of output.}
   %
   % As above, allow line break if we have multiple x headers in a row.
   % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
   %
   % And now, it's time to reuse the body of the original defun:
   \expandafter\gobbledefun#1%
@@ -5348,10 +6574,10 @@ where each line of input produces a line of output.}
     #1#2 \endheader
     % common ending:
     \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil
+    \advance\rightskip by 0pt plus 1fil\relax
     \endgraf
     \nobreak\vskip -\parskip
-    \penalty 10002  % signal to \startdefun and \dodefunx
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
     % Some of the @defun-type tags do not enable magic parentheses,
     % rendering the following check redundant.  But we don't optimize.
     \checkparencounts
@@ -5361,7 +6587,7 @@ where each line of input produces a line of output.}
 \def\Edefun{\endgraf\medbreak}
 
 % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remainnig is to define \deffnheader.
+% the only thing remaining is to define \deffnheader.
 %
 \def\makedefun#1{%
   \expandafter\let\csname E#1\endcsname = \Edefun
@@ -5540,7 +6766,7 @@ where each line of input produces a line of output.}
   %
   % On the other hand, if an argument has two dashes (for instance), we
   % want a way to get ttsl.  Let's try @var for that.
-  \let\var=\ttslanted
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
   #1%
   \sl\hyphenchar\font=45
 }
@@ -5620,12 +6846,14 @@ where each line of input produces a line of output.}
   \ifnum\parencount=0 \else \badparencount \fi
   \ifnum\brackcount=0 \else \badbrackcount \fi
 }
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
 \def\badparencount{%
-  \errmessage{Unbalanced parentheses in @def}%
+  \message{Warning: unbalanced parentheses in @def...}%
   \global\parencount=0
 }
 \def\badbrackcount{%
-  \errmessage{Unbalanced square braces in @def}%
+  \message{Warning: unbalanced square brackets in @def...}%
   \global\brackcount=0
 }
 
@@ -5660,7 +6888,6 @@ where each line of input produces a line of output.}
     \spaceisspace
     %
     % Append \endinput to make sure that TeX does not see the ending newline.
-    %
     % I've verified that it is necessary both for e-TeX and for ordinary TeX
     %                                                  --kasal, 29nov03
     \scantokens{#1\endinput}%
@@ -5693,7 +6920,7 @@ where each line of input produces a line of output.}
 % 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\let
   \csname#1\expandafter\endcsname
@@ -5719,13 +6946,18 @@ where each line of input produces a line of output.}
 
 % Macro bodies are absorbed as an argument in a context where
 % all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+%
 % It's necessary to have hard CRs when the macro is executed. This is
-% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
 % body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
   \catcode`\"=\other
   \catcode`\+=\other
   \catcode`\<=\other
@@ -5735,15 +6967,16 @@ where each line of input produces a line of output.}
   \catcode`\_=\other
   \catcode`\|=\other
   \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
 }
 
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
   \scanctxt
   \catcode`\\=\other
   \catcode`\^^M=\other
 }
 
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
   \scanctxt
   \catcode`\{=\other
   \catcode`\}=\other
@@ -5751,30 +6984,48 @@ where each line of input produces a line of output.}
   \usembodybackslash
 }
 
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
   \scanctxt
-  \catcode`\\=\other
+  \catcode`\\=0
 }
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
 
 % \mbodybackslash is the definition of \ in @macro bodies.
 % It maps \foo\ => \csname macarg.foo\endcsname => #N
 % where N is the macro parameter number.
 % We define \csname macarg.\endcsname to be \realbackslash, so
 % \\ in macro replacement text gets you a backslash.
-
+%
 {\catcode`@=0 @catcode`@\=@active
  @gdef@usembodybackslash{@let\=@mbodybackslash}
  @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
 }
 \expandafter\def\csname macarg.\endcsname{\realbackslash}
 
+\def\margbackslash#1{\char`\#1 }
+
 \def\macro{\recursivefalse\parsearg\macroxxx}
 \def\rmacro{\recursivetrue\parsearg\macroxxx}
 
 \def\macroxxx#1{%
-  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \getargs{#1}% now \macname is the macname and \argl the arglist
   \ifx\argl\empty       % no arguments
-     \paramno=0%
+     \paramno=0
   \else
      \expandafter\parsemargdef \argl;%
   \fi
@@ -5823,28 +7074,32 @@ where each line of input produces a line of output.}
 % an opening brace, and that opening brace is not consumed.
 \def\getargs#1{\getargsxxx#1{}}
 \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
 
 % Parse the optional {params} list.  Set up \paramno and \paramlist
 % so \defmacro knows what to do.  Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% in the params list to be ##N where N is the position in that list.
 % That gets used by \mbodybackslash (above).
-
+%
 % We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX:  let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
 % unexpandable, insert that wherever you need a #, and then redefine
 % it to # just before using the token list produced.
 %
 % The same technique is used to protect \eatspaces till just before
 % the macro is used.
 
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+}
 \def\parsemargdefxxx#1,{%
   \if#1;\let\next=\relax
   \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1%
+    \advance\paramno by 1
     \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
         {\xeatspaces{\hash\the\paramno}}%
     \edef\paramlist{\paramlist\hash\the\paramno,}%
@@ -5852,7 +7107,7 @@ where each line of input produces a line of output.}
 
 % These two commands read recursive and nonrecursive macro bodies.
 % (They're different since rec and nonrec macros end differently.)
-
+%
 \long\def\parsemacbody#1@end macro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
 \long\def\parsermacbody#1@end rmacro%
@@ -5863,6 +7118,7 @@ where each line of input produces a line of output.}
 % Much magic with \expandafter here.
 % \xdef is used so that macro definitions will survive the file
 % they're defined in; @include reads the file inside a group.
+%
 \def\defmacro{%
   \let\hash=##% convert placeholders to macro parameter chars
   \ifrecursive
@@ -5926,7 +7182,8 @@ where each line of input produces a line of output.}
 % \braceorline decides whether the next nonwhitespace character is a
 % {.  If so it reads up to the closing }, if not, it reads the whole
 % line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+% 
 \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup\else
@@ -5936,7 +7193,8 @@ where each line of input produces a line of output.}
 
 % @alias.
 % We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
+% sign.  Make them active and then expand them all to nothing.
+%
 \def\alias{\parseargusing\obeyspaces\aliasxxx}
 \def\aliasxxx #1{\aliasyyy#1\relax}
 \def\aliasyyy #1=#2\relax{%
@@ -5952,7 +7210,6 @@ where each line of input produces a line of output.}
 \message{cross references,}
 
 \newwrite\auxfile
-
 \newif\ifhavexrefs    % True if xref values are known.
 \newif\ifwarnedxrefs  % True if we warned once that they aren't known.
 
@@ -5997,7 +7254,7 @@ where each line of input produces a line of output.}
 
 % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
 % anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \thissection,
+% 1) NAME-title - the current sectioning name taken from \lastsection,
 %                 or the anchor name.
 % 2) NAME-snt   - section number and type, passed as the SNT arg, or
 %                 empty for anchors.
@@ -6016,10 +7273,10 @@ where each line of input produces a line of output.}
        \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
          ##1}{##2}}% these are parameters of \writexrdef
       }%
-      \toks0 = \expandafter{\thissection}%
+      \toks0 = \expandafter{\lastsection}%
       \immediate \writexrdef{title}{\the\toks0 }%
       \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \writexrdef{pg}{\folio}% will be written later, during \shipout
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
     }%
   \fi
 }
@@ -6063,22 +7320,25 @@ where each line of input produces a line of output.}
   %
   % Make link in pdf output.
   \ifpdf
-    \leavevmode
-    \getfilename{#4}%
-    {\turnoffactive
+    {\indexnofonts
+     \turnoffactive
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.
+     \getfilename{#4}%
+     %
      % See comments at \activebackslashdouble.
      {\activebackslashdouble \xdef\pdfxrefdest{#1}%
       \backslashparens\pdfxrefdest}%
      %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
      \ifnum\filenamelength>0
-       \startlink attr{/Border [0 0 0]}%
-         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
      \else
-       \startlink attr{/Border [0 0 0]}%
-         goto name{\pdfmkpgn{\pdfxrefdest}}%
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
      \fi
     }%
-    \linkcolor
+    \setcolor{\linkcolor}%
   \fi
   %
   % Float references are printed completely differently: "Figure 1.2"
@@ -6116,7 +7376,7 @@ where each line of input produces a line of output.}
     % is a loss.  Therefore, we give the text of the node name again, so it
     % is as if TeX is seeing it for the first time.
     \ifdim \wd1 > 0pt
-      \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
     \else
       % _ (for example) has to be the character _ for the purposes of the
       % control sequence corresponding to the node, but it has to expand
@@ -6212,10 +7472,18 @@ where each line of input produces a line of output.}
 % collisions).  But if this is a float type, we have more work to do.
 %
 \def\xrdef#1#2{%
-  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
   %
   % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR#1\endcsname
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
     % it was a float, and we have the (safe) float type in \iffloattype.
     \expandafter\let\expandafter\floatlist
       \csname floatlist\iffloattype\endcsname
@@ -6230,7 +7498,8 @@ where each line of input produces a line of output.}
     %
     % Remember this xref in the control sequence \floatlistFLOATTYPE,
     % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
   \fi
 }
 
@@ -6334,6 +7603,7 @@ where each line of input produces a line of output.}
   \input\jobname.#1
 \endgroup}
 
+
 \message{insertions,}
 % including footnotes.
 
@@ -6416,7 +7686,7 @@ where each line of input produces a line of output.}
 % In case a @footnote appears in a vbox, save the footnote text and create
 % the real \insert just after the vbox finished.  Otherwise, the insertion
 % would be lost.
-% Similarily, if a @footnote appears inside an alignment, save the footnote
+% Similarly, if a @footnote appears inside an alignment, save the footnote
 % text to a box and make the \insert when a row of the table is finished.
 % And the same can be done for other insert classes.  --kasal, 16nov03.
 
@@ -6512,7 +7782,7 @@ where each line of input produces a line of output.}
 % #2 is (optional) width, #3 is (optional) height.
 % #4 is (ignored optional) html alt text.
 % #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
 \newif\ifimagevmode
 \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
   \catcode`\^^M = 5     % in case we're inside an example
@@ -6520,15 +7790,19 @@ where each line of input produces a line of output.}
   % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
-    \nobreak\bigskip
+    \nobreak\medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
     % above and below.
     \nobreak\vskip\parskip
     \nobreak
-    \line\bgroup
   \fi
   %
+  % Leave vertical mode so that indentation from an enclosing
+  % environment such as @quotation is respected.  On the other hand, if
+  % it's at the top level, we don't want the normal paragraph indentation.
+  \noindent
+  %
   % Output the image.
   \ifpdf
     \dopdfimage{#1}{#2}{#3}%
@@ -6539,7 +7813,7 @@ where each line of input produces a line of output.}
     \epsfbox{#1.eps}%
   \fi
   %
-  \ifimagevmode \egroup \bigbreak \fi  % space after the image
+  \ifimagevmode \medskip \fi  % space after the standalone image
 \endgroup}
 
 
@@ -6606,13 +7880,13 @@ where each line of input produces a line of output.}
       \global\advance\floatno by 1
       %
       {%
-        % This magic value for \thissection is output by \setref as the
+        % This magic value for \lastsection is output by \setref as the
         % XREFLABEL-title value.  \xrefX uses it to distinguish float
         % labels (which have a completely different output format) from
         % node and anchor labels.  And \xrdef uses it to construct the
         % lists of floats.
         %
-        \edef\thissection{\floatmagic=\safefloattype}%
+        \edef\lastsection{\floatmagic=\safefloattype}%
         \setref{\floatlabel}{Yfloat}%
       }%
     \fi
@@ -6747,7 +8021,7 @@ where each line of input produces a line of output.}
 
 % #1 is the control sequence we are passed; we expand into a conditional
 % which is true if #1 represents a float ref.  That is, the magic
-% \thissection value which we \setref above.
+% \lastsection value which we \setref above.
 %
 \def\iffloat#1{\expandafter\doiffloat#1==\finish}
 %
@@ -6808,39 +8082,909 @@ where each line of input produces a line of output.}
   \writeentry
 }}
 
+
 \message{localization,}
-% and i18n.
 
-% @documentlanguage is usually given very early, just after
-% @setfilename.  If done too late, it may not override everything
-% properly.  Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
 %
-\parseargdef\documentlanguage{%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
   \tex % read txi-??.tex file in plain TeX.
-    % Read the file if it exists.
+    % Read the file by the name they passed if it exists.
     \openin 1 txi-#1.tex
     \ifeof 1
-      \errhelp = \nolanghelp
-      \errmessage{Cannot read language file txi-#1.tex}%
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
     \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
       \input txi-#1.tex
     \fi
     \closein 1
-  \endgroup
+  \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \globaldefs = 1  % everything in the txi-LL files needs to persist
+    \input txi-#1.tex
+  \fi
+  \closein 1
 }
+}% end of special _ catcode
+%
 \newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  In the current directory
-should work if nowhere else does.}
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
 
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname lang@#1\endcsname \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname lang@#1\endcsname
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
 
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
 
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
 
-% Page size parameters.
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
 %
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}}
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\copyright}
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-}
+  \gdef^^ae{\registeredsymbol}
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guilletright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A}
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\TH}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\th}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U}
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D0}{\DH}
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DE}{\TH}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F0}{\dh}
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FE}{\th}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
 \newdimen\defaultparindent \defaultparindent = 15pt
 
 \chapheadingskip = 15pt plus 4pt minus 2pt
@@ -6850,10 +8994,10 @@ should work if nowhere else does.}
 % Prevent underfull vbox error messages.
 \vbadness = 10000
 
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
 
-% Following George Bush, just get rid of widows and orphans.
+% Following George Bush, get rid of widows and orphans.
 \widowpenalty=10000
 \clubpenalty=10000
 
@@ -6900,6 +9044,10 @@ should work if nowhere else does.}
   \ifpdf
     \pdfpageheight #7\relax
     \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
   \fi
   %
   \setleading{\textleading}
@@ -6914,7 +9062,7 @@ should work if nowhere else does.}
   \textleading = 13.2pt
   %
   % If page is nothing but text, make it come out even.
-  \internalpagesizes{46\baselineskip}{6in}%
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
                     {\voffset}{.25in}%
                     {\bindingoffset}{36pt}%
                     {11in}{8.5in}%
@@ -6926,7 +9074,7 @@ should work if nowhere else does.}
   \textleading = 12pt
   %
   \internalpagesizes{7.5in}{5in}%
-                    {\voffset}{.25in}%
+                    {-.2in}{0in}%
                     {\bindingoffset}{16pt}%
                     {9.25in}{7in}%
   %
@@ -6970,7 +9118,7 @@ should work if nowhere else does.}
   % \global\normaloffset = -6mm
   % \global\bindingoffset = 10mm
   % @end tex
-  \internalpagesizes{51\baselineskip}{160mm}
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
                     {\voffset}{\hoffset}%
                     {\bindingoffset}{44pt}%
                     {297mm}{210mm}%
@@ -7035,7 +9183,7 @@ should work if nowhere else does.}
   \parskip = 3pt plus 2pt minus 1pt
   \setleading{\textleading}%
   %
-  \dimen0 = #1
+  \dimen0 = #1\relax
   \advance\dimen0 by \voffset
   %
   \dimen2 = \hsize
@@ -7054,6 +9202,9 @@ should work if nowhere else does.}
 
 \message{and turning on texinfo input format.}
 
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
 % Define macros to output various characters with catcode for normal text.
 \catcode`\"=\other
 \catcode`\~=\other
@@ -7163,7 +9314,7 @@ should work if nowhere else does.}
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
 % the literal character `\'.
-% 
+%
 @def@normalturnoffactive{%
   @let\=@normalbackslash
   @let"=@normaldoublequote
@@ -7175,6 +9326,8 @@ should work if nowhere else does.}
   @let>=@normalgreater
   @let+=@normalplus
   @let$=@normaldollar %$ font-lock fix
+  @markupsetuplqdefault
+  @markupsetuprqdefault
   @unsepspaces
 }
 
@@ -7209,6 +9362,14 @@ should work if nowhere else does.}
 @catcode`@# = @other
 @catcode`@% = @other
 
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
 
 @c Local variables:
 @c eval: (add-hook 'write-file-hooks 'time-stamp)
index 05c3e3a..ee840f4 100644 (file)
@@ -1,31 +1,35 @@
 /* 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.
+2004, 2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Include this header to make __DJGPP_MINOR__ available because DJGPP ports
+   of GCC 4.3.0 and later no longer do it automatically.  */
+#include <sys/version.h>
 
 /* Many things are defined already by a system header.  */
 #include <sys/config.h>
 
 #if __DJGPP__ > 2 || __DJGPP_MINOR__ > 1
 
-/* Define if `sys_siglist' is declared by <signal.h>.  */
+/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
 # define SYS_SIGLIST_DECLARED 1
 
-/* Define this if the C library defines the variable `_sys_siglist'.  */
-# define HAVE_SYS_SIGLIST 1
+/* Define to 1 if the C library defines the variable `_sys_siglist'.  */
+# define HAVE_DECL_SYS_SIGLIST 1
 
 #else
 
@@ -40,16 +44,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define to 1 if you have `alloca', as a function or macro. */
 #define HAVE_ALLOCA 1
 
-/* Define if you have the fdopen function.  */
+/* Define to 1 if you have the fdopen function.  */
 #define HAVE_FDOPEN 1
 
 /* Define to 1 if you have the `getgroups' function. */
 #define HAVE_GETGROUPS 1
 
-/* Define if you have the <memory.h> header file.  */
+/* Define to 1 if you have the <memory.h> header file.  */
 #define HAVE_MEMORY_H 1
 
-/* Define if you have the mkstemp function.  */
+/* Define to 1 if you have the mkstemp function.  */
 #define HAVE_MKSTEMP 1
 
 /* Define to 1 if you have the `mktemp' function. */
@@ -70,19 +74,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 /* Define the type of the first arg to select().  */
 #define fd_set_size_t int
 
-/* Define if you have the select function.  */
+/* Define to 1 if you have the select function.  */
 #define HAVE_SELECT 1
 
-/* Define if your compiler conforms to the ANSI C standard. */
+/* Define to 1 if your compiler conforms to the ANSI C standard. */
 #define HAVE_ANSI_COMPILER 1
 
 /* Define to 1 if you have the <stdarg.h> header file. */
 #define HAVE_STDARG_H 1
 
-/* Define if you have the vprintf library function.  */
+/* Define to 1 if you have the vprintf library function.  */
 #undef HAVE_VPRINTF
 #define HAVE_VPRINTF 1
 
+/* Define to 1 if you have the stricmp function.  */
+#define HAVE_STRICMP 1
+
 /* Name of the package */
 #define PACKAGE "make"
 
@@ -93,22 +100,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #define PACKAGE_NAME "GNU make"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU make 3.81"
+#define PACKAGE_STRING "GNU make 3.82"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "make"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "3.81"
+#define PACKAGE_VERSION "3.82"
 
 /* Define to 1 if the C compiler supports function prototypes. */
 #define PROTOTYPES 1
 
-/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
-#define SYS_SIGLIST_DECLARED 1
-
 /* Version number of package */
-#define VERSION "3.81"
+#define VERSION "3.82"
 
 /* Build host information. */
 #define MAKE_HOST "i386-pc-msdosdjgpp"
index a1fa529..130f4f8 100755 (executable)
--- a/configure
+++ b/configure
 #! /bin/sh
-# From configure.in Id: configure.in,v 1.142 2006/04/01 06:36:40 psmith Exp .
+# From configure.in Id: configure.in,v 1.156 2010/07/28 05:39:50 psmith Exp .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for GNU make 3.81.
+# Generated by GNU Autoconf 2.65 for GNU make 3.82.
 #
 # Report bugs to <bug-make@gnu.org>.
 #
-# Copyright (C) 2003 Free Software Foundation, Inc.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
 fi
-DUALCASE=1; export DUALCASE # for MKS sh
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_unset $as_var
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
   fi
-done
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
 
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
 else
   as_expr=false
 fi
 
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
   as_basename=basename
 else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
-as_me=`$as_basename "$0" ||
+as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)$' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-         /^X\/\(\/\/\)$/{ s//\1/; q; }
-         /^X\/\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
 
-
-# PATH needs CR, and LINENO needs CR and PATH.
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -86,146 +421,107 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# 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
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-        case $as_dir in
-        /*)
-          if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-            CONFIG_SHELL=$as_dir/$as_base
-            export CONFIG_SHELL
-            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-          fi;;
-        esac
-       done
-done
-;;
-  esac
 
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
     sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
       N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
       t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
+      s/-\n.*//
     ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
   # Exit status is that of the last command.
   exit
 }
 
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='     ' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
 else
-  as_expr=false
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
   fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
 else
   as_ln_s='cp -p'
 fi
-rm -f conf$$ conf$$.exe conf$$.file
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-as_executable_p="test -f"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -234,90 +530,223 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS="  $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
-exec 6>&1
-
 #
 # Initializations.
 #
 ac_default_prefix=/usr/local
+ac_clean_files=
 ac_config_libobj_dir=.
+LIBOBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete.  It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
 
 # Identity of this package.
 PACKAGE_NAME='GNU make'
 PACKAGE_TARNAME='make'
-PACKAGE_VERSION='3.81'
-PACKAGE_STRING='GNU make 3.81'
+PACKAGE_VERSION='3.82'
+PACKAGE_STRING='GNU make 3.82'
 PACKAGE_BUGREPORT='bug-make@gnu.org'
+PACKAGE_URL='http://www.gnu.org/software/make/'
 
 ac_unique_file="vpath.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
-#if HAVE_SYS_TYPES_H
+#ifdef HAVE_SYS_TYPES_H
 # include <sys/types.h>
 #endif
-#if HAVE_SYS_STAT_H
+#ifdef HAVE_SYS_STAT_H
 # include <sys/stat.h>
 #endif
-#if STDC_HEADERS
+#ifdef STDC_HEADERS
 # include <stdlib.h>
 # include <stddef.h>
 #else
-# if HAVE_STDLIB_H
+# ifdef HAVE_STDLIB_H
 #  include <stdlib.h>
 # endif
 #endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
 #  include <memory.h>
 # endif
 # include <string.h>
 #endif
-#if HAVE_STRINGS_H
+#ifdef HAVE_STRINGS_H
 # include <strings.h>
 #endif
-#if HAVE_INTTYPES_H
+#ifdef HAVE_INTTYPES_H
 # include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-#  include <stdint.h>
-# endif
 #endif
-#if HAVE_UNISTD_H
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #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 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_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+WINDOWSENV_FALSE
+WINDOWSENV_TRUE
+MAKE_HOST
+USE_LOCAL_GLOB_FALSE
+USE_LOCAL_GLOB_TRUE
+GLOBLIB
+GLOBINC
+USE_CUSTOMS_FALSE
+USE_CUSTOMS_TRUE
+REMOTE
+GETLOADAVG_LIBS
+KMEM_GROUP
+NEED_SETGID
+LIBOBJS
+ALLOCA
+POSUB
+LTLIBINTL
+LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+MSGMERGE
+XGETTEXT
+GMSGFMT
+MSGFMT
+USE_NLS
+MKINSTALLDIRS
+EGREP
+GREP
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+PERL
+AR
+CPP
+RANLIB
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
 ac_subst_files='MAINT_MAKEFILE'
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+enable_nls
+with_gnu_ld
+enable_rpath
+with_libiconv_prefix
+with_libintl_prefix
+enable_largefile
+with_customs
+enable_case_insensitive_file_system
+enable_job_server
+with_dmalloc
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
 
 # Initialize some variables set by options.
 ac_init_help=
 ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
 # The variables have the same names as the options, with
 # dashes changed to underlines.
 cache_file=/dev/null
@@ -340,34 +769,48 @@ x_libraries=NONE
 # and all the variables that are supposed to be based on exec_prefix
 # by default will actually change.
 # Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
 bindir='${exec_prefix}/bin'
 sbindir='${exec_prefix}/sbin'
 libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
 
 ac_prev=
+ac_dashdash=
 for ac_option
 do
   # If the previous option needs an argument, assign it.
   if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
+    eval $ac_prev=\$ac_option
     ac_prev=
     continue
   fi
 
-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+  case $ac_option in
+  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)   ac_optarg=yes ;;
+  esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
 
-  case $ac_option in
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
 
   -bindir | --bindir | --bindi | --bind | --bin | --bi)
     ac_prev=bindir ;;
@@ -389,33 +832,59 @@ do
   --config-cache | -C)
     cache_file=config.cache ;;
 
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+  -datadir | --datadir | --datadi | --datad)
     ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
     datadir=$ac_optarg ;;
 
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    eval "enable_$ac_feature=no" ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
     esac
-    eval "enable_$ac_feature='$ac_optarg'" ;;
+    eval enable_$ac_useropt=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -442,6 +911,12 @@ do
   -host=* | --host=* | --hos=* | --ho=*)
     host_alias=$ac_optarg ;;
 
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
   -includedir | --includedir | --includedi | --included | --include \
   | --includ | --inclu | --incl | --inc)
     ac_prev=includedir ;;
@@ -466,13 +941,16 @@ do
   | --libexe=* | --libex=* | --libe=*)
     libexecdir=$ac_optarg ;;
 
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
   -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
+  | --localstate | --localstat | --localsta | --localst | --locals)
     ac_prev=localstatedir ;;
   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
     localstatedir=$ac_optarg ;;
 
   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
@@ -537,6 +1015,16 @@ do
   | --progr-tra=* | --program-tr=* | --program-t=*)
     program_transform_name=$ac_optarg ;;
 
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
@@ -587,26 +1075,36 @@ do
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
     esac
-    eval "with_$ac_package='$ac_optarg'" ;;
+    eval with_$ac_useropt=\$ac_optarg ;;
 
   -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/-/_/g'`
-    eval "with_$ac_package=no" ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -626,26 +1124,25 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-    eval "$ac_envvar='$ac_optarg'"
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
     : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
@@ -654,31 +1151,36 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error "missing argument to $ac_option"
 fi
 
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
-done
+fi
 
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-             localstatedir libdir includedir oldincludedir infodir mandir
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
 do
-  eval ac_val=$`echo $ac_var`
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
   case $ac_val in
-    [\\/$]* | ?:[\\/]* ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
   esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -692,7 +1194,7 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
     If a cross compiler is detected then cross compile mode will be used." >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
@@ -705,74 +1207,72 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias-
 test "$silent" = yes && exec 6>/dev/null
 
 
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error "pwd does not report name of working directory"
+
+
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$0" : 'X\(//\)[^/]' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$0" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
   srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
+  if test ! -r "$srcdir/$ac_unique_file"; then
     srcdir=..
   fi
 else
   ac_srcdir_defaulted=no
 fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-   { (exit 1); exit 1; }; }
-  else
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-  fi
-fi
-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
-  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-   { (exit 1); exit 1; }; }
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
 
 #
 # Report the --help message.
@@ -781,7 +1281,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU make 3.81 to adapt to many kinds of systems.
+\`configure' configures GNU make 3.82 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -801,14 +1301,11 @@ Configuration:
   -n, --no-create         do not create output files
       --srcdir=DIR        find the sources in DIR [configure dir or \`..']
 
-_ACEOF
-
-  cat <<_ACEOF
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                         [$ac_default_prefix]
+                          [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                         [PREFIX]
+                          [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -818,18 +1315,25 @@ for instance \`--prefix=\$HOME'.
 For better control, use the options below.
 
 Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --infodir=DIR          info documentation [PREFIX/info]
-  --mandir=DIR           man documentation [PREFIX/man]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/make]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -847,11 +1351,12 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU make 3.81:";;
+     short | recursive ) echo "Configuration of GNU make 3.82:";;
    esac
   cat <<\_ACEOF
 
 Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --disable-dependency-tracking  speeds up one-time build
@@ -860,7 +1365,7 @@ Optional Features:
   --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
+                          assume file systems are case insensitive
   --disable-job-server    disallow recursive make communication during -jN
 
 Optional Packages:
@@ -880,148 +1385,626 @@ Some influential environment variables:
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
-  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
-              headers in a nonstandard directory <include dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <bug-make@gnu.org>.
+GNU make home page: <http://www.gnu.org/software/make/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
 _ACEOF
+ac_status=$?
 fi
 
 if test "$ac_init_help" = "recursive"; then
   # If there are subdirs, report their specific --help.
-  ac_popdir=`pwd`
   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d $ac_dir || continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
     ac_builddir=.
 
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
 
 case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
+  .)  # We are building in place.
     ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
     ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
-
-    cd $ac_dir
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f $ac_srcdir/configure.gnu; then
-      echo
-      $SHELL $ac_srcdir/configure.gnu  --help=recursive
-    elif test -f $ac_srcdir/configure; then
-      echo
-      $SHELL $ac_srcdir/configure  --help=recursive
-    elif test -f $ac_srcdir/configure.ac ||
-          test -f $ac_srcdir/configure.in; then
-      echo
-      $ac_configure --help
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi
-    cd "$ac_popdir"
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
   done
 fi
 
-test -n "$ac_init_help" && exit 0
+test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU make configure 3.81
-generated by GNU Autoconf 2.59
+GNU make configure 3.82
+generated by GNU Autoconf 2.65
 
-Copyright (C) 2003 Free Software Foundation, Inc.
+Copyright (C) 2009 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
-  exit 0
+  exit
 fi
-exec 5>config.log
-cat >&5 <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU make $as_me 3.81, which was
-generated by GNU Autoconf 2.59.  Invocation command line was
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-  $ $0 $@
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-_ACEOF
+       ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
 
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to bug-make@gnu.org ##
+## ------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR
+# ------------------------------------
+# Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5
+$as_echo_n "checking whether $2 is declared... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $2
+  (void) $2;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_decl
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if { as_var=$4; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_member
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU make $as_me 3.82, which was
+generated by GNU Autoconf 2.65.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
 
 /bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
 /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
 /bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
 /bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
@@ -1033,8 +2016,9 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
 
 } >&5
 
@@ -1056,7 +2040,6 @@ _ACEOF
 ac_configure_args=
 ac_configure_args0=
 ac_configure_args1=
-ac_sep=
 ac_must_keep_next=false
 for ac_pass in 1 2
 do
@@ -1067,13 +2050,13 @@ do
     -q | -quiet | --quiet | --quie | --qui | --qu | --q \
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
-    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
        ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1089,21 +2072,19 @@ do
          -* ) ac_must_keep_next=true ;;
        esac
       fi
-      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-      # Get rid of the leading space.
-      ac_sep=" "
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
 # would cause problems or look ugly.
-# WARNING: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
   # Save into config.log some information that might help in debugging.
   {
@@ -1116,20 +2097,35 @@ trap 'exit_status=$?
 _ASBOX
     echo
     # The following way of writing the cache mishandles newlines in values,
-{
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
   (set) 2>&1 |
-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
       sed -n \
-       "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-      ;;
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
     *)
-      sed -n \
-       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
-    esac;
-}
+    esac |
+    sort
+)
     echo
 
     cat <<\_ASBOX
@@ -1140,22 +2136,28 @@ _ASBOX
     echo
     for ac_var in $ac_subst_vars
     do
-      eval ac_val=$`echo $ac_var`
-      echo "$ac_var='"'"'$ac_val'"'"'"
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
       cat <<\_ASBOX
-## ------------- ##
-## Output files. ##
-## ------------- ##
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
 _ASBOX
       echo
       for ac_var in $ac_subst_files
       do
-       eval ac_val=$`echo $ac_var`
-       echo "$ac_var='"'"'$ac_val'"'"'"
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
@@ -1167,26 +2169,26 @@ _ASBOX
 ## ----------- ##
 _ASBOX
       echo
-      sed "/^$/d" confdefs.h | sort
+      cat confdefs.h
       echo
     fi
     test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
   } >&5
-  rm -f core *.core &&
-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
-     ' 0
+' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
@@ -1194,112 +2196,128 @@ cat >>confdefs.h <<_ACEOF
 #define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
 
 # Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file"
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
-      [\\/]* | ?:[\\/]* ) . $cache_file;;
-      *)                      . ./$cache_file;;
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
     esac
   fi
 else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
-              sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+for ac_var in $ac_precious_vars; do
   eval ac_old_set=\$ac_cv_env_${ac_var}_set
   eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-  eval ac_new_val="\$ac_env_${ac_var}_value"
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-       ac_cache_corrupted=:
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -1312,63 +2330,37 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 # Autoconf setup
 ac_aux_dir=
-for ac_dir in config $srcdir/config; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f $ac_dir/shtool; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
+for ac_dir in config "$srcdir"/config; do
+  for ac_t in install-sh install.sh shtool; do
+    if test -f "$ac_dir/$ac_t"; then
+      ac_aux_dir=$ac_dir
+      ac_install_sh="$ac_aux_dir/$ac_t -c"
+      break 2
+    fi
+  done
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
 fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
-          ac_config_headers="$ac_config_headers config.h"
+
+ac_config_headers="$ac_config_headers config.h"
 
 
 # Automake setup
-am__api_version="1.9"
+am__api_version='1.11'
+
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
 # incompatible versions:
@@ -1382,22 +2374,23 @@ am__api_version="1.9"
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # OS/2's system install, which has a completely different semantic
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test "${ac_cv_path_install+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -1405,7 +2398,7 @@ case $as_dir/ in
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -1415,30 +2408,43 @@ case $as_dir/ in
            # program-specific install script used by HP pwplus--don't use.
            :
          else
-           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-           break 3
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
          fi
        fi
       done
     done
     ;;
 esac
-done
 
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
 
 fi
   if test "${ac_cv_path_install+set}" = set; then
     INSTALL=$ac_cv_path_install
   else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
     # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
+    # removed, or if the value is a relative name.
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
 # It thinks the first close brace ends the variable substitution.
@@ -1448,21 +2454,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
 # Just in case
 sleep 1
 echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
    if test "$*" = "X"; then
       # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$*" != "X $srcdir/configure conftest.file" \
@@ -1472,11 +2491,8 @@ if (
       # if, for instance, CONFIG_SHELL is bash and it inherits a
       # broken ls alias from the environment.  This has actually
       # happened.  Such a system could not be considered "sane".
-      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
+      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
    fi
 
    test "$2" = conftest.file
@@ -1485,81 +2501,206 @@ then
    # Ok.
    :
 else
-   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
+   as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
 fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 test "$program_prefix" != NONE &&
-  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
 test "$program_suffix" != NONE &&
-  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
-# Double any \ or $.  echo might interpret backslashes.
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
 # By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm conftest.sed
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # 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.  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
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
   done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
   else
-    mkdir_p='$(install_sh) -d'
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
   fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
 
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
@@ -1569,55 +2710,59 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AWK="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
   test -n "$AWK" && break
 done
 
-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
 all:
-       @echo 'ac_maketemp="$(MAKE)"'
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
 # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
 rm -f conftest.make
 fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   SET_MAKE=
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
@@ -1630,12 +2775,14 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
 fi
 
 # test whether we have cygpath
@@ -1650,7 +2797,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='make'
- VERSION='3.81'
+ VERSION='3.82'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1678,96 +2825,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  STRIP=$ac_ct_STRIP
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 # Always define AMTAR for backward compatibility.
@@ -1790,10 +2847,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1803,35 +2860,37 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 fi
 if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1841,39 +2900,50 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-  CC=$ac_ct_CC
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 else
   CC="$ac_cv_prog_CC"
 fi
 
 if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1883,77 +2953,37 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-  CC=$ac_ct_CC
-else
-  CC="$ac_cv_prog_CC"
-fi
 
+  fi
 fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1964,18 +2994,19 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
@@ -1993,24 +3024,25 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 fi
 if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl
+  for ac_prog in cl.exe
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2020,39 +3052,41 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
     test -n "$CC" && break
   done
 fi
 if test -z "$CC"; then
   ac_ct_CC=$CC
-  for ac_prog in cl
+  for ac_prog in cl.exe
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2062,66 +3096,78 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
   test -n "$ac_ct_CC" && break
 done
 
-  CC=$ac_ct_CC
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 fi
 
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
-     "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-  (eval $ac_compiler --version </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-  (eval $ac_compiler -v </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-  (eval $ac_compiler -V </dev/null >&5) 2>&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2133,112 +3179,109 @@ main ()
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
-  (eval $ac_link_default) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Find the output, starting from the most likely.  This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-
-# Be careful to initialize this variable, since it used to be cached.
-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
-ac_cv_exeext=
-# b.out is created by i960 compilers.
-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-       ;;
-    conftest.$ac_ext )
-       # This is the source file.
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
        ;;
     [ab].out )
        # We found the default executable, but exeext='' is most
        # certainly right.
        break;;
     *.* )
-       ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       # FIXME: I believe we export ac_cv_exeext for Libtool,
-       # but it would be cool to find out if it's true.  Does anybody
-       # maintain Libtool? --akim.
-       export ac_cv_exeext
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
        break;;
     * )
        break;;
   esac
 done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
 else
-  echo "$as_me: failed program was:" >&5
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
 
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
-fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2246,38 +3289,90 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         export ac_cv_exeext
          break;;
     * ) break;;
   esac
 done
 else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2289,45 +3384,46 @@ main ()
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
        break;;
   esac
 done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2341,54 +3437,34 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2399,38 +3475,49 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
 
-ac_cv_prog_cc_g=no
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
@@ -2446,18 +3533,14 @@ else
     CFLAGS=
   fi
 fi
-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_prog_cc_stdc=no
+  ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -2485,12 +3568,17 @@ static char *f (char * (*g) (char **, int), char **p, ...)
 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
    function prototypes and stuff, but not '\xHH' hex character constants.
    These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std1 is added to get
+   as 'x'.  The following induces an error, until -std is added to get
    proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
    array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std1.  */
+   that's true only with -std.  */
 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
 int test (int i, double x);
 struct s1 {int (*f) (int a);};
 struct s2 {int (*f) (double a);};
@@ -2505,201 +3593,37 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
   return 0;
 }
 _ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX                  -qlanglvl=ansi
-# Ultrix and OSF/1     -std1
-# HP-UX 10.20 and later        -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4                 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  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_prog_cc_stdc=$ac_arg
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
-rm -f conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
-rm -f conftest.$ac_ext conftest.$ac_objext
+rm -f conftest.$ac_ext
 CC=$ac_save_CC
 
 fi
-
-case "x$ac_cv_prog_cc_stdc" in
-  x|xno)
-    echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
-    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-    CC="$CC $ac_cv_prog_cc_stdc" ;;
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
-# Some people use a C++ compiler to compile C.  Since we use `exit',
-# in C++ we need to declare it.  In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
-  choke me
-#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
-  for ac_declaration in \
-   '' \
-   'extern "C" void std::exit (int) throw (); using std::exit;' \
-   'extern "C" void std::exit (int); using std::exit;' \
-   'extern "C" void exit (int) throw ();' \
-   'extern "C" void exit (int);' \
-   'void exit (int);'
-do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-#include <stdlib.h>
-int
-main ()
-{
-exit (42);
-  ;
-  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
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-int
-main ()
-{
-exit (42);
-  ;
-  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
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
-  echo '#ifdef __cplusplus' >>confdefs.h
-  echo $ac_declaration      >>confdefs.h
-  echo '#endif'             >>confdefs.h
 fi
 
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2707,60 +3631,58 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 DEPDIR="${am__leading_dot}deps"
 
-          ac_config_commands="$ac_config_commands depfiles"
+ac_config_commands="$ac_config_commands depfiles"
 
 
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # Now try BSD make style include.
 if test "$am__include" = "#"; then
    echo '.include "confinc"' > confmf
-   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
-      am__include=.include
-      am__quote="\""
-      _am_result=BSD
-   fi
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
-echo "$as_me:$LINENO: result: $_am_result" >&5
-echo "${ECHO_T}$_am_result" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
-  enableval="$enable_dependency_tracking"
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
 
-fi;
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
 fi
-
-
-if test "x$enable_dependency_tracking" != xno; then
+ if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
   AMDEP_FALSE='#'
 else
@@ -2770,13 +3692,12 @@ fi
 
 
 
-
 depcc="$CC"   am_compiler_list=
 
-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
   # We make a subdir and do the tests there.  Otherwise we can end up
@@ -2801,6 +3722,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -2818,7 +3744,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -2828,18 +3764,23 @@ else
        break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
     if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -2863,13 +3804,11 @@ else
 fi
 
 fi
-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
-
-
-if
+ if
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -2880,92 +3819,14 @@ else
 fi
 
 
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-       if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-         if test $ac_prog = install &&
-           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         elif test $ac_prog = install &&
-           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-           # program-specific install script used by HP pwplus--don't use.
-           :
-         else
-           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-           break 3
-         fi
-       fi
-      done
-    done
-    ;;
-esac
-done
-
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL=$ac_install_sh
-  fi
-fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -2975,35 +3836,37 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 fi
 if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
@@ -3013,28 +3876,38 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
 fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-  RANLIB=$ac_ct_RANLIB
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
 else
   RANLIB="$ac_cv_prog_RANLIB"
 fi
@@ -3044,15 +3917,15 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3066,11 +3939,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3079,68 +3948,24 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
                     Syntax error
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
 rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
+  # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
@@ -3150,7 +3975,7 @@ rm -f conftest.err conftest.$ac_ext
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -3162,8 +3987,8 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
@@ -3173,11 +3998,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3186,68 +4007,24 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
                     Syntax error
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
+if ac_fn_c_try_cpp "$LINENO"; then :
+
 else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
+  # Broken: fails on valid input.
+continue
 fi
 rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
+  # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
@@ -3257,14 +4034,13 @@ rm -f conftest.err conftest.$ac_ext
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+if $ac_preproc_ok; then :
+
 else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -3275,10 +4051,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
@@ -3288,34 +4064,36 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AR="ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
 fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 # Perl is needed for the test suite (only)
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_PERL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_PERL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$PERL"; then
   ac_cv_prog_PERL="$PERL" # Let the user override the test.
@@ -3325,263 +4103,240 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_PERL="perl"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl"
 fi
 fi
 PERL=$ac_cv_prog_PERL
 if test -n "$PERL"; then
-  echo "$as_me:$LINENO: result: $PERL" >&5
-echo "${ECHO_T}$PERL" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+
 # Specialized system macros
 # Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-   { (exit 1); exit 1; }; }
-
-echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
-  ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
 build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
-  ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
 host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
 
 
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
     fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
-
-
-
-echo "$as_me:$LINENO: checking for AIX" >&5
-echo $ECHO_N "checking for AIX... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef _AIX
-  yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-cat >>confdefs.h <<\_ACEOF
-#define _ALL_SOURCE 1
-_ACEOF
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  ac_cv_path_GREP=$GREP
 fi
-rm -f conftest*
-
-
-echo "$as_me:$LINENO: checking for library containing strerror" >&5
-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
-if test "${ac_cv_search_strerror+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-ac_cv_search_strerror=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strerror ();
-int
-main ()
-{
-strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_strerror="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_strerror" = no; then
-  for ac_lib in cposix; do
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strerror ();
-int
-main ()
-{
-strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_strerror="-l$ac_lib"
-break
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+      $ac_path_EGREP_found && break 3
+    done
   done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
 fi
-LIBS=$ac_func_search_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
-echo "${ECHO_T}$ac_cv_search_strerror" >&6
-if test "$ac_cv_search_strerror" != no; then
-  test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
 
+   fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
 
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3596,50 +4351,23 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -3649,18 +4377,14 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -3670,16 +4394,13 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
+#include <stdlib.h>
 #if ((' ' & 0x0FF) == 0x020)
 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
@@ -3699,458 +4420,155 @@ main ()
   for (i = 0; i < 256; i++)
     if (XOR (islower (i), ISLOWER (i))
        || toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
+      return 2;
+  return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
+fi
 
+done
 
 
 
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
 
 
+  if test "$MINIX" = yes; then
 
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
 
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+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 <$ac_header>
-_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
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
 
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
 
-fi
+$as_echo "#define _MINIX 1" >>confdefs.h
 
-done
+  fi
 
 
-if test "${ac_cv_header_minix_config_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for minix/config.h" >&5
-echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
-if test "${ac_cv_header_minix_config_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking minix/config.h usability" >&5
-echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-#include <minix/config.h>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
+#        define __EXTENSIONS__ 1
+         $ac_includes_default
+int
+main ()
+{
 
-# Is the header present?
-echo "$as_me:$LINENO: checking minix/config.h presence" >&5
-echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <minix/config.h>
+  ;
+  return 0;
+}
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
 else
-  ac_cpp_err=yes
+  ac_cv_safe_to_define___extensions__=no
 fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: minix/config.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for minix/config.h" >&5
-echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
-if test "${ac_cv_header_minix_config_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_minix_config_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
 
-fi
-if test $ac_cv_header_minix_config_h = yes; then
-  MINIX=yes
-else
-  MINIX=
-fi
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
 
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
 
-if test "$MINIX" = yes; then
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
 
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_SOURCE 1
-_ACEOF
 
 
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_1_SOURCE 2
-_ACEOF
 
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5
+$as_echo_n "checking for strerror in -lcposix... " >&6; }
+if test "${ac_cv_lib_cposix_strerror+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-cat >>confdefs.h <<\_ACEOF
-#define _MINIX 1
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+  ;
+  return 0;
+}
 _ACEOF
-
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_cposix_strerror=yes
+else
+  ac_cv_lib_cposix_strerror=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5
+$as_echo "$ac_cv_lib_cposix_strerror" >&6; }
+if test "x$ac_cv_lib_cposix_strerror" = x""yes; then :
+  LIBS="$LIBS -lcposix"
 fi
 
 
-# Needed for ansi2knr
-echo "$as_me:$LINENO: checking for function prototypes" >&5
-echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
-if test "$ac_cv_prog_cc_stdc" != no; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-cat >>confdefs.h <<\_ACEOF
-#define PROTOTYPES 1
-_ACEOF
-
 
-cat >>confdefs.h <<\_ACEOF
-#define __PROTOTYPES 1
-_ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
 
-
-if test "$ac_cv_prog_cc_stdc" != no; then
-  U= ANSI2KNR=
-else
-  U=_ ANSI2KNR=./ansi2knr
-fi
-# Ensure some checks needed by ansi2knr itself.
-
-
-for ac_header in string.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Enable gettext, in "external" mode.
+# Enable gettext, in "external" mode.
 
 
 
@@ -4167,17 +4585,17 @@ done
 
 
 
-  echo "$as_me:$LINENO: checking whether NLS is requested" >&5
-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
-    # Check whether --enable-nls or --disable-nls was given.
-if test "${enable_nls+set}" = set; then
-  enableval="$enable_nls"
-  USE_NLS=$enableval
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
 else
   USE_NLS=yes
-fi;
-  echo "$as_me:$LINENO: result: $USE_NLS" >&5
-echo "${ECHO_T}$USE_NLS" >&6
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
 
 
 
@@ -4214,10 +4632,10 @@ rm -f conf$$.file
 
 # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_MSGFMT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case "$MSGFMT" in
   [\\/]* | ?:[\\/]*)
@@ -4245,19 +4663,19 @@ esac
 fi
 MSGFMT="$ac_cv_path_MSGFMT"
 if test "$MSGFMT" != ":"; then
-  echo "$as_me:$LINENO: result: $MSGFMT" >&5
-echo "${ECHO_T}$MSGFMT" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GMSGFMT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $GMSGFMT in
   [\\/]* | ?:[\\/]*)
@@ -4269,31 +4687,32 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
   test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
   ;;
 esac
 fi
 GMSGFMT=$ac_cv_path_GMSGFMT
-
 if test -n "$GMSGFMT"; then
-  echo "$as_me:$LINENO: result: $GMSGFMT" >&5
-echo "${ECHO_T}$GMSGFMT" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 
+
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
@@ -4324,10 +4743,10 @@ rm -f conf$$.file
 
 # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_XGETTEXT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case "$XGETTEXT" in
   [\\/]* | ?:[\\/]*)
@@ -4355,11 +4774,11 @@ esac
 fi
 XGETTEXT="$ac_cv_path_XGETTEXT"
 if test "$XGETTEXT" != ":"; then
-  echo "$as_me:$LINENO: result: $XGETTEXT" >&5
-echo "${ECHO_T}$XGETTEXT" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
     rm -f messages.po
@@ -4395,10 +4814,10 @@ rm -f conf$$.file
 
 # Extract the first word of "msgmerge", so it can be a program name with args.
 set dummy msgmerge; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_MSGMERGE+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case "$MSGMERGE" in
   [\\/]* | ?:[\\/]*)
@@ -4425,11 +4844,11 @@ esac
 fi
 MSGMERGE="$ac_cv_path_MSGMERGE"
 if test "$MSGMERGE" != ":"; then
-  echo "$as_me:$LINENO: result: $MSGMERGE" >&5
-echo "${ECHO_T}$MSGMERGE" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4439,8 +4858,8 @@ fi
       : ;
     else
       GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
-      echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
-echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
+$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
       GMSGFMT=":"
     fi
   fi
@@ -4450,14 +4869,14 @@ echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6
        (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
-      echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
-echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
       XGETTEXT=":"
     fi
         rm -f messages.po
   fi
 
-            ac_config_commands="$ac_config_commands default-1"
+  ac_config_commands="$ac_config_commands default-1"
 
 
 
@@ -4477,13 +4896,13 @@ echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
   prefix="$acl_save_prefix"
 
 
-# Check whether --with-gnu-ld or --without-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval="$with_gnu_ld"
-  test "$withval" = no || with_gnu_ld=yes
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
-fi;
+fi
+
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
@@ -4500,8 +4919,8 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  echo "$as_me:$LINENO: checking for ld used by GCC" >&5
-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -4530,14 +4949,14 @@ echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${acl_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test "${acl_cv_path_LD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
@@ -4564,19 +4983,17 @@ fi
 
 LD="$acl_cv_path_LD"
 if test -n "$LD"; then
-  echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-if test "${acl_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 case `$LD -v 2>&1 </dev/null` in
@@ -4586,16 +5003,16 @@ case `$LD -v 2>&1 </dev/null` in
   acl_cv_prog_gnu_ld=no ;;
 esac
 fi
-echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$acl_cv_prog_gnu_ld
 
 
 
-                                                echo "$as_me:$LINENO: checking for shared library run path origin" >&5
-echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6
-if test "${acl_cv_rpath+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
     CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
@@ -4605,8 +5022,8 @@ else
     acl_cv_rpath=done
 
 fi
-echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
-echo "${ECHO_T}$acl_cv_rpath" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
   wl="$acl_cv_wl"
   libext="$acl_cv_libext"
   shlibext="$acl_cv_shlibext"
@@ -4614,13 +5031,13 @@ echo "${ECHO_T}$acl_cv_rpath" >&6
   hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
   hardcode_direct="$acl_cv_hardcode_direct"
   hardcode_minus_L="$acl_cv_hardcode_minus_L"
-    # Check whether --enable-rpath or --disable-rpath was given.
-if test "${enable_rpath+set}" = set; then
-  enableval="$enable_rpath"
-  :
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+  enableval=$enable_rpath; :
 else
   enable_rpath=yes
-fi;
+fi
+
 
 
 
@@ -4642,10 +5059,9 @@ fi;
   prefix="$acl_save_prefix"
 
 
-# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then
-  withval="$with_libiconv_prefix"
-
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+  withval=$with_libiconv_prefix;
     if test "X$withval" = "Xno"; then
       use_additional=no
     else
@@ -4668,7 +5084,8 @@ if test "${with_libiconv_prefix+set}" = set; then
       fi
     fi
 
-fi;
+fi
+
       LIBICONV=
   LTLIBICONV=
   INCICONV=
@@ -5021,17 +5438,17 @@ fi;
 
 
 
-  echo "$as_me:$LINENO: checking whether NLS is requested" >&5
-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
-    # Check whether --enable-nls or --disable-nls was given.
-if test "${enable_nls+set}" = set; then
-  enableval="$enable_nls"
-  USE_NLS=$enableval
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
 else
   USE_NLS=yes
-fi;
-  echo "$as_me:$LINENO: result: $USE_NLS" >&5
-echo "${ECHO_T}$USE_NLS" >&6
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
 
 
 
@@ -5048,16 +5465,12 @@ echo "${ECHO_T}$USE_NLS" >&6
 
 
 
-        echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
-echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6
-if test "${gt_cv_func_gnugettext1_libc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if test "${gt_cv_func_gnugettext1_libc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -5071,39 +5484,16 @@ return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_gnugettext1_libc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_func_gnugettext1_libc=no
+  gt_cv_func_gnugettext1_libc=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5
-echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5
+$as_echo "$gt_cv_func_gnugettext1_libc" >&6; }
 
         if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
 
@@ -5136,19 +5526,15 @@ echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6
   done
 
 
-  echo "$as_me:$LINENO: checking for iconv" >&5
-echo $ECHO_N "checking for iconv... $ECHO_C" >&6
-if test "${am_cv_func_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <iconv.h>
@@ -5162,43 +5548,15 @@ iconv_t cd = iconv_open("","");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   am_cv_func_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     if test "$am_cv_func_iconv" != yes; then
       am_save_LIBS="$LIBS"
       LIBS="$LIBS $LIBICONV"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <iconv.h>
@@ -5212,54 +5570,28 @@ iconv_t cd = iconv_open("","");
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   am_cv_lib_iconv=yes
         am_cv_func_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
       LIBS="$am_save_LIBS"
     fi
 
 fi
-echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
-echo "${ECHO_T}$am_cv_func_iconv" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
   if test "$am_cv_func_iconv" = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV 1
-_ACEOF
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
 
   fi
   if test "$am_cv_lib_iconv" = yes; then
-    echo "$as_me:$LINENO: checking how to link with libiconv" >&5
-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6
-    echo "$as_me:$LINENO: result: $LIBICONV" >&5
-echo "${ECHO_T}$LIBICONV" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
   else
             CPPFLAGS="$am_save_CPPFLAGS"
     LIBICONV=
@@ -5285,10 +5617,9 @@ echo "${ECHO_T}$LIBICONV" >&6
   prefix="$acl_save_prefix"
 
 
-# Check whether --with-libintl-prefix or --without-libintl-prefix was given.
-if test "${with_libintl_prefix+set}" = set; then
-  withval="$with_libintl_prefix"
-
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then :
+  withval=$with_libintl_prefix;
     if test "X$withval" = "Xno"; then
       use_additional=no
     else
@@ -5311,7 +5642,8 @@ if test "${with_libintl_prefix+set}" = set; then
       fi
     fi
 
-fi;
+fi
+
       LIBINTL=
   LTLIBINTL=
   INCINTL=
@@ -5647,20 +5979,16 @@ fi;
     done
   fi
 
-          echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
-echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6
-if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   gt_save_CPPFLAGS="$CPPFLAGS"
             CPPFLAGS="$CPPFLAGS $INCINTL"
             gt_save_LIBS="$LIBS"
             LIBS="$LIBS $LIBINTL"
-                        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -5678,43 +6006,16 @@ return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   gt_cv_func_gnugettext1_libintl=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_func_gnugettext1_libintl=no
+  gt_cv_func_gnugettext1_libintl=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
                         if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
-              cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -5732,44 +6033,20 @@ return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   LIBINTL="$LIBINTL $LIBICONV"
                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
                 gt_cv_func_gnugettext1_libintl=yes
 
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
             fi
             CPPFLAGS="$gt_save_CPPFLAGS"
             LIBS="$gt_save_LIBS"
 fi
-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5
-echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5
+$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; }
         fi
 
                                         if test "$gt_cv_func_gnugettext1_libc" = "yes" \
@@ -5788,22 +6065,20 @@ echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6
     if test "$gt_use_preinstalled_gnugettext" = "yes" \
        || test "$nls_cv_use_gnu_gettext" = "yes"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ENABLE_NLS 1
-_ACEOF
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
     else
       USE_NLS=no
     fi
   fi
 
-  echo "$as_me:$LINENO: checking whether to use NLS" >&5
-echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $USE_NLS" >&5
-echo "${ECHO_T}$USE_NLS" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
   if test "$USE_NLS" = "yes"; then
-    echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
-echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
       if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
         gt_source="external libintl"
@@ -5813,18 +6088,18 @@ echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6
     else
       gt_source="included intl directory"
     fi
-    echo "$as_me:$LINENO: result: $gt_source" >&5
-echo "${ECHO_T}$gt_source" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
   fi
 
   if test "$USE_NLS" = "yes"; then
 
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
       if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
-        echo "$as_me:$LINENO: checking how to link with libintl" >&5
-echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6
-        echo "$as_me:$LINENO: result: $LIBINTL" >&5
-echo "${ECHO_T}$LIBINTL" >&6
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
 
   for element in $INCINTL; do
     haveit=
@@ -5851,14 +6126,10 @@ echo "${ECHO_T}$LIBINTL" >&6
       fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETTEXT 1
-_ACEOF
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DCGETTEXT 1
-_ACEOF
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
 
     fi
 
@@ -5878,29 +6149,25 @@ _ACEOF
 # This test must come as early as possible after the compiler configuration
 # tests, because the choice of the file model can (in principle) affect
 # whether functions and headers are available, whether they work, etc.
-# Check whether --enable-largefile or --disable-largefile was given.
-if test "${enable_largefile+set}" = set; then
-  enableval="$enable_largefile"
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
 
-fi;
 if test "$enable_largefile" != no; then
 
-  echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
-echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_sys_largefile_CC=no
      if test "$GCC" != yes; then
        ac_save_CC=$CC
        while :; do
-        # IRIX 6.2 and later do not support large files by default,
-        # so use the C compiler's -n32 option if that helps.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -5919,87 +6186,34 @@ main ()
   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
+        if ac_fn_c_try_compile "$LINENO"; then :
   break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext
-        CC="$CC -n32"
-        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
+rm -f core conftest.err conftest.$ac_objext
+        CC="$CC -n32"
+        if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_sys_largefile_CC=' -n32'; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext
         break
        done
        CC=$ac_save_CC
        rm -f conftest.$ac_ext
     fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
   if test "$ac_cv_sys_largefile_CC" != no; then
     CC=$CC$ac_cv_sys_largefile_CC
   fi
 
-  echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
-if test "${ac_cv_sys_file_offset_bits+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   while :; do
-  ac_cv_sys_file_offset_bits=no
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -6018,39 +6232,11 @@ main ()
   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
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _FILE_OFFSET_BITS 64
 #include <sys/types.h>
@@ -6070,59 +6256,33 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_sys_file_offset_bits=64; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
   break
 done
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
-if test "$ac_cv_sys_file_offset_bits" != no; then
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
 cat >>confdefs.h <<_ACEOF
 #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
-
-fi
-rm -f conftest*
-  echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
-echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
-if test "${ac_cv_sys_large_files+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   while :; do
-  ac_cv_sys_large_files=no
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -6141,39 +6301,11 @@ main ()
   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
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _LARGE_FILES 1
 #include <sys/types.h>
@@ -6193,187 +6325,94 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_sys_large_files=1; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
   break
 done
 fi
-echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-echo "${ECHO_T}$ac_cv_sys_large_files" >&6
-if test "$ac_cv_sys_large_files" != no; then
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
 cat >>confdefs.h <<_ACEOF
 #define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
-
-fi
-rm -f conftest*
+;;
+esac
+rm -rf conftest*
+  fi
 fi
 
 
 # Checks for libraries.
-echo "$as_me:$LINENO: checking for library containing getpwnam" >&5
-echo $ECHO_N "checking for library containing getpwnam... $ECHO_C" >&6
-if test "${ac_cv_search_getpwnam+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5
+$as_echo_n "checking for library containing getpwnam... " >&6; }
+if test "${ac_cv_search_getpwnam+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-ac_cv_search_getpwnam=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char getpwnam ();
 int
 main ()
 {
-getpwnam ();
+return getpwnam ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_getpwnam="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_getpwnam" = no; then
-  for ac_lib in sun; do
+for ac_lib in '' sun; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_getpwnam=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_getpwnam+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_getpwnam+set}" = set; then :
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getpwnam ();
-int
-main ()
-{
-getpwnam ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_getpwnam="-l$ac_lib"
-break
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
+  ac_cv_search_getpwnam=no
 fi
+rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_search_getpwnam" >&5
-echo "${ECHO_T}$ac_cv_search_getpwnam" >&6
-if test "$ac_cv_search_getpwnam" != no; then
-  test "$ac_cv_search_getpwnam" = "none required" || LIBS="$ac_cv_search_getpwnam $LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5
+$as_echo "$ac_cv_search_getpwnam" >&6; }
+ac_res=$ac_cv_search_getpwnam
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 
 # Checks for header files.
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -6388,50 +6427,23 @@ main ()
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -6441,18 +6453,14 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
@@ -6462,16 +6470,13 @@ fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
+#include <stdlib.h>
 #if ((' ' & 0x0FF) == 0x020)
 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
@@ -6491,62 +6496,38 @@ main ()
   for (i = 0; i < 256; i++)
     if (XOR (islower (i), ISLOWER (i))
        || toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
+      return 2;
+  return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+
 fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
-
-
-
-
-
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -6560,41 +6541,20 @@ return 0;
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   eval "$as_ac_Header=yes"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
+  eval "$as_ac_Header=no"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+eval ac_res=\$$as_ac_Header
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-  echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-ac_cv_search_opendir=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char opendir ();
 int
 main ()
 {
-opendir ();
+return opendir ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_opendir="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_opendir" = no; then
-  for ac_lib in dir; do
+for ac_lib in '' dir; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then :
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_opendir="-l$ac_lib"
-break
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
+  ac_cv_search_opendir=no
 fi
+rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6
-if test "$ac_cv_search_opendir" != no; then
-  test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 else
-  echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-ac_cv_search_opendir=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char opendir ();
 int
 main ()
 {
-opendir ();
+return opendir ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_opendir="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_opendir" = no; then
-  for ac_lib in x; do
+for ac_lib in '' x; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then :
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_opendir="-l$ac_lib"
-break
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
+  ac_cv_search_opendir=no
 fi
+rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6
-if test "$ac_cv_search_opendir" != no; then
-  test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 fi
 
-echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
-echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6
-if test "${ac_cv_header_stat_broken+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
+$as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
+if test "${ac_cv_header_stat_broken+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#if defined(S_ISBLK) && defined(S_IFDIR)
-# if S_ISBLK (S_IFDIR)
-You lose.
-# endif
+#if defined S_ISBLK && defined S_IFDIR
+extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1];
 #endif
 
-#if defined(S_ISBLK) && defined(S_IFCHR)
-# if S_ISBLK (S_IFCHR)
-You lose.
-# endif
+#if defined S_ISBLK && defined S_IFCHR
+extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1];
 #endif
 
-#if defined(S_ISLNK) && defined(S_IFREG)
-# if S_ISLNK (S_IFREG)
-You lose.
-# endif
+#if defined S_ISLNK && defined S_IFREG
+extern char c3[S_ISLNK (S_IFREG) ? -1 : 1];
 #endif
 
-#if defined(S_ISSOCK) && defined(S_IFREG)
-# if S_ISSOCK (S_IFREG)
-You lose.
-# endif
+#if defined S_ISSOCK && defined S_IFREG
+extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
 #endif
 
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "You lose" >/dev/null 2>&1; then
-  ac_cv_header_stat_broken=yes
-else
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stat_broken=no
+else
+  ac_cv_header_stat_broken=yes
 fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
-echo "${ECHO_T}$ac_cv_header_stat_broken" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
+$as_echo "$ac_cv_header_stat_broken" >&6; }
 if test $ac_cv_header_stat_broken = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STAT_MACROS_BROKEN 1
-_ACEOF
+$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h
 
 fi
 
-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-if test "${ac_cv_header_time+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if test "${ac_cv_header_time+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/time.h>
@@ -6936,200 +6740,30 @@ return 0;
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_time=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_time=no
+  ac_cv_header_time=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
 fi
 
-
-
-
-
-
-
-
-
-
-
-
 for ac_header in stdlib.h locale.h unistd.h limits.h fcntl.h string.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`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -7140,158 +6774,20 @@ done
 # Set a flag if we have an ANSI C compiler
 if test "$ac_cv_prog_cc_stdc" != no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ANSI_COMPILER 1
-_ACEOF
+$as_echo "#define HAVE_ANSI_COMPILER 1" >>confdefs.h
 
 fi
 
 
 # Determine what kind of variadic function calls we support
-
-
 for ac_header in stdarg.h varargs.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
  break
 fi
@@ -7300,22 +6796,18 @@ done
 
 
 if test "x$CC" != xcc; then
-  echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
-echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
 else
-  echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
-echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
-set dummy $CC; ac_cc=`echo $2 |
+set dummy $CC; ac_cc=`$as_echo "$2" |
                      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -7329,38 +6821,65 @@ _ACEOF
 # Make sure it works both with $CC and with simple cc.
 # We do the test twice because some compilers refuse to overwrite an
 # existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5'
-if { (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); } &&
-   test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
 then
   eval ac_cv_prog_cc_${ac_cc}_c_o=yes
   if test "x$CC" != xcc; then
     # Test first that cc exists at all.
     if { ac_try='cc -c conftest.$ac_ext >&5'
-  { (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_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5'
-      if { (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); } &&
-        test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
       then
        # cc works too.
        :
@@ -7373,27 +6892,26 @@ then
 else
   eval ac_cv_prog_cc_${ac_cc}_c_o=no
 fi
-rm -f conftest*
+rm -f core conftest*
 
 fi
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_MINUS_C_MINUS_O 1
-_ACEOF
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
 
 fi
 
 # FIXME: we rely on the cache variable name because
 # there is no other way.
 set dummy $CC
-ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
@@ -7402,16 +6920,13 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
    CC="$am_aux_dir/compile $CC"
 fi
 
-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if test "${ac_cv_c_const+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -7421,10 +6936,10 @@ main ()
 #ifndef __cplusplus
   /* Ultrix mips cc rejects this.  */
   typedef int charset[2];
-  const charset x;
+  const charset cs;
   /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *ccp;
-  char **p;
+  char const *const *pcpcc;
+  char **ppc;
   /* NEC SVR4.0.2 mips cc rejects this.  */
   struct point {int x, y;};
   static struct point const zero = {0,0};
@@ -7433,16 +6948,17 @@ main ()
      an arm of an if-expression whose if-part is not a constant
      expression */
   const char *g = "string";
-  ccp = &g + (g ? g-g : 0);
+  pcpcc = &g + (g ? g-g : 0);
   /* HPUX 7.0 cc rejects these. */
-  ++ccp;
-  p = (char**) ccp;
-  ccp = (char const *const *) p;
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
   { /* SCO 3.2v4 cc rejects this.  */
     char *t;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
+    if (s) return 0;
   }
   { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
     int x[] = {25, 17};
@@ -7461,137 +6977,75 @@ main ()
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
+    if (!foo) return 0;
   }
+  return !cs[0] && !zero.x;
 #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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_c_const=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c_const=no
+  ac_cv_c_const=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
+$as_echo "#define const /**/" >>confdefs.h
 
 fi
 
-echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if test "${ac_cv_type_signal+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
 
 int
 main ()
 {
-int i;
+return *(signal (0, 0)) (0) == 1;
   ;
   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_type_signal=void
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_signal=int
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_signal=int
+  ac_cv_type_signal=void
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
 
 cat >>confdefs.h <<_ACEOF
 #define RETSIGTYPE $ac_cv_type_signal
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-if test "${ac_cv_type_uid_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if test "${ac_cv_type_uid_t+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then
+  $EGREP "uid_t" >/dev/null 2>&1; then :
   ac_cv_type_uid_t=yes
 else
   ac_cv_type_uid_t=no
@@ -7599,82 +7053,24 @@ fi
 rm -f conftest*
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-echo "${ECHO_T}$ac_cv_type_uid_t" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
 if test $ac_cv_type_uid_t = no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define uid_t int
-_ACEOF
+$as_echo "#define uid_t int" >>confdefs.h
 
 
-cat >>confdefs.h <<\_ACEOF
-#define gid_t int
-_ACEOF
+$as_echo "#define gid_t int" >>confdefs.h
 
 fi
 
-echo "$as_me:$LINENO: checking for pid_t" >&5
-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-if test "${ac_cv_type_pid_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = x""yes; then :
+
 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
-int
-main ()
-{
-if ((pid_t *) 0)
-  return 0;
-if (sizeof (pid_t))
-  return 0;
-  ;
-  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_type_pid_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_pid_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-if test $ac_cv_type_pid_t = yes; then
-  :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
 _ACEOF
 
 fi
 
 # Find some definition for uintmax_t
 
-echo "$as_me:$LINENO: checking for uintmax_t" >&5
-echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6
-if test "${ac_cv_type_uintmax_t+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
-int
-main ()
-{
-if ((uintmax_t *) 0)
-  return 0;
-if (sizeof (uintmax_t))
-  return 0;
-  ;
-  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_type_uintmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_uintmax_t" = x""yes; then :
 
-ac_cv_type_uintmax_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6
-if test $ac_cv_type_uintmax_t = yes; then
-  :
 else
 
   uintmax_t="unsigned long"
-  echo "$as_me:$LINENO: checking for unsigned long long" >&5
-echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6
-if test "${ac_cv_type_unsigned_long_long+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
-int
-main ()
-{
-if ((unsigned long long *) 0)
-  return 0;
-if (sizeof (unsigned long long))
-  return 0;
-  ;
-  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_type_unsigned_long_long=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_unsigned_long_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6
-if test $ac_cv_type_unsigned_long_long = yes; then
+  ac_fn_c_check_type "$LINENO" "unsigned long long" "ac_cv_type_unsigned_long_long" "$ac_includes_default"
+if test "x$ac_cv_type_unsigned_long_long" = x""yes; then :
   uintmax_t="unsigned long long"
 fi
 
@@ -7811,10 +7099,10 @@ fi
 
 # Find out whether our struct stat returns nanosecond resolution timestamps.
 
-echo "$as_me:$LINENO: checking for nanoseconds field of struct stat.st_mtim" >&5
-echo $ECHO_N "checking for nanoseconds field of struct stat.st_mtim... $ECHO_C" >&6
-if test "${ac_cv_struct_st_mtim_nsec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat.st_mtim" >&5
+$as_echo_n "checking for nanoseconds field of struct stat.st_mtim... " >&6; }
+if test "${ac_cv_struct_st_mtim_nsec+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_save_CPPFLAGS="$CPPFLAGS"
     ac_cv_struct_st_mtim_nsec=no
@@ -7825,11 +7113,7 @@ else
     # st__tim.tv_nsec -- UnixWare 2.1.2
     for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do
       CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -7842,40 +7126,16 @@ struct stat s; s.st_mtim.ST_MTIM_NSEC;
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_struct_st_mtim_nsec=$ac_val; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     done
     CPPFLAGS="$ac_save_CPPFLAGS"
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_struct_st_mtim_nsec" >&5
-echo "${ECHO_T}$ac_cv_struct_st_mtim_nsec" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5
+$as_echo "$ac_cv_struct_st_mtim_nsec" >&6; }
 
   if test $ac_cv_struct_st_mtim_nsec != no; then
 
@@ -7886,19 +7146,15 @@ _ACEOF
   fi
 
 
-echo "$as_me:$LINENO: checking whether to use high resolution file timestamps" >&5
-echo $ECHO_N "checking whether to use high resolution file timestamps... $ECHO_C" >&6
-if test "${make_cv_file_timestamp_hi_res+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5
+$as_echo_n "checking whether to use high resolution file timestamps... " >&6; }
+if test "${make_cv_file_timestamp_hi_res+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
   make_cv_file_timestamp_hi_res=no
   if test "$ac_cv_struct_st_mtim_nsec" != no; then
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #      if HAVE_INTTYPES_H
@@ -7912,39 +7168,15 @@ char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1];
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   make_cv_file_timestamp_hi_res=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   fi
 fi
 
-echo "$as_me:$LINENO: result: $make_cv_file_timestamp_hi_res" >&5
-echo "${ECHO_T}$make_cv_file_timestamp_hi_res" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5
+$as_echo "$make_cv_file_timestamp_hi_res" >&6; }
 if test "$make_cv_file_timestamp_hi_res" = yes; then
   val=1
 else
@@ -7959,187 +7191,95 @@ _ACEOF
 if test "$make_cv_file_timestamp_hi_res" = yes; then
   # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
   # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
-  echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5
-echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6
-if test "${ac_cv_search_clock_gettime+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
-ac_cv_search_clock_gettime=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char clock_gettime ();
 int
 main ()
 {
-clock_gettime ();
+return clock_gettime ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_clock_gettime="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_clock_gettime" = no; then
-  for ac_lib in rt posix4; do
+for ac_lib in '' rt posix4; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_clock_gettime=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  break
+fi
+done
+if test "${ac_cv_search_clock_gettime+set}" = set; then :
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char clock_gettime ();
-int
-main ()
-{
-clock_gettime ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_search_clock_gettime="-l$ac_lib"
-break
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
+  ac_cv_search_clock_gettime=no
 fi
+rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5
-echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6
-if test "$ac_cv_search_clock_gettime" != no; then
-  test "$ac_cv_search_clock_gettime" = "none required" || LIBS="$ac_cv_search_clock_gettime $LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
   if test "$ac_cv_search_clock_gettime" != no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLOCK_GETTIME 1
-_ACEOF
+$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
 
   fi
 fi
 
 # Check for DOS-style pathnames.
 
-    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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5
+$as_echo_n "checking whether system uses MSDOS-style paths... " >&6; }
+if test "${ac_cv_dos_paths+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
-        cat >conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
 neither MSDOS nor Windows nor OS2
 #endif
 
 _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
+if ac_fn_c_try_compile "$LINENO"; 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
+  ac_cv_dos_paths=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5
+$as_echo "$ac_cv_dos_paths" >&6; }
 
     if test x"$ac_cv_dos_paths" = xyes; then
 
@@ -8153,20 +7293,16 @@ _ACEOF
 # See if we have a standard version of gettimeofday().  Since actual
 # implementations can differ, just make sure we have the most common
 # one.
-echo "$as_me:$LINENO: checking for standard gettimeofday" >&5
-echo $ECHO_N "checking for standard gettimeofday... $ECHO_C" >&6
-if test "${ac_cv_func_gettimeofday+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5
+$as_echo_n "checking for standard gettimeofday... " >&6; }
+if test "${ac_cv_func_gettimeofday+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_func_gettimeofday=no
-   if test "$cross_compiling" = yes; then
+   if test "$cross_compiling" = yes; then :
   ac_cv_func_gettimeofday="no (cross-compiling)"
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/time.h>
                   int main ()
@@ -8176,535 +7312,210 @@ cat >>conftest.$ac_ext <<_ACEOF
                          || t.tv_sec < 0 || t.tv_usec < 0);
                  }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_func_gettimeofday=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_gettimeofday=no
+  ac_cv_func_gettimeofday=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5
-echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5
+$as_echo "$ac_cv_func_gettimeofday" >&6; }
 if test "$ac_cv_func_gettimeofday" = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETTIMEOFDAY 1
-_ACEOF
+$as_echo "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
 
 fi
 
+for ac_func in strdup strndup mkstemp mktemp fdopen fileno \
+               dup2 getcwd realpath sigsetmask sigaction \
+                getgroups seteuid setegid setlinebuf setreuid setregid \
+                getrlimit setrlimit setvbuf pipe strerror strsignal \
+               lstat readlink atexit
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 
+fi
+done
 
 
+# We need to check declarations, not just existence, because on Tru64 this
+# function is not declared without special flags, which themselves cause
+# other problems.  We'll just use our own.
+ac_fn_c_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#include <signal.h>
+"
+if test "x$ac_cv_have_decl_bsd_signal" = x""yes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BSD_SIGNAL $ac_have_decl
+_ACEOF
 
 
+if test "${ac_cv_func_setvbuf_reversed+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_func_setvbuf_reversed=no
+fi
 
 
 
+# Rumor has it that strcasecmp lives in -lresolv on some odd systems.
+# It doesn't hurt much to use our own if we can't find it so I don't
+# make the effort here.
+for ac_func in strcasecmp strncasecmp strcmpi strncmpi stricmp strnicmp
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
 
+fi
+done
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in memcpy memmove strchr strdup mkstemp mktemp fdopen \
-               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`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# strcoll() is used by the GNU glob library
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5
+$as_echo_n "checking for working strcoll... " >&6; }
+if test "${ac_cv_func_strcoll_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_strcoll_works=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
+$ac_includes_default
 int
 main ()
 {
-return f != $ac_func;
+return (strcoll ("abc", "def") >= 0 ||
+        strcoll ("ABC", "DEF") >= 0 ||
+        strcoll ("123", "456") >= 0)
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_strcoll_works=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
+  ac_cv_func_strcoll_works=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
 
 fi
-done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5
+$as_echo "$ac_cv_func_strcoll_works" >&6; }
+if test $ac_cv_func_strcoll_works = yes; then
 
+$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h
 
-echo "$as_me:$LINENO: checking whether setvbuf arguments are reversed" >&5
-echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6
-if test "${ac_cv_func_setvbuf_reversed+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_func_setvbuf_reversed=no
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
-#        if PROTOTYPES
-          int (setvbuf) (FILE *, int, char *, size_t);
-#        endif
+#include <alloca.h>
 int
 main ()
 {
-char buf; return setvbuf (stdout, _IOLBF, &buf, 1);
+char *p = (char *) alloca (2 * sizeof (int));
+                         if (p) return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
-#           if PROTOTYPES
-             int (setvbuf) (FILE *, int, char *, size_t);
-#           endif
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
 int
 main ()
 {
-char buf; return setvbuf (stdout, &buf, _IOLBF, 1);
+char *p = (char *) alloca (1);
+                                   if (p) return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  # It compiles and links either way, so it must not be declared
-        # with a prototype and most likely this is a K&R C compiler.
-        # Try running it.
-        if test "$cross_compiling" = yes; then
-  : # Assume setvbuf is not reversed when cross-compiling.
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-/* This call has the arguments reversed.
-                  A reversed system may check and see that the address of buf
-                  is not _IOLBF, _IONBF, or _IOFBF, and return nonzero.  */
-               char buf;
-               if (setvbuf (stdout, _IOLBF, &buf, 1) != 0)
-                 exit (1);
-               putchar ('\r');
-               exit (0); /* Non-reversed systems SEGV here.  */
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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_func_setvbuf_reversed=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-rm -f core *.core
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-       ac_cv_func_setvbuf_reversed=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5
-echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6
-if test $ac_cv_func_setvbuf_reversed = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define SETVBUF_REVERSED 1
-_ACEOF
-
-fi
-
-
-# strcoll() is used by the GNU glob library
-echo "$as_me:$LINENO: checking for working strcoll" >&5
-echo $ECHO_N "checking for working strcoll... $ECHO_C" >&6
-if test "${ac_cv_func_strcoll_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_strcoll_works=no
-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
-int
-main ()
-{
-exit (strcoll ("abc", "def") >= 0 ||
-        strcoll ("ABC", "DEF") >= 0 ||
-        strcoll ("123", "456") >= 0)
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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_func_strcoll_works=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_strcoll_works=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5
-echo "${ECHO_T}$ac_cv_func_strcoll_works" >&6
-if test $ac_cv_func_strcoll_works = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRCOLL 1
-_ACEOF
-
-fi
-
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-echo "$as_me:$LINENO: checking for working alloca.h" >&5
-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
-if test "${ac_cv_working_alloca_h+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.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_working_alloca_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_working_alloca_h=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
-if test $ac_cv_working_alloca_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA_H 1
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for alloca" >&5
-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
-if test "${ac_cv_func_alloca_works+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.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  if HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_func_alloca_works=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_alloca_works=no
+  ac_cv_func_alloca_works=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA 1
-_ACEOF
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
 
 else
   # The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -8712,25 +7523,19 @@ else
 # contain a buggy version.  If you still want to use their alloca,
 # use ar to extract alloca.o from them instead of compiling alloca.c.
 
-ALLOCA=alloca.$ac_objext
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-cat >>confdefs.h <<\_ACEOF
-#define C_ALLOCA 1
-_ACEOF
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 
-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
-if test "${ac_cv_os_cray+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#if defined(CRAY) && ! defined(CRAY2)
+#if defined CRAY && ! defined CRAY2
 webecray
 #else
 wenotbecray
@@ -8738,7 +7543,7 @@ wenotbecray
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then
+  $EGREP "webecray" >/dev/null 2>&1; then :
   ac_cv_os_cray=yes
 else
   ac_cv_os_cray=no
 rm -f conftest*
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-echo "${ECHO_T}$ac_cv_os_cray" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
 if test $ac_cv_os_cray = yes; then
   for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define CRAY_STACKSEG_END $ac_func
@@ -8852,20 +7570,17 @@ fi
   done
 fi
 
-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
-if test "${ac_cv_c_stack_direction+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   ac_cv_c_stack_direction=0
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+$ac_includes_default
 int
 find_stack_direction ()
 {
@@ -8883,35 +7598,21 @@ find_stack_direction ()
 int
 main ()
 {
-  exit (find_stack_direction () < 0);
+  return find_stack_direction () < 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_c_stack_direction=1
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_stack_direction=-1
+  ac_cv_c_stack_direction=-1
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
 cat >>confdefs.h <<_ACEOF
 #define STACK_DIRECTION $ac_cv_c_stack_direction
 _ACEOF
@@ -8919,312 +7620,66 @@ _ACEOF
 
 fi
 
+for ac_header in vfork.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
+if test "x$ac_cv_header_vfork_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VFORK_H 1
+_ACEOF
 
-
-for ac_header in unistd.h vfork.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
+
+done
+
+for ac_func in fork vfork
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_header_compiler=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
+done
 
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
+if test "x$ac_cv_func_fork" = xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
+$as_echo_n "checking for working fork... " >&6; }
+if test "${ac_cv_func_fork_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_fork_works=cross
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
 
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
+         /* By Ruediger Kuhlmann. */
+         return fork () < 0;
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_fork_works=yes
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
+  ac_cv_func_fork_works=no
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
 
 fi
-
-done
-
-
-
-for ac_func in fork vfork
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-if test "x$ac_cv_func_fork" = xyes; then
-  echo "$as_me:$LINENO: checking for working fork" >&5
-echo $ECHO_N "checking for working fork... $ECHO_C" >&6
-if test "${ac_cv_func_fork_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_fork_works=cross
-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
-int
-main ()
-{
-
-         /* By Ruediger Kuhlmann. */
-         if (fork() < 0)
-           exit (1);
-         exit (0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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_func_fork_works=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_fork_works=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5
-echo "${ECHO_T}$ac_cv_func_fork_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
+$as_echo "$ac_cv_func_fork_works" >&6; }
 
 else
   ac_cv_func_fork_works=$ac_cv_func_fork
@@ -9239,35 +7694,25 @@ if test "x$ac_cv_func_fork_works" = xcross; then
       ac_cv_func_fork_works=yes
       ;;
   esac
-  { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
-echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
 fi
 ac_cv_func_vfork_works=$ac_cv_func_vfork
 if test "x$ac_cv_func_vfork" = xyes; then
-  echo "$as_me:$LINENO: checking for working vfork" >&5
-echo $ECHO_N "checking for working vfork... $ECHO_C" >&6
-if test "${ac_cv_func_vfork_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
+$as_echo_n "checking for working vfork... " >&6; }
+if test "${ac_cv_func_vfork_works+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   ac_cv_func_vfork_works=cross
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Thanks to Paul Eggert for this test.  */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+$ac_includes_default
 #include <sys/wait.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_VFORK_H
+#ifdef HAVE_VFORK_H
 # include <vfork.h>
 #endif
 /* On some sparc systems, changes by the child to local and incoming
@@ -9338,7 +7783,7 @@ main ()
 
     while (wait(&status) != child)
       ;
-    exit(
+    return (
         /* Was there some problem with vforking?  */
         child < 0
 
@@ -9354,252 +7799,53 @@ main ()
   }
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_func_vfork_works=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_vfork_works=no
+  ac_cv_func_vfork_works=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5
-echo "${ECHO_T}$ac_cv_func_vfork_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
+$as_echo "$ac_cv_func_vfork_works" >&6; }
 
 fi;
 if test "x$ac_cv_func_fork_works" = xcross; then
   ac_cv_func_vfork_works=$ac_cv_func_vfork
-  { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
-echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
 fi
 
 if test "x$ac_cv_func_vfork_works" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WORKING_VFORK 1
-_ACEOF
+$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
 
 else
 
-cat >>confdefs.h <<\_ACEOF
-#define vfork fork
-_ACEOF
+$as_echo "#define vfork fork" >>confdefs.h
 
 fi
 if test "x$ac_cv_func_fork_works" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WORKING_FORK 1
-_ACEOF
+$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
 
 fi
 
-
 for ac_func in vprintf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
+if test "x$ac_cv_func_vprintf" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-echo "$as_me:$LINENO: checking for _doprnt" >&5
-echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
-if test "${ac_cv_func__doprnt+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.  */
-/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define _doprnt innocuous__doprnt
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef _doprnt
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char _doprnt ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-char (*f) () = _doprnt;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != _doprnt;
-  ;
-  return 0;
-}
+#define HAVE_VPRINTF 1
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_func__doprnt=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_func__doprnt=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
-echo "${ECHO_T}$ac_cv_func__doprnt" >&6
-if test $ac_cv_func__doprnt = yes; then
+ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = x""yes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOPRNT 1
-_ACEOF
+$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
 
 fi
 
@@ -9607,19 +7853,15 @@ fi
 done
 
 
-echo "$as_me:$LINENO: checking whether closedir returns void" >&5
-echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6
-if test "${ac_cv_func_closedir_void+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
+$as_echo_n "checking whether closedir returns void... " >&6; }
+if test "${ac_cv_func_closedir_void+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   ac_cv_func_closedir_void=yes
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 #include <$ac_header_dirent>
@@ -9630,41 +7872,26 @@ int closedir ();
 int
 main ()
 {
-exit (closedir (opendir (".")) != 0);
+return closedir (opendir (".")) != 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (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
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_func_closedir_void=no
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_closedir_void=yes
+  ac_cv_func_closedir_void=yes
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5
-echo "${ECHO_T}$ac_cv_func_closedir_void" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5
+$as_echo "$ac_cv_func_closedir_void" >&6; }
 if test $ac_cv_func_closedir_void = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define CLOSEDIR_VOID 1
-_ACEOF
+$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
 
 fi
 
@@ -9673,494 +7900,205 @@ ac_have_func=no # yes means we've found a way to get the load average.
 
 # Make sure getloadavg.c is where it belongs, at configure-time.
 test -f "$srcdir/$ac_config_libobj_dir/getloadavg.c" ||
-  { { echo "$as_me:$LINENO: error: $srcdir/$ac_config_libobj_dir/getloadavg.c is missing" >&5
-echo "$as_me: error: $srcdir/$ac_config_libobj_dir/getloadavg.c is missing" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "$srcdir/$ac_config_libobj_dir/getloadavg.c is missing" "$LINENO" 5
 
 ac_save_LIBS=$LIBS
 
 # Check for getloadavg, but be sure not to touch the cache variable.
-(echo "$as_me:$LINENO: checking for getloadavg" >&5
-echo $ECHO_N "checking for getloadavg... $ECHO_C" >&6
-if test "${ac_cv_func_getloadavg+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+(ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
+if test "x$ac_cv_func_getloadavg" = x""yes; then :
+  exit 0
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+  exit 1
+fi
+) && ac_have_func=yes
+
+# On HPUX9, an unprivileged user can get load averages through this function.
+for ac_func in pstat_getdynamic
+do :
+  ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic"
+if test "x$ac_cv_func_pstat_getdynamic" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PSTAT_GETDYNAMIC 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define getloadavg to an innocuous variant, in case <limits.h> declares getloadavg.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define getloadavg innocuous_getloadavg
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char getloadavg (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+fi
+done
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef getloadavg
+# Solaris has libkstat which does not require root.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5
+$as_echo_n "checking for kstat_open in -lkstat... " >&6; }
+if test "${ac_cv_lib_kstat_kstat_open+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkstat  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-char getloadavg ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_getloadavg) || defined (__stub___getloadavg)
-choke me
-#else
-char (*f) () = getloadavg;
-#endif
 #ifdef __cplusplus
-}
+extern "C"
 #endif
-
+char kstat_open ();
 int
 main ()
 {
-return f != getloadavg;
+return kstat_open ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_func_getloadavg=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_kstat_kstat_open=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_getloadavg=no
+  ac_cv_lib_kstat_kstat_open=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_getloadavg" >&5
-echo "${ECHO_T}$ac_cv_func_getloadavg" >&6
-if test $ac_cv_func_getloadavg = yes; then
-  exit 0
-else
-  exit 1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
+$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
+if test "x$ac_cv_lib_kstat_kstat_open" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKSTAT 1
+_ACEOF
+
+  LIBS="-lkstat $LIBS"
+
 fi
-) && ac_have_func=yes
 
-# On HPUX9, an unprivileged user can get load averages through this function.
-
-for ac_func in pstat_getdynamic
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Solaris has libkstat which does not require root.
-
-echo "$as_me:$LINENO: checking for kstat_open in -lkstat" >&5
-echo $ECHO_N "checking for kstat_open in -lkstat... $ECHO_C" >&6
-if test "${ac_cv_lib_kstat_kstat_open+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkstat  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kstat_open ();
-int
-main ()
-{
-kstat_open ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_lib_kstat_kstat_open=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kstat_kstat_open=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kstat_kstat_open" >&5
-echo "${ECHO_T}$ac_cv_lib_kstat_kstat_open" >&6
-if test $ac_cv_lib_kstat_kstat_open = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBKSTAT 1
-_ACEOF
-
-  LIBS="-lkstat $LIBS"
-
-fi
-
-test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes
+test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes
 
 # Some systems with -lutil have (and need) -lkvm as well, some do not.
 # On Solaris, -lkvm requires nlist from -lelf, so check that first
 # to get the right answer into the cache.
 # For kstat on solaris, we need libelf to force the definition of SVR4 below.
 if test $ac_have_func = no; then
-  echo "$as_me:$LINENO: checking for elf_begin in -lelf" >&5
-echo $ECHO_N "checking for elf_begin in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_elf_begin+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5
+$as_echo_n "checking for elf_begin in -lelf... " >&6; }
+if test "${ac_cv_lib_elf_elf_begin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lelf  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char elf_begin ();
 int
 main ()
 {
-elf_begin ();
+return elf_begin ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_elf_elf_begin=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_elf_elf_begin=no
+  ac_cv_lib_elf_elf_begin=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_elf_elf_begin" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_elf_begin" >&6
-if test $ac_cv_lib_elf_elf_begin = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5
+$as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
+if test "x$ac_cv_lib_elf_elf_begin" = x""yes; then :
   LIBS="-lelf $LIBS"
 fi
 
 fi
 if test $ac_have_func = no; then
-  echo "$as_me:$LINENO: checking for kvm_open in -lkvm" >&5
-echo $ECHO_N "checking for kvm_open in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_kvm_open+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5
+$as_echo_n "checking for kvm_open in -lkvm... " >&6; }
+if test "${ac_cv_lib_kvm_kvm_open+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lkvm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char kvm_open ();
 int
 main ()
 {
-kvm_open ();
+return kvm_open ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_kvm_kvm_open=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kvm_kvm_open=no
+  ac_cv_lib_kvm_kvm_open=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_open" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_kvm_open" >&6
-if test $ac_cv_lib_kvm_kvm_open = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5
+$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
+if test "x$ac_cv_lib_kvm_kvm_open" = x""yes; then :
   LIBS="-lkvm $LIBS"
 fi
 
   # Check for the 4.4BSD definition of getloadavg.
-  echo "$as_me:$LINENO: checking for getloadavg in -lutil" >&5
-echo $ECHO_N "checking for getloadavg in -lutil... $ECHO_C" >&6
-if test "${ac_cv_lib_util_getloadavg+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5
+$as_echo_n "checking for getloadavg in -lutil... " >&6; }
+if test "${ac_cv_lib_util_getloadavg+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char getloadavg ();
 int
 main ()
 {
-getloadavg ();
+return getloadavg ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_util_getloadavg=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_util_getloadavg=no
+  ac_cv_lib_util_getloadavg=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_util_getloadavg" >&5
-echo "${ECHO_T}$ac_cv_lib_util_getloadavg" >&6
-if test $ac_cv_lib_util_getloadavg = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5
+$as_echo "$ac_cv_lib_util_getloadavg" >&6; }
+if test "x$ac_cv_lib_util_getloadavg" = x""yes; then :
   LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes
 fi
 
@@ -10171,70 +8109,43 @@ if test $ac_have_func = no; then
   # Since it is not a standard part of AIX, it might be installed locally.
   ac_getloadavg_LIBS=$LIBS
   LIBS="-L/usr/local/lib $LIBS"
-  echo "$as_me:$LINENO: checking for getloadavg in -lgetloadavg" >&5
-echo $ECHO_N "checking for getloadavg in -lgetloadavg... $ECHO_C" >&6
-if test "${ac_cv_lib_getloadavg_getloadavg+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5
+$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
+if test "${ac_cv_lib_getloadavg_getloadavg+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgetloadavg  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char getloadavg ();
 int
 main ()
 {
-getloadavg ();
+return getloadavg ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_getloadavg_getloadavg=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_getloadavg_getloadavg=no
+  ac_cv_lib_getloadavg_getloadavg=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_getloadavg_getloadavg" >&5
-echo "${ECHO_T}$ac_cv_lib_getloadavg_getloadavg" >&6
-if test $ac_cv_lib_getloadavg_getloadavg = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5
+$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
+if test "x$ac_cv_lib_getloadavg_getloadavg" = x""yes; then :
   LIBS="-lgetloadavg $LIBS"
 else
   LIBS=$ac_getloadavg_LIBS
 
 # Make sure it is really in the library, if we think we found it,
 # otherwise set up the replacement function.
-
 for ac_func in getloadavg
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
+if test "x$ac_cv_func_getloadavg" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_GETLOADAVG 1
 _ACEOF
 
 else
-  case $LIBOBJS in
-    "getloadavg.$ac_objext"   | \
-  *" getloadavg.$ac_objext"   | \
-    "getloadavg.$ac_objext "* | \
+  case " $LIBOBJS " in
   *" getloadavg.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext" ;;
+  *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext"
+ ;;
 esac
 
 
-cat >>confdefs.h <<\_ACEOF
-#define C_GETLOADAVG 1
-_ACEOF
+$as_echo "#define C_GETLOADAVG 1" >>confdefs.h
 
 # Figure out what our getloadavg.c needs.
 ac_have_func=no
-if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5
-echo $ECHO_N "checking for sys/dg_sys_info.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_dg_sys_info_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking sys/dg_sys_info.h usability" >&5
-echo $ECHO_N "checking sys/dg_sys_info.h usability... $ECHO_C" >&6
-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 <sys/dg_sys_info.h>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking sys/dg_sys_info.h presence" >&5
-echo $ECHO_N "checking sys/dg_sys_info.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/dg_sys_info.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5
-echo $ECHO_N "checking for sys/dg_sys_info.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_sys_dg_sys_info_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_dg_sys_info_h" >&6
-
-fi
-if test $ac_cv_header_sys_dg_sys_info_h = yes; then
+ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_dg_sys_info_h" = x""yes; then :
   ac_have_func=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define DGUX 1
-_ACEOF
-
+$as_echo "#define DGUX 1" >>confdefs.h
 
-echo "$as_me:$LINENO: checking for dg_sys_info in -ldgc" >&5
-echo $ECHO_N "checking for dg_sys_info in -ldgc... $ECHO_C" >&6
-if test "${ac_cv_lib_dgc_dg_sys_info+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5
+$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
+if test "${ac_cv_lib_dgc_dg_sys_info+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldgc  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char dg_sys_info ();
 int
 main ()
 {
-dg_sys_info ();
+return dg_sys_info ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dgc_dg_sys_info=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dgc_dg_sys_info=no
+  ac_cv_lib_dgc_dg_sys_info=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dgc_dg_sys_info" >&5
-echo "${ECHO_T}$ac_cv_lib_dgc_dg_sys_info" >&6
-if test $ac_cv_lib_dgc_dg_sys_info = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
+$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
+if test "x$ac_cv_lib_dgc_dg_sys_info" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBDGC 1
 _ACEOF
 
 
 
-if test "${ac_cv_header_locale_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for locale.h" >&5
-echo $ECHO_N "checking for locale.h... $ECHO_C" >&6
-if test "${ac_cv_header_locale_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = x""yes; then :
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_locale_h" >&5
-echo "${ECHO_T}$ac_cv_header_locale_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking locale.h usability" >&5
-echo $ECHO_N "checking locale.h usability... $ECHO_C" >&6
-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 <locale.h>
+
+
+for ac_func in setlocale
+do :
+  ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SETLOCALE 1
 _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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_header_compiler=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking locale.h presence" >&5
-echo $ECHO_N "checking locale.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <locale.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: locale.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: locale.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: locale.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: locale.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: locale.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: locale.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: locale.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: locale.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: locale.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: locale.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for locale.h" >&5
-echo $ECHO_N "checking for locale.h... $ECHO_C" >&6
-if test "${ac_cv_header_locale_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_locale_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_locale_h" >&5
-echo "${ECHO_T}$ac_cv_header_locale_h" >&6
-
-fi
-
-
-
-for ac_func in setlocale
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
+done
 
 
 # We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
@@ -10824,307 +8254,19 @@ done
 if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes; then
   ac_have_func=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define SVR4 1
-_ACEOF
+$as_echo "#define SVR4 1" >>confdefs.h
 
 fi
 
 if test $ac_have_func = no; then
-  if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for inq_stats/cpustats.h" >&5
-echo $ECHO_N "checking for inq_stats/cpustats.h... $ECHO_C" >&6
-if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_inq_stats_cpustats_h" >&5
-echo "${ECHO_T}$ac_cv_header_inq_stats_cpustats_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking inq_stats/cpustats.h usability" >&5
-echo $ECHO_N "checking inq_stats/cpustats.h usability... $ECHO_C" >&6
-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 <inq_stats/cpustats.h>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking inq_stats/cpustats.h presence" >&5
-echo $ECHO_N "checking inq_stats/cpustats.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <inq_stats/cpustats.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: inq_stats/cpustats.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for inq_stats/cpustats.h" >&5
-echo $ECHO_N "checking for inq_stats/cpustats.h... $ECHO_C" >&6
-if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_inq_stats_cpustats_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_inq_stats_cpustats_h" >&5
-echo "${ECHO_T}$ac_cv_header_inq_stats_cpustats_h" >&6
-
-fi
-if test $ac_cv_header_inq_stats_cpustats_h = yes; then
+  ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default"
+if test "x$ac_cv_header_inq_stats_cpustats_h" = x""yes; then :
   ac_have_func=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define UMAX 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define UMAX4_3 1
-_ACEOF
-
-fi
-
-
-fi
-
-if test $ac_have_func = no; then
-  if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for sys/cpustats.h" >&5
-echo $ECHO_N "checking for sys/cpustats.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_cpustats_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_cpustats_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking sys/cpustats.h usability" >&5
-echo $ECHO_N "checking sys/cpustats.h usability... $ECHO_C" >&6
-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 <sys/cpustats.h>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking sys/cpustats.h presence" >&5
-echo $ECHO_N "checking sys/cpustats.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/cpustats.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
+$as_echo "#define UMAX 1" >>confdefs.h
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: sys/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: sys/cpustats.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: sys/cpustats.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: sys/cpustats.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: sys/cpustats.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: sys/cpustats.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: sys/cpustats.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/cpustats.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: sys/cpustats.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for sys/cpustats.h" >&5
-echo $ECHO_N "checking for sys/cpustats.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_sys_cpustats_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_cpustats_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_cpustats_h" >&6
 
-fi
-if test $ac_cv_header_sys_cpustats_h = yes; then
-  ac_have_func=yes; cat >>confdefs.h <<\_ACEOF
-#define UMAX 1
-_ACEOF
+$as_echo "#define UMAX4_3 1" >>confdefs.h
 
 fi
 
 fi
 
 if test $ac_have_func = no; then
-
-for ac_header in mach/mach.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-fi
-
-
-for ac_header in nlist.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_cpustats_h" = x""yes; then :
+  ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h
 
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- echo "$as_me:$LINENO: checking for struct nlist.n_un.n_name" >&5
-echo $ECHO_N "checking for struct nlist.n_un.n_name... $ECHO_C" >&6
-if test "${ac_cv_member_struct_nlist_n_un_n_name+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.  */
-#include <nlist.h>
-
-int
-main ()
-{
-static struct nlist ac_aggr;
-if (ac_aggr.n_un.n_name)
-return 0;
-  ;
-  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_member_struct_nlist_n_un_n_name=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <nlist.h>
-
-int
-main ()
-{
-static struct nlist ac_aggr;
-if (sizeof ac_aggr.n_un.n_name)
-return 0;
-  ;
-  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_member_struct_nlist_n_un_n_name=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_member_struct_nlist_n_un_n_name=no
+
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_have_func = no; then
+  for ac_header in mach/mach.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
+if test "x$ac_cv_header_mach_mach_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MACH_MACH_H 1
+_ACEOF
+
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+done
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_nlist_n_un_n_name" >&5
-echo "${ECHO_T}$ac_cv_member_struct_nlist_n_un_n_name" >&6
-if test $ac_cv_member_struct_nlist_n_un_n_name = yes; then
+
+for ac_header in nlist.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default"
+if test "x$ac_cv_header_nlist_h" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NLIST_H 1
+_ACEOF
+ ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include <nlist.h>
+"
+if test "x$ac_cv_member_struct_nlist_n_un_n_name" = x""yes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
 _ACEOF
 
 
-cat >>confdefs.h <<\_ACEOF
-#define NLIST_NAME_UNION 1
-_ACEOF
+$as_echo "#define NLIST_NAME_UNION 1" >>confdefs.h
 
 fi
 
@@ -11551,16 +8328,12 @@ done
 
 
 # Some definitions of getloadavg require that the program be installed setgid.
-echo "$as_me:$LINENO: checking whether getloadavg requires setgid" >&5
-echo $ECHO_N "checking whether getloadavg requires setgid... $ECHO_C" >&6
-if test "${ac_cv_func_getloadavg_setgid+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getloadavg requires setgid" >&5
+$as_echo_n "checking whether getloadavg requires setgid... " >&6; }
+if test "${ac_cv_func_getloadavg_setgid+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
 #ifdef LDAV_PRIVILEGED
@@ -11568,7 +8341,7 @@ Yowza Am I SETGID yet
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then
+  $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then :
   ac_cv_func_getloadavg_setgid=yes
 else
   ac_cv_func_getloadavg_setgid=no
 rm -f conftest*
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_getloadavg_setgid" >&5
-echo "${ECHO_T}$ac_cv_func_getloadavg_setgid" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getloadavg_setgid" >&5
+$as_echo "$ac_cv_func_getloadavg_setgid" >&6; }
 if test $ac_cv_func_getloadavg_setgid = yes; then
   NEED_SETGID=true
 
-cat >>confdefs.h <<\_ACEOF
-#define GETLOADAVG_PRIVILEGED 1
-_ACEOF
+$as_echo "#define GETLOADAVG_PRIVILEGED 1" >>confdefs.h
 
 else
   NEED_SETGID=false
 fi
 
 if test $ac_cv_func_getloadavg_setgid = yes; then
-  echo "$as_me:$LINENO: checking group of /dev/kmem" >&5
-echo $ECHO_N "checking group of /dev/kmem... $ECHO_C" >&6
-if test "${ac_cv_group_kmem+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking group of /dev/kmem" >&5
+$as_echo_n "checking group of /dev/kmem... " >&6; }
+if test "${ac_cv_group_kmem+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
    # On Solaris, /dev/kmem is a symlink.  Get info on the real file.
   ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
   # If we got an error (system does not support symlinks), try without -L.
   test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
-  ac_cv_group_kmem=`echo $ac_ls_output \
+  ac_cv_group_kmem=`$as_echo "$ac_ls_output" \
     | sed -ne 's/[      ][      ]*/ /g;
               s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\)  *.*/\1/;
               / /s/.* //;p;'`
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_group_kmem" >&5
-echo "${ECHO_T}$ac_cv_group_kmem" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_group_kmem" >&5
+$as_echo "$ac_cv_group_kmem" >&6; }
   KMEM_GROUP=$ac_cv_group_kmem
 fi
 if test "x$ac_save_LIBS" = x; then
   GETLOADAVG_LIBS=$LIBS
 else
-  GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$ac_save_LIBS!!"`
+  GETLOADAVG_LIBS=`$as_echo "$LIBS" | sed "s|$ac_save_LIBS||"`
 fi
 LIBS=$ac_save_LIBS
 
@@ -11622,11 +8393,7 @@ LIBS=$ac_save_LIBS
 # doesn't.  So, we will.
 
 if test "$ac_cv_header_nlist_h" = yes; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <nlist.h>
 int
@@ -11639,538 +8406,106 @@ struct nlist nl;
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   make_cv_nlist_struct=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-make_cv_nlist_struct=no
+  make_cv_nlist_struct=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   if test "$make_cv_nlist_struct" = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define NLIST_STRUCT 1
-_ACEOF
+$as_echo "#define NLIST_STRUCT 1" >>confdefs.h
 
   fi
 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
+ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$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
+"
+if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then :
+  ac_have_decl=1
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl_sys_siglist=no
+  ac_have_decl=0
 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
+#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
 _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
+ac_fn_c_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$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
+"
+if test "x$ac_cv_have_decl__sys_siglist" = x""yes; then :
+  ac_have_decl=1
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl__sys_siglist=no
+  ac_have_decl=0
 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.  */
+#define HAVE_DECL__SYS_SIGLIST $ac_have_decl
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
+ac_fn_c_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$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
+"
+if test "x$ac_cv_have_decl___sys_siglist" = x""yes; then :
+  ac_have_decl=1
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl___sys_siglist=no
+  ac_have_decl=0
 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
+#define HAVE_DECL___SYS_SIGLIST $ac_have_decl
 _ACEOF
 
 
-fi
-
-
-
 
 # Check out the wait reality.
-
 for ac_header in sys/wait.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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 <$ac_header>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include <sys/types.h>
+"
+if test "x$ac_cv_header_sys_wait_h" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_SYS_WAIT_H 1
 _ACEOF
 
 fi
 
 done
 
-
-
 for ac_func in waitpid wait3
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+   if test "x$as_val" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
 done
 
-echo "$as_me:$LINENO: checking for union wait" >&5
-echo $ECHO_N "checking for union wait... $ECHO_C" >&6
-if test "${make_cv_union_wait+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5
+$as_echo_n "checking for union wait... " >&6; }
+if test "${make_cv_union_wait+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -12197,55 +8532,28 @@ union wait status; int pid; pid = wait (&status);
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   make_cv_union_wait=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-make_cv_union_wait=no
+  make_cv_union_wait=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
 
 if test "$make_cv_union_wait" = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UNION_WAIT 1
-_ACEOF
+$as_echo "#define HAVE_UNION_WAIT 1" >>confdefs.h
 
 fi
-echo "$as_me:$LINENO: result: $make_cv_union_wait" >&5
-echo "${ECHO_T}$make_cv_union_wait" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5
+$as_echo "$make_cv_union_wait" >&6; }
 
 
 # If we're building on Windows/DOS/OS/2, add some support for DOS drive specs.
 if test "$PATH_SEPARATOR" = ';'; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOS_PATHS 1
-_ACEOF
+$as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h
 
 fi
 
@@ -12255,10 +8563,9 @@ fi
  REMOTE=stub
 use_customs=false
 
-# Check whether --with-customs or --without-customs was given.
-if test "${with_customs+set}" = set; then
-  withval="$with_customs"
-  case $withval in
+# Check whether --with-customs was given.
+if test "${with_customs+set}" = set; then :
+  withval=$with_customs; case $withval in
     n|no) : ;;
     *) make_cppflags="$CPPFLAGS"
        case $withval in
@@ -12267,182 +8574,65 @@ if test "${with_customs+set}" = set; then
            make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
        esac
 
-cf_test_netlibs=no
-echo "$as_me:$LINENO: checking for network libraries" >&5
-echo $ECHO_N "checking for network libraries... $ECHO_C" >&6
-if test "${cf_cv_netlibs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-echo "$as_me:$LINENO: result: working..." >&5
-echo "${ECHO_T}working..." >&6
-cf_cv_netlibs=""
-cf_test_netlibs=yes
-
-for ac_func in gethostname
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
+cf_test_netlibs=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5
+$as_echo_n "checking for network libraries... " >&6; }
+if test "${cf_cv_netlibs+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: working..." >&5
+$as_echo "working..." >&6; }
+cf_cv_netlibs=""
+cf_test_netlibs=yes
+for ac_func in gethostname
+do :
+  ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname"
+if test "x$ac_cv_func_gethostname" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_GETHOSTNAME 1
 _ACEOF
 
 else
 
 
-echo "$as_me:$LINENO: checking for gethostname in -lnsl" >&5
-echo $ECHO_N "checking for gethostname in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_gethostname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5
+$as_echo_n "checking for gethostname in -lnsl... " >&6; }
+if test "${ac_cv_lib_nsl_gethostname+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char gethostname ();
 int
 main ()
 {
-gethostname ();
+return gethostname ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_nsl_gethostname=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_nsl_gethostname=no
+  ac_cv_lib_nsl_gethostname=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostname" >&6
-if test $ac_cv_lib_nsl_gethostname = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostname" = x""yes; then :
 
 
 cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'`
@@ -12460,70 +8650,43 @@ else
        unset ac_cv_func_gethostname 2>/dev/null
 
 
-echo "$as_me:$LINENO: checking for gethostname in -lsocket" >&5
-echo $ECHO_N "checking for gethostname in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_gethostname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5
+$as_echo_n "checking for gethostname in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_gethostname+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char gethostname ();
 int
 main ()
 {
-gethostname ();
+return gethostname ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_socket_gethostname=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_socket_gethostname=no
+  ac_cv_lib_socket_gethostname=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostname" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_gethostname" >&6
-if test $ac_cv_lib_socket_gethostname = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5
+$as_echo "$ac_cv_lib_socket_gethostname" >&6; }
+if test "x$ac_cv_lib_socket_gethostname" = x""yes; then :
 
 
 cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'`
@@ -12552,234 +8715,90 @@ done
 #
 # FIXME:  sequent needs this library (i.e., -lsocket -linet -lnsl), but
 # I don't know the entrypoints - 97/7/22 TD
-echo "$as_me:$LINENO: checking for main in -linet" >&5
-echo $ECHO_N "checking for main in -linet... $ECHO_C" >&6
-if test "${ac_cv_lib_inet_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5
+$as_echo_n "checking for main in -linet... " >&6; }
+if test "${ac_cv_lib_inet_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-linet  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
 int
 main ()
 {
-main ();
+return main ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_inet_main=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_inet_main=no
+  ac_cv_lib_inet_main=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_inet_main" >&5
-echo "${ECHO_T}$ac_cv_lib_inet_main" >&6
-if test $ac_cv_lib_inet_main = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5
+$as_echo "$ac_cv_lib_inet_main" >&6; }
+if test "x$ac_cv_lib_inet_main" = x""yes; then :
   cf_cv_netlibs="-linet $cf_cv_netlibs"
 fi
 
 #
 if test "$ac_cv_func_lsocket" != no ; then
-
 for ac_func in socket
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
+if test "x$ac_cv_func_socket" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_SOCKET 1
 _ACEOF
 
 else
 
 
-echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
-echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_socket+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
+$as_echo_n "checking for socket in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_socket+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char socket ();
 int
 main ()
 {
-socket ();
+return socket ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_socket_socket=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_socket_socket=no
+  ac_cv_lib_socket_socket=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6
-if test $ac_cv_lib_socket_socket = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
+$as_echo "$ac_cv_lib_socket_socket" >&6; }
+if test "x$ac_cv_lib_socket_socket" = x""yes; then :
 
 
 cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'`
@@ -12797,70 +8816,43 @@ else
        unset ac_cv_func_socket 2>/dev/null
 
 
-echo "$as_me:$LINENO: checking for socket in -lbsd" >&5
-echo $ECHO_N "checking for socket in -lbsd... $ECHO_C" >&6
-if test "${ac_cv_lib_bsd_socket+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5
+$as_echo_n "checking for socket in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_socket+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char socket ();
 int
 main ()
 {
-socket ();
+return socket ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_bsd_socket=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_bsd_socket=no
+  ac_cv_lib_bsd_socket=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_socket" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_socket" >&6
-if test $ac_cv_lib_bsd_socket = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5
+$as_echo "$ac_cv_lib_bsd_socket" >&6; }
+if test "x$ac_cv_lib_bsd_socket" = x""yes; then :
 
 
 cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'`
@@ -12888,374 +8880,69 @@ done
 
 fi
 #
-
 for ac_func in gethostbyname
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = x""yes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_GETHOSTBYNAME 1
 _ACEOF
 
 else
 
 
-echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
-int
-main ()
-{
-gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_lib_nsl_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_nsl_gethostbyname=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
-
-
-cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'`
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_$cf_tr_func 1
-_ACEOF
-
-       ac_cv_func_gethostbyname=yes
-       cf_cv_netlibs="-lnsl $cf_cv_netlibs"
-else
-
-       ac_cv_func_gethostbyname=unknown
-       unset ac_cv_func_gethostbyname 2>/dev/null
-
-fi
-
-
-fi
-done
-
-#
-
-for ac_func in strcasecmp
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+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
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-
-
-echo "$as_me:$LINENO: checking for strcasecmp in -lresolv" >&5
-echo $ECHO_N "checking for strcasecmp in -lresolv... $ECHO_C" >&6
-if test "${ac_cv_lib_resolv_strcasecmp+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lresolv $cf_cv_netlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strcasecmp ();
+char gethostbyname ();
 int
 main ()
 {
-strcasecmp ();
+return gethostbyname ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 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_exeext'
-  { (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_lib_resolv_strcasecmp=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_resolv_strcasecmp=no
+  ac_cv_lib_nsl_gethostbyname=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_strcasecmp" >&5
-echo "${ECHO_T}$ac_cv_lib_resolv_strcasecmp" >&6
-if test $ac_cv_lib_resolv_strcasecmp = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then :
 
 
-cf_tr_func=`echo strcasecmp | tr '[a-z]' '[A-Z]'`
+cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'`
 
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_$cf_tr_func 1
 _ACEOF
 
-       ac_cv_func_strcasecmp=yes
-       cf_cv_netlibs="-lresolv $cf_cv_netlibs"
+       ac_cv_func_gethostbyname=yes
+       cf_cv_netlibs="-lnsl $cf_cv_netlibs"
 else
 
-       ac_cv_func_strcasecmp=unknown
-       unset ac_cv_func_strcasecmp 2>/dev/null
+       ac_cv_func_gethostbyname=unknown
+       unset ac_cv_func_gethostbyname 2>/dev/null
 
 fi
 
 LIBS="$LIBS $cf_cv_netlibs"
 test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6
 
-       if test "${ac_cv_header_customs_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for customs.h" >&5
-echo $ECHO_N "checking for customs.h... $ECHO_C" >&6
-if test "${ac_cv_header_customs_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_customs_h" >&5
-echo "${ECHO_T}$ac_cv_header_customs_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking customs.h usability" >&5
-echo $ECHO_N "checking customs.h usability... $ECHO_C" >&6
-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 <customs.h>
-_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_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking customs.h presence" >&5
-echo $ECHO_N "checking customs.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <customs.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: customs.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: customs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: customs.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: customs.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: customs.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: customs.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: customs.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: customs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: customs.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: customs.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: customs.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-make@gnu.org ##
-## ------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for customs.h" >&5
-echo $ECHO_N "checking for customs.h... $ECHO_C" >&6
-if test "${ac_cv_header_customs_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_customs_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_customs_h" >&5
-echo "${ECHO_T}$ac_cv_header_customs_h" >&6
-
-fi
-if test $ac_cv_header_customs_h = yes; then
+       ac_fn_c_check_header_mongrel "$LINENO" "customs.h" "ac_cv_header_customs_h" "$ac_includes_default"
+if test "x$ac_cv_header_customs_h" = x""yes; then :
   use_customs=true
                         REMOTE=cstms
                         LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"
 
        ;;
   esac
-fi;
-# Tell automake about this, so it can include the right .c files.
-
+fi
 
-if test "$use_customs" = true; then
+# Tell automake about this, so it can include the right .c files.
+ if test "$use_customs" = true; then
   USE_CUSTOMS_TRUE=
   USE_CUSTOMS_FALSE='#'
 else
 # See if the user asked to handle case insensitive file systems.
 
 
+# Check whether --enable-case-insensitive-file-system was given.
+if test "${enable_case_insensitive_file_system+set}" = set; then :
+  enableval=$enable_case_insensitive_file_system; case $enableval in
+     yes) $as_echo "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h
+ ;;
+   esac
+fi
 
-# 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.
 
-# Check whether --enable-job-server or --disable-job-server was given.
-if test "${enable_job_server+set}" = set; then
-  enableval="$enable_job_server"
-  make_cv_job_server="$enableval" user_job_server="$enableval"
+# Check whether --enable-job-server was given.
+if test "${enable_job_server+set}" = set; then :
+  enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval"
 else
   make_cv_job_server="yes"
-fi;
+fi
+
 
 has_wait_nohang=yes
 case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
   no/no) has_wait_nohang=no ;;
 esac
 
-echo "$as_me:$LINENO: checking for SA_RESTART" >&5
-echo $ECHO_N "checking for SA_RESTART... $ECHO_C" >&6
-if test "${make_cv_sa_restart+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5
+$as_echo_n "checking for SA_RESTART... " >&6; }
+if test "${make_cv_sa_restart+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <signal.h>
 int
@@ -13481,44 +9025,19 @@ return SA_RESTART;
   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
+if ac_fn_c_try_compile "$LINENO"; then :
   make_cv_sa_restart=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-make_cv_sa_restart=no
+  make_cv_sa_restart=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $make_cv_sa_restart" >&5
-echo "${ECHO_T}$make_cv_sa_restart" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5
+$as_echo "$make_cv_sa_restart" >&6; }
 
 if test "$make_cv_sa_restart" != no; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SA_RESTART 1
-_ACEOF
+$as_echo "#define HAVE_SA_RESTART 1" >>confdefs.h
 
 fi
 
@@ -13531,9 +9050,7 @@ esac
 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)
 
-cat >>confdefs.h <<\_ACEOF
-#define MAKE_JOBSERVER 1
-_ACEOF
+$as_echo "#define MAKE_JOBSERVER 1" >>confdefs.h
 ;;
 esac
 
@@ -13542,18 +9059,16 @@ esac
 case "$ac_cv_func_lstat/$ac_cv_func_readlink" in
   yes/yes)
 
-cat >>confdefs.h <<\_ACEOF
-#define MAKE_SYMLINKS 1
-_ACEOF
+$as_echo "#define MAKE_SYMLINKS 1" >>confdefs.h
 ;;
 esac
 
 # Find the SCCS commands, so we can include them in our default rules.
 
-echo "$as_me:$LINENO: checking for location of SCCS get command" >&5
-echo $ECHO_N "checking for location of SCCS get command... $ECHO_C" >&6
-if test "${make_cv_path_sccs_get+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5
+$as_echo_n "checking for location of SCCS get command... " >&6; }
+if test "${make_cv_path_sccs_get+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
 if test -f /usr/sccs/get; then
@@ -13562,8 +9077,8 @@ else
   make_cv_path_sccs_get=get
 fi
 fi
-echo "$as_me:$LINENO: result: $make_cv_path_sccs_get" >&5
-echo "${ECHO_T}$make_cv_path_sccs_get" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5
+$as_echo "$make_cv_path_sccs_get" >&6; }
 
 cat >>confdefs.h <<_ACEOF
 #define SCCS_GET "$make_cv_path_sccs_get"
@@ -13574,10 +9089,10 @@ ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
 if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
    test -f s.conftest; then
   # We successfully created an SCCS file.
-  echo "$as_me:$LINENO: checking if SCCS get command understands -G" >&5
-echo $ECHO_N "checking if SCCS get command understands -G... $ECHO_C" >&6
-if test "${make_cv_sys_get_minus_G+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5
+$as_echo_n "checking if SCCS get command understands -G... " >&6; }
+if test "${make_cv_sys_get_minus_G+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
     if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
@@ -13587,13 +9102,11 @@ else
        make_cv_sys_get_minus_G=no
     fi
 fi
-echo "$as_me:$LINENO: result: $make_cv_sys_get_minus_G" >&5
-echo "${ECHO_T}$make_cv_sys_get_minus_G" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5
+$as_echo "$make_cv_sys_get_minus_G" >&6; }
   case "$make_cv_sys_get_minus_G" in
     yes)
-cat >>confdefs.h <<\_ACEOF
-#define SCCS_GET_MINUS_G 1
-_ACEOF
+$as_echo "#define SCCS_GET_MINUS_G 1" >>confdefs.h
 ;;
   esac
 fi
@@ -13601,18 +9114,13 @@ rm -f s.conftest conftoast
 
 # Check the system to see if it provides GNU glob.  If not, use our
 # local version.
-
-echo "$as_me:$LINENO: checking if system libc has GNU glob" >&5
-echo $ECHO_N "checking if system libc has GNU glob... $ECHO_C" >&6
-if test "${make_cv_sys_gnu_glob+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5
+$as_echo_n "checking if system libc has GNU glob... " >&6; }
+if test "${make_cv_sys_gnu_glob+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <features.h>
@@ -13629,25 +9137,28 @@ cat >>conftest.$ac_ext <<_ACEOF
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "gnu glob" >/dev/null 2>&1; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+  $EGREP "gnu glob" >/dev/null 2>&1; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 make_cv_sys_gnu_glob=yes
 else
-  echo "$as_me:$LINENO: result: no; using local copy" >&5
-echo "${ECHO_T}no; using local copy" >&6
- GLOBINC='-I$(srcdir)/glob'
- GLOBLIB=glob/libglob.a
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; using local copy" >&5
+$as_echo "no; using local copy" >&6; }
 make_cv_sys_gnu_glob=no
 fi
 rm -f conftest*
 
 fi
 
-# Tell automake about this, so it can build the right .c files.
+if test "$make_cv_sys_gnu_glob" = no; then
+  GLOBINC='-I$(srcdir)/glob'
+  GLOBLIB=glob/libglob.a
+fi
 
 
-if test "$make_cv_sys_gnu_glob" = no; then
+
+# Tell automake about this, so it can build the right .c files.
+ if test "$make_cv_sys_gnu_glob" = no; then
   USE_LOCAL_GLOB_TRUE=
   USE_LOCAL_GLOB_FALSE='#'
 else
@@ -13667,9 +9178,7 @@ MAKE_HOST="$host"
 
 
 w32_target_env=no
-
-
-if false; then
+ if false; then
   WINDOWSENV_TRUE=
   WINDOWSENV_FALSE='#'
 else
@@ -13680,9 +9189,7 @@ fi
 
 case "$host" in
   *-*-mingw32)
-
-
-if true; then
+     if true; then
   WINDOWSENV_TRUE=
   WINDOWSENV_FALSE='#'
 else
 
     w32_target_env=yes
 
-cat >>confdefs.h <<\_ACEOF
-#define WINDOWS32 1
-_ACEOF
+$as_echo "#define WINDOWS32 1" >>confdefs.h
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOS_PATHS 1
-_ACEOF
+$as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h
 
     ;;
 esac
 
+
+cat >>confdefs.h <<_ACEOF
+#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'
+_ACEOF
+
+
 # Include the Maintainer's Makefile section, if it's here.
 
 MAINT_MAKEFILE=/dev/null
 
 
 # Allow building with dmalloc
-echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5
-echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5
+$as_echo_n "checking if malloc debugging is wanted... " >&6; }
 
-# Check whether --with-dmalloc or --without-dmalloc was given.
-if test "${with_dmalloc+set}" = set; then
-  withval="$with_dmalloc"
-  if test "$withval" = yes; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+# Check whether --with-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then :
+  withval=$with_dmalloc; if test "$withval" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_DMALLOC 1
-_ACEOF
+$as_echo "#define WITH_DMALLOC 1" >>confdefs.h
 
   LIBS="$LIBS -ldmalloc"
   LDFLAGS="$LDFLAGS -g"
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
 
 
 # Forcibly disable SET_MAKE.  If it's set it breaks things like the test
@@ -13786,7 +9293,7 @@ esac
 
 
 # Specify what files are to be created.
-                                                            ac_config_files="$ac_config_files Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile w32/Makefile"
+ac_config_files="$ac_config_files Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile w32/Makefile"
 
 
 # OK, do it!
@@ -13809,39 +9316,59 @@ _ACEOF
 
 # The following way of writing the cache mishandles newlines in values,
 # but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
+# So, we kill variables containing newlines.
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
-{
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
   (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotesdouble-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;;
+      ;; #(
     *)
       # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n \
-       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
-    esac;
-} |
+    esac |
+    sort
+) |
   sed '
+     /^ac_cv_env_/b end
      t clear
-     : clear
+     :clear
      s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
      t end
-     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     : end' >>confcache
-if diff $cache_file confcache >/dev/null 2>&1; then :; else
-  if test -w $cache_file; then
-    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
     cat confcache >$cache_file
   else
-    echo "not updating unwritable cache $cache_file"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -13850,87 +9377,65 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix
 # Let make expand exec_prefix.
 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[    ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[      ]*$//;
-}'
-fi
-
 DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
-  ac_i=`echo "$ac_i" |
-        sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-  # 2. Add them.
-  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"USE_CUSTOMS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"USE_CUSTOMS\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error "conditional \"USE_CUSTOMS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${USE_LOCAL_GLOB_TRUE}" && test -z "${USE_LOCAL_GLOB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"USE_LOCAL_GLOB\" was never defined.
-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; }; }
+  as_fn_error "conditional \"USE_LOCAL_GLOB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 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; }; }
+  as_fn_error "conditional \"WINDOWSENV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 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; }; }
+  as_fn_error "conditional \"WINDOWSENV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
 : ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -13940,81 +9445,252 @@ cat >$CONFIG_STATUS <<_ACEOF
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
 fi
-DUALCASE=1; export DUALCASE # for MKS sh
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    $as_unset $as_var
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
   fi
-done
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
 
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
 else
   as_expr=false
 fi
 
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
   as_basename=basename
 else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
-as_me=`$as_basename "$0" ||
+as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)$' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-         /^X\/\(\/\/\)$/{ s//\1/; q; }
-         /^X\/\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
 
-# PATH needs CR, and LINENO needs CR and PATH.
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -14022,148 +9698,123 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# 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
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-        case $as_dir in
-        /*)
-          if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-            CONFIG_SHELL=$as_dir/$as_base
-            export CONFIG_SHELL
-            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-          fi;;
-        esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='     ' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
 else
-  as_expr=false
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
 fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
   fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
 else
   as_ln_s='cp -p'
 fi
-rm -f conf$$ conf$$.exe conf$$.file
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
 
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-as_executable_p="test -f"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -14172,31 +9823,20 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS="  $as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.  Logging --version etc. is OK.
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by GNU make $as_me 3.81, which was
-generated by GNU Autoconf 2.59.  Invocation command line was
+# values after options handling.
+ac_log="
+This file was extended by GNU make $as_me 3.82, which was
+generated by GNU Autoconf 2.65.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -14204,45 +9844,47 @@ generated by GNU Autoconf 2.59.  Invocation command line was
   CONFIG_COMMANDS = $CONFIG_COMMANDS
   $ $0 $@
 
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
 _ACEOF
 
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
 
-if test -n "$ac_config_headers"; then
-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
 
-if test -n "$ac_config_links"; then
-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
 
-if test -n "$ac_config_commands"; then
-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+_ACEOF
 
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -q, --quiet      do not print progress messages
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                  instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-                  instantiate the configuration header FILE
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
 
 Configuration files:
 $config_files
@@ -14253,84 +9895,88 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf@gnu.org>."
-_ACEOF
+Report bugs to <bug-make@gnu.org>.
+GNU make home page: <http://www.gnu.org/software/make/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
 
-cat >>$CONFIG_STATUS <<_ACEOF
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GNU make config.status 3.81
-configured by $0, generated by GNU Autoconf 2.59,
-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+GNU make config.status 3.82
+configured by $0, generated by GNU Autoconf 2.65,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2003 Free Software Foundation, Inc.
+Copyright (C) 2009 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
 ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
   --*=*)
-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
-  -*)
+  *)
     ac_option=$1
     ac_optarg=$2
     ac_shift=shift
     ;;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_option=$1
-     ac_need_defaults=false;;
   esac
 
   case $ac_option in
   # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1" ;;
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
 
   esac
   shift
@@ -14344,19 +9990,32 @@ if $ac_cs_silent; then
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
 fi
 
 _ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
 
-cat >>$CONFIG_STATUS <<_ACEOF
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
-# INIT-COMMANDS section.
+# INIT-COMMANDS
 #
-
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 # Capture the value of obsolete ALL_LINGUAS because we need it to compute
     # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
@@ -14368,28 +10027,27 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
 _ACEOF
 
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 
-
-cat >>$CONFIG_STATUS <<\_ACEOF
+# Handling of arguments.
 for ac_config_target in $ac_config_targets
 do
-  case "$ac_config_target" in
-  # Handling of arguments.
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-  "glob/Makefile" ) CONFIG_FILES="$CONFIG_FILES glob/Makefile" ;;
-  "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
-  "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
-  "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-  "w32/Makefile" ) CONFIG_FILES="$CONFIG_FILES w32/Makefile" ;;
-  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-  "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "glob/Makefile") CONFIG_FILES="$CONFIG_FILES glob/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "config/Makefile") CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "w32/Makefile") CONFIG_FILES="$CONFIG_FILES w32/Makefile" ;;
+
+  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
+
 # If the user did not use the arguments to specify the items to instantiate,
 # then the envvar interface is used.  Set only those that are not.
 # We use the long form for the default assignment because of an extremely
@@ -14401,842 +10059,708 @@ if $ac_need_defaults; then
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason to put it here, and in addition,
+# simply because there is no reason against having it here, and in addition,
 # creating and moving files from /tmp can sometimes cause problems.
-# Create a temporary directory, and hook for its removal unless debugging.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
 }
-
 # Create a (secure) tmp directory for tmp files.
 
 {
-  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
   test -n "$tmp" && test -d "$tmp"
 }  ||
 {
-  tmp=./confstat$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+if $AWK 'BEGIN { getline <"/dev/null" }' </dev/null 2>/dev/null; then
+  ac_cs_awk_getline=:
+  ac_cs_awk_pipe_init=
+  ac_cs_awk_read_file='
+      while ((getline aline < (F[key])) > 0)
+       print(aline)
+      close(F[key])'
+  ac_cs_awk_pipe_fini=
+else
+  ac_cs_awk_getline=false
+  ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\""
+  ac_cs_awk_read_file='
+      print "|#_!!_#|"
+      print "cat " F[key] " &&"
+      '$ac_cs_awk_pipe_init
+  # The final `:' finishes the AND list.
+  ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }'
+fi
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+# Create commands to substitute file output variables.
 {
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+  echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
+  echo 'cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&' &&
+  echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
+  echo "_ACAWK" &&
+  echo "_ACEOF"
+} >conf$$files.sh &&
+. ./conf$$files.sh ||
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+rm -f conf$$files.sh
 
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+  \$ac_cs_awk_pipe_init
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+  if (nfields == 3 && !substed) {
+    key = field[2]
+    if (F[key] != "" && line ~ /^[      ]*@.*@[         ]*$/) {
+      \$ac_cs_awk_read_file
+      next
+    }
+  }
+  print line
+}
+\$ac_cs_awk_pipe_fini
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-cat >>$CONFIG_STATUS <<_ACEOF
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[    ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
 
-#
-# CONFIG_FILES section.
-#
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
 
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@CYGPATH_W@,$CYGPATH_W,;t t
-s,@PACKAGE@,$PACKAGE,;t t
-s,@VERSION@,$VERSION,;t t
-s,@ACLOCAL@,$ACLOCAL,;t t
-s,@AUTOCONF@,$AUTOCONF,;t t
-s,@AUTOMAKE@,$AUTOMAKE,;t t
-s,@AUTOHEADER@,$AUTOHEADER,;t t
-s,@MAKEINFO@,$MAKEINFO,;t t
-s,@install_sh@,$install_sh,;t t
-s,@STRIP@,$STRIP,;t t
-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
-s,@mkdir_p@,$mkdir_p,;t t
-s,@AWK@,$AWK,;t t
-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
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@DEPDIR@,$DEPDIR,;t t
-s,@am__include@,$am__include,;t t
-s,@am__quote@,$am__quote,;t t
-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
-s,@CCDEPMODE@,$CCDEPMODE,;t t
-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
-s,@RANLIB@,$RANLIB,;t t
-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-s,@CPP@,$CPP,;t t
-s,@AR@,$AR,;t t
-s,@PERL@,$PERL,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@EGREP@,$EGREP,;t t
-s,@U@,$U,;t t
-s,@ANSI2KNR@,$ANSI2KNR,;t t
-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
-s,@USE_NLS@,$USE_NLS,;t t
-s,@MSGFMT@,$MSGFMT,;t t
-s,@GMSGFMT@,$GMSGFMT,;t t
-s,@XGETTEXT@,$XGETTEXT,;t t
-s,@MSGMERGE@,$MSGMERGE,;t t
-s,@LIBICONV@,$LIBICONV,;t t
-s,@LTLIBICONV@,$LTLIBICONV,;t t
-s,@INTLLIBS@,$INTLLIBS,;t t
-s,@LIBINTL@,$LIBINTL,;t t
-s,@LTLIBINTL@,$LTLIBINTL,;t t
-s,@POSUB@,$POSUB,;t t
-s,@ALLOCA@,$ALLOCA,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@NEED_SETGID@,$NEED_SETGID,;t t
-s,@KMEM_GROUP@,$KMEM_GROUP,;t t
-s,@GETLOADAVG_LIBS@,$GETLOADAVG_LIBS,;t t
-s,@REMOTE@,$REMOTE,;t t
-s,@USE_CUSTOMS_TRUE@,$USE_CUSTOMS_TRUE,;t t
-s,@USE_CUSTOMS_FALSE@,$USE_CUSTOMS_FALSE,;t t
-s,@GLOBINC@,$GLOBINC,;t t
-s,@GLOBLIB@,$GLOBLIB,;t t
-s,@USE_LOCAL_GLOB_TRUE@,$USE_LOCAL_GLOB_TRUE,;t t
-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
-s,@MAINT_MAKEFILE@,,;t t
-CEOF
-
-_ACEOF
-
-  cat >>$CONFIG_STATUS <<\_ACEOF
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
-fi # test -n "$CONFIG_FILES"
+done
 
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-       cat >$tmp/stdin
-       ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
   esac
 
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+  ac_dir=`$as_dirname -- "$ac_file" ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$ac_file" : 'X\(//\)[^/]' \| \
         X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
 
 case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
+  .)  # We are building in place.
     ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
     ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
 
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
 
   case $INSTALL in
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
 
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    configure_input=
-  else
-    configure_input="$ac_file.  "
-  fi
-  configure_input=$configure_input"Generated from `echo $ac_file_in |
-                                    sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-        # Absolute (can't be DOS-style, as IFS=:)
-        test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-        echo "$f";;
-      *) # Relative
-        if test -f "$f"; then
-          # Build tree
-          echo "$f"
-        elif test -f "$srcdir/$f"; then
-          # Source tree
-          echo "$srcdir/$f"
-        else
-          # /dev/null tree
-          { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-        fi;;
-      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
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
-
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([   ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='[        ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([   ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
+if $ac_cs_awk_getline; then
+  $AWK -f "$tmp/subs.awk"
+else
+  $AWK -f "$tmp/subs.awk" | $SHELL
+fi >$tmp/out \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
   case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-       cat >$tmp/stdin
-       ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-        # Absolute (can't be DOS-style, as IFS=:)
-        test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-        # Do quote $f, to prevent DOS paths from being IFS'd.
-        echo "$f";;
-      *) # Relative
-        if test -f "$f"; then
-          # Build tree
-          echo "$f"
-        elif test -f "$srcdir/$f"; then
-          # Source tree
-          echo "$srcdir/$f"
-        else
-          # /dev/null tree
-          { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-        fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  # Remove the trailing spaces.
-  sed 's/[      ]*$//' $ac_file_inputs >$tmp/in
-
-_ACEOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h.  The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status.  Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\_ACEOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*\)\(([^)]*)\)[       ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-t end
-s,^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-_ACEOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless.  Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\_ACEOF
-s,^[    ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-_ACEOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo '  if grep "^[     ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo '  :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
-  # Write a limited-size here document to $tmp/defines.sed.
-  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-  # Speed up: don't consider the non `#define' lines.
-  echo '/^[     ]*#[    ]*define/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/defines.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo '  fi # grep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
-  # Write a limited-size here document to $tmp/undefs.sed.
-  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-  # Speed up: don't consider the non `#undef'
-  echo '/^[     ]*#[    ]*undef/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-  rm -f conftest.undefs
-  mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    echo "/* Generated by configure.  */" >$tmp/config.h
-  else
-    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
-  fi
-  cat $tmp/in >>$tmp/config.h
-  rm -f $tmp/in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
   if test x"$ac_file" != x-; then
-    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
-      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_file" : 'X\(//\)[^/]' \| \
-        X"$ac_file" : 'X\(//\)$' \| \
-        X"$ac_file" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-      { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-      rm -f $ac_file
-      mv $tmp/config.h $ac_file
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+       || as_fn_error "could not create $ac_file" "$LINENO" 5
     fi
   else
-    cat $tmp/config.h
-    rm -f $tmp/config.h
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error "could not create -" "$LINENO" 5
   fi
-# Compute $ac_file's index in $config_headers.
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $ac_file | $ac_file:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X$ac_file : 'X\(//\)[^/]' \| \
-        X$ac_file : 'X\(//\)$' \| \
-        X$ac_file : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X$ac_file |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`/stamp-h$_am_stamp_count
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_COMMANDS section.
-#
-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$ac_dest" : 'X\(//\)[^/]' \| \
-        X"$ac_dest" : 'X\(//\)$' \| \
-        X"$ac_dest" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_dest" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-  ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
 
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
 
 
-  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-echo "$as_me: executing $ac_dest commands" >&6;}
-  case $ac_dest in
-    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # So let's grep whole file.
-  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-    dirpart=`(dirname "$mf") 2>/dev/null ||
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$mf" : 'X\(//\)[^/]' \| \
         X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  else
-    continue
-  fi
-  # 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"`
-  # 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.
-    test -f "$dirpart/$file" && continue
-    fdir=`(dirname "$file") 2>/dev/null ||
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # 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"`
+    # 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.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$file" : 'X\(//\)[^/]' \| \
         X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-    { if $as_mkdir_p; then
-    mkdir -p $dirpart/$fdir
-  else
-    as_dir=$dirpart/$fdir
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
     done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
   done
-done
+}
  ;;
-    default-1 )
+    "default-1":C)
     for ac_file in $CONFIG_FILES; do
       # Support "outfile[:infile[:infile...]]"
       case "$ac_file" in
@@ -15345,17 +10869,18 @@ done
         ;;
       esac
     done ;;
+
   esac
-done
-_ACEOF
+done # for ac_tag
 
-cat >>$CONFIG_STATUS <<\_ACEOF
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -15375,7 +10900,11 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
index eee44aa..c7b4591 100644 (file)
@@ -1,21 +1,20 @@
 @echo off\r
 rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,\r
-rem 2004, 2005, 2006 Free Software Foundation, Inc.\r
+rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
-\r
+rem\r
 rem GNU Make is free software; you can redistribute it and/or modify it under\r
 rem the terms of the GNU General Public License as published by the Free\r
-rem Software Foundation; either version 2, or (at your option) any later\r
-rem version.\r
-\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
 rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
 rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
 rem more details.\r
-\r
+rem\r
 rem You should have received a copy of the GNU General Public License along\r
-rem with GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
 echo Configuring MAKE for DJGPP\r
 \r
index a3a60a6..0b03617 100644 (file)
@@ -1,25 +1,26 @@
 # Process this file with autoconf to produce a configure script.
 #
 # Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([GNU make],[3.81],[bug-make@gnu.org])
+AC_INIT([GNU make],[3.82],[bug-make@gnu.org])
 
 AC_PREREQ(2.59)
-AC_REVISION([[$Id: configure.in,v 1.142 2006/04/01 06:36:40 psmith Exp $]])
+AC_REVISION([[$Id: configure.in,v 1.156 2010/07/28 05:39:50 psmith Exp $]])
 
 # Autoconf setup
 AC_CONFIG_AUX_DIR(config)
@@ -44,9 +45,6 @@ AC_AIX
 AC_ISC_POSIX
 AC_MINIX
 
-# Needed for ansi2knr
-AM_C_PROTOTYPES
-
 # Enable gettext, in "external" mode.
 
 AM_GNU_GETTEXT_VERSION(0.14.1)
@@ -71,7 +69,7 @@ AC_CHECK_HEADERS(stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
 # Set a flag if we have an ANSI C compiler
 if test "$ac_cv_prog_cc_stdc" != no; then
   AC_DEFINE(HAVE_ANSI_COMPILER, 1,
-             [Define if your compiler conforms to the ANSI C standard.])
+             [Define to 1 if your compiler conforms to the ANSI C standard.])
 fi
 
 
@@ -122,7 +120,7 @@ if test "$make_cv_file_timestamp_hi_res" = yes; then
   AC_SEARCH_LIBS(clock_gettime, [rt posix4])
   if test "$ac_cv_search_clock_gettime" != no; then
     AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
-             [Define if you have the clock_gettime function.])
+             [Define to 1 if you have the clock_gettime function.])
   fi
 fi
 
@@ -146,17 +144,27 @@ AC_CACHE_CHECK([for standard gettimeofday], ac_cv_func_gettimeofday,
                  [ac_cv_func_gettimeofday="no (cross-compiling)"])])
 if test "$ac_cv_func_gettimeofday" = yes; then
   AC_DEFINE(HAVE_GETTIMEOFDAY, 1,
-           [Define if you have a standard gettimeofday function])
+           [Define to 1 if you have a standard gettimeofday function])
 fi
 
-AC_CHECK_FUNCS(        memcpy memmove strchr strdup mkstemp mktemp fdopen \
-               bsd_signal dup2 getcwd realpath sigsetmask sigaction \
+AC_CHECK_FUNCS( strdup strndup mkstemp mktemp fdopen fileno \
+               dup2 getcwd realpath sigsetmask sigaction \
                 getgroups seteuid setegid setlinebuf setreuid setregid \
                 getrlimit setrlimit setvbuf pipe strerror strsignal \
                lstat readlink atexit)
 
+# We need to check declarations, not just existence, because on Tru64 this
+# function is not declared without special flags, which themselves cause
+# other problems.  We'll just use our own.
+AC_CHECK_DECLS([bsd_signal], [], [], [[#include <signal.h>]])
+
 AC_FUNC_SETVBUF_REVERSED
 
+# Rumor has it that strcasecmp lives in -lresolv on some odd systems.
+# It doesn't hurt much to use our own if we can't find it so I don't
+# make the effort here.
+AC_CHECK_FUNCS(strcasecmp strncasecmp strcmpi strncmpi stricmp strnicmp)
+
 # strcoll() is used by the GNU glob library
 AC_FUNC_STRCOLL
 
@@ -179,7 +187,7 @@ if test "$ac_cv_header_nlist_h" = yes; then
        [make_cv_nlist_struct=no])
   if test "$make_cv_nlist_struct" = yes; then
     AC_DEFINE(NLIST_STRUCT, 1,
-       [Define if struct nlist.n_name is a pointer rather than an array.])
+       [Define to 1 if struct nlist.n_name is a pointer rather than an array.])
   fi
 fi
 
@@ -194,7 +202,7 @@ AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
 
 
 # Check out the wait reality.
-AC_CHECK_HEADERS(sys/wait.h)
+AC_CHECK_HEADERS(sys/wait.h,,,[[#include <sys/types.h>]])
 AC_CHECK_FUNCS(waitpid wait3)
 AC_MSG_CHECKING(for union wait)
 AC_CACHE_VAL(make_cv_union_wait, [dnl
@@ -220,7 +228,7 @@ AC_CACHE_VAL(make_cv_union_wait, [dnl
     [make_cv_union_wait=no])])
 if test "$make_cv_union_wait" = yes; then
   AC_DEFINE(HAVE_UNION_WAIT, 1,
-            [Define this if you have the \`union wait' type in <sys/wait.h>.])
+            [Define to 1 if you have the \`union wait' type in <sys/wait.h>.])
 fi
 AC_MSG_RESULT($make_cv_union_wait)
 
@@ -228,7 +236,7 @@ AC_MSG_RESULT($make_cv_union_wait)
 # If we're building on Windows/DOS/OS/2, add some support for DOS drive specs.
 if test "$PATH_SEPARATOR" = ';'; then
   AC_DEFINE(HAVE_DOS_PATHS, 1,
-            [Define this if your system requires backslashes or drive specs in pathnames.])
+            [Define to 1 if your system requires backslashes or drive specs in pathnames.])
 fi
 
 
@@ -264,9 +272,10 @@ AM_CONDITIONAL(USE_CUSTOMS, test "$use_customs" = true)
 AH_TEMPLATE(HAVE_CASE_INSENSITIVE_FS, [Use case insensitive file names])
 AC_ARG_ENABLE(case-insensitive-file-system,
   AC_HELP_STRING([--enable-case-insensitive-file-system],
-                [enable case insensitive file system support]),
-  case_insensitive_fs="yes" AC_DEFINE(HAVE_CASE_INSENSITIVE_FS),
-  case_insensitive_fs="no")
+                [assume file systems are case insensitive]),
+  [case $enableval in
+     yes) AC_DEFINE(HAVE_CASE_INSENSITIVE_FS) ;;
+   esac])
 
 # See if we can handle the job server feature, and if the user wants it.
 
@@ -289,7 +298,7 @@ AC_CACHE_CHECK(for SA_RESTART, make_cv_sa_restart, [
 
 if test "$make_cv_sa_restart" != no; then
   AC_DEFINE(HAVE_SA_RESTART, 1,
-     [Define if <signal.h> defines the SA_RESTART constant.])
+     [Define to 1 if <signal.h> defines the SA_RESTART constant.])
 fi
 
 # enable make_cv_sa_restart for OS/2 so that the jobserver will be enabled,
@@ -301,7 +310,7 @@ esac
 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)
     AC_DEFINE(MAKE_JOBSERVER, 1,
-              [Define this to enable job server support in GNU make.]);;
+              [Define to 1 to enable job server support in GNU make.]);;
 esac
 
 # if we have both lstat() and readlink() then we can support symlink
@@ -309,7 +318,7 @@ esac
 case "$ac_cv_func_lstat/$ac_cv_func_readlink" in
   yes/yes)
     AC_DEFINE(MAKE_SYMLINKS, 1,
-              [Define this to enable symbolic link timestamp checking.]);;
+              [Define to 1 to enable symbolic link timestamp checking.]);;
 esac
 
 # Find the SCCS commands, so we can include them in our default rules.
@@ -336,14 +345,13 @@ if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
     fi])
   case "$make_cv_sys_get_minus_G" in
     yes) AC_DEFINE(SCCS_GET_MINUS_G, 1,
-           [Define this if the SCCS 'get' command understands the '-G<file>' option.]);;
+           [Define to 1 if the SCCS 'get' command understands the '-G<file>' option.]);;
   esac
 fi
 rm -f s.conftest conftoast
 
 # Check the system to see if it provides GNU glob.  If not, use our
 # local version.
-
 AC_MSG_CHECKING(if system libc has GNU glob)
 AC_CACHE_VAL(make_cv_sys_gnu_glob, [
  AC_EGREP_CPP(gnu glob,[
@@ -360,9 +368,14 @@ AC_CACHE_VAL(make_cv_sys_gnu_glob, [
 #endif
  ], [AC_MSG_RESULT(yes)
 make_cv_sys_gnu_glob=yes], [AC_MSG_RESULT([no; using local copy])
-AC_SUBST(GLOBINC) GLOBINC='-I$(srcdir)/glob'
-AC_SUBST(GLOBLIB) GLOBLIB=glob/libglob.a
 make_cv_sys_gnu_glob=no])])
+if test "$make_cv_sys_gnu_glob" = no; then
+  GLOBINC='-I$(srcdir)/glob'
+  GLOBLIB=glob/libglob.a
+fi
+AC_SUBST(GLOBINC)
+AC_SUBST(GLOBLIB)
+
 # Tell automake about this, so it can build the right .c files.
 AM_CONDITIONAL(USE_LOCAL_GLOB, test "$make_cv_sys_gnu_glob" = no)
 
@@ -384,6 +397,8 @@ case "$host" in
     ;;
 esac
 
+AC_DEFINE_UNQUOTED(PATH_SEPARATOR_CHAR,'$PATH_SEPARATOR',[Define to the character that separates directories in PATH.])
+
 # Include the Maintainer's Makefile section, if it's here.
 
 MAINT_MAKEFILE=/dev/null
diff --git a/debug.h b/debug.h
index 9b6ac07..3d20c87 100644 (file)
--- a/debug.h
+++ b/debug.h
@@ -1,19 +1,19 @@
 /* Debugging macros and interface.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define DB_NONE         (0x000)
 #define DB_BASIC        (0x001)
index 86f719a..4d6d984 100644 (file)
--- a/default.c
+++ b/default.c
@@ -1,20 +1,20 @@
 /* Data base of default implicit rules 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
@@ -41,11 +41,11 @@ static char default_suffixes[]
 .s .ss .i .ii .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
 .w .ch .cweb .web .com .sh .elc .el";
 #elif defined(__EMX__)
-  = ".out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \
+  = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
 .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
 .w .ch .web .sh .elc .el .obj .exe .dll .lib";
 #else
-  = ".out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \
+  = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
 .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
 .w .ch .web .sh .elc .el";
 #endif
@@ -192,6 +192,8 @@ static char *default_suffix_rules[] =
     "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@",
     ".f",
     "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@",
+    ".m",
+    "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@",
     ".p",
     "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@",
     ".F",
@@ -221,6 +223,8 @@ static char *default_suffix_rules[] =
     "$(COMPILE.cpp) $(OUTPUT_OPTION) $<",
     ".f.o",
     "$(COMPILE.f) $(OUTPUT_OPTION) $<",
+    ".m.o",
+    "$(COMPILE.m) $(OUTPUT_OPTION) $<",
     ".p.o",
     "$(COMPILE.p) $(OUTPUT_OPTION) $<",
     ".F.o",
@@ -249,15 +253,18 @@ static char *default_suffix_rules[] =
 #endif
     ".l.c",
     "@$(RM) $@ \n $(LEX.l) $< > $@",
+    ".ym.m",
+    "$(YACC.m) $< \n mv -f y.tab.c $@",
+    ".lm.m",
+    "@$(RM) $@ \n $(LEX.m) $< > $@",
 
     ".F.f",
     "$(PREPROCESS.F) $(OUTPUT_OPTION) $<",
     ".r.f",
     "$(PREPROCESS.r) $(OUTPUT_OPTION) $<",
 
-    /* This might actually make lex.yy.c if there's no %R%
-       directive in $*.l, but in that case why were you
-       trying to make $*.r anyway?  */
+    /* This might actually make lex.yy.c if there's no %R% directive in $*.l,
+       but in that case why were you trying to make $*.r anyway?  */
     ".l.r",
     "$(LEX.l) $< > $@ \n mv -f lex.yy.r $@",
 
@@ -302,7 +309,7 @@ static char *default_suffix_rules[] =
     0, 0,
   };
 
-static char *default_variables[] =
+static const char *default_variables[] =
   {
 #ifdef VMS
 #ifdef __ALPHA
@@ -398,9 +405,11 @@ static char *default_variables[] =
 # else
     "CXX", "gcc",
 # endif /* __MSDOS__ */
+    "OBJC", "gcc",
 #else
     "CC", "cc",
     "CXX", "g++",
+    "OBJC", "cc",
 #endif
 
     /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist,
@@ -468,6 +477,8 @@ static char *default_variables[] =
     "LINK.o", "$(CC) $(LDFLAGS) $(TARGET_ARCH)",
     "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
     "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
+    "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
+    "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
     "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
     "COMPILE.C", "$(COMPILE.cc)",
     "COMPILE.cpp", "$(COMPILE.cc)",
@@ -476,6 +487,8 @@ static char *default_variables[] =
     "LINK.cpp", "$(LINK.cc)",
     "YACC.y", "$(YACC) $(YFLAGS)",
     "LEX.l", "$(LEX) $(LFLAGS) -t",
+    "YACC.m", "$(YACC) $(YFLAGS)",
+    "LEX.m", "$(LEX) $(LFLAGS) -t",
     "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c",
     "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
     "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
@@ -522,40 +535,40 @@ static char *default_variables[] =
 void
 set_default_suffixes (void)
 {
-  suffix_file = enter_file (".SUFFIXES");
+  suffix_file = enter_file (strcache_add (".SUFFIXES"));
 
   if (no_builtin_rules_flag)
-    (void) define_variable ("SUFFIXES", 8, "", o_default, 0);
+    define_variable_cname ("SUFFIXES", "", o_default, 0);
   else
     {
       char *p = default_suffixes;
-      suffix_file->deps = (struct dep *)
-       multi_glob (parse_file_seq (&p, '\0', sizeof (struct dep), 1),
-                   sizeof (struct dep));
-      (void) define_variable ("SUFFIXES", 8, default_suffixes, o_default, 0);
+      suffix_file->deps = enter_prereqs(PARSE_FILE_SEQ (&p, struct dep, '\0',
+                                                        NULL, 0),
+                                        NULL);
+      define_variable_cname ("SUFFIXES", default_suffixes, o_default, 0);
     }
 }
 
 /* Enter the default suffix rules as file rules.  This used to be done in
    install_default_implicit_rules, but that loses because we want the
-   suffix rules installed before reading makefiles, and thee pattern rules
+   suffix rules installed before reading makefiles, and the pattern rules
    installed after.  */
 
 void
 install_default_suffix_rules (void)
 {
-  register char **s;
+  char **s;
 
   if (no_builtin_rules_flag)
     return;
 
- for (s = default_suffix_rules; *s != 0; s += 2)
 for (s = default_suffix_rules; *s != 0; s += 2)
     {
-      register struct file *f = enter_file (s[0]);
+      struct file *f = enter_file (strcache_add (s[0]));
       /* Don't clobber cmds given in a makefile if there were any.  */
       if (f->cmds == 0)
        {
-         f->cmds = (struct commands *) xmalloc (sizeof (struct commands));
+         f->cmds = xmalloc (sizeof (struct commands));
          f->cmds->fileinfo.filenm = 0;
          f->cmds->commands = s[1];
          f->cmds->command_lines = 0;
@@ -569,7 +582,7 @@ install_default_suffix_rules (void)
 void
 install_default_implicit_rules (void)
 {
-  register struct pspec *p;
+  struct pspec *p;
 
   if (no_builtin_rules_flag)
     return;
@@ -584,11 +597,11 @@ install_default_implicit_rules (void)
 void
 define_default_variables (void)
 {
-  register char **s;
+  const char **s;
 
   if (no_builtin_variables_flag)
     return;
 
   for (s = default_variables; *s != 0; s += 2)
-    (void) define_variable (s[0], strlen (s[0]), s[1], o_default, 1);
+    define_variable (s[0], strlen (s[0]), s[1], o_default, 1);
 }
diff --git a/dep.h b/dep.h
index f0923cc..c27423b 100644 (file)
--- a/dep.h
+++ b/dep.h
@@ -1,20 +1,20 @@
 /* Definitions of dependency data structures 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Flag bits for the second argument to `read_makefile'.
    These flags are saved in the `changed' field of each
@@ -36,13 +36,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 struct dep
   {
     struct dep *next;
-    char *name;
-    char *stem;
+    const char *name;
+    const char *stem;
     struct file *file;
     unsigned int changed : 8;
     unsigned int ignore_mtime : 1;
     unsigned int staticpattern : 1;
     unsigned int need_2nd_expansion : 1;
+    unsigned int dontcare : 1;
   };
 
 
@@ -51,35 +52,42 @@ struct dep
 struct nameseq
   {
     struct nameseq *next;
-    char *name;
+    const char *name;
   };
 
 
-extern struct nameseq *multi_glob PARAMS ((struct nameseq *chain, unsigned int size));
+#define PARSEFS_NONE    (0x0000)
+#define PARSEFS_NOSTRIP (0x0001)
+#define PARSEFS_NOAR    (0x0002)
+#define PARSEFS_NOGLOB  (0x0004)
+#define PARSEFS_EXISTS  (0x0008)
+#define PARSEFS_NOCACHE (0x0010)
+
+#define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \
+            (_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f))
+
 #ifdef VMS
-extern struct nameseq *parse_file_seq ();
+void *parse_file_seq ();
 #else
-extern struct nameseq *parse_file_seq PARAMS ((char **stringp, int stopchar, unsigned int size, int strip));
+void *parse_file_seq (char **stringp, unsigned int size,
+                      int stopchar, const char *prefix, int flags);
 #endif
-extern char *tilde_expand PARAMS ((char *name));
+
+char *tilde_expand (const char *name);
 
 #ifndef NO_ARCHIVES
-extern struct nameseq *ar_glob PARAMS ((char *arname, char *member_pattern, unsigned int size));
+struct nameseq *ar_glob (const char *arname, const char *member_pattern, unsigned int size);
 #endif
 
-#ifndef        iAPX286
-#define dep_name(d) ((d)->name == 0 ? (d)->file->name : (d)->name)
-#else
-/* Buggy compiler can't hack this.  */
-extern char *dep_name ();
-#endif
+#define dep_name(d)     ((d)->name == 0 ? (d)->file->name : (d)->name)
+
+#define alloc_dep()     (xcalloc (sizeof (struct dep)))
+#define free_ns(_n)     free (_n)
+#define free_dep(_d)    free_ns (_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));
-extern int eval_buffer PARAMS ((char *buffer));
-extern int update_goal_chain PARAMS ((struct dep *goals));
-extern void uniquize_deps PARAMS ((struct dep *));
+struct dep *copy_dep_chain (const struct dep *d);
+void free_dep_chain (struct dep *d);
+void free_ns_chain (struct nameseq *n);
+struct dep *read_all_makefiles (const char **makefiles);
+void eval_buffer (char *buffer);
+int update_goal_chain (struct dep *goals);
diff --git a/dir.c b/dir.c
index f72ce42..5529019 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1,20 +1,20 @@
 /* Directory hashing 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "hash.h"
@@ -23,7 +23,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 # include <dirent.h>
 # define NAMLEN(dirent) strlen((dirent)->d_name)
 # ifdef VMS
-extern char *vmsify PARAMS ((char *name, int type));
+/* its prototype is in vmsdir.h, which is not needed for HAVE_DIRENT_H */
+const char *vmsify (const char *name, int type);
 # endif
 #else
 # define dirent direct
@@ -67,8 +68,8 @@ extern char *vmsify PARAMS ((char *name, int type));
 #define _USE_LFN 0
 #endif
 
-static char *
-dosify (char *filename)
+static const char *
+dosify (const char *filename)
 {
   static char dos_filename[14];
   char *df;
@@ -117,24 +118,21 @@ dosify (char *filename)
 #endif
 
 #ifdef HAVE_CASE_INSENSITIVE_FS
-static char *
-downcase (char *filename)
+static const char *
+downcase (const char *filename)
 {
   static PATH_VAR (new_filename);
   char *df;
-  int i;
 
   if (filename == 0)
     return 0;
 
   df = new_filename;
-
-  /* First, transform the name part.  */
-  for (i = 0; *filename != '\0'; ++i)
-  {
-    *df++ = tolower ((unsigned char)*filename);
-    ++filename;
-  }
+  while (*filename != '\0')
+    {
+      *df++ = tolower ((unsigned char)*filename);
+      ++filename;
+    }
 
   *df = 0;
 
@@ -145,7 +143,7 @@ downcase (char *filename)
 #ifdef VMS
 
 static int
-vms_hash (char *name)
+vms_hash (const char *name)
 {
   int h = 0;
   int g;
@@ -171,7 +169,7 @@ vms_hash (char *name)
 
 /* fake stat entry for a directory */
 static int
-vmsstat_dir (char *name, struct stat *st)
+vmsstat_dir (const char *name, struct stat *st)
 {
   char *s;
   int h;
@@ -184,6 +182,7 @@ vmsstat_dir (char *name, struct stat *st)
   s = strchr (name, ':');      /* find device */
   if (s)
     {
+      /* to keep the compiler happy we said "const char *name", now we cheat */
       *s++ = 0;
       st->st_dev = (char *)vms_hash (name);
       h = vms_hash (s);
@@ -192,8 +191,7 @@ vmsstat_dir (char *name, struct stat *st)
   else
     {
       st->st_dev = 0;
-      s = name;
-      h = vms_hash (s);
+      h = vms_hash (name);
     }
 
   st->st_ino[0] = h & 0xff;
@@ -214,27 +212,24 @@ struct directory_contents
   {
     dev_t dev;                 /* Device and inode numbers of this dir.  */
 #ifdef WINDOWS32
-    /*
-     * Inode means nothing on WINDOWS32. Even file key information is
-     * unreliable because it is random per file open and undefined
-     * for remote filesystems. The most unique attribute I can
-     * come up with is the fully qualified name of the directory. Beware
-     * though, this is also unreliable. I'm open to suggestion on a better
-     * way to emulate inode.
-     */
+    /* Inode means nothing on WINDOWS32. Even file key information is
+     * unreliable because it is random per file open and undefined for remote
+     * filesystems. The most unique attribute I can come up with is the fully
+     * qualified name of the directory. Beware though, this is also
+     * unreliable. I'm open to suggestion on a better way to emulate inode.  */
     char *path_key;
     int   ctime;
     int   mtime;        /* controls check for stale directory cache */
     int   fs_flags;     /* FS_FAT, FS_NTFS, ... */
-#define FS_FAT      0x1
-#define FS_NTFS     0x2
-#define FS_UNKNOWN  0x4
+# define FS_FAT      0x1
+# define FS_NTFS     0x2
+# define FS_UNKNOWN  0x4
 #else
-#ifdef VMS
+# ifdef VMS
     ino_t ino[3];
-#else
+# else
     ino_t ino;
-#endif
+# endif
 #endif /* WINDOWS32 */
     struct hash_table dirfiles;        /* Files in this directory.  */
     DIR *dirstream;            /* Stream reading this directory.  */
@@ -243,7 +238,7 @@ struct directory_contents
 static unsigned long
 directory_contents_hash_1 (const void *key_0)
 {
-  struct directory_contents const *key = (struct directory_contents const *) key_0;
+  const struct directory_contents *key = key_0;
   unsigned long hash;
 
 #ifdef WINDOWS32
@@ -266,7 +261,7 @@ directory_contents_hash_1 (const void *key_0)
 static unsigned long
 directory_contents_hash_2 (const void *key_0)
 {
-  struct directory_contents const *key = (struct directory_contents const *) key_0;
+  const struct directory_contents *key = key_0;
   unsigned long hash;
 
 #ifdef WINDOWS32
@@ -301,8 +296,8 @@ directory_contents_hash_2 (const void *key_0)
 static int
 directory_contents_hash_cmp (const void *xv, const void *yv)
 {
-  struct directory_contents const *x = (struct directory_contents const *) xv;
-  struct directory_contents const *y = (struct directory_contents const *) yv;
+  const struct directory_contents *x = xv;
+  const struct directory_contents *y = yv;
   int result;
 
 #ifdef WINDOWS32
@@ -338,7 +333,7 @@ static struct hash_table directory_contents;
 
 struct directory
   {
-    char *name;                        /* Name of the directory.  */
+    const char *name;                  /* Name of the directory.  */
 
     /* The directory's contents.  This data may be shared by several
        entries in the hash table, which refer to the same directory
@@ -349,20 +344,20 @@ struct directory
 static unsigned long
 directory_hash_1 (const void *key)
 {
-  return_ISTRING_HASH_1 (((struct directory const *) key)->name);
+  return_ISTRING_HASH_1 (((const struct directory *) key)->name);
 }
 
 static unsigned long
 directory_hash_2 (const void *key)
 {
-  return_ISTRING_HASH_2 (((struct directory const *) key)->name);
+  return_ISTRING_HASH_2 (((const struct directory *) key)->name);
 }
 
 static int
 directory_hash_cmp (const void *x, const void *y)
 {
-  return_ISTRING_COMPARE (((struct directory const *) x)->name,
-                         ((struct directory const *) y)->name);
+  return_ISTRING_COMPARE (((const struct directory *) x)->name,
+                         ((const struct directory *) y)->name);
 }
 
 /* Table of directories hashed by name.  */
@@ -379,7 +374,7 @@ static unsigned int open_directories = 0;
 
 struct dirfile
   {
-    char *name;                        /* Name of the file.  */
+    const char *name;          /* Name of the file.  */
     short length;
     short impossible;          /* This file is impossible.  */
   };
@@ -399,8 +394,8 @@ dirfile_hash_2 (const void *key)
 static int
 dirfile_hash_cmp (const void *xv, const void *yv)
 {
-  struct dirfile const *x = ((struct dirfile const *) xv);
-  struct dirfile const *y = ((struct dirfile const *) yv);
+  const struct dirfile *x = xv;
+  const struct dirfile *y = yv;
   int result = x->length - y->length;
   if (result)
     return result;
@@ -411,17 +406,18 @@ dirfile_hash_cmp (const void *xv, const void *yv)
 #define DIRFILE_BUCKETS 107
 #endif
 \f
-static int dir_contents_file_exists_p PARAMS ((struct directory_contents *dir, char *filename));
-static struct directory *find_directory PARAMS ((char *name));
+static int dir_contents_file_exists_p (struct directory_contents *dir,
+                                       const char *filename);
+static struct directory *find_directory (const char *name);
 
 /* Find the directory named NAME and return its `struct directory'.  */
 
 static struct directory *
-find_directory (char *name)
+find_directory (const char *name)
 {
-  register char *p;
-  register struct directory *dir;
-  register struct directory **dir_slot;
+  const char *p;
+  struct directory *dir;
+  struct directory **dir_slot;
   struct directory dir_key;
   int r;
 #ifdef WINDOWS32
@@ -450,32 +446,39 @@ find_directory (char *name)
       /* The directory was not found.  Create a new entry for it.  */
 
       p = name + strlen (name);
-      dir = (struct directory *) xmalloc (sizeof (struct directory));
-      dir->name = savestring (name, p - name);
+      dir = xmalloc (sizeof (struct directory));
+#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS)
+      dir->name = strcache_add_len (downcase(name), p - name);
+#else
+      dir->name = strcache_add_len (name, p - name);
+#endif
       hash_insert_at (&directories, dir, dir_slot);
       /* The directory is not in the name hash table.
         Find its device and inode numbers, and look it up by them.  */
 
-#ifdef WINDOWS32
-      /* Remove any trailing '\'.  Windows32 stat fails even on valid
-         directories if they end in '\'. */
-      if (p[-1] == '\\')
-        p[-1] = '\0';
-#endif
-
 #ifdef VMS
       r = vmsstat_dir (name, &st);
+#elif defined(WINDOWS32)
+      {
+        char tem[MAXPATHLEN], *tstart, *tend;
+
+        /* Remove any trailing slashes.  Windows32 stat fails even on
+           valid directories if they end in a slash. */
+        memcpy (tem, name, p - name + 1);
+        tstart = tem;
+        if (tstart[1] == ':')
+          tstart += 2;
+        for (tend = tem + (p - name - 1);
+             tend > tstart && (*tend == '/' || *tend == '\\');
+             tend--)
+          *tend = '\0';
+
+        r = stat (tem, &st);
+      }
 #else
       EINTRLOOP (r, stat (name, &st));
 #endif
 
-#ifdef WINDOWS32
-      /* Put back the trailing '\'.  If we don't, we're permanently
-         truncating the value!  */
-      if (p[-1] == '\0')
-        p[-1] = '\\';
-#endif
-
       if (r < 0)
         {
        /* Couldn't stat the directory.  Mark this by
@@ -549,8 +552,8 @@ find_directory (char *name)
              hash_insert_at (&directory_contents, dc, dc_slot);
              ENULLLOOP (dc->dirstream, opendir (name));
              if (dc->dirstream == 0)
-                /* Couldn't open the directory.  Mark this by
-                   setting the `files' member to a nil pointer.  */
+                /* Couldn't open the directory.  Mark this by setting the
+                   `files' member to a nil pointer.  */
                 dc->dirfiles.ht_vec = 0;
              else
                {
@@ -561,7 +564,7 @@ find_directory (char *name)
                  if (open_directories == MAX_OPEN_DIRECTORIES)
                    /* We have too many directories open already.
                       Read the entire directory and then close it.  */
-                   (void) dir_contents_file_exists_p (dc, (char *) 0);
+                   dir_contents_file_exists_p (dc, 0);
                }
            }
 
@@ -577,7 +580,8 @@ find_directory (char *name)
    FILENAME must contain no slashes.  */
 
 static int
-dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
+dir_contents_file_exists_p (struct directory_contents *dir,
+                            const char *filename)
 {
   unsigned int hash;
   struct dirfile *df;
@@ -588,10 +592,9 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
 #endif
 
   if (dir == 0 || dir->dirfiles.ht_vec == 0)
-    {
     /* The directory could not be stat'd or opened.  */
-      return 0;
-    }
+    return 0;
+
 #ifdef __MSDOS__
   filename = dosify (filename);
 #endif
@@ -621,11 +624,9 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
        }
       dirfile_key.name = filename;
       dirfile_key.length = strlen (filename);
-      df = (struct dirfile *) hash_find_item (&dir->dirfiles, &dirfile_key);
+      df = hash_find_item (&dir->dirfiles, &dirfile_key);
       if (df)
-       {
-         return !df->impossible;
-       }
+        return !df->impossible;
     }
 
   /* The file was not found in the hashed list.
@@ -646,7 +647,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
              dir->mtime = time ((time_t *) 0);
              rehash = 1;
            }
-         else if (stat(dir->path_key, &st) == 0 && st.st_mtime > dir->mtime)
+         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;
@@ -658,7 +659,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
            return 0;
 
           /* make sure directory can still be opened; if not return.  */
-          dir->dirstream = opendir(dir->path_key);
+          dir->dirstream = opendir (dir->path_key);
           if (!dir->dirstream)
             return 0;
        }
@@ -677,7 +678,11 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
 
       ENULLLOOP (d, readdir (dir->dirstream));
       if (d == 0)
-        break;
+        {
+          if (errno)
+            fatal (NILF, "INTERNAL: readdir: %s\n", strerror (errno));
+          break;
+        }
 
 #if defined(VMS) && defined(HAVE_DIRENT_H)
       /* In VMS we get file versions too, which have to be stripped off */
@@ -702,17 +707,19 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
       if (! rehash || HASH_VACANT (*dirfile_slot))
 #endif
        {
-         df = (struct dirfile *) xmalloc (sizeof (struct dirfile));
-         df->name = savestring (d->d_name, len);
+         df = xmalloc (sizeof (struct dirfile));
+#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS)
+          df->name = strcache_add_len (downcase(d->d_name), len);
+#else
+         df->name = strcache_add_len (d->d_name, len);
+#endif
          df->length = len;
          df->impossible = 0;
          hash_insert_at (&dir->dirfiles, df, dirfile_slot);
        }
       /* Check if the name matches the one we're searching for.  */
-      if (filename != 0 && strieq (d->d_name, filename))
-       {
-         return 1;
-       }
+      if (filename != 0 && patheq (d->d_name, filename))
+        return 1;
     }
 
   /* If the directory has been completely read in,
@@ -731,7 +738,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, char *filename)
    FILENAME must contain no slashes.  */
 
 int
-dir_file_exists_p (char *dirname, char *filename)
+dir_file_exists_p (const char *dirname, const char *filename)
 {
   return dir_contents_file_exists_p (find_directory (dirname)->contents,
                                     filename);
@@ -740,11 +747,11 @@ dir_file_exists_p (char *dirname, char *filename)
 /* Return 1 if the file named NAME exists.  */
 
 int
-file_exists_p (char *name)
+file_exists_p (const char *name)
 {
-  char *dirend;
-  char *dirname;
-  char *slash;
+  const char *dirend;
+  const char *dirname;
+  const char *slash;
 
 #ifndef        NO_ARCHIVES
   if (ar_name (name))
@@ -755,14 +762,14 @@ file_exists_p (char *name)
   dirend = strrchr (name, ']');
   if (dirend == 0)
     dirend = strrchr (name, ':');
-  if (dirend == (char *)0)
+  if (dirend == 0)
     return dir_file_exists_p ("[]", name);
 #else /* !VMS */
   dirend = strrchr (name, '/');
 #ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    char *bslash = strrchr(name, '\\');
+    const char *bslash = strrchr(name, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -783,15 +790,17 @@ file_exists_p (char *name)
     dirname = "/";
   else
     {
+      char *p;
 #ifdef HAVE_DOS_PATHS
   /* d:/ and d: are *very* different...  */
       if (dirend < name + 3 && name[1] == ':' &&
          (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
        dirend++;
 #endif
-      dirname = (char *) alloca (dirend - name + 1);
-      bcopy (name, dirname, dirend - name);
-      dirname[dirend - name] = '\0';
+      p = alloca (dirend - name + 1);
+      memcpy (p, name, dirend - name);
+      p[dirend - name] = '\0';
+      dirname = p;
     }
   return dir_file_exists_p (dirname, slash + 1);
 }
@@ -801,12 +810,12 @@ file_exists_p (char *name)
    as an intermediate file, and it has failed.  */
 
 void
-file_impossible (char *filename)
+file_impossible (const char *filename)
 {
-  char *dirend;
-  register char *p = filename;
-  register struct directory *dir;
-  register struct dirfile *new;
+  const char *dirend;
+  const char *p = filename;
+  struct directory *dir;
+  struct dirfile *new;
 
 #ifdef VMS
   dirend = strrchr (p, ']');
@@ -820,7 +829,7 @@ file_impossible (char *filename)
 # ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    char *bslash = strrchr(p, '\\');
+    const char *bslash = strrchr(p, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -837,34 +846,32 @@ file_impossible (char *filename)
 #endif /* VMS */
   else
     {
-      char *dirname;
-      char *slash = dirend;
+      const char *dirname;
+      const char *slash = dirend;
       if (dirend == p)
        dirname = "/";
       else
        {
+          char *cp;
 #ifdef HAVE_DOS_PATHS
          /* d:/ and d: are *very* different...  */
          if (dirend < p + 3 && p[1] == ':' &&
              (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
            dirend++;
 #endif
-         dirname = (char *) alloca (dirend - p + 1);
-         bcopy (p, dirname, dirend - p);
-         dirname[dirend - p] = '\0';
+         cp = alloca (dirend - p + 1);
+         memcpy (cp, p, dirend - p);
+         cp[dirend - p] = '\0';
+          dirname = cp;
        }
       dir = find_directory (dirname);
       filename = p = slash + 1;
     }
 
   if (dir->contents == 0)
-    {
-      /* The directory could not be stat'd.  We allocate a contents
-        structure for it, but leave it out of the contents hash table.  */
-      dir->contents = (struct directory_contents *)
-       xmalloc (sizeof (struct directory_contents));
-      bzero ((char *) dir->contents, sizeof (struct directory_contents));
-    }
+    /* The directory could not be stat'd.  We allocate a contents
+       structure for it, but leave it out of the contents hash table.  */
+    dir->contents = xcalloc (sizeof (struct directory_contents));
 
   if (dir->contents->dirfiles.ht_vec == 0)
     {
@@ -874,9 +881,13 @@ file_impossible (char *filename)
 
   /* Make a new entry and put it in the table.  */
 
-  new = (struct dirfile *) xmalloc (sizeof (struct dirfile));
-  new->name = xstrdup (filename);
+  new = xmalloc (sizeof (struct dirfile));
   new->length = strlen (filename);
+#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS)
+  new->name = strcache_add_len (downcase(filename), new->length);
+#else
+  new->name = strcache_add_len (filename, new->length);
+#endif
   new->impossible = 1;
   hash_insert (&dir->contents->dirfiles, new);
 }
@@ -884,12 +895,12 @@ file_impossible (char *filename)
 /* Return nonzero if FILENAME has been marked impossible.  */
 
 int
-file_impossible_p (char *filename)
+file_impossible_p (const char *filename)
 {
-  char *dirend;
-  register char *p = filename;
-  register struct directory_contents *dir;
-  register struct dirfile *dirfile;
+  const char *dirend;
+  const char *p = filename;
+  struct directory_contents *dir;
+  struct dirfile *dirfile;
   struct dirfile dirfile_key;
 
 #ifdef VMS
@@ -901,7 +912,7 @@ file_impossible_p (char *filename)
 #ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    char *bslash = strrchr(filename, '\\');
+    const char *bslash = strrchr(filename, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -918,21 +929,23 @@ file_impossible_p (char *filename)
 #endif /* VMS */
   else
     {
-      char *dirname;
-      char *slash = dirend;
+      const char *dirname;
+      const char *slash = dirend;
       if (dirend == filename)
        dirname = "/";
       else
        {
+          char *cp;
 #ifdef HAVE_DOS_PATHS
          /* d:/ and d: are *very* different...  */
          if (dirend < filename + 3 && filename[1] == ':' &&
              (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
            dirend++;
 #endif
-         dirname = (char *) alloca (dirend - filename + 1);
-         bcopy (p, dirname, dirend - p);
-         dirname[dirend - p] = '\0';
+         cp = alloca (dirend - filename + 1);
+         memcpy (cp, p, dirend - p);
+         cp[dirend - p] = '\0';
+          dirname = cp;
        }
       dir = find_directory (dirname)->contents;
       p = filename = slash + 1;
@@ -954,7 +967,7 @@ file_impossible_p (char *filename)
 
   dirfile_key.name = filename;
   dirfile_key.length = strlen (filename);
-  dirfile = (struct dirfile *) hash_find_item (&dir->dirfiles, &dirfile_key);
+  dirfile = hash_find_item (&dir->dirfiles, &dirfile_key);
   if (dirfile)
     return dirfile->impossible;
 
@@ -964,8 +977,8 @@ file_impossible_p (char *filename)
 /* Return the already allocated name in the
    directory hash table that matches DIR.  */
 
-char *
-dir_name (char *dir)
+const char *
+dir_name (const char *dir)
 {
   return find_directory (dir)->name;
 }
@@ -975,10 +988,10 @@ dir_name (char *dir)
 void
 print_dir_data_base (void)
 {
-  register unsigned int files;
-  register unsigned int impossible;
-  register struct directory **dir_slot;
-  register struct directory **dir_end;
+  unsigned int files;
+  unsigned int impossible;
+  struct directory **dir_slot;
+  struct directory **dir_end;
 
   puts (_("\n# Directories\n"));
 
@@ -988,7 +1001,7 @@ print_dir_data_base (void)
   dir_end = dir_slot + directories.ht_size;
   for ( ; dir_slot < dir_end; dir_slot++)
     {
-      register struct directory *dir = *dir_slot;
+      struct directory *dir = *dir_slot;
       if (! HASH_VACANT (dir))
        {
          if (dir->contents == 0)
@@ -1013,16 +1026,16 @@ print_dir_data_base (void)
            }
          else
            {
-             register unsigned int f = 0;
-             register unsigned int im = 0;
-             register struct dirfile **files_slot;
-             register struct dirfile **files_end;
+             unsigned int f = 0;
+             unsigned int im = 0;
+             struct dirfile **files_slot;
+             struct dirfile **files_end;
 
              files_slot = (struct dirfile **) dir->contents->dirfiles.ht_vec;
              files_end = files_slot + dir->contents->dirfiles.ht_size;
              for ( ; files_slot < files_end; files_slot++)
                {
-                 register struct dirfile *df = *files_slot;
+                 struct dirfile *df = *files_slot;
                  if (! HASH_VACANT (df))
                    {
                      if (df->impossible)
@@ -1092,14 +1105,14 @@ struct dirstream
   };
 
 /* Forward declarations.  */
-static __ptr_t open_dirstream PARAMS ((const char *));
-static struct dirent *read_dirstream PARAMS ((__ptr_t));
+static __ptr_t open_dirstream (const char *);
+static struct dirent *read_dirstream (__ptr_t);
 
 static __ptr_t
 open_dirstream (const char *directory)
 {
   struct dirstream *new;
-  struct directory *dir = find_directory ((char *)directory);
+  struct directory *dir = find_directory (directory);
 
   if (dir->contents == 0 || dir->contents->dirfiles.ht_vec == 0)
     /* DIR->contents is nil if the directory could not be stat'd.
@@ -1109,9 +1122,9 @@ open_dirstream (const char *directory)
   /* Read all the contents of the directory now.  There is no benefit
      in being lazy, since glob will want to see every file anyway.  */
 
-  (void) dir_contents_file_exists_p (dir->contents, (char *) 0);
+  dir_contents_file_exists_p (dir->contents, 0);
 
-  new = (struct dirstream *) xmalloc (sizeof (struct dirstream));
+  new = xmalloc (sizeof (struct dirstream));
   new->contents = dir->contents;
   new->dirfile_slot = (struct dirfile **) new->contents->dirfiles.ht_vec;
 
@@ -1121,29 +1134,28 @@ open_dirstream (const char *directory)
 static struct dirent *
 read_dirstream (__ptr_t stream)
 {
+  static char *buf;
+  static unsigned int bufsz;
+
   struct dirstream *const ds = (struct dirstream *) stream;
   struct directory_contents *dc = ds->contents;
   struct dirfile **dirfile_end = (struct dirfile **) dc->dirfiles.ht_vec + dc->dirfiles.ht_size;
-  static char *buf;
-  static unsigned int bufsz;
 
   while (ds->dirfile_slot < dirfile_end)
     {
-      register struct dirfile *df = *ds->dirfile_slot++;
+      struct dirfile *df = *ds->dirfile_slot++;
       if (! HASH_VACANT (df) && !df->impossible)
        {
-         /* The glob interface wants a `struct dirent',
-            so mock one up.  */
+         /* The glob interface wants a `struct dirent', so mock one up.  */
          struct dirent *d;
          unsigned int len = df->length + 1;
-         if (sizeof *d - sizeof d->d_name + len > bufsz)
+          unsigned int sz = sizeof (*d) - sizeof (d->d_name) + len;
+         if (sz > bufsz)
            {
-             if (buf != 0)
-               free (buf);
              bufsz *= 2;
-             if (sizeof *d - sizeof d->d_name + len > bufsz)
-               bufsz = sizeof *d - sizeof d->d_name + len;
-             buf = xmalloc (bufsz);
+             if (sz > bufsz)
+               bufsz = sz;
+             buf = xrealloc (buf, bufsz);
            }
          d = (struct dirent *) buf;
 #ifdef __MINGW32__
@@ -1180,7 +1192,7 @@ ansi_free (void *p)
  */
 #ifndef stat
 # ifndef VMS
-extern int stat PARAMS ((const char *path, struct stat *sbuf));
+int stat (const char *path, struct stat *sbuf);
 # endif
 # define local_stat stat
 #else
@@ -1197,7 +1209,6 @@ local_stat (const char *path, struct stat *buf)
 void
 dir_setup_glob (glob_t *gl)
 {
-  /* Bogus sunos4 compiler complains (!) about & before functions.  */
   gl->gl_opendir = open_dirstream;
   gl->gl_readdir = read_dirstream;
   gl->gl_closedir = ansi_free;
@@ -1212,5 +1223,6 @@ hash_init_directories (void)
   hash_init (&directories, DIRECTORY_BUCKETS,
             directory_hash_1, directory_hash_2, directory_hash_cmp);
   hash_init (&directory_contents, DIRECTORY_BUCKETS,
-            directory_contents_hash_1, directory_contents_hash_2, directory_contents_hash_cmp);
+            directory_contents_hash_1, directory_contents_hash_2,
+             directory_contents_hash_cmp);
 }
index 9ed67e1..67eec3a 100644 (file)
@@ -1,19 +1,20 @@
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+# 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 TEXI2HTML = texi2html
 TEXI2HTML_FLAGS = -split_chapter
index 3057f74..a1089bc 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
 @SET_MAKE@
 
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+# 2010 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 3 of the License, 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.
+# 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@
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -59,6 +58,7 @@ DIST_COMMON = $(make_TEXINFOS) $(srcdir)/Makefile.am \
 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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -69,6 +69,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 INFO_DEPS = $(srcdir)/make.info
@@ -85,11 +86,30 @@ MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
 DVIPS = dvips
 am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 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@
@@ -113,6 +133,8 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -129,6 +151,7 @@ LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
 MSGMERGE = @MSGMERGE@
@@ -139,6 +162,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
@@ -148,21 +172,14 @@ 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@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 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@
@@ -174,28 +191,40 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 TEXI2HTML = texi2html
 TEXI2HTML_FLAGS = -split_chapter
 info_TEXINFOS = make.texi
@@ -209,14 +238,14 @@ $(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; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  doc/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -234,10 +263,11 @@ $(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
+$(am__aclocal_m4_deps):
 
 .texi.info:
        restore=: && backupdir="$(am__leading_dot)am$$$$" && \
-       am__cwd=`pwd` && cd $(srcdir) && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
        rm -rf $$backupdir && mkdir $$backupdir && \
        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 \
@@ -249,10 +279,10 @@ $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
         -o $@ $<; \
        then \
          rc=0; \
-         cd $(srcdir); \
+         $(am__cd) $(srcdir); \
        else \
          rc=$$?; \
-         cd $(srcdir) && \
+         $(am__cd) $(srcdir) && \
          $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
        fi; \
        rm -rf $$backupdir; exit $$rc
@@ -307,15 +337,35 @@ maintainer-clean-vti:
        TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
        $(DVIPS) -o $@ $<
 
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
 uninstall-info-am:
        @$(PRE_UNINSTALL)
-       @if (install-info --version && \
+       @if test -d '$(DESTDIR)$(infodir)' && \
+           (install-info --version && \
             install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
          list='$(INFO_DEPS)'; \
          for file in $$list; do \
            relfile=`echo "$$file" | sed 's|^.*/||'`; \
            echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
-           install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
          done; \
        else :; fi
        @$(NORMAL_UNINSTALL)
@@ -323,12 +373,30 @@ uninstall-info-am:
        for file in $$list; do \
          relfile=`echo "$$file" | sed 's|^.*/||'`; \
          relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
-         (if cd "$(DESTDIR)$(infodir)"; then \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
             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); \
        done
 
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
 dist-info: $(INFO_DEPS)
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        list='$(INFO_DEPS)'; \
@@ -337,17 +405,23 @@ dist-info: $(INFO_DEPS)
            $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
          esac; \
          if test -f $$base; then d=.; else d=$(srcdir); fi; \
-         for file in $$d/$$base*; do \
-           relfile=`expr "$$file" : "$$d/\(.*\)"`; \
-           test -f $(distdir)/$$relfile || \
-             cp -p $$file $(distdir)/$$relfile; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
          done; \
        done
 
 mostlyclean-aminfo:
-       -rm -rf make.aux make.cp make.cps make.fn make.fns make.ky make.kys make.log \
-         make.pg make.tmp make.toc make.tp make.tps make.vr make.dvi \
-         make.pdf make.ps make.html
+       -rm -rf make.aux make.cp make.cps make.fn make.fns make.ky make.kys \
+         make.log make.pg make.tmp make.toc make.tp make.tps make.vr
+
+clean-aminfo:
+       -test -z "make.dvi make.pdf make.ps make.html" \
+       || rm -rf make.dvi make.pdf make.ps make.html
 
 maintainer-clean-aminfo:
        @list='$(INFO_DEPS)'; for i in $$list; do \
@@ -363,29 +437,32 @@ CTAGS:
 
 
 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; \
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -397,7 +474,7 @@ check: check-am
 all-am: Makefile $(INFO_DEPS)
 installdirs:
        for dir in "$(DESTDIR)$(infodir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -420,13 +497,14 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am
+clean-am: clean-aminfo clean-generic mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
@@ -444,15 +522,52 @@ info-am: $(INFO_DEPS)
 
 install-data-am: install-info-am
 
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+         if test -d "$$d$$p"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d$$p"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
 install-info: install-info-am
 
 install-info-am: $(INFO_DEPS)
        @$(NORMAL_INSTALL)
-       test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
+       test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       list='$(INFO_DEPS)'; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
        for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
@@ -460,18 +575,19 @@ install-info-am: $(INFO_DEPS)
          if test -f $$file; then d=.; else d=$(srcdir); fi; \
          file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
          for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
-                       $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
            if test -f $$ifile; then \
-             relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
-             echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
-             $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+             echo "$$ifile"; \
            else : ; fi; \
          done; \
-       done
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
        @$(POST_INSTALL)
        @if (install-info --version && \
             install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
-         list='$(INFO_DEPS)'; \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
          for file in $$list; do \
            relfile=`echo "$$file" | sed 's|^.*/||'`; \
            echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
@@ -480,6 +596,32 @@ install-info-am: $(INFO_DEPS)
        else : ; fi
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -499,17 +641,24 @@ ps: ps-am
 
 ps-am: $(PSS)
 
-uninstall-am: uninstall-info-am
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-pdf-am uninstall-ps-am
 
-.PHONY: all all-am check check-am clean clean-generic dist-info \
-       distclean distclean-generic 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-aminfo \
-       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
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
+       dist-info distclean distclean-generic distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \
+       uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
+       uninstall-info-am uninstall-pdf-am uninstall-ps-am
 
 
 html: make_1.html
@@ -518,6 +667,7 @@ make_1.html: $(info_TEXINFOS) $(make_TEXINFOS)
        $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(srcdir)/make.texi
 
 .PHONY: html
+
 # 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 fe78df8..fc19ddd 100644 (file)
@@ -1,13 +1,12 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
 
-@node GNU Free Documentation License
-@appendixsec GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
-@center Version 1.2, November 2002
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
 
 @display
-Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
@@ -93,16 +92,16 @@ 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},
-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
+ASCII without markup, Texinfo input format, La@TeX{} input
+format, SGML or XML using a publicly available
+DTD, and 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,
@@ -112,6 +111,9 @@ formats which do not have any title page as such, ``Title Page'' means
 the text near the most prominent appearance of the work's title,
 preceding the beginning of the body of the text.
 
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
 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
@@ -380,13 +382,30 @@ title.
 @item
 TERMINATION
 
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
 
 @item
 FUTURE REVISIONS OF THIS LICENSE
@@ -404,11 +423,46 @@ following the terms and conditions either of that specified version or
 of any later version that has been published (not as a draft) by the
 Free Software Foundation.  If the Document does not specify a version
 number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
 @end enumerate
 
 @page
-@appendixsubsec ADDENDUM: How to use this License for your documents
+@heading ADDENDUM: How to use this License for your documents
 
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
@@ -418,7 +472,7 @@ license notices just after the title page:
 @group
   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.2
+  under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   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
@@ -427,7 +481,7 @@ license notices just after the title page:
 @end smallexample
 
 If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with...Texts.'' line with this:
+replace the ``with@dots{}Texts.'' line with this:
 
 @smallexample
 @group
index cd9f062..7cc9537 100644 (file)
@@ -3,16 +3,15 @@
 
 @node Makefile Conventions
 @chapter Makefile Conventions
-@comment standards.texi does not print an index, but make.texinfo does.
 @cindex makefile, conventions for
 @cindex conventions for makefiles
 @cindex standards for makefiles
 
-@c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
-@c 2004, 2005 Free Software Foundation, Inc.
-
+@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
+@c 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
+@c
 @c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.1
+@c under the terms of the GNU Free Documentation License, Version 1.3
 @c or any later version published by the Free Software Foundation;
 @c with no Invariant Sections, with no
 @c Front-Cover Texts, and with no Back-Cover Texts.
@@ -33,14 +32,18 @@ chapter
 @end iftex
 describes conventions for writing the Makefiles for GNU programs.
 Using Automake will help you write a Makefile that follows these
-conventions.
+conventions.  For more information on portable Makefiles, see
+@sc{posix} and @ref{Portable Make, Portable Make Programming,, autoconf,
+Autoconf}.
+
 
 @menu
-* 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
+* Makefile Basics::             General conventions for Makefiles.
+* Utilities in Makefiles::      Utilities to be used in Makefiles.
+* Command Variables::           Variables for specifying commands.
+* DESTDIR::                     Supporting staged installs.
+* Directory Variables::         Variables for installation directories.
+* Standard Targets::            Standard targets for users.
 * Install Command Categories::  Three categories of commands in the `install'
                                   rule: normal, pre-install and post-install.
 @end menu
@@ -87,7 +90,7 @@ to @file{configure}.  A rule of the form:
 
 @smallexample
 foo.1 : foo.man sedscript
-        sed -e sedscript foo.man > foo.1
+        sed -f sedscript foo.man > foo.1
 @end smallexample
 
 @noindent
@@ -121,7 +124,7 @@ way to make the rule work well.  For example, the target above for
 
 @smallexample
 foo.1 : foo.man sedscript
-        sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@@
+        sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@@
 @end smallexample
 
 GNU distributions usually contain some files which are not source
@@ -143,8 +146,10 @@ subtargets) work correctly with a parallel @code{make}.
 @section Utilities in Makefiles
 
 Write the Makefile commands (and any shell scripts, such as
-@code{configure}) to run in @code{sh}, not in @code{csh}.  Don't use any
-special features of @code{ksh} or @code{bash}.
+@code{configure}) to run under @code{sh} (both the traditional Bourne
+shell and the @sc{posix} shell), not @code{csh}.  Don't use any
+special features of @code{ksh} or @code{bash}, or @sc{posix} features
+not widely supported in traditional Bourne @code{sh}.
 
 The @code{configure} script and the Makefile rules for building and
 installation should not use any utilities directly except these:
@@ -154,18 +159,23 @@ installation should not use any utilities directly except these:
 @c mkfifo mknod tee uname
 
 @example
-cat cmp cp diff echo egrep expr false grep install-info
-ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
+awk cat cmp cp diff echo egrep expr false grep install-info ln ls
+mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true
 @end example
 
-The compression program @code{gzip} can be used in the @code{dist} rule.
+Compression programs such as @code{gzip} can be used in the
+@code{dist} rule.
+
+Generally, stick to the widely-supported (usually
+@sc{posix}-specified) options and features of these programs.  For
+example, don't use @samp{mkdir -p}, convenient as it may be, because a
+few systems don't support it at all and with others, it is not safe
+for parallel execution.  For a list of known incompatibilities, see
+@ref{Portable Shell, Portable Shell Programming,, autoconf, Autoconf}.
 
-Stick to the generally supported options for these programs.  For
-example, don't use @samp{mkdir -p}, convenient as it may be, because
-most systems don't support it.
 
 It is a good idea to avoid creating symbolic links in makefiles, since a
-few systems don't support them.
+few file systems don't support them.
 
 The Makefile rules for building and installation can also use compilers
 and related programs, but should do so via @code{make} variables so that the
@@ -263,30 +273,81 @@ Every Makefile should also define the variables @code{INSTALL_PROGRAM}
 and @code{INSTALL_DATA}.  (The default for @code{INSTALL_PROGRAM} should
 be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
 @code{$@{INSTALL@} -m 644}.)  Then it should use those variables as the
-commands for actual installation, for executables and nonexecutables
-respectively.  Use these variables as follows:
+commands for actual installation, for executables and non-executables
+respectively.  Minimal use of these variables is as follows:
 
 @example
 $(INSTALL_PROGRAM) foo $(bindir)/foo
 $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
 @end example
 
-Optionally, you may prepend the value of @code{DESTDIR} to the target
-filename.  Doing this allows the installer to create a snapshot of the
-installation to be copied onto the real target filesystem later.  Do not
-set the value of @code{DESTDIR} in your Makefile, and do not include it
-in any installed files.  With support for @code{DESTDIR}, the above
-examples become:
+However, it is preferable to support a @code{DESTDIR} prefix on the
+target files, as explained in the next section.
+
+It is acceptable, but not required, to install multiple files in one
+command, with the final argument being a directory, as in:
+
+@example
+$(INSTALL_PROGRAM) foo bar baz $(bindir)
+@end example
+
+
+@node DESTDIR
+@section @code{DESTDIR}: Support for Staged Installs
+
+@vindex DESTDIR
+@cindex staged installs
+@cindex installations, staged
+
+@code{DESTDIR} is a variable prepended to each installed target file,
+like this:
 
 @example
 $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
 $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
 @end example
 
+The @code{DESTDIR} variable is specified by the user on the @code{make}
+command line as an absolute file name.  For example:
+
+@example
+make DESTDIR=/tmp/stage install
+@end example
+
 @noindent
-Always use a file name, not a directory name, as the second argument of
-the installation commands.  Use a separate command for each file to be
-installed.
+@code{DESTDIR} should be supported only in the @code{install*} and
+@code{uninstall*} targets, as those are the only targets where it is
+useful.
+
+If your installation step would normally install
+@file{/usr/local/bin/foo} and @file{/usr/@/local/@/lib/@/libfoo.a}, then an
+installation invoked as in the example above would install
+@file{/tmp/stage/usr/local/bin/foo} and
+@file{/tmp/stage/usr/local/lib/libfoo.a} instead.
+
+Prepending the variable @code{DESTDIR} to each target in this way
+provides for @dfn{staged installs}, where the installed files are not
+placed directly into their expected location but are instead copied
+into a temporary location (@code{DESTDIR}).  However, installed files
+maintain their relative directory structure and any embedded file names
+will not be modified.
+
+You should not set the value of @code{DESTDIR} in your @file{Makefile}
+at all; then the files are installed into their expected locations by
+default.  Also, specifying @code{DESTDIR} should not change the
+operation of the software in any way, so its value should not be
+included in any file contents.
+
+@code{DESTDIR} support is commonly used in package creation.  It is
+also helpful to users who want to understand what a given package will
+install where, and to allow users who don't normally have permissions
+to install into protected areas to build and install before gaining
+those permissions.  Finally, it can be useful with tools such as
+@code{stow}, where code is installed in one place but made to appear
+to be installed somewhere else using symbolic links or special mount
+operations.  So, we strongly recommend GNU packages support
+@code{DESTDIR}, though it is not an absolute requirement.
+
 
 @node Directory Variables
 @section Variables for Installation Directories
@@ -294,7 +355,7 @@ installed.
 Installation directories should always be named by variables, so it is
 easy to install in a nonstandard place.  The standard names for these
 variables and the values they should have in GNU packages are
-described below.  They are based on a standard filesystem layout;
+described below.  They are based on a standard file system layout;
 variants of it are used in GNU/Linux and other modern operating
 systems.
 
@@ -306,9 +367,15 @@ 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
-installation directories should be subdirectories of one of these two,
-and nothing should be directly installed into these two directories.
+@cindex directories, creating installation
+@cindex installation directories, creating
+All installation directories, and their parent directories, should be
+created (if necessary) before they are installed into.
+
+These first two variables set the root for the installation.  All the
+other installation directories should be subdirectories of one of
+these two, and nothing should be directly installed into these two
+directories.
 
 @table @code
 @item prefix
@@ -411,9 +478,11 @@ 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.
 
+@c raggedright  (not until next Texinfo release)
 This should normally be @file{/usr/local/share}, but write it as
 @file{$(datarootdir)}.  (If you are using Autoconf, write it as
 @samp{@@datadir@@}.)
+@c end raggedright
 
 The definition of @samp{datadir} is the same for all packages, so you
 should install your data in a subdirectory thereof.  Most packages
@@ -458,7 +527,6 @@ need @samp{libdir} or @samp{lispdir}.
 
 @table @samp
 @item includedir
-@c rewritten to avoid overfull hbox --roland
 The directory for installing header files to be included by user
 programs with the C @samp{#include} preprocessor directive.  This
 should normally be @file{/usr/local/include}, but write it as
@@ -513,8 +581,7 @@ write it as @samp{@@infodir@@}.)  @code{infodir} is separate from
 @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
+format.  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
@@ -591,7 +658,7 @@ And finally, you should set the following variable:
 @item srcdir
 The directory for the sources being compiled.  The value of this
 variable is normally inserted by the @code{configure} shell script.
-(If you are using Autconf, use @samp{srcdir = @@srcdir@@}.)
+(If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.)
 @end table
 
 For example:
@@ -625,6 +692,15 @@ specify the exact same values for several different GNU packages.  In
 order for this to be useful, all the packages must be designed so that
 they will work sensibly when the user does so.
 
+At times, not all of these variables may be implemented in the current
+release of Autoconf and/or Automake; but as of Autoconf@tie{}2.60, we
+believe all of them are.  When any are missing, the descriptions here
+serve as specifications for what Autoconf will implement.  As a
+programmer, you can either use a development version of Autoconf or
+avoid using these variables until a stable release is made which
+supports them.
+
+
 @node Standard Targets
 @section Standard Targets for Users
 
@@ -634,8 +710,9 @@ All GNU programs should have the following targets in their Makefiles:
 @item all
 Compile the entire program.  This should be the default target.  This
 target need not rebuild any documentation files; Info files should
-normally be included in the distribution, and DVI files should be made
-only when explicitly asked for.
+normally be included in the distribution, and DVI (and other
+documentation format) files should be made only when explicitly asked
+for.
 
 By default, the Make rules should compile and link with @samp{-g}, so
 that executable programs have debugging symbols.  Users who don't mind
@@ -671,26 +748,31 @@ with @code{$(INSTALL_DATA)} (@pxref{Command Variables}), and then run
 the @code{install-info} program if it is present.  @code{install-info}
 is a program that edits the Info @file{dir} file to add or update the
 menu entry for the given Info file; it is part of the Texinfo package.
-Here is a sample rule to install an Info file:
+
+Here is a sample rule to install an Info file that also tries to
+handle some additional situations, such as @code{install-info} not
+being present.
 
 @comment This example has been carefully formatted for the Make manual.
-@comment Please do not reformat it without talking to roland@gnu.ai.mit.edu.
+@comment Please do not reformat it without talking to bug-make@gnu.org.
 @smallexample
-$(DESTDIR)$(infodir)/foo.info: foo.info
-        $(POST_INSTALL)
-# There may be a newer info file in . than in srcdir.
-        -if test -f foo.info; then d=.; \
-         else d=$(srcdir); fi; \
-        $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@@; \
+do-install-info: foo.info installdirs
+        $(NORMAL_INSTALL)
+# Prefer an info file in . to one in srcdir.
+        if test -f foo.info; then d=.; \
+         else d="$(srcdir)"; fi; \
+        $(INSTALL_DATA) $$d/foo.info \
+          "$(DESTDIR)$(infodir)/foo.info"
 # Run install-info only if it exists.
 # Use `if' instead of just prepending `-' to the
 # line so we notice real errors from install-info.
-# We use `$(SHELL) -c' because some shells do not
+# Use `$(SHELL) -c' because some shells do not
 # fail gracefully when there is an unknown command.
+        $(POST_INSTALL)
         if $(SHELL) -c 'install-info --version' \
            >/dev/null 2>&1; then \
-          install-info --dir-file=$(DESTDIR)$(infodir)/dir \
-                       $(DESTDIR)$(infodir)/foo.info; \
+          install-info --dir-file="$(DESTDIR)$(infodir)/dir" \
+                       "$(DESTDIR)$(infodir)/foo.info"; \
         else true; fi
 @end smallexample
 
@@ -717,6 +799,10 @@ manuals, and you wish to install HTML documentation with many files
 certainly want to use subdirectories, or two nodes with the same name
 in different manuals will overwrite each other.
 
+Please make these @code{install-@var{format}} targets invoke the
+commands for the @var{format} target, for example, by making
+@var{format} a dependency.
+
 @item uninstall
 Delete all the installed files---the copies that the @samp{install}
 and @samp{install-*} targets create.
@@ -842,7 +928,11 @@ because they will already be up to date.
 @itemx html
 @itemx pdf
 @itemx ps
-Generate documentation files in the given format, if possible.
+Generate documentation files in the given format.  These targets
+should always exist, but any or all can be a no-op if the given output
+format cannot be generated.  These targets should not be dependencies
+of the @code{all} target; the user must manually invoke them.
+
 Here's an example rule for generating DVI files from Texinfo:
 
 @smallexample
@@ -888,6 +978,7 @@ then @code{tar} that subdirectory.
 
 Compress the tar file with @code{gzip}.  For example, the actual
 distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}.
+It is ok to support other free compression formats as well.
 
 The @code{dist} target should explicitly depend on all non-source files
 that are in the distribution, to make sure they are up to date in the
@@ -919,8 +1010,7 @@ the program before running the tests.  You should not assume that
 It's useful to add a target named @samp{installdirs} to create the
 directories where files are installed, and their parent directories.
 There is a script called @file{mkinstalldirs} which is convenient for
-this; you can find it in the Texinfo package.
-@c It's in /gd/gnu/lib/mkinstalldirs.
+this; you can find it in the Gnulib package.
 You can use a rule like this:
 
 @comment This has been carefully formatted to look decent in the Make manual.
@@ -935,7 +1025,7 @@ installdirs: mkinstalldirs
 @end smallexample
 
 @noindent
-or, if you wish to support @env{DESTDIR},
+or, if you wish to support @env{DESTDIR} (strongly encouraged),
 
 @smallexample
 # Make sure all installation directories (e.g. $(bindir))
index d43f032..bd28f2b 100644 (file)
@@ -1,15 +1,15 @@
-This is make.info, produced by makeinfo version 4.8 from make.texi.
+This is make.info, produced by makeinfo version 4.13 from make.texi.
 
-   This file documents the GNU `make' utility, which determines
+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.
+   This is Edition 0.71, last updated 19 July 2010, of `The GNU Make
+Manual', for GNU `make' version 3.82.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -19,166 +19,169 @@ Foundation, Inc.
      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."
+     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+     modify this GNU manual.  Buying copies from the FSF supports it in
+     developing GNU and promoting software freedom."
 
-INFO-DIR-SECTION GNU Packages
+INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
 * Make: (make).            Remake files automatically.
 END-INFO-DIR-ENTRY
 
 \1f
 Indirect:
-make.info-1: 1297
-make.info-2: 301265
+make.info-1: 1319
+make.info-2: 293656
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1297
-Node: Overview\7f14702
-Node: Preparing\7f15712
-Node: Reading\7f16684
-Node: Bugs\7f17611
-Node: Introduction\7f19441
-Node: Rule Introduction\7f21033
-Node: Simple Makefile\7f22777
-Node: How Make Works\7f26406
-Node: Variables Simplify\7f29061
-Node: make Deduces\7f31267
-Node: Combine By Prerequisite\7f33007
-Node: Cleanup\7f34036
-Node: Makefiles\7f35455
-Node: Makefile Contents\7f36421
-Node: Makefile Names\7f39376
-Node: Include\7f40987
-Ref: Include-Footnote-1\7f44619
-Node: MAKEFILES Variable\7f44753
-Node: MAKEFILE_LIST Variable\7f46263
-Node: Special Variables\7f47531
-Node: Remaking Makefiles\7f51038
-Node: Overriding Makefiles\7f55287
-Node: Reading Makefiles\7f57340
-Node: Secondary Expansion\7f60244
-Node: Rules\7f67678
-Node: Rule Example\7f70350
-Node: Rule Syntax\7f71207
-Node: Prerequisite Types\7f73710
-Node: Wildcards\7f75486
-Node: Wildcard Examples\7f77204
-Node: Wildcard Pitfall\7f78460
-Node: Wildcard Function\7f80249
-Node: Directory Search\7f82033
-Node: General Search\7f83175
-Node: Selective Search\7f84890
-Node: Search Algorithm\7f87878
-Node: Commands/Search\7f90397
-Node: Implicit/Search\7f91743
-Node: Libraries/Search\7f92687
-Node: Phony Targets\7f94779
-Node: Force Targets\7f99865
-Node: Empty Targets\7f100910
-Node: Special Targets\7f102208
-Node: Multiple Targets\7f109382
-Node: Multiple Rules\7f111257
-Node: Static Pattern\7f113493
-Node: Static Usage\7f114145
-Node: Static versus Implicit\7f117866
-Node: Double-Colon\7f119610
-Node: Automatic Prerequisites\7f121267
-Node: Commands\7f125545
-Node: Command Syntax\7f126753
-Node: Splitting Lines\7f128778
-Node: Variables in Commands\7f131759
-Node: Echoing\7f133086
-Node: Execution\7f134378
-Ref: Execution-Footnote-1\7f135629
-Node: Choosing the Shell\7f135775
-Node: Parallel\7f139744
-Node: Errors\7f143337
-Node: Interrupts\7f146983
-Node: Recursion\7f148570
-Node: MAKE Variable\7f150664
-Node: Variables/Recursion\7f152931
-Node: Options/Recursion\7f158372
-Node: -w Option\7f163537
-Node: Sequences\7f164532
-Node: Empty Commands\7f167544
-Node: Using Variables\7f168718
-Node: Reference\7f171831
-Node: Flavors\7f173390
-Node: Advanced\7f179128
-Node: Substitution Refs\7f179633
-Node: Computed Names\7f181186
-Node: Values\7f185730
-Node: Setting\7f186643
-Node: Appending\7f188679
-Node: Override Directive\7f192605
-Node: Defining\7f193989
-Node: Environment\7f196453
-Node: Target-specific\7f198702
-Node: Pattern-specific\7f201669
-Node: Conditionals\7f203071
-Node: Conditional Example\7f203781
-Node: Conditional Syntax\7f206358
-Node: Testing Flags\7f212083
-Node: Functions\7f213185
-Node: Syntax of Functions\7f214605
-Node: Text Functions\7f216804
-Node: File Name Functions\7f225375
-Node: Conditional Functions\7f230597
-Node: Foreach Function\7f232971
-Node: Call Function\7f236183
-Node: Value Function\7f239068
-Node: Eval Function\7f240505
-Node: Origin Function\7f242779
-Node: Flavor Function\7f245997
-Node: Shell Function\7f247063
-Node: Make Control Functions\7f248697
-Node: Running\7f250366
-Node: Makefile Arguments\7f252355
-Node: Goals\7f253071
-Node: Instead of Execution\7f257812
-Node: Avoiding Compilation\7f261098
-Node: Overriding\7f263073
-Node: Testing\7f265371
-Node: Options Summary\7f267256
-Node: Implicit Rules\7f277382
-Node: Using Implicit\7f279530
-Node: Catalogue of Rules\7f283069
-Node: Implicit Variables\7f292419
-Node: Chained Rules\7f297254
-Node: Pattern Rules\7f301265
-Node: Pattern Intro\7f302801
-Node: Pattern Examples\7f305698
-Node: Automatic Variables\7f307507
-Node: Pattern Match\7f314878
-Node: Match-Anything Rules\7f316514
-Node: Canceling Rules\7f320389
-Node: Last Resort\7f321105
-Node: Suffix Rules\7f322952
-Node: Implicit Rule Search\7f326681
-Node: Archives\7f330200
-Node: Archive Members\7f330898
-Node: Archive Update\7f332511
-Node: Archive Symbols\7f334425
-Node: Archive Pitfalls\7f335659
-Node: Archive Suffix Rules\7f336382
-Node: Features\7f337929
-Node: Missing\7f346484
-Node: Makefile Conventions\7f350222
-Node: Makefile Basics\7f351008
-Node: Utilities in Makefiles\7f354175
-Node: Command Variables\7f356313
-Node: Directory Variables\7f359883
-Node: Standard Targets\7f374023
-Ref: Standard Targets-Footnote-1\7f387142
-Node: Install Command Categories\7f387242
-Node: Quick Reference\7f391768
-Node: Error Messages\7f402464
-Node: Complex Makefile\7f410154
-Node: GNU Free Documentation License\7f418872
-Node: Concept Index\7f441321
-Node: Name Index\7f506510
+Node: Top\7f1319
+Node: Overview\7f14709
+Node: Preparing\7f15719
+Node: Reading\7f16690
+Node: Bugs\7f17617
+Node: Introduction\7f19446
+Node: Rule Introduction\7f21037
+Node: Simple Makefile\7f22970
+Node: How Make Works\7f26666
+Node: Variables Simplify\7f29321
+Node: make Deduces\7f31527
+Node: Combine By Prerequisite\7f33260
+Node: Cleanup\7f34289
+Node: Makefiles\7f35707
+Node: Makefile Contents\7f36543
+Node: Makefile Names\7f39649
+Node: Include\7f41260
+Ref: Include-Footnote-1\7f45008
+Node: MAKEFILES Variable\7f45142
+Node: Remaking Makefiles\7f46683
+Node: Overriding Makefiles\7f50907
+Node: Reading Makefiles\7f52935
+Node: Secondary Expansion\7f55947
+Node: Rules\7f63388
+Node: Rule Example\7f66060
+Node: Rule Syntax\7f66914
+Node: Prerequisite Types\7f69507
+Node: Wildcards\7f72374
+Node: Wildcard Examples\7f74092
+Node: Wildcard Pitfall\7f75441
+Node: Wildcard Function\7f77230
+Node: Directory Search\7f79014
+Node: General Search\7f80148
+Node: Selective Search\7f81855
+Node: Search Algorithm\7f84843
+Node: Recipes/Search\7f87361
+Node: Implicit/Search\7f88684
+Node: Libraries/Search\7f89626
+Node: Phony Targets\7f91596
+Node: Force Targets\7f96665
+Node: Empty Targets\7f97702
+Node: Special Targets\7f99007
+Node: Multiple Targets\7f106862
+Node: Multiple Rules\7f108727
+Node: Static Pattern\7f110945
+Node: Static Usage\7f111597
+Node: Static versus Implicit\7f115316
+Node: Double-Colon\7f117057
+Node: Automatic Prerequisites\7f118817
+Node: Recipes\7f123095
+Node: Recipe Syntax\7f124268
+Node: Splitting Lines\7f126383
+Node: Variables in Recipes\7f129483
+Node: Echoing\7f130802
+Node: Execution\7f132077
+Ref: Execution-Footnote-1\7f133488
+Node: One Shell\7f133633
+Node: Choosing the Shell\7f136948
+Node: Parallel\7f141094
+Node: Errors\7f144815
+Node: Interrupts\7f148483
+Node: Recursion\7f150066
+Node: MAKE Variable\7f152164
+Node: Variables/Recursion\7f154411
+Node: Options/Recursion\7f159861
+Node: -w Option\7f165021
+Node: Canned Recipes\7f166016
+Node: Empty Recipes\7f169000
+Node: Using Variables\7f170148
+Node: Reference\7f173523
+Node: Flavors\7f175081
+Node: Advanced\7f180821
+Node: Substitution Refs\7f181326
+Node: Computed Names\7f182879
+Node: Values\7f187425
+Node: Setting\7f188342
+Node: Appending\7f190378
+Node: Override Directive\7f194304
+Node: Multi-Line\7f195931
+Node: Undefine Directive\7f198754
+Node: Environment\7f199840
+Node: Target-specific\7f202091
+Node: Pattern-specific\7f205108
+Node: Suppressing Inheritance\7f206954
+Node: Special Variables\7f208408
+Node: Conditionals\7f213121
+Node: Conditional Example\7f213834
+Node: Conditional Syntax\7f216397
+Node: Testing Flags\7f222127
+Node: Functions\7f223228
+Node: Syntax of Functions\7f224659
+Node: Text Functions\7f226858
+Node: File Name Functions\7f235429
+Node: Conditional Functions\7f240651
+Node: Foreach Function\7f243025
+Node: Call Function\7f246237
+Node: Value Function\7f249122
+Node: Eval Function\7f250559
+Node: Origin Function\7f252835
+Node: Flavor Function\7f256051
+Node: Shell Function\7f257117
+Node: Make Control Functions\7f258751
+Node: Running\7f260413
+Node: Makefile Arguments\7f262396
+Node: Goals\7f263112
+Node: Instead of Execution\7f267851
+Node: Avoiding Compilation\7f271433
+Node: Overriding\7f273407
+Node: Testing\7f275710
+Node: Options Summary\7f277594
+Node: Implicit Rules\7f287992
+Node: Using Implicit\7f290137
+Node: Catalogue of Rules\7f293656
+Node: Implicit Variables\7f303004
+Node: Chained Rules\7f307761
+Node: Pattern Rules\7f311772
+Node: Pattern Intro\7f313307
+Node: Pattern Examples\7f315895
+Node: Automatic Variables\7f317701
+Node: Pattern Match\7f325059
+Node: Match-Anything Rules\7f328382
+Node: Canceling Rules\7f332256
+Node: Last Resort\7f332970
+Node: Suffix Rules\7f334799
+Node: Implicit Rule Search\7f338524
+Node: Archives\7f342023
+Node: Archive Members\7f342721
+Node: Archive Update\7f344331
+Node: Archive Symbols\7f346242
+Node: Archive Pitfalls\7f347476
+Node: Archive Suffix Rules\7f348198
+Node: Features\7f349745
+Node: Missing\7f358290
+Node: Makefile Conventions\7f362017
+Node: Makefile Basics\7f362996
+Node: Utilities in Makefiles\7f366163
+Node: Command Variables\7f368661
+Node: DESTDIR\7f371900
+Node: Directory Variables\7f374067
+Node: Standard Targets\7f388682
+Ref: Standard Targets-Footnote-1\7f402458
+Node: Install Command Categories\7f402558
+Node: Quick Reference\7f407084
+Node: Error Messages\7f418767
+Node: Complex Makefile\7f426463
+Node: GNU Free Documentation License\7f434974
+Node: Concept Index\7f460136
+Node: Name Index\7f526637
 \1f
 End Tag Table
index 486df36..509ce05 100644 (file)
@@ -1,15 +1,15 @@
-This is make.info, produced by makeinfo version 4.8 from make.texi.
+This is make.info, produced by makeinfo version 4.13 from make.texi.
 
-   This file documents the GNU `make' utility, which determines
+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.
+   This is Edition 0.71, last updated 19 July 2010, of `The GNU Make
+Manual', for GNU `make' version 3.82.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -19,11 +19,11 @@ Foundation, Inc.
      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."
+     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+     modify this GNU manual.  Buying copies from the FSF supports it in
+     developing GNU and promoting software freedom."
 
-INFO-DIR-SECTION GNU Packages
+INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
 * Make: (make).            Remake files automatically.
 END-INFO-DIR-ENTRY
@@ -38,12 +38,12 @@ 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.
+   This is Edition 0.71, last updated 19 July 2010, of `The GNU Make
+Manual', for GNU `make' version 3.82.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -53,9 +53,9 @@ Foundation, Inc.
      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."
+     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+     modify this GNU manual.  Buying copies from the FSF supports it in
+     developing GNU and promoting software freedom."
 
 * Menu:
 
@@ -63,7 +63,7 @@ Foundation, Inc.
 * Introduction::                An introduction to `make'.
 * Makefiles::                   Makefiles tell `make' what to do.
 * Rules::                       Rules describe when a file must be remade.
-* Commands::                    Commands say how to remake a file.
+* Recipes::                     Recipes say how to remake a file.
 * Using Variables::             You can use variables to avoid repetition.
 * Conditionals::                Use or ignore parts of the makefile based
                                   on the values of variables.
@@ -89,19 +89,19 @@ Foundation, Inc.
 
 Overview of `make'
 
-* Preparing::                   Preparing and Running Make
-* Reading::                     On Reading this Text
-* Bugs::                        Problems and Bugs
+* Preparing::                   Preparing and running make
+* Reading::                     On reading this text
+* Bugs::                        Problems and bugs
 
 An Introduction to Makefiles
 
 * Rule Introduction::           What a rule looks like.
-* Simple Makefile::             A Simple Makefile
-* How Make Works::              How `make' Processes This Makefile
-* Variables Simplify::          Variables Make Makefiles Simpler
-* make Deduces::                Letting `make' Deduce the Commands
-* Combine By Prerequisite::     Another Style of Makefile
-* Cleanup::                     Rules for Cleaning the Directory
+* Simple Makefile::             A simple makefile
+* How Make Works::              How `make' processes this makefile
+* Variables Simplify::          Variables make makefiles simpler
+* make Deduces::                Letting `make' deduce the recipe
+* Combine By Prerequisite::     Another style of makefile
+* Cleanup::                     Rules for cleaning the directory
 
 Writing Makefiles
 
@@ -109,8 +109,6 @@ Writing Makefiles
 * Makefile Names::              How to name your makefile.
 * Include::                     How one makefile can use another makefile.
 * MAKEFILES Variable::          The environment can specify extra makefiles.
-* MAKEFILE_LIST Variable::      Discover which makefiles have been read.
-* Special Variables::           Other special variables.
 * Remaking Makefiles::          How makefiles get remade.
 * Overriding Makefiles::        How to override part of one makefile
                                   with another makefile.
@@ -125,7 +123,7 @@ Writing Rules
 * Wildcards::                   Using wildcard characters such as `*'.
 * Directory Search::            Searching other directories for source files.
 * Phony Targets::               Using a target that is not a real file's name.
-* Force Targets::               You can use a target without commands
+* Force Targets::               You can use a target without a recipe
                                   or prerequisites to mark other targets
                                   as phony.
 * Empty Targets::               When only the date matters and the
@@ -155,7 +153,7 @@ Searching Directories for Prerequisites
 * Selective Search::            Specifying a search path
                                   for a specified class of names.
 * Search Algorithm::            When and how search paths are applied.
-* Commands/Search::             How to write shell commands that work together
+* Recipes/Search::              How to write recipes that work together
                                   with search paths.
 * Implicit/Search::             How search paths affect implicit rules.
 * Libraries/Search::            Directory search for link libraries.
@@ -165,27 +163,27 @@ Static Pattern Rules
 * Static Usage::                The syntax of static pattern rules.
 * Static versus Implicit::      When are they better than implicit rules?
 
-Writing the Commands in Rules
+Writing Recipes in Rules
 
-* Command Syntax::              Command syntax features and pitfalls.
-* Echoing::                     How to control when commands are echoed.
-* Execution::                   How commands are executed.
-* Parallel::                    How commands can be executed in parallel.
-* Errors::                      What happens after a command execution error.
-* Interrupts::                  What happens when a command is interrupted.
+* Recipe Syntax::               Recipe syntax features and pitfalls.
+* Echoing::                     How to control when recipes are echoed.
+* Execution::                   How recipes are executed.
+* Parallel::                    How recipes can be executed in parallel.
+* Errors::                      What happens after a recipe execution error.
+* Interrupts::                  What happens when a recipe is interrupted.
 * Recursion::                   Invoking `make' from makefiles.
-* Sequences::                   Defining canned sequences of commands.
-* Empty Commands::              Defining useful, do-nothing commands.
+* Canned Recipes::              Defining canned recipes.
+* Empty Recipes::               Defining useful, do-nothing recipes.
 
-Command Syntax
+Recipe Syntax
 
-* Splitting Lines::             Breaking long command lines for readability.
-* Variables in Commands::       Using `make' variables in commands.
+* Splitting Lines::             Breaking long recipe lines for readability.
+* Variables in Recipes::        Using `make' variables in recipes.
 
-Command Execution
+Recipe Execution
 
 * Choosing the Shell::          How `make' chooses the shell used
-                                  to run commands.
+                                  to run recipes.
 
 Recursive Use of `make'
 
@@ -206,13 +204,15 @@ How to Use Variables
                                   of a variable.
 * Override Directive::          How to set a variable in the makefile even if
                                   the user has set it with a command argument.
-* Defining::                    An alternate way to set a variable
-                                  to a verbatim string.
+* Multi-Line::                  An alternate way to set a variable
+                                  to a multi-line string.
 * Environment::                 Variable values can come from the environment.
 * Target-specific::             Variable values can be defined on a per-target
                                   basis.
 * Pattern-specific::            Target-specific variable values can be applied
                                   to a group of targets that match a pattern.
+* Suppressing Inheritance::     Suppress inheritance of variables.
+* Special Variables::           Variables with special meaning or behavior.
 
 Advanced Features for Reference to Variables
 
@@ -247,7 +247,7 @@ How to Run `make'
 * Goals::                       How to use goal arguments to specify which
                                   parts of the makefile to use.
 * Instead of Execution::        How to use mode flags to specify what
-                                  kind of thing to do with the commands
+                                  kind of thing to do with the recipes
                                   in the makefile other than simply
                                   execute them.
 * Avoiding Compilation::        How to avoid recompiling certain files.
@@ -260,12 +260,12 @@ How to Run `make'
 Using Implicit Rules
 
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the commands for updating a file.
+                                  to get the recipe for updating a file.
 * Catalogue of Rules::          A list of built-in implicit rules.
 * Implicit Variables::          How to change what predefined rules do.
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to define commands for rules which
+* Last Resort::                 How to define a recipe for rules which
                                   cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -276,7 +276,7 @@ Defining and Redefining Pattern Rules
 * 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.
+                                  recipe of implicit rules.
 * Pattern Match::               How patterns match.
 * Match-Anything Rules::        Precautions you should take prior to
                                   defining rules that can match any
@@ -342,7 +342,7 @@ files, this simple shell command:
 suffices to perform all necessary recompilations.  The `make' program
 uses the makefile data base and the last-modification times of the
 files to decide which of the files need to be updated.  For each of
-those files, it issues the commands recorded in the data base.
+those files, it issues the recipes recorded in the data base.
 
    You can provide command line arguments to `make' to control which
 files should be recompiled, or how.  *Note How to Run `make': Running.
@@ -357,16 +357,16 @@ If you are new to `make', or are looking for a general introduction,
 read the first few sections of each chapter, skipping the later
 sections.  In each chapter, the first few sections contain introductory
 or general information and the later sections contain specialized or
-technical information.  The exception is the second chapter, *Note An
+technical information.  The exception is the second chapter, *note An
 Introduction to Makefiles: Introduction, all of which is introductory.
 
-   If you are familiar with other `make' programs, see *Note Features
+   If you are familiar with other `make' programs, see *note Features
 of GNU `make': Features, which lists the enhancements GNU `make' has,
-and *Note Incompatibilities and Missing Features: Missing, which
+and *note Incompatibilities and Missing Features: Missing, which
 explains the few things GNU `make' lacks that others have.
 
-   For a quick summary, see *Note Options Summary::, *Note Quick
-Reference::, and *Note Special Targets::.
+   For a quick summary, see *note Options Summary::, *note Quick
+Reference::, and *note Special Targets::.
 
 \1f
 File: make.info,  Node: Bugs,  Prev: Reading,  Up: Overview
@@ -390,7 +390,7 @@ send us the makefile and the exact results `make' gave you, including
 any error or warning messages.  Please don't paraphrase these messages:
 it's best to cut and paste them into your report.  When generating this
 small makefile, be sure to not use any non-free or unusual tools in
-your commands: you can almost always emulate what such a tool would do
+your recipes: you can almost always emulate what such a tool would do
 with simple shell commands.  Finally, be sure to explain what you
 expected to occur; this will help us decide whether the problem was
 really in the documentation.
@@ -425,7 +425,7 @@ how to compile and link a text editor which consists of eight C source
 files and three header files.  The makefile can also tell `make' how to
 run miscellaneous commands when explicitly asked (for example, to remove
 certain files as a clean-up operation).  To see a more complex example
-of a makefile, see *Note Complex Makefile::.
+of a makefile, see *note Complex Makefile::.
 
    When `make' recompiles the editor, each changed C source file must
 be recompiled.  If a header file has changed, each C source file that
@@ -441,7 +441,7 @@ together to produce the new executable editor.
 * Simple Makefile::             A Simple Makefile
 * How Make Works::              How `make' Processes This Makefile
 * Variables Simplify::          Variables Make Makefiles Simpler
-* make Deduces::                Letting `make' Deduce the Commands
+* make Deduces::                Letting `make' Deduce the Recipes
 * Combine By Prerequisite::     Another Style of Makefile
 * Cleanup::                     Rules for Cleaning the Directory
 
@@ -454,7 +454,7 @@ File: make.info,  Node: Rule Introduction,  Next: Simple Makefile,  Prev: Introd
 A simple makefile consists of "rules" with the following shape:
 
      TARGET ... : PREREQUISITES ...
-             COMMAND
+             RECIPE
              ...
              ...
 
@@ -466,22 +466,25 @@ Phony Targets::).
    A "prerequisite" is a file that is used as input to create the
 target.  A target often depends on several files.
 
-   A "command" is an action that `make' carries out.  A rule may have
-more than one command, each on its own line.  *Please note:* you need
-to put a tab character at the beginning of every command line!  This is
-an obscurity that catches the unwary.
+   A "recipe" is an action that `make' carries out.  A recipe may have
+more than one command, either on the same line or each on its own line.
+*Please note:* you need to put a tab character at the beginning of
+every recipe line!  This is an obscurity that catches the unwary.  If
+you prefer to prefix your recipes with a character other than tab, you
+can set the `.RECIPEPREFIX' variable to an alternate character (*note
+Special Variables::).
 
-   Usually a command is in a rule with prerequisites and serves to
+   Usually a recipe is in a rule with prerequisites and serves to
 create a target file if any of the prerequisites change.  However, the
-rule that specifies commands for the target need not have
+rule that specifies a recipe for the target need not have
 prerequisites.  For example, the rule containing the delete command
 associated with the target `clean' does not have prerequisites.
 
    A "rule", then, explains how and when to remake certain files which
-are the targets of the particular rule.  `make' carries out the
-commands on the prerequisites to create or update the target.  A rule
-can also explain how and when to carry out an action.  *Note Writing
-Rules: Rules.
+are the targets of the particular rule.  `make' carries out the recipe
+on the prerequisites to create or update the target.  A rule can also
+explain how and when to carry out an action.  *Note Writing Rules:
+Rules.
 
    A makefile may contain other text besides rules, but a simple
 makefile need only contain rules.  Rules may look somewhat more
@@ -543,7 +546,7 @@ files from the directory, type:
    In the example makefile, the targets include the executable file
 `edit', and the object files `main.o' and `kbd.o'.  The prerequisites
 are files such as `main.c' and `defs.h'.  In fact, each `.o' file is
-both a target and a prerequisite.  Commands include `cc -c main.c' and
+both a target and a prerequisite.  Recipes include `cc -c main.c' and
 `cc -c kbd.c'.
 
    When a target is a file, it needs to be recompiled or relinked if any
@@ -553,14 +556,15 @@ example, `edit' depends on each of the eight object files; the object
 file `main.o' depends on the source file `main.c' and on the header
 file `defs.h'.
 
-   A shell command follows each line that contains a target and
-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 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.)  
+   A recipe may follow each line that contains a target and
+prerequisites.  These recipes say how to update the target file.  A tab
+character (or whatever character is specified by the `.RECIPEPREFIX'
+variable; *note Special Variables::) must come at the beginning of
+every line in the recipe to distinguish recipes from other lines in the
+makefile.  (Bear in mind that `make' does not know anything about how
+the recipes work.  It is up to you to supply recipes that will update
+the target file properly.  All `make' does is execute the recipe you
+have specified when the target file needs to be updated.)  
 
    The target `clean' is not a file, but merely the name of an action.
 Since you normally do not want to carry out the actions in this rule,
@@ -568,9 +572,9 @@ Since you normally do not want to carry out the actions in this rule,
 never does anything with it unless you tell it specifically.  Note that
 this rule not only is not a prerequisite, it also does not have any
 prerequisites, so the only purpose of the rule is to run the specified
-commands.  Targets that do not refer to files but are just actions are
+recipe.  Targets that do not refer to files but are just actions are
 called "phony targets".  *Note Phony Targets::, for information about
-this kind of target.  *Note Errors in Commands: Errors, to see how to
+this kind of target.  *Note Errors in Recipes: Errors, to see how to
 cause `make' to ignore errors from `rm' or any other command.  
 
 \1f
@@ -689,20 +693,20 @@ variable for the object files:
 \1f
 File: make.info,  Node: make Deduces,  Next: Combine By Prerequisite,  Prev: Variables Simplify,  Up: Introduction
 
-2.5 Letting `make' Deduce the Commands
-======================================
+2.5 Letting `make' Deduce the Recipes
+=====================================
 
-It is not necessary to spell out the commands for compiling the
+It is not necessary to spell out the recipes for compiling the
 individual C source files, because `make' can figure them out: it has an
 "implicit rule" for updating a `.o' file from a correspondingly named
-`.c' file using a `cc -c' command.  For example, it will use the
-command `cc -c main.c -o main.o' to compile `main.c' into `main.o'.  We
-can therefore omit the commands from the rules for the object files.
-*Note Using Implicit Rules: Implicit Rules.
+`.c' file using a `cc -c' command.  For example, it will use the recipe
+`cc -c main.c -o main.o' to compile `main.c' into `main.o'.  We can
+therefore omit the recipes from the rules for the object files.  *Note
+Using Implicit Rules: Implicit Rules.
 
    When a `.c' file is used automatically in this way, it is also
 automatically added to the list of prerequisites.  We can therefore omit
-the `.c' files from the prerequisites, provided we omit the commands.
+the `.c' files from the prerequisites, provided we omit the recipe.
 
    Here is the entire example, with both of these changes, and a
 variable `objects' as suggested above:
@@ -728,7 +732,7 @@ variable `objects' as suggested above:
 
 This is how we would write the makefile in actual practice.  (The
 complications associated with `clean' are described elsewhere.  See
-*Note Phony Targets::, and *Note Errors in Commands: Errors.)
+*note Phony Targets::, and *note Errors in Recipes: Errors.)
 
    Because implicit rules are so convenient, they are important.  You
 will see them used frequently.
@@ -789,7 +793,7 @@ this:
 
 This prevents `make' from getting confused by an actual file called
 `clean' and causes it to continue in spite of errors from `rm'.  (See
-*Note Phony Targets::, and *Note Errors in Commands: Errors.)
+*note Phony Targets::, and *note Errors in Recipes: Errors.)
 
 A rule such as this should not be placed at the beginning of the
 makefile, because we do not want it to run by default!  Thus, in the
@@ -816,8 +820,6 @@ reading a data base called the "makefile".
 * Makefile Names::              How to name your makefile.
 * Include::                     How one makefile can use another makefile.
 * MAKEFILES Variable::          The environment can specify extra makefiles.
-* MAKEFILE_LIST Variable::      Discover which makefiles have been read.
-* Special Variables::           Other special variables.
 * Remaking Makefiles::          How makefiles get remade.
 * Overriding Makefiles::        How to override part of one makefile
                                   with another makefile.
@@ -837,12 +839,12 @@ variables, and directives are described at length in later chapters.
    * An "explicit rule" says when and how to remake one or more files,
      called the rule's "targets".  It lists the other files that the
      targets depend on, called the "prerequisites" of the target, and
-     may also give commands to use to create or update the targets.
+     may also give a recipe to use to create or update the targets.
      *Note Writing Rules: Rules.
 
    * An "implicit rule" says when and how to remake a class of files
      based on their names.  It describes how a target may depend on a
-     file with a name similar to the target and gives commands to
+     file with a name similar to the target and gives a recipe to
      create or update such a target.  *Note Using Implicit Rules:
      Implicit Rules.
 
@@ -852,8 +854,8 @@ variables, and directives are described at length in later chapters.
      `objects' as a list of all object files (*note Variables Make
      Makefiles Simpler: Variables Simplify.).
 
-   * A "directive" is a command for `make' to do something special while
-     reading the makefile.  These include:
+   * A "directive" is an instruction for `make' to do something special
+     while reading the makefile.  These include:
 
         * Reading another makefile (*note Including Other Makefiles:
           Include.).
@@ -863,7 +865,8 @@ variables, and directives are described at length in later chapters.
           Makefiles: Conditionals.).
 
         * Defining a variable from a verbatim string containing
-          multiple lines (*note Defining Variables Verbatim: Defining.).
+          multiple lines (*note Defining Multi-Line Variables:
+          Multi-Line.).
 
    * `#' in a line of a makefile starts a "comment".  It and the rest
      of the line are ignored, except that a trailing backslash not
@@ -874,16 +877,20 @@ variables, and directives are described at length in later chapters.
      Comments may appear on any line in the makefile, although they are
      treated specially in certain situations.
 
-     Within a command script (if the line begins with a TAB character)
-     the entire line is passed to the shell, just as with any other
-     line that begins with a TAB.  The shell decides how to interpret
-     the text: whether or not this is a comment is up to the shell.
+     You cannot use comments within variable references or function
+     calls: any instance of `#' will be treated literally (rather than
+     as the start of a comment) inside a variable reference or function
+     call.
+
+     Comments within a recipe are passed to the shell, just as with any
+     other recipe text.  The shell decides how to interpret it: whether
+     or not this is a comment is up to the shell.
 
      Within a `define' directive, comments are not ignored during the
      definition of the variable, but rather kept intact in the value of
      the variable.  When the variable is expanded they will either be
-     treated as `make' comments or as command script text, depending on
-     the context in which the variable is evaluated.
+     treated as `make' comments or as recipe text, depending on the
+     context in which the variable is evaluated.
 
 \1f
 File: make.info,  Node: Makefile Names,  Next: Include,  Prev: Makefile Contents,  Up: Makefiles
@@ -933,12 +940,13 @@ 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,
-but a tab is not allowed.  (If the line begins with a tab, it will be
-considered a command line.)  Whitespace is required between `include'
-and the file names, and between file names; extra whitespace is ignored
-there and at the end of the directive.  A comment starting with `#' is
-allowed at the end of the line.  If the file names contain any variable
-or function references, they are expanded.  *Note How to Use Variables:
+but the first character must not be a tab (or the value of
+`.RECIPEPREFIX')--if the line begins with a tab, it will be considered
+a recipe line.  Whitespace is required between `include' and the file
+names, and between file names; extra whitespace is ignored there and at
+the end of the directive.  A comment starting with `#' is allowed at
+the end of the line.  If the file names contain any variable or
+function references, they are expanded.  *Note How to Use Variables:
 Using Variables.
 
    For example, if you have three `.mk' files, `a.mk', `b.mk', and
@@ -987,15 +995,17 @@ makefile and failed, will `make' diagnose the missing makefile as a
 fatal error.
 
    If you want `make' to simply ignore a makefile which does not exist
-and cannot be remade, with no error message, use the `-include'
+or cannot be remade, with no error message, use the `-include'
 directive instead of `include', like this:
 
      -include FILENAMES...
 
    This acts like `include' in every way except that there is no error
-(not even a warning) if any of the FILENAMES do not exist.  For
-compatibility with some other `make' implementations, `sinclude' is
-another name for `-include'.
+(not even a warning) if any of the FILENAMES (or any prerequisites of
+any of the FILENAMES) do not exist or cannot be remade.
+
+   For compatibility with some other `make' implementations, `sinclude'
+is another name for `-include'.
 
    ---------- Footnotes ----------
 
@@ -1003,7 +1013,7 @@ another name for `-include'.
 has been defined to be the root of the DJGPP tree hierarchy.
 
 \1f
-File: make.info,  Node: MAKEFILES Variable,  Next: MAKEFILE_LIST Variable,  Prev: Include,  Up: Makefiles
+File: make.info,  Node: MAKEFILES Variable,  Next: Remaking Makefiles,  Prev: Include,  Up: Makefiles
 
 3.4 The Variable `MAKEFILES'
 ============================
@@ -1013,8 +1023,9 @@ its value as a list of names (separated by whitespace) of additional
 makefiles to be read before the others.  This works much like the
 `include' directive: various directories are searched for those files
 (*note Including Other Makefiles: Include.).  In addition, the default
-goal is never taken from one of these makefiles and it is not an error
-if the files listed in `MAKEFILES' are not found.
+goal is never taken from one of these makefiles (or any makefile
+included by them) and it is not an error if the files listed in
+`MAKEFILES' are not found.
 
    The main use of `MAKEFILES' is in communication between recursive
 invocations of `make' (*note Recursive Use of `make': Recursion.).  It
@@ -1032,151 +1043,9 @@ run by anyone else.  It is much better to write explicit `include'
 directives in the makefiles.  *Note Including Other Makefiles: Include.
 
 \1f
-File: make.info,  Node: MAKEFILE_LIST Variable,  Next: Special Variables,  Prev: MAKEFILES Variable,  Up: Makefiles
-
-3.5 The Variable `MAKEFILE_LIST'
-================================
-
-As `make' reads various makefiles, including any obtained from the
-`MAKEFILES' variable, the command line, the default files, or from
-`include' directives, their names will be automatically appended to the
-`MAKEFILE_LIST' variable.  They are added right before `make' begins to
-parse them.
-
-   This means that if the first thing a makefile does is examine the
-last word in this variable, it will be the name of the current makefile.
-Once the current makefile has used `include', however, the last word
-will be the just-included makefile.
-
-   If a makefile named `Makefile' has this content:
-
-     name1 := $(lastword $(MAKEFILE_LIST))
-
-     include inc.mk
-
-     name2 := $(lastword $(MAKEFILE_LIST))
-
-     all:
-             @echo name1 = $(name1)
-             @echo name2 = $(name2)
-
-then you would expect to see this output:
-
-     name1 = Makefile
-     name2 = inc.mk
-
-   *Note Text Functions::, for more information on the `word' and
-`words' functions used above.  *Note The Two Flavors of Variables:
-Flavors, for more information on simply-expanded (`:=') variable
-definitions.
-
-\1f
-File: make.info,  Node: Special Variables,  Next: Remaking Makefiles,  Prev: MAKEFILE_LIST Variable,  Up: Makefiles
-
-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.).
-
-
-\1f
-File: make.info,  Node: Remaking Makefiles,  Next: Overriding Makefiles,  Prev: Special Variables,  Up: Makefiles
+File: make.info,  Node: Remaking Makefiles,  Next: Overriding Makefiles,  Prev: MAKEFILES Variable,  Up: Makefiles
 
-3.7 How Makefiles Are Remade
+3.5 How Makefiles Are Remade
 ============================
 
 Sometimes makefiles can be remade from other files, such as RCS or SCCS
@@ -1197,19 +1066,19 @@ to date.)
    If you know that one or more of your makefiles cannot be remade and
 you want to keep `make' from performing an implicit rule search on
 them, perhaps for efficiency reasons, you can use any normal method of
-preventing implicit rule lookup to do so.  For example, you can write an
-explicit rule with the makefile as the target, and an empty command
-string (*note Using Empty Commands: Empty Commands.).
+preventing implicit rule lookup to do so.  For example, you can write
+an explicit rule with the makefile as the target, and an empty recipe
+(*note Using Empty Recipes: Empty Recipes.).
 
-   If the makefiles specify a double-colon rule to remake a file with
-commands but no prerequisites, that file will always be remade (*note
+   If the makefiles specify a double-colon rule to remake a file with a
+recipe but no prerequisites, that file will always be remade (*note
 Double-Colon::).  In the case of makefiles, a makefile that has a
-double-colon rule with commands but no prerequisites will be remade
+double-colon rule with a recipe but no prerequisites will be remade
 every time `make' is run, and then again after `make' starts over and
 reads the makefiles in again.  This would cause an infinite loop:
 `make' would constantly remake the makefile, and never do anything
 else.  So, to avoid this, `make' will *not* attempt to remake makefiles
-which are specified as targets of a double-colon rule with commands but
+which are specified as targets of a double-colon rule with a recipe but
 no prerequisites.
 
    If you do not specify any makefiles to be read with `-f' or `--file'
@@ -1228,16 +1097,16 @@ is not an error if `make' cannot find or make any makefile; a makefile
 is not always necessary.
 
    When you use the `-t' or `--touch' option (*note Instead of
-Executing the Commands: Instead of Execution.), you would not want to
-use an out-of-date makefile to decide which targets to touch.  So the
-`-t' option has no effect on updating makefiles; they are really
-updated even if `-t' is specified.  Likewise, `-q' (or `--question')
-and `-n' (or `--just-print') do not prevent updating of makefiles,
-because an out-of-date makefile would result in the wrong output for
-other targets.  Thus, `make -f mfile -n foo' will update `mfile', read
-it in, and then print the commands to update `foo' and its prerequisites
-without running them.  The commands printed for `foo' will be those
-specified in the updated contents of `mfile'.
+Executing Recipes: Instead of Execution.), you would not want to use an
+out-of-date makefile to decide which targets to touch.  So the `-t'
+option has no effect on updating makefiles; they are really updated
+even if `-t' is specified.  Likewise, `-q' (or `--question') and `-n'
+(or `--just-print') do not prevent updating of makefiles, because an
+out-of-date makefile would result in the wrong output for other targets.
+Thus, `make -f mfile -n foo' will update `mfile', read it in, and then
+print the recipe to update `foo' and its prerequisites without running
+it.  The recipe printed for `foo' will be the one specified in the
+updated contents of `mfile'.
 
    However, on occasion you might actually wish to prevent updating of
 even the makefiles.  You can do this by specifying the makefiles as
@@ -1246,22 +1115,22 @@ When the makefile name is specified explicitly as a goal, the options
 `-t' and so on do apply to them.
 
    Thus, `make -f mfile -n mfile foo' would read the makefile `mfile',
-print the commands needed to update it without actually running them,
-and then print the commands needed to update `foo' without running
-them.  The commands for `foo' will be those specified by the existing
-contents of `mfile'.
+print the recipe needed to update it without actually running it, and
+then print the recipe needed to update `foo' without running that.  The
+recipe for `foo' will be the one specified by the existing contents of
+`mfile'.
 
 \1f
 File: make.info,  Node: Overriding Makefiles,  Next: Reading Makefiles,  Prev: Remaking Makefiles,  Up: Makefiles
 
-3.8 Overriding Part of Another Makefile
+3.6 Overriding Part of Another Makefile
 =======================================
 
 Sometimes it is useful to have a makefile that is mostly just like
 another makefile.  You can often use the `include' directive to include
 one in the other, and add more targets or variable definitions.
-However, if the two makefiles give different commands for the same
-target, `make' will not let you just do this.  But there is another way.
+However, it is illegal for two makefiles to give different recipes for
+the same target.  But there is another way.
 
    In the containing makefile (the one that wants to include the other),
 you can use a match-anything pattern rule to say that to remake any
@@ -1281,25 +1150,25 @@ called `GNUmakefile' that contains:
      force: ;
 
    If you say `make foo', `make' will find `GNUmakefile', read it, and
-see that to make `foo', it needs to run the command `frobnicate > foo'.
+see that to make `foo', it needs to run the recipe `frobnicate > foo'.
 If you say `make bar', `make' will find no way to make `bar' in
-`GNUmakefile', so it will use the commands from the pattern rule: `make
+`GNUmakefile', so it will use the recipe from the pattern rule: `make
 -f Makefile bar'.  If `Makefile' provides a rule for updating `bar',
 `make' will apply the rule.  And likewise for any other target that
 `GNUmakefile' does not say how to make.
 
    The way this works is that the pattern rule has a pattern of just
 `%', so it matches any target whatever.  The rule specifies a
-prerequisite `force', to guarantee that the commands will be run even
-if the target file already exists.  We give `force' target empty
-commands to prevent `make' from searching for an implicit rule to build
+prerequisite `force', to guarantee that the recipe will be run even if
+the target file already exists.  We give the `force' target an empty
+recipe to prevent `make' from searching for an implicit rule to build
 it--otherwise it would apply the same match-anything rule to `force'
 itself and create a prerequisite loop!
 
 \1f
 File: make.info,  Node: Reading Makefiles,  Next: Secondary Expansion,  Prev: Overriding Makefiles,  Up: Makefiles
 
-3.9 How `make' Reads a Makefile
+3.7 How `make' Reads a Makefile
 ===============================
 
 GNU `make' does its work in two distinct phases.  During the first
@@ -1318,7 +1187,7 @@ constructs within the makefile.  We say that expansion is "immediate"
 if it happens during the first phase: in this case `make' will expand
 any variables or functions in that section of a construct as the
 makefile is parsed.  We say that expansion is "deferred" if expansion
-is not performed immediately.  Expansion of deferred construct is not
+is not performed immediately.  Expansion of deferred construct is not
 performed until either the construct appears later in an immediate
 context, or until the second phase.
 
@@ -1340,20 +1209,35 @@ Variable definitions are parsed as follows:
        DEFERRED
      endef
 
+     define IMMEDIATE =
+       DEFERRED
+     endef
+
+     define IMMEDIATE ?=
+       DEFERRED
+     endef
+
+     define IMMEDIATE :=
+       IMMEDIATE
+     endef
+
+     define IMMEDIATE +=
+       DEFERRED or IMMEDIATE
+     endef
+
    For the append operator, `+=', the right-hand side is considered
 immediate if the variable was previously set as a simple variable
 (`:='), and deferred otherwise.
 
-Conditional Statements
+Conditional Directives
 ----------------------
 
-All instances of conditional syntax are parsed immediately, in their
-entirety; this includes the `ifdef', `ifeq', `ifndef', and `ifneq'
-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.
+Conditional directives are parsed immediately.  This means, for
+example, that automatic variables cannot be used in conditional
+directives, as automatic variables are not set until the recipe for
+that rule is invoked.  If you need to use automatic variables in a
+conditional directive you _must_ move the condition into the recipe and
+use shell conditional syntax instead.
 
 Rule Definition
 ---------------
@@ -1364,15 +1248,15 @@ A rule is always expanded the same way, regardless of the form:
        DEFERRED
 
    That is, the target and prerequisite sections are expanded
-immediately, and the commands used to construct the target are always
+immediately, and the recipe used to construct the target is always
 deferred.  This general rule is true for explicit rules, pattern rules,
 suffix rules, static pattern rules, and simple prerequisite definitions.
 
 \1f
 File: make.info,  Node: Secondary Expansion,  Prev: Reading Makefiles,  Up: Makefiles
 
-3.10 Secondary Expansion
-========================
+3.8 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
@@ -1433,10 +1317,10 @@ 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:
+just as in the recipe.  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
@@ -1451,7 +1335,7 @@ 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
+   You can also mix in functions here, as long as they are properly
 escaped:
 
      main_SRCS := main.c try.c test.c
@@ -1466,7 +1350,7 @@ 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
+to evaluation within recipes.  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.
@@ -1495,10 +1379,10 @@ illustrate these behaviors:
 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.
+`foo.1 bar.1 foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1' respectively.
 
    Rules undergo secondary expansion in makefile order, except that the
-rule with the command script is always evaluated last.
+rule with the recipe is always evaluated last.
 
    The variables `$$?' and `$$*' are not available and expand to the
 empty string.
@@ -1531,7 +1415,7 @@ fashion as for static pattern rules.  As an example:
 `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
+   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:
@@ -1548,7 +1432,7 @@ foo.h'.  If you are not interested in this reconstruction, you can use
 `$$*' instead of `%' in the prerequisites list.
 
 \1f
-File: make.info,  Node: Rules,  Next: Commands,  Prev: Makefiles,  Up: Top
+File: make.info,  Node: Rules,  Next: Recipes,  Prev: Makefiles,  Up: Top
 
 4 Writing Rules
 ***************
@@ -1556,7 +1440,7 @@ File: make.info,  Node: Rules,  Next: Commands,  Prev: Makefiles,  Up: Top
 A "rule" appears in the makefile and says when and how to remake
 certain files, called the rule's "targets" (most often only one per
 rule).  It lists the other files that are the "prerequisites" of the
-target, and "commands" to use to create or update the target.
+target, and the "recipe" to use to create or update the target.
 
    The order of rules is not significant, except for determining the
 "default goal": the target for `make' to consider, if you do not
@@ -1581,7 +1465,7 @@ Specify the Goals: Goals.
 * Wildcards::                   Using wildcard characters such as `*'.
 * Directory Search::            Searching other directories for source files.
 * Phony Targets::               Using a target that is not a real file's name.
-* Force Targets::               You can use a target without commands
+* Force Targets::               You can use a target without recipes
                                   or prerequisites to mark other targets
                                   as phony.
 * Empty Targets::               When only the date matters and the
@@ -1609,8 +1493,8 @@ Here is an example of a rule:
              cc -c -g foo.c
 
    Its target is `foo.o' and its prerequisites are `foo.c' and
-`defs.h'.  It has one command, which is `cc -c -g foo.c'.  The command
-line starts with a tab to identify it as a command.
+`defs.h'.  It has one command in the recipe: `cc -c -g foo.c'.  The
+recipe starts with a tab to identify it as a recipe.
 
    This rule says two things:
 
@@ -1619,7 +1503,7 @@ line starts with a tab to identify it as a command.
      than it.
 
    * How to update the file `foo.o': by running `cc' as stated.  The
-     command does not explicitly mention `defs.h', but we presume that
+     recipe does not explicitly mention `defs.h', but we presume that
      `foo.c' includes it, and that that is why `defs.h' was added to
      the prerequisites.
 
@@ -1632,13 +1516,13 @@ File: make.info,  Node: Rule Syntax,  Next: Prerequisite Types,  Prev: Rule Exam
 In general, a rule looks like this:
 
      TARGETS : PREREQUISITES
-             COMMAND
+             RECIPE
              ...
 
 or like this:
 
-     TARGETS : PREREQUISITES ; COMMAND
-             COMMAND
+     TARGETS : PREREQUISITES ; RECIPE
+             RECIPE
              ...
 
    The TARGETS are file names, separated by spaces.  Wildcard
@@ -1649,17 +1533,19 @@ Usually there is only one target per rule, but occasionally there is a
 reason to have more (*note Multiple Targets in a Rule: Multiple
 Targets.).
 
-   The COMMAND lines start with a tab character.  The first command may
-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.  There are other differences in the syntax of command lines.
-*Note Writing the Commands in Rules: Commands.
+   The RECIPE lines start with a tab character (or the first character
+in the value of the `.RECIPEPREFIX' variable; *note Special
+Variables::).  The first recipe line may 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.  There are other
+differences in the syntax of recipes.  *Note Writing Recipes in Rules:
+Recipes.
 
    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
+and you want a literal dollar sign in the prerequisites list, you must
 actually write _four_ dollar signs (`$$$$').
 
    You may split a long line by inserting a backslash followed by a
@@ -1679,9 +1565,9 @@ information in the prerequisites, so if any of the prerequisites
 changes, the contents of the existing target file are no longer
 necessarily valid.
 
-   How to update is specified by COMMANDS.  These are lines to be
-executed by the shell (normally `sh'), but with some extra features
-(*note Writing the Commands in Rules: Commands.).
+   How to update is specified by a RECIPE.  This is one or more lines
+to be executed by the shell (normally `sh'), but with some extra
+features (*note Writing Recipes in Rules: Recipes.).
 
 \1f
 File: make.info,  Node: Prerequisite Types,  Next: Wildcards,  Prev: Rule Syntax,  Up: Rules
@@ -1692,12 +1578,11 @@ File: make.info,  Node: Prerequisite Types,  Next: Wildcards,  Prev: Rule Syntax
 There are actually two different types of prerequisites understood by
 GNU `make': normal prerequisites such as described in the previous
 section, and "order-only" prerequisites.  A normal prerequisite makes
-two statements: first, it imposes an order of execution of build
-commands: any commands necessary to build any of a target's
-prerequisites will be fully executed before any commands necessary to
-build the target.  Second, it imposes a dependency relationship: if any
-prerequisite is newer than the target, then the target is considered
-out-of-date and must be rebuilt.
+two statements: first, it imposes an order in which recipes will be
+invoked: the recipes for all prerequisites of a target will be
+completed before the recipe for the target is run.  Second, it imposes
+a dependency relationship: if any prerequisite is newer than the
+target, then the target is considered out-of-date and must be rebuilt.
 
    Normally, this is exactly what you want: if a target's prerequisite
 is updated, then the target should also be updated.
@@ -1714,10 +1599,38 @@ are normal; any prerequisites to the right are order-only:
 
    The normal prerequisites section may of course be empty.  Also, you
 may still declare multiple lines of prerequisites for the same target:
-they are appended appropriately.  Note that if you declare the same
-file to be both a normal and an order-only prerequisite, the normal
-prerequisite takes precedence (since they are a strict superset of the
-behavior of an order-only prerequisite).
+they are appended appropriately (normal prerequisites are appended to
+the list of normal prerequisites; order-only prerequisites are appended
+to the list of order-only prerequisites).  Note that if you declare the
+same file to be both a normal and an order-only prerequisite, the
+normal prerequisite takes precedence (since they have a strict superset
+of the behavior of an order-only prerequisite).
+
+   Consider an example where your targets are to be placed in a separate
+directory, and that directory might not exist before `make' is run.  In
+this situation, you want the directory to be created before any targets
+are placed into it but, because the timestamps on directories change
+whenever a file is added, removed, or renamed, we certainly don't want
+to rebuild all the targets whenever the directory's timestamp changes.
+One way to manage this is with order-only prerequisites: make the
+directory an order-only prerequisite on all the targets:
+
+     OBJDIR := objdir
+     OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
+
+     $(OBJDIR)/%.o : %.c
+             $(COMPILE.c) $(OUTPUT_OPTION) $<
+
+     all: $(OBJS)
+
+     $(OBJS): | $(OBJDIR)
+
+     $(OBJDIR):
+             mkdir $(OBJDIR)
+
+   Now the rule to create the `objdir' directory will be run, if
+needed, before any `.o' is built, but no `.o' will be built because the
+`objdir' directory timestamp changed.
 
 \1f
 File: make.info,  Node: Wildcards,  Next: Directory Search,  Prev: Prerequisite Types,  Up: Rules
@@ -1740,7 +1653,7 @@ each user (such as MS-DOS or MS-Windows), this functionality can be
 simulated by setting the environment variable HOME.
 
    Wildcard expansion is performed by `make' automatically in targets
-and in prerequisites.  In commands the shell is responsible for
+and in prerequisites.  In recipes, the shell is responsible for
 wildcard expansion.  In other contexts, wildcard expansion happens only
 if you request it explicitly with the `wildcard' function.
 
@@ -1761,7 +1674,7 @@ File: make.info,  Node: Wildcard Examples,  Next: Wildcard Pitfall,  Prev: Wildc
 4.4.1 Wildcard Examples
 -----------------------
 
-Wildcards can be used in the commands of a rule, where they are expanded
+Wildcards can be used in the recipe of a rule, where they are expanded
 by the shell.  For example, here is a rule to delete all the object
 files:
 
@@ -1776,9 +1689,9 @@ files that have changed since the last time you printed them:
              lpr -p $?
              touch print
 
-This rule uses `print' as an empty target file; see *Note Empty Target
+This rule uses `print' as an empty target file; see *note Empty Target
 Files to Record Events: Empty Targets.  (The automatic variable `$?' is
-used to print only those files that have changed; see *Note Automatic
+used to print only those files that have changed; see *note Automatic
 Variables::.)
 
    Wildcard expansion does not happen when you define a variable.
@@ -1787,9 +1700,10 @@ Thus, if you write this:
      objects = *.o
 
 then the value of the variable `objects' is the actual string `*.o'.
-However, if you use the value of `objects' in a target, prerequisite or
-command, wildcard expansion will take place at that time.  To set
-`objects' to the expansion, instead use:
+However, if you use the value of `objects' in a target or prerequisite,
+wildcard expansion will take place there.  If you use the value of
+`objects' in a recipe, the shell may perform wildcard expansion when
+the recipe runs.  To set `objects' to the expansion, instead use:
 
      objects := $(wildcard *.o)
 
@@ -1905,7 +1819,7 @@ do not need to change the individual rules, just the search paths.
 * Selective Search::            Specifying a search path
                                   for a specified class of names.
 * Search Algorithm::            When and how search paths are applied.
-* Commands/Search::             How to write shell commands that work together
+* Recipes/Search::             How to write recipes that work together
                                   with search paths.
 * Implicit/Search::             How search paths affect implicit rules.
 * Libraries/Search::            Directory search for link libraries.
@@ -1927,8 +1841,8 @@ exist in the current directory, `make' searches the directories listed
 in `VPATH' for a file with that name.  If a file is found in one of
 them, that file may become the prerequisite (see below).  Rules may then
 specify the names of files in the prerequisite list as if they all
-existed in the current directory.  *Note Writing Shell Commands with
-Directory Search: Commands/Search.
+existed in the current directory.  *Note Writing Recipes with Directory
+Search: Recipes/Search.
 
    In the `VPATH' variable, directory names are separated by colons or
 blanks.  The order in which directories are listed is the order followed
@@ -2034,7 +1948,7 @@ while
 will look for a file ending in `.c' in `foo', then `bar', then `blish'.
 
 \1f
-File: make.info,  Node: Search Algorithm,  Next: Commands/Search,  Prev: Selective Search,  Up: Directory Search
+File: make.info,  Node: Search Algorithm,  Next: Recipes/Search,  Prev: Selective Search,  Up: Directory Search
 
 4.5.3 How Directory Searches are Performed
 ------------------------------------------
@@ -2092,16 +2006,15 @@ then that pathname is not thrown away.  The target is rebuilt using the
 expanded path.
 
 \1f
-File: make.info,  Node: Commands/Search,  Next: Implicit/Search,  Prev: Search Algorithm,  Up: Directory Search
+File: make.info,  Node: Recipes/Search,  Next: Implicit/Search,  Prev: Search Algorithm,  Up: Directory Search
 
-4.5.4 Writing Shell Commands with Directory Search
---------------------------------------------------
+4.5.4 Writing Recipes with Directory Search
+-------------------------------------------
 
 When a prerequisite is found in another directory through directory
-search, this cannot change the commands of the rule; they will execute
-as written.  Therefore, you must write the commands with care so that
-they will look for the prerequisite in the directory where `make' finds
-it.
+search, this cannot change the recipe of the rule; they will execute as
+written.  Therefore, you must write the recipe with care so that it
+will look for the prerequisite in the directory where `make' finds it.
 
    This is done with the "automatic variables" such as `$^' (*note
 Automatic Variables::).  For instance, the value of `$^' is a list of
@@ -2118,15 +2031,15 @@ affect all C compilations uniformly; *note Variables Used by Implicit
 Rules: Implicit Variables.)
 
    Often the prerequisites include header files as well, which you do
-not want to mention in the commands.  The automatic variable `$<' is
-just the first prerequisite:
+not want to mention in the recipe.  The automatic variable `$<' is just
+the first prerequisite:
 
      VPATH = src:../headers
      foo.o : foo.c defs.h hack.h
              cc -c $(CFLAGS) $< -o $@
 
 \1f
-File: make.info,  Node: Implicit/Search,  Next: Libraries/Search,  Prev: Commands/Search,  Up: Directory Search
+File: make.info,  Node: Implicit/Search,  Next: Libraries/Search,  Prev: Recipes/Search,  Up: Directory Search
 
 4.5.5 Directory Search and Implicit Rules
 -----------------------------------------
@@ -2142,7 +2055,7 @@ directory, the appropriate directories are searched for it.  If `foo.c'
 exists (or is mentioned in the makefile) in any of the directories, the
 implicit rule for C compilation is applied.
 
-   The commands of implicit rules normally use automatic variables as a
+   The recipes of implicit rules normally use automatic variables as a
 matter of necessity; consequently they will use the file names found by
 directory search with no extra effort.
 
@@ -2160,15 +2073,13 @@ the name of a file, and the _file name_ of a library generally looks
 like `libNAME.a', not like `-lNAME'.)
 
    When a prerequisite's name has the form `-lNAME', `make' handles it
-specially by searching for the file `libNAME.so' in the current
-directory, in directories specified by matching `vpath' search paths
-and the `VPATH' search path, and then in the directories `/lib',
-`/usr/lib', and `PREFIX/lib' (normally `/usr/local/lib', but
-MS-DOS/MS-Windows versions of `make' behave as if PREFIX is defined to
-be the root of the DJGPP installation tree).
-
-   If that file is not found, then the file `libNAME.a' is searched
-for, in the same directories as above.
+specially by searching for the file `libNAME.so', and, if it is not
+found, for the file `libNAME.a' in the current directory, in
+directories specified by matching `vpath' search paths and the `VPATH'
+search path, and then in the directories `/lib', `/usr/lib', and
+`PREFIX/lib' (normally `/usr/local/lib', but MS-DOS/MS-Windows versions
+of `make' behave as if PREFIX is defined to be the root of the DJGPP
+installation tree).
 
    For example, if there is a `/usr/lib/libcurses.a' library on your
 system (and no `/usr/lib/libcurses.so' file), then
@@ -2185,8 +2096,7 @@ and `libNAME.a', this is customizable via the `.LIBPATTERNS' variable.
 Each word in the value of this variable is a pattern string.  When a
 prerequisite like `-lNAME' is seen, `make' will replace the percent in
 each pattern in the list with NAME and perform the above directory
-searches using that library filename.  If no library is found, the next
-word in the list will be used.
+searches using each library filename.
 
    The default value for `.LIBPATTERNS' is `lib%.so lib%.a', which
 provides the default behavior described above.
@@ -2200,14 +2110,14 @@ File: make.info,  Node: Phony Targets,  Next: Force Targets,  Prev: Directory Se
 4.6 Phony Targets
 =================
 
-A phony target is one that is not really the name of a file.  It is
-just a name for some commands to be executed when you make an explicit
+A phony target is one that is not really the name of a file; rather it
+is just a name for a recipe to be executed when you make an explicit
 request.  There are two reasons to use a phony target: to avoid a
 conflict with a file of the same name, and to improve performance.
 
-   If you write a rule whose commands will not create the target file,
-the commands will be executed every time the target comes up for
-remaking.  Here is an example:
+   If you write a rule whose recipe will not create the target file, the
+recipe will be executed every time the target comes up for remaking.
+Here is an example:
 
      clean:
              rm *.o temp
@@ -2219,14 +2129,13 @@ executed every time you say `make clean'.
    The phony target will cease to work if anything ever does create a
 file named `clean' in this directory.  Since it has no prerequisites,
 the file `clean' would inevitably be considered up to date, and its
-commands would not be executed.  To avoid this problem, you can
-explicitly declare the target to be phony, using the special target
-`.PHONY' (*note Special Built-in Target Names: Special Targets.) as
-follows:
+recipe would not be executed.  To avoid this problem, you can explicitly
+declare the target to be phony, using the special target `.PHONY'
+(*note Special Built-in Target Names: Special Targets.) as follows:
 
      .PHONY : clean
 
-Once this is done, `make clean' will run the commands regardless of
+Once this is done, `make clean' will run the recipe regardless of
 whether there is a file named `clean'.
 
    Since it knows that phony targets do not name actual files that
@@ -2243,11 +2152,11 @@ target, then you write the rule, like this:
              rm *.o temp
 
    Another example of the usefulness of phony targets is in conjunction
-with recursive invocations of `make' (for more information, see *Note
+with recursive invocations of `make' (for more information, see *note
 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
-shell loop over the subdirectories, like this:
+built.  One way to handle this is with one rule whose recipe is a shell
+loop over the subdirectories, like this:
 
      SUBDIRS = foo bar baz
 
@@ -2256,8 +2165,8 @@ shell loop over the subdirectories, like this:
                $(MAKE) -C $$dir; \
              done
 
-   There are a few problems with this method, however.  First, any error
-detected in a submake is not noted by this rule, so it will continue to
+   There are problems with this method, however.  First, any error
+detected in a submake is ignored by this rule, so it will continue to
 build the rest of the directories even when one fails.  This can be
 overcome by adding shell commands to note the error and exit, but then
 it will do so even if `make' is invoked with the `-k' option, which is
@@ -2286,9 +2195,9 @@ relationship declaration is particularly important when attempting
 parallel builds.
 
    A phony target should not be a prerequisite of a real target file;
-if it is, its commands are run every time `make' goes to update that
+if it is, its recipe will be run every time `make' goes to update that
 file.  As long as a phony target is never a prerequisite of a real
-target, the phony target commands will be executed only when the phony
+target, the phony target recipe will be executed only when the phony
 target is a specified goal (*note Arguments to Specify the Goals:
 Goals.).
 
@@ -2334,13 +2243,13 @@ the object files, the difference files, and the file `program':
 \1f
 File: make.info,  Node: Force Targets,  Next: Empty Targets,  Prev: Phony Targets,  Up: Rules
 
-4.7 Rules without Commands or Prerequisites
-===========================================
+4.7 Rules without Recipes or Prerequisites
+==========================================
 
-If a rule has no prerequisites or commands, and the target of the rule
-is a nonexistent file, then `make' imagines this target to have been
+If a rule has no prerequisites or recipe, and the target of the rule is
+a nonexistent file, then `make' imagines this target to have been
 updated whenever its rule is run.  This implies that all targets
-depending on this one will always have their commands run.
+depending on this one will always have their recipe run.
 
    An example will illustrate this:
 
@@ -2349,7 +2258,7 @@ depending on this one will always have their commands run.
      FORCE:
 
    Here the target `FORCE' satisfies the special conditions, so the
-target `clean' that depends on it is forced to run its commands.  There
+target `clean' that depends on it is forced to run its recipe.  There
 is nothing special about the name `FORCE', but that is one name
 commonly used this way.
 
@@ -2367,20 +2276,20 @@ File: make.info,  Node: Empty Targets,  Next: Special Targets,  Prev: Force Targ
 =======================================
 
 The "empty target" is a variant of the phony target; it is used to hold
-commands for an action that you request explicitly from time to time.
+recipes for an action that you request explicitly from time to time.
 Unlike a phony target, this target file can really exist; but the file's
 contents do not matter, and usually are empty.
 
    The purpose of the empty target file is to record, with its
-last-modification time, when the rule's commands were last executed.  It
-does so because one of the commands is a `touch' command to update the
-target file.
+last-modification time, when the rule's recipe was last executed.  It
+does so because one of the commands in the recipe is a `touch' command
+to update the target file.
 
    The empty target file should have some prerequisites (otherwise it
 doesn't make sense).  When you ask to remake the empty target, the
-commands are executed if any prerequisite is more recent than the
-target; in other words, if a prerequisite has changed since the last
-time you remade the target.  Here is an example:
+recipe is executed if any prerequisite is more recent than the target;
+in other words, if a prerequisite has changed since the last time you
+remade the target.  Here is an example:
 
      print: foo.c bar.c
              lpr -p $?
@@ -2402,9 +2311,9 @@ Certain names have special meanings if they appear as targets.
 `.PHONY'
      The prerequisites of the special target `.PHONY' are considered to
      be phony targets.  When it is time to consider such a target,
-     `make' will run its commands unconditionally, regardless of
-     whether a file with that name exists or what its last-modification
-     time is.  *Note Phony Targets: Phony Targets.
+     `make' will run its recipe unconditionally, regardless of whether
+     a file with that name exists or what its last-modification time
+     is.  *Note Phony Targets: Phony Targets.
 
 `.SUFFIXES'
      The prerequisites of the special target `.SUFFIXES' are the list
@@ -2412,17 +2321,17 @@ Certain names have special meanings if they appear as targets.
      Old-Fashioned Suffix Rules: Suffix Rules.
 
 `.DEFAULT'
-     The commands specified for `.DEFAULT' are used for any target for
+     The recipe specified for `.DEFAULT' is used for any target for
      which no rules are found (either explicit rules or implicit rules).
-     *Note Last Resort::.  If `.DEFAULT' commands are specified, every
+     *Note Last Resort::.  If a `.DEFAULT' recipe is specified, every
      file mentioned as a prerequisite, but not as a target in a rule,
-     will have these commands executed on its behalf.  *Note Implicit
-     Rule Search Algorithm: Implicit Rule Search.
+     will have that recipe executed on its behalf.  *Note Implicit Rule
+     Search Algorithm: Implicit Rule Search.
 
 `.PRECIOUS'
      The targets which `.PRECIOUS' depends on are given the following
      special treatment: if `make' is killed or interrupted during the
-     execution of their commands, the target is not deleted.  *Note
+     execution of their recipes, the target is not deleted.  *Note
      Interrupting or Killing `make': Interrupts.  Also, if the target
      is an intermediate file, it will not be deleted after it is no
      longer needed, as is normally done.  *Note Chains of Implicit
@@ -2454,43 +2363,38 @@ Certain names have special meanings if they appear as targets.
      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
      makefile, then `make' will delete the target of a rule if it has
-     changed and its commands exit with a nonzero exit status, just as
-     it does when it receives a signal.  *Note Errors in Commands:
-     Errors.
+     changed and its recipe exits with a nonzero exit status, just as it
+     does when it receives a signal.  *Note Errors in Recipes: Errors.
 
 `.IGNORE'
      If you specify prerequisites for `.IGNORE', then `make' will
-     ignore errors in execution of the commands run for those particular
-     files.  The commands for `.IGNORE' are not meaningful.
+     ignore errors in execution of the recipe for those particular
+     files.  The recipe for `.IGNORE' (if any) is ignored.
 
      If mentioned as a target with no prerequisites, `.IGNORE' says to
-     ignore errors in execution of commands for all files.  This usage
-     of `.IGNORE' is supported only for historical compatibility.  Since
-     this affects every command in the makefile, it is not very useful;
+     ignore errors in execution of recipes for all files.  This usage of
+     `.IGNORE' is supported only for historical compatibility.  Since
+     this affects every recipe in the makefile, it is not very useful;
      we recommend you use the more selective ways to ignore errors in
-     specific commands.  *Note Errors in Commands: Errors.
+     specific recipes.  *Note Errors in Recipes: Errors.
 
 `.LOW_RESOLUTION_TIME'
      If you specify prerequisites for `.LOW_RESOLUTION_TIME', `make'
      assumes that these files are created by commands that generate low
-     resolution time stamps.  The commands for `.LOW_RESOLUTION_TIME'
-     are not meaningful.
-
-     The high resolution file time stamps of many modern hosts lessen
-     the chance of `make' incorrectly concluding that a file is up to
-     date.  Unfortunately, these hosts provide no way to set a high
-     resolution file time stamp, so commands like `cp -p' that
-     explicitly set a file's time stamp must discard its subsecond
-     part.  If a file is created by such a command, you should list it
-     as a prerequisite of `.LOW_RESOLUTION_TIME' so that `make' does
-     not mistakenly conclude that the file is out of date.  For example:
+     resolution time stamps.  The recipe for the `.LOW_RESOLUTION_TIME'
+     target are ignored.
+
+     The high resolution file time stamps of many modern file systems
+     lessen the chance of `make' incorrectly concluding that a file is
+     up to date.  Unfortunately, some hosts do not provide a way to set
+     a high resolution file time stamp, so commands like `cp -p' that
+     explicitly set a file's time stamp must discard its subsecond part.
+     If a file is created by such a command, you should list it as a
+     prerequisite of `.LOW_RESOLUTION_TIME' so that `make' does not
+     mistakenly conclude that the file is out of date.  For example:
 
           .LOW_RESOLUTION_TIME: dst
           dst: src
@@ -2509,15 +2413,15 @@ Certain names have special meanings if they appear as targets.
 
 `.SILENT'
      If you specify prerequisites for `.SILENT', then `make' will not
-     print the commands to remake those particular files before
-     executing them.  The commands for `.SILENT' are not meaningful.
+     print the recipe used to remake those particular files before
+     executing them.  The recipe for `.SILENT' is ignored.
 
      If mentioned as a target with no prerequisites, `.SILENT' says not
-     to print any commands before executing them.  This usage of
+     to print any recipes before executing them.  This usage of
      `.SILENT' is supported only for historical compatibility.  We
      recommend you use the more selective ways to silence specific
-     commands.  *Note Command Echoing: Echoing.  If you want to silence
-     all commands for a particular run of `make', use the `-s' or
+     recipes.  *Note Recipe Echoing: Echoing.  If you want to silence
+     all recipes for a particular run of `make', use the `-s' or
      `--silent' option (*note Options Summary::).
 
 `.EXPORT_ALL_VARIABLES'
@@ -2526,12 +2430,31 @@ Certain names have special meanings if they appear as targets.
      Variables to a Sub-`make': Variables/Recursion.
 
 `.NOTPARALLEL'
-     If `.NOTPARALLEL' is mentioned as a target, then this invocation of
-     `make' will be run serially, even if the `-j' option is given.
-     Any recursively invoked `make' command will still be run in
-     parallel (unless its makefile contains this target).  Any
+     If `.NOTPARALLEL' is mentioned as a target, then this invocation
+     of `make' will be run serially, even if the `-j' option is given.
+     Any recursively invoked `make' command will still run recipes in
+     parallel (unless its makefile also contains this target).  Any
      prerequisites on this target are ignored.
 
+`.ONESHELL'
+     If `.ONESHELL' is mentioned as a target, then when a target is
+     built all lines of the recipe will be given to a single invocation
+     of the shell rather than each line being invoked separately (*note
+     Recipe Execution: Execution.).
+
+`.POSIX'
+     If `.POSIX' is mentioned as a target, then the makefile will be
+     parsed and run in POSIX-conforming mode.  This does _not_ mean
+     that only POSIX-conforming makefiles will be accepted: all advanced
+     GNU `make' features are still available.  Rather, this target
+     causes `make' to behave as required by POSIX in those areas where
+     `make''s default behavior differs.
+
+     In particular, if this target is mentioned then recipes will be
+     invoked as if the shell had been passed the `-e' flag: the first
+     failing command in a recipe will cause the recipe to fail
+     immediately.
+
    Any defined implicit rule suffix also counts as a special target if
 it appears as a target, and so does the concatenation of two suffixes,
 such as `.c.o'.  These targets are suffix rules, an obsolete way of
@@ -2548,24 +2471,24 @@ File: make.info,  Node: Multiple Targets,  Next: Multiple Rules,  Prev: Special
 ===============================
 
 A rule with multiple targets is equivalent to writing many rules, each
-with one target, and all identical aside from that.  The same commands
-apply to all the targets, but their effects may vary because you can
-substitute the actual target name into the command using `$@'.  The
-rule contributes the same prerequisites to all the targets also.
+with one target, and all identical aside from that.  The same recipe
+applies to all the targets, but its effect may vary because you can
+substitute the actual target name into the recipe using `$@'.  The rule
+contributes the same prerequisites to all the targets also.
 
    This is useful in two cases.
 
-   * You want just prerequisites, no commands.  For example:
+   * You want just prerequisites, no recipe.  For example:
 
           kbd.o command.o files.o: command.h
 
      gives an additional prerequisite to each of the three object files
      mentioned.
 
-   * Similar commands work for all the targets.  The commands do not
-     need to be absolutely identical, since the automatic variable `$@'
-     can be used to substitute the particular target to be remade into
-     the commands (*note Automatic Variables::).  For example:
+   * Similar recipes work for all the targets.  The recipes do not need
+     to be absolutely identical, since the automatic variable `$@' can
+     be used to substitute the particular target to be remade into the
+     commands (*note Automatic Variables::).  For example:
 
           bigoutput littleoutput : text.g
                   generate text.g -$(subst output,,$@) > $@
@@ -2583,7 +2506,7 @@ rule contributes the same prerequisites to all the targets also.
      for an explanation of the `subst' function.
 
    Suppose you would like to vary the prerequisites according to the
-target, much as the variable `$@' allows you to vary the commands.  You
+target, much as the variable `$@' allows you to vary the recipe.  You
 cannot do this with multiple targets in an ordinary rule, but you can
 do it with a "static pattern rule".  *Note Static Pattern Rules: Static
 Pattern.
@@ -2597,17 +2520,17 @@ File: make.info,  Node: Multiple Rules,  Next: Static Pattern,  Prev: Multiple T
 One file can be the target of several rules.  All the prerequisites
 mentioned in all the rules are merged into one list of prerequisites for
 the target.  If the target is older than any prerequisite from any rule,
-the commands are executed.
-
-   There can only be one set of commands to be executed for a file.  If
-more than one rule gives commands for the same file, `make' uses the
-last set given and prints an error message.  (As a special case, if the
-file's name begins with a dot, no error message is printed.  This odd
-behavior is only for compatibility with other implementations of
-`make'... you should avoid using it).  Occasionally it is useful to
-have the same target invoke multiple commands which are defined in
-different parts of your makefile; you can use "double-colon rules"
-(*note Double-Colon::) for this.
+the recipe is executed.
+
+   There can only be one recipe to be executed for a file.  If more than
+one rule gives a recipe for the same file, `make' uses the last one
+given and prints an error message.  (As a special case, if the file's
+name begins with a dot, no error message is printed.  This odd behavior
+is only for compatibility with other implementations of `make'... you
+should avoid using it).  Occasionally it is useful to have the same
+target invoke multiple recipes which are defined in different parts of
+your makefile; you can use "double-colon rules" (*note Double-Colon::)
+for this.
 
    An extra rule with just prerequisites can be used to give a few extra
 prerequisites to many files at once.  For example, makefiles often have
@@ -2626,8 +2549,8 @@ form to use if you wish to add the additional prerequisite
 intermittently.
 
    Another wrinkle is that the additional prerequisites could be
-specified with a variable that you set with a command argument to `make'
-(*note Overriding Variables: Overriding.).  For example,
+specified with a variable that you set with a command line argument to
+`make' (*note Overriding Variables: Overriding.).  For example,
 
      extradeps=
      $(objects) : $(extradeps)
@@ -2635,9 +2558,9 @@ specified with a variable that you set with a command argument to `make'
 means that the command `make extradeps=foo.h' will consider `foo.h' as
 a prerequisite of each object file, but plain `make' will not.
 
-   If none of the explicit rules for a target has commands, then `make'
-searches for an applicable implicit rule to find some commands *note
-Using Implicit Rules: Implicit Rules.).
+   If none of the explicit rules for a target has a recipe, then `make'
+searches for an applicable implicit rule to find one *note Using
+Implicit Rules: Implicit Rules.).
 
 \1f
 File: make.info,  Node: Static Pattern,  Next: Double-Colon,  Prev: Multiple Rules,  Up: Rules
@@ -2665,7 +2588,7 @@ File: make.info,  Node: Static Usage,  Next: Static versus Implicit,  Prev: Stat
 Here is the syntax of a static pattern rule:
 
      TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ...
-             COMMANDS
+             RECIPE
              ...
 
 The TARGETS list specifies the targets that the rule applies to.  The
@@ -2716,7 +2639,7 @@ the corresponding `.c' file:
 
 Here `$<' is the automatic variable that holds the name of the
 prerequisite and `$@' is the automatic variable that holds the name of
-the target; see *Note Automatic Variables::.
+the target; see *note Automatic Variables::.
 
    Each target specified must match the target pattern; a warning is
 issued for each target that does not.  If you have a list of files,
@@ -2758,7 +2681,7 @@ constructing the names of prerequisites.  The difference is in how
 `make' decides _when_ the rule applies.
 
    An implicit rule _can_ apply to any target that matches its pattern,
-but it _does_ apply only when the target has no commands otherwise
+but it _does_ apply only when the target has no recipe otherwise
 specified, and only when the prerequisites can be found.  If more than
 one implicit rule appears applicable, only one applies; the choice
 depends on the order of rules.
@@ -2766,7 +2689,7 @@ depends on the order of rules.
    By contrast, a static pattern rule applies to the precise list of
 targets that you specify in the rule.  It cannot apply to any other
 target and it invariably does apply to each of the targets specified.
-If two conflicting rules apply, and both have commands, that's an error.
+If two conflicting rules apply, and both have recipes, that's an error.
 
    The static pattern rule can be better than an implicit rule for these
 reasons:
@@ -2788,16 +2711,18 @@ File: make.info,  Node: Double-Colon,  Next: Automatic Prerequisites,  Prev: Sta
 4.13 Double-Colon Rules
 =======================
 
-"Double-colon" rules are rules written with `::' instead of `:' after
-the target names.  They are handled differently from ordinary rules
-when the same target appears in more than one rule.
+"Double-colon" rules are explicit rules written with `::' instead of
+`:' after the target names.  They are handled differently from ordinary
+rules when the same target appears in more than one rule.  Pattern
+rules with double-colons have an entirely different meaning (*note
+Match-Anything Rules::).
 
    When a target appears in multiple rules, all the rules must be the
 same type: all ordinary, or all double-colon.  If they are
 double-colon, each of them is independent of the others.  Each
-double-colon rule's commands are executed if the target is older than
-any prerequisites of that rule.  If there are no prerequisites for that
-rule, its commands are always executed (even if the target already
+double-colon rule's recipe is executed if the target is older than any
+prerequisites of that rule.  If there are no prerequisites for that
+rule, its recipe is always executed (even if the target already
 exists).  This can result in executing none, any, or all of the
 double-colon rules.
 
@@ -2807,7 +2732,7 @@ individually, just as rules with different targets are processed.
 
    The double-colon rules for a target are executed in the order they
 appear in the makefile.  However, the cases where double-colon rules
-really make sense are those where the order of executing the commands
+really make sense are those where the order of executing the recipes
 would not matter.
 
    Double-colon rules are somewhat obscure and not often very useful;
@@ -2815,7 +2740,7 @@ they provide a mechanism for cases in which the method used to update a
 target differs depending on which prerequisite files caused the update,
 and such cases are rare.
 
-   Each double-colon rule should specify commands; if it does not, an
+   Each double-colon rule should specify a recipe; if it does not, an
 implicit rule will be used if one applies.  *Note Using Implicit Rules:
 Implicit Rules.
 
@@ -2926,101 +2851,104 @@ in your makefiles or run the risk of having a random object file become
 the default goal.  *Note How Make Works::.
 
 \1f
-File: make.info,  Node: Commands,  Next: Using Variables,  Prev: Rules,  Up: Top
+File: make.info,  Node: Recipes,  Next: Using Variables,  Prev: Rules,  Up: Top
 
-5 Writing the Commands in Rules
-*******************************
+5 Writing Recipes in Rules
+**************************
 
-The commands of a rule consist of one or more shell command lines to be
+The recipe of a rule consists 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 always interpreted by `/bin/sh' unless the makefile specifies
-otherwise.  *Note Command Execution: Execution.
+   Users use many different shell programs, but recipes in makefiles are
+always interpreted by `/bin/sh' unless the makefile specifies
+otherwise.  *Note Recipe Execution: Execution.
 
 * Menu:
 
-* Command Syntax::              Command syntax features and pitfalls.
-* Echoing::                     How to control when commands are echoed.
-* Execution::                   How commands are executed.
-* Parallel::                    How commands can be executed in parallel.
-* Errors::                      What happens after a command execution error.
-* Interrupts::                  What happens when a command is interrupted.
+* Recipe Syntax::               Recipe syntax features and pitfalls.
+* Echoing::                     How to control when recipes are echoed.
+* Execution::                   How recipes are executed.
+* Parallel::                    How recipes can be executed in parallel.
+* Errors::                      What happens after a recipe execution error.
+* Interrupts::                  What happens when a recipe is interrupted.
 * Recursion::                   Invoking `make' from makefiles.
-* Sequences::                   Defining canned sequences of commands.
-* Empty Commands::              Defining useful, do-nothing commands.
+* Canned Recipes::              Defining canned recipes.
+* Empty Recipes::               Defining useful, do-nothing recipes.
 
 \1f
-File: make.info,  Node: Command Syntax,  Next: Echoing,  Prev: Commands,  Up: Commands
+File: make.info,  Node: Recipe Syntax,  Next: Echoing,  Prev: Recipes,  Up: Recipes
 
-5.1 Command Syntax
-==================
+5.1 Recipe 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
+Writing Makefiles: Makefiles.).  However, recipes 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
+only a very few specific translations on the content of the recipe
 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.
+   Each line in the recipe must start with a tab (or the first character
+in the value of the `.RECIPEPREFIX' variable; *note Special
+Variables::), except that the first recipe 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 part of a recipe for that rule.  Blank
+lines and lines of just comments may appear among the recipe 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::).
+     recipe (*note Empty Recipes::).
 
-   * 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 comment in a recipe 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
+     tab as the first character on the line, will be considered part of
+     a recipe, 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.
+     considered part of a recipe and be passed to the shell.
 
 
 * Menu:
 
-* Splitting Lines::             Breaking long command lines for readability.
-* Variables in Commands::       Using `make' variables in commands.
+* Splitting Lines::             Breaking long recipe lines for readability.
+* Variables in Recipes::        Using `make' variables in recipes.
 
 \1f
-File: make.info,  Node: Splitting Lines,  Next: Variables in Commands,  Prev: Command Syntax,  Up: Command Syntax
+File: make.info,  Node: Splitting Lines,  Next: Variables in Recipes,  Prev: Recipe Syntax,  Up: Recipe Syntax
 
-5.1.1 Splitting Command Lines
------------------------------
+5.1.1 Splitting Recipe 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.
+One of the few ways in which `make' does interpret recipes is checking
+for a backslash just before the newline.  As in normal makefile syntax,
+a single logical recipe line can be split into multiple physical lines
+in the makefile by placing a backslash before each newline.  A sequence
+of lines like this is considered a single recipe line, 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.
+makefile, backslash-newline pairs are _not_ removed from the recipe.
 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.
+backslash-newline is the recipe prefix character (a tab by default;
+*note Special Variables::), then that character (and only that
+character) is removed.  Whitespace is never added to the recipe.
 
-   For example, this makefile:
+   For example, the recipe for the all target in this makefile:
 
      all :
              @echo no\
@@ -3045,7 +2973,7 @@ consists of four separate shell commands where the output is:
              world' ; echo "hello \
          world"
 
-will run one shell with a command script of:
+will invoke one shell with a command of:
 
      echo 'hello \
      world' ; echo "hello \
@@ -3070,7 +2998,7 @@ 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
+then use the variable in the recipe.  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:
 
@@ -3085,28 +3013,28 @@ we will get output like this:
 
    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.
+correspondence between the variable and the recipe that uses it.
 
 \1f
-File: make.info,  Node: Variables in Commands,  Prev: Splitting Lines,  Up: Command Syntax
+File: make.info,  Node: Variables in Recipes,  Prev: Splitting Lines,  Up: Recipe Syntax
 
-5.1.2 Using Variables in Commands
----------------------------------
+5.1.2 Using Variables in Recipes
+--------------------------------
 
-The other way in which `make' processes commands is by expanding any
+The other way in which `make' processes recipes 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.
+recipes 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:
+   Variable and function references in recipes 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 recipe,
+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:
@@ -3127,52 +3055,54 @@ which generates the expected result:
      three
 
 \1f
-File: make.info,  Node: Echoing,  Next: Execution,  Prev: Command Syntax,  Up: Commands
+File: make.info,  Node: Echoing,  Next: Execution,  Prev: Recipe Syntax,  Up: Recipes
 
-5.2 Command Echoing
-===================
+5.2 Recipe Echoing
+==================
 
-Normally `make' prints each command line before it is executed.  We
-call this "echoing" because it gives the appearance that you are typing
-the commands yourself.
+Normally `make' prints each line of the recipe before it is executed.
+We call this "echoing" because it gives the appearance that you are
+typing the lines yourself.
 
    When a line starts with `@', the echoing of that line is suppressed.
-The `@' is discarded before the command is passed to the shell.
-Typically you would use this for a command whose only effect is to print
+The `@' is discarded before the line is passed to the shell.  Typically
+you would use this for a command whose only effect is to print
 something, such as an `echo' command to indicate progress through the
 makefile:
 
      @echo About to make distribution files
 
    When `make' is given the flag `-n' or `--just-print' it only echoes
-commands, it won't execute them.  *Note Summary of Options: Options
-Summary.  In this case and only this case, even the commands starting
-with `@' are printed.  This flag is useful for finding out which
-commands `make' thinks are necessary without actually doing them.
+most recipes, without executing them.  *Note Summary of Options:
+Options Summary.  In this case even the recipe lines starting with `@'
+are printed.  This flag is useful for finding out which recipes `make'
+thinks are necessary without actually doing them.
 
    The `-s' or `--silent' flag to `make' prevents all echoing, as if
-all commands started with `@'.  A rule in the makefile for the special
+all recipes started with `@'.  A rule in the makefile for the special
 target `.SILENT' without prerequisites has the same effect (*note
 Special Built-in Target Names: Special Targets.).  `.SILENT' is
 essentially obsolete since `@' is more flexible.
 
 \1f
-File: make.info,  Node: Execution,  Next: Parallel,  Prev: Echoing,  Up: Commands
+File: make.info,  Node: Execution,  Next: Parallel,  Prev: Echoing,  Up: Recipes
 
-5.3 Command Execution
-=====================
+5.3 Recipe 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, `make' may take shortcuts that do not affect the results.)
+When it is time to execute recipes to update a target, they are
+executed by invoking a new subshell for each line of the recipe, unless
+the `.ONESHELL' special target is in effect (*note Using One Shell: One
+Shell.)  (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:
+process will not affect the following lines in the recipe.(1)  If you
+want to use `cd' to affect the next statement, put both statements in a
+single recipe 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 $(@D) && gobble $(@F) > ../$@
@@ -3184,23 +3114,111 @@ case it would certainly cause `../foo' to be truncated, at least).
 
 * Menu:
 
+* One Shell::                   One shell for all lines in a recipe
 * Choosing the Shell::          How `make' chooses the shell used
-                                  to run commands.
+                                  to run recipes.
 
    ---------- 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.
+changing it _will_ affect the following recipe lines on those systems.
+
+\1f
+File: make.info,  Node: One Shell,  Next: Choosing the Shell,  Prev: Execution,  Up: Execution
+
+5.3.1 Using One Shell
+---------------------
+
+Sometimes you would prefer that all the lines in the recipe be passed
+to a single invocation of the shell.  There are generally two
+situations where this is useful: first, it can improve performance in
+makefiles where recipes consist of many command lines, by avoiding
+extra processes.  Second, you might want newlines to be included in
+your recipe command (for example perhaps you are using a very different
+interpreter as your `SHELL').  If the `.ONESHELL' special target
+appears anywhere in the makefile then _all_ recipe lines for each
+target will be provided to a single invocation of the shell.  Newlines
+between recipe lines will be preserved.  For example:
+
+     .ONESHELL:
+     foo : bar/lose
+             cd $(@D)
+             gobble $(@F) > ../$@
+
+would now work as expected even though the commands are on different
+recipe lines.
+
+   If `.ONESHELL' is provided, then only the first line of the recipe
+will be checked for the special prefix characters (`@', `-', and `+').
+Subsequent lines will include the special characters in the recipe line
+when the `SHELL' is invoked.  If you want your recipe to start with one
+of these special characters you'll need to arrange for them to not be
+the first characters on the first line, perhaps by adding a comment or
+similar.  For example, this would be a syntax error in Perl because the
+first `@' is removed by make:
+
+     .ONESHELL:
+     SHELL = /usr/bin/perl
+     .SHELLFLAGS = -e
+     show :
+             @f = qw(a b c);
+             print "@f\n";
+
+However, either of these alternatives would work properly:
+
+     .ONESHELL:
+     SHELL = /usr/bin/perl
+     .SHELLFLAGS = -e
+     show :
+             # Make sure "@" is not the first character on the first line
+             @f = qw(a b c);
+             print "@f\n";
+
+or
+
+     .ONESHELL:
+     SHELL = /usr/bin/perl
+     .SHELLFLAGS = -e
+     show :
+             my @f = qw(a b c);
+             print "@f\n";
+
+   As a special feature, if `SHELL' is determined to be a POSIX-style
+shell, the special prefix characters in "internal" recipe lines will
+_removed_ before the recipe is processed.  This feature is intended to
+allow existing makefiles to add the `.ONESHELL' special target and
+still run properly without extensive modifications.  Since the special
+prefix characters are not legal at the beginning of a line in a POSIX
+shell script this is not a loss in functionality.  For example, this
+works as expected:
+
+     .ONESHELL:
+     foo : bar/lose
+             @cd $(@D)
+             @gobble $(@F) > ../$@
+
+   Even with this special feature, however, makefiles with `.ONESHELL'
+will behave differently in ways that could be noticeable.  For example,
+normally if any line in the recipe fails, that causes the rule to fail
+and no more recipe lines are processed.  Under `.ONESHELL' a failure of
+any but the final recipe line will not be noticed by `make'.  You can
+modify `.SHELLFLAGS' to add the `-e' option to the shell which will
+cause any failure anywhere in the command line to cause the shell to
+fail, but this could itself cause your recipe to behave differently.
+Ultimately you may need to harden your recipe lines to allow them to
+work with `.ONESHELL'.
 
 \1f
-File: make.info,  Node: Choosing the Shell,  Prev: Execution,  Up: Execution
+File: make.info,  Node: Choosing the Shell,  Prev: One Shell,  Up: Execution
 
-5.3.1 Choosing the Shell
+5.3.2 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.
+used as the shell.  The argument(s) passed to the shell are taken from
+the variable `.SHELLFLAGS'.  The default value of `.SHELLFLAGS' is `-c'
+normally, or `-ec' in POSIX-conforming mode.
 
    Unlike most variables, the variable `SHELL' is never set from the
 environment.  This is because the `SHELL' environment variable is used
@@ -3210,12 +3228,12 @@ 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.
+_not_ exported in the environment to recipe lines 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.
+recipe lines.
 
    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
@@ -3280,61 +3298,62 @@ on MS-DOS unaltered if you have e.g. `sh.exe' installed in some
 directory along your `PATH'.
 
 \1f
-File: make.info,  Node: Parallel,  Next: Errors,  Prev: Execution,  Up: Commands
+File: make.info,  Node: Parallel,  Next: Errors,  Prev: Execution,  Up: Recipes
 
 5.4 Parallel Execution
 ======================
 
-GNU `make' knows how to execute several commands at once.  Normally,
-`make' will execute only one command at a time, waiting for it to
-finish before executing the next.  However, the `-j' or `--jobs' option
-tells `make' to execute many commands simultaneously.
+GNU `make' knows how to execute several recipes at once.  Normally,
+`make' will execute only one recipe at a time, waiting for it to finish
+before executing the next.  However, the `-j' or `--jobs' option tells
+`make' to execute many recipes simultaneously.  You can inhibit
+parallelism in a particular makefile with the `.NOTPARALLEL'
+pseudo-target (*note Special Built-in Target Names: Special Targets.).
 
    On MS-DOS, the `-j' option has no effect, since that system doesn't
 support multi-processing.
 
    If the `-j' option is followed by an integer, this is the number of
-commands to execute at once; this is called the number of "job slots".
+recipes to execute at once; this is called the number of "job slots".
 If there is nothing looking like an integer after the `-j' option,
 there is no limit on the number of job slots.  The default number of job
 slots is one, which means serial execution (one thing at a time).
 
-   One unpleasant consequence of running several commands
-simultaneously is that output generated by the commands appears
-whenever each command sends it, so messages from different commands may
-be interspersed.
+   One unpleasant consequence of running several recipes simultaneously
+is that output generated by the recipes appears whenever each recipe
+sends it, so messages from different recipes may be interspersed.
 
    Another problem is that two processes cannot both take input from the
-same device; so to make sure that only one command tries to take input
+same device; so to make sure that only one recipe tries to take input
 from the terminal at once, `make' will invalidate the standard input
-streams of all but one running command.  This means that attempting to
+streams of all but one running recipe.  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.  
 
-   It is unpredictable which command will have a valid standard input
+   It is unpredictable which recipe will have a valid standard input
 stream (which will come from the terminal, or wherever you redirect the
-standard input of `make').  The first command run will always get it
-first, and the first command started after that one finishes will get
-it next, and so on.
+standard input of `make').  The first recipe run will always get it
+first, and the first recipe started after that one finishes will get it
+next, and so on.
 
    We will change how this aspect of `make' works if we find a better
-alternative.  In the mean time, you should not rely on any command using
+alternative.  In the mean time, you should not rely on any recipe using
 standard input at all if you are using the parallel execution feature;
 but if you are not using this feature, then standard input works
-normally in all commands.
+normally in all recipes.
 
    Finally, handling recursive `make' invocations raises issues.  For
-more information on this, see *Note Communicating Options to a
+more information on this, see *note Communicating Options to a
 Sub-`make': Options/Recursion.
 
-   If a command fails (is killed by a signal or exits with a nonzero
-status), and errors are not ignored for that command (*note Errors in
-Commands: Errors.), the remaining command lines to remake the same
-target will not be run.  If a command fails and the `-k' or
-`--keep-going' option was not given (*note Summary of Options: Options
-Summary.), `make' aborts execution.  If make terminates for any reason
-(including a signal) with child processes running, it waits for them to
-finish before actually exiting.
+   If a recipe fails (is killed by a signal or exits with a nonzero
+status), and errors are not ignored for that recipe (*note Errors in
+Recipes: Errors.), the remaining recipe lines to remake the same target
+will not be run.  If a recipe fails and the `-k' or `--keep-going'
+option was not given (*note Summary of Options: Options Summary.),
+`make' aborts execution.  If make terminates for any reason (including
+a signal) with child processes running, it waits for them to finish
+before actually exiting.
 
    When the system is heavily loaded, you will probably want to run
 fewer jobs than when it is lightly loaded.  You can use the `-l' option
@@ -3356,50 +3375,50 @@ average goes below that limit, or until all the other jobs finish.
    By default, there is no load limit.
 
 \1f
-File: make.info,  Node: Errors,  Next: Interrupts,  Prev: Parallel,  Up: Commands
+File: make.info,  Node: Errors,  Next: Interrupts,  Prev: Parallel,  Up: Recipes
 
-5.5 Errors in Commands
-======================
+5.5 Errors in Recipes
+=====================
 
-After each shell command returns, `make' looks at its exit status.  If
-the command completed successfully, the next command line is executed
-in a new shell; after the last command line is finished, the rule is
-finished.
+After each shell invocation returns, `make' looks at its exit status.
+If the shell completed successfully (the exit status is zero), the next
+line in the recipe is executed in a new shell; after the last line is
+finished, the rule is finished.
 
    If there is an error (the exit status is nonzero), `make' gives up on
 the current rule, and perhaps on all rules.
 
-   Sometimes the failure of a certain command does not indicate a
+   Sometimes the failure of a certain recipe line does not indicate a
 problem.  For example, you may use the `mkdir' command to ensure that a
 directory exists.  If the directory already exists, `mkdir' will report
 an error, but you probably want `make' to continue regardless.
 
-   To ignore errors in a command line, write a `-' at the beginning of
+   To ignore errors in a recipe line, write a `-' at the beginning of
 the line's text (after the initial tab).  The `-' is discarded before
-the command is passed to the shell for execution.
+the line is passed to the shell for execution.
 
    For example,
 
      clean:
              -rm -f *.o
 
-This causes `rm' to continue even if it is unable to remove a file.
+This causes `make' to continue even if `rm' is unable to remove a file.
 
    When you run `make' with the `-i' or `--ignore-errors' flag, errors
-are ignored in all commands of all rules.  A rule in the makefile for
+are ignored in all recipes of all rules.  A rule in the makefile for
 the special target `.IGNORE' has the same effect, if there are no
 prerequisites.  These ways of ignoring errors are obsolete because `-'
 is more flexible.
 
    When errors are to be ignored, because of either a `-' or the `-i'
 flag, `make' treats an error return just like success, except that it
-prints out a message that tells you the status code the command exited
+prints out a message that tells you the status code the shell exited
 with, and says that the error has been ignored.
 
    When an error happens that `make' has not been told to ignore, it
 implies that the current target cannot be correctly remade, and neither
 can any other that depends on it either directly or indirectly.  No
-further commands will be executed for these targets, since their
+further recipes will be executed for these targets, since their
 preconditions have not been achieved.
 
    Normally `make' gives up immediately in this circumstance, returning
@@ -3419,28 +3438,28 @@ 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.  
 
-   Usually when a command fails, if it has changed the target file at
-all, the file is corrupted and cannot be used--or at least it is not
+   Usually when a recipe line fails, if it has changed the target file
+at all, the file is corrupted and cannot be used--or at least it is not
 completely updated.  Yet the file's time stamp says that it is now up to
 date, so the next time `make' runs, it will not try to update that
-file.  The situation is just the same as when the command is killed by a
+file.  The situation is just the same as when the shell is killed by a
 signal; *note Interrupts::.  So generally the right thing to do is to
-delete the target file if the command fails after beginning to change
+delete the target file if the recipe fails after beginning to change
 the file.  `make' will do this if `.DELETE_ON_ERROR' appears as a
 target.  This is almost always what you want `make' to do, but it is
 not historical practice; so for compatibility, you must explicitly
 request it.
 
 \1f
-File: make.info,  Node: Interrupts,  Next: Recursion,  Prev: Errors,  Up: Commands
+File: make.info,  Node: Interrupts,  Next: Recursion,  Prev: Errors,  Up: Recipes
 
 5.6 Interrupting or Killing `make'
 ==================================
 
-If `make' gets a fatal signal while a command is executing, it may
-delete the target file that the command was supposed to update.  This is
-done if the target file's last-modification time has changed since
-`make' first checked it.
+If `make' gets a fatal signal while a shell is executing, it may delete
+the target file that the recipe was supposed to update.  This is done
+if the target file's last-modification time has changed since `make'
+first checked it.
 
    The purpose of deleting the target is to make sure that it is remade
 from scratch when `make' is next run.  Why is this?  Suppose you type
@@ -3463,7 +3482,7 @@ modification-time (its contents do not matter), or must exist at all
 times to prevent other sorts of trouble.
 
 \1f
-File: make.info,  Node: Recursion,  Next: Sequences,  Prev: Interrupts,  Up: Commands
+File: make.info,  Node: Recursion,  Next: Canned Recipes,  Prev: Interrupts,  Up: Recipes
 
 5.7 Recursive Use of `make'
 ===========================
@@ -3487,7 +3506,7 @@ or, equivalently, this (*note Summary of Options: Options Summary.):
 but there are many things to know about how they work and why, and about
 how the sub-`make' relates to the top-level `make'.  You may also find
 it useful to declare targets that invoke recursive `make' commands as
-`.PHONY' (for more discussion on when this is useful, see *Note Phony
+`.PHONY' (for more discussion on when this is useful, see *note Phony
 Targets::).
 
    For your convenience, when GNU `make' starts (after it has processed
@@ -3522,37 +3541,37 @@ the explicit command name `make', as shown here:
              cd subdir && $(MAKE)
 
    The value of this variable is the file name with which `make' was
-invoked.  If this file name was `/bin/make', then the command executed
+invoked.  If this file name was `/bin/make', then the recipe executed
 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.  
 
-   As a special feature, using the variable `MAKE' in the commands of a
+   As a special feature, using the variable `MAKE' in the recipe of a
 rule alters the effects of the `-t' (`--touch'), `-n' (`--just-print'),
 or `-q' (`--question') option.  Using the `MAKE' variable has the same
-effect as using a `+' character at the beginning of the command line.
-*Note Instead of Executing the Commands: Instead of Execution.  This
+effect as using a `+' character at the beginning of the recipe line.
+*Note Instead of Executing the Recipes: Instead of Execution.  This
 special feature is only enabled if the `MAKE' variable appears directly
-in the command script: it does not apply if the `MAKE' variable is
-referenced through expansion of another variable.  In the latter case
-you must use the `+' token to get these special effects.
+in the recipe: it does not apply if the `MAKE' variable is referenced
+through expansion of another variable.  In the latter case you must use
+the `+' token to get these special effects.
 
    Consider the command `make -t' in the above example.  (The `-t'
 option marks targets as up to date without actually running any
-commands; see *Note Instead of Execution::.)  Following the usual
+recipes; see *note Instead of Execution::.)  Following the usual
 definition of `-t', a `make -t' command in the example would create a
 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.  
+recipe, and `-t' says not to execute recipes.  
 
-   The special feature makes this do what you want: whenever a command
+   The special feature makes this do what you want: whenever a recipe
 line of a rule contains the variable `MAKE', the flags `-t', `-n' and
-`-q' do not apply to that line.  Command lines containing `MAKE' are
+`-q' do not apply to that line.  Recipe lines containing `MAKE' are
 executed normally despite the presence of a flag that causes most
-commands not to be run.  The usual `MAKEFLAGS' mechanism passes the
+recipes not to be run.  The usual `MAKEFLAGS' mechanism passes the
 flags to the sub-`make' (*note Communicating Options to a Sub-`make':
 Options/Recursion.), so your request to touch the files, or print the
-commands, is propagated to the subsystem.
+recipes, is propagated to the subsystem.
 
 \1f
 File: make.info,  Node: Variables/Recursion,  Next: Options/Recursion,  Prev: MAKE Variable,  Up: Recursion
@@ -3567,9 +3586,9 @@ specified in the makefile used by the sub-`make' makefile unless you
 use the `-e' switch (*note Summary of Options: Options Summary.).
 
    To pass down, or "export", a variable, `make' adds the variable and
-its value to the environment for running each command.  The sub-`make',
-in turn, uses the environment to initialize its table of variable
-values.  *Note Variables from the Environment: Environment.
+its value to the environment for running each line of the recipe.  The
+sub-`make', in turn, uses the environment to initialize its table of
+variable values.  *Note Variables from the Environment: Environment.
 
    Except by explicit request, `make' exports a variable only if it is
 either defined in the environment initially or set on the command line,
@@ -3665,7 +3684,7 @@ a syntax error.
 export variables by default.  Since this is the default behavior, you
 would only need to do this if `export' had been used by itself earlier
 (in an included makefile, perhaps).  You *cannot* use `export' and
-`unexport' by themselves to have variables exported for some commands
+`unexport' by themselves to have variables exported for some recipes
 and not for others.  The last `export' or `unexport' directive that
 appears by itself determines the behavior for the entire run of `make'.
 
@@ -3674,7 +3693,7 @@ passed down from level to level.  This variable's value is a string
 which is the depth of the level as a decimal number.  The value is `0'
 for the top-level `make'; `1' for a sub-`make', `2' for a
 sub-sub-`make', and so on.  The incrementation happens when `make' sets
-up the environment for a command.
+up the environment for a recipe.
 
    The main use of `MAKELEVEL' is to test it in a conditional directive
 (*note Conditional Parts of Makefiles: Conditionals.); this way you can
@@ -3720,9 +3739,9 @@ system supports it (most any UNIX system will; others typically won't),
 the parent `make' and all the sub-`make's will communicate to ensure
 that there are only `N' jobs running at the same time between them all.
 Note that any job that is marked recursive (*note Instead of Executing
-the Commands: Instead of Execution.)  doesn't count against the total
-jobs (otherwise we could get `N' sub-`make's running and have no slots
-left over for any real work!)
+Recipes: Instead of Execution.)  doesn't count against the total jobs
+(otherwise we could get `N' sub-`make's running and have no slots left
+over for any real work!)
 
    If your operating system doesn't support the above communication,
 then `-j 1' is always put into `MAKEFLAGS' instead of the value you
@@ -3740,9 +3759,9 @@ value of `MAKEFLAGS', like this:
 
    The command line variable definitions really appear in the variable
 `MAKEOVERRIDES', and `MAKEFLAGS' contains a reference to this variable.
-If you do want to pass flags down normally, but don't want to pass
-down the command line variable definitions, you can reset
-`MAKEOVERRIDES' to empty, like this:
+If you do want to pass flags down normally, but don't want to pass down
+the command line variable definitions, you can reset `MAKEOVERRIDES' to
+empty, like this:
 
      MAKEOVERRIDES =
 
@@ -3821,30 +3840,30 @@ if you also use `-s', which says to be silent, or if you use
 `--no-print-directory' to explicitly disable it.
 
 \1f
-File: make.info,  Node: Sequences,  Next: Empty Commands,  Prev: Recursion,  Up: Commands
+File: make.info,  Node: Canned Recipes,  Next: Empty Recipes,  Prev: Recursion,  Up: Recipes
 
-5.8 Defining Canned Command Sequences
-=====================================
+5.8 Defining Canned Recipes
+===========================
 
 When the same sequence of commands is useful in making various targets,
 you can define it as a canned sequence with the `define' directive, and
-refer to the canned sequence from the rules for those targets.  The
+refer to the canned sequence from the recipes for those targets.  The
 canned sequence is actually a variable, so the name must not conflict
 with other variable names.
 
-   Here is an example of defining a canned sequence of commands:
+   Here is an example of defining a canned recipe:
 
-     define run-yacc
+     define run-yacc =
      yacc $(firstword $^)
      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.
-The `define' directive does not expand variable references and
-function calls in the canned sequence; the `$' characters, parentheses,
-variable names, and so on, all become part of the value of the variable
-you are defining.  *Note Defining Variables Verbatim: Defining, for a
+The `define' directive does not expand variable references and function
+calls in the canned sequence; the `$' characters, parentheses, variable
+names, and so on, all become part of the value of the variable you are
+defining.  *Note Defining Multi-Line Variables: Multi-Line, for a
 complete explanation of `define'.
 
    The first command in this example runs Yacc on the first
@@ -3852,12 +3871,11 @@ prerequisite of whichever rule uses the canned sequence.  The output
 file from Yacc is always named `y.tab.c'.  The second command moves the
 output to the rule's target file name.
 
-   To use the canned sequence, substitute the variable into the
-commands of a rule.  You can substitute it like any other variable
-(*note Basics of Variable References: Reference.).  Because variables
-defined by `define' are recursively expanded variables, all the
-variable references you wrote inside the `define' are expanded now.
-For example:
+   To use the canned sequence, substitute the variable into the recipe
+of a rule.  You can substitute it like any other variable (*note Basics
+of Variable References: Reference.).  Because variables defined by
+`define' are recursively expanded variables, all the variable
+references you wrote inside the `define' are expanded now.  For example:
 
      foo.c : foo.y
              $(run-yacc)
@@ -3870,76 +3888,75 @@ practice because `make' has an implicit rule to figure out these
 commands based on the file names involved (*note Using Implicit Rules:
 Implicit Rules.).
 
-   In command execution, each line of a canned sequence is treated just
+   In recipe execution, each line of a canned sequence is treated just
 as if the line appeared on its own in the rule, preceded by a tab.  In
 particular, `make' invokes a separate subshell for each line.  You can
 use the special prefix characters that affect command lines (`@', `-',
-and `+') on each line of a canned sequence.  *Note Writing the Commands
-in Rules: Commands.  For example, using this canned sequence:
+and `+') on each line of a canned sequence.  *Note Writing Recipes in
+Rules: Recipes.  For example, using this canned sequence:
 
-     define frobnicate
+     define frobnicate =
      @echo "frobnicating target $@"
      frob-step-1 $< -o $@-step-1
      frob-step-2 $@-step-1 -o $@
      endef
 
 `make' will not echo the first line, the `echo' command.  But it _will_
-echo the following two command lines.
+echo the following two recipe lines.
 
-   On the other hand, prefix characters on the command line that refers
+   On the other hand, prefix characters on the recipe line that refers
 to a canned sequence apply to every line in the sequence.  So the rule:
 
      frob.out: frob.in
              @$(frobnicate)
 
-does not echo _any_ commands.  (*Note Command Echoing: Echoing, for a
-full explanation of `@'.)
+does not echo _any_ recipe lines.  (*Note Recipe Echoing: Echoing, for
+full explanation of `@'.)
 
 \1f
-File: make.info,  Node: Empty Commands,  Prev: Sequences,  Up: Commands
+File: make.info,  Node: Empty Recipes,  Prev: Canned Recipes,  Up: Recipes
 
-5.9 Using Empty Commands
-========================
+5.9 Using Empty Recipes
+=======================
 
-It is sometimes useful to define commands which do nothing.  This is
-done simply by giving a command that consists of nothing but
-whitespace.  For example:
+It is sometimes useful to define recipes which do nothing.  This is done
+simply by giving a recipe that consists of nothing but whitespace.  For
+example:
 
      target: ;
 
-defines an empty command string for `target'.  You could also use a
-line beginning with a tab character to define an empty command string,
-but this would be confusing because such a line looks empty.
+defines an empty recipe for `target'.  You could also use a line
+beginning with a recipe prefix character to define an empty recipe, but
+this would be confusing because such a line looks empty.
 
-   You may be wondering why you would want to define a command string
-that does nothing.  The only reason this is useful is to prevent a
-target from getting implicit commands (from implicit rules or the
-`.DEFAULT' special target; *note Implicit Rules:: and *note Defining
-Last-Resort Default Rules: Last Resort.).
+   You may be wondering why you would want to define a recipe that does
+nothing.  The only reason this is useful is to prevent a target from
+getting implicit recipes (from implicit rules or the `.DEFAULT' special
+target; *note Implicit Rules:: and *note Defining Last-Resort Default
+Rules: Last Resort.).
 
-   You may be inclined to define empty command strings for targets that
-are not actual files, but only exist so that their prerequisites can be
-remade.  However, this is not the best way to do that, because the
-prerequisites may not be remade properly if the target file actually
-does exist.  *Note Phony Targets: Phony Targets, for a better way to do
-this.
+   You may be inclined to define empty recipes for targets that are not
+actual files, but only exist so that their prerequisites can be remade.
+However, this is not the best way to do that, because the prerequisites
+may not be remade properly if the target file actually does exist.
+*Note Phony Targets: Phony Targets, for a better way to do this.
 
 \1f
-File: make.info,  Node: Using Variables,  Next: Conditionals,  Prev: Commands,  Up: Top
+File: make.info,  Node: Using Variables,  Next: Conditionals,  Prev: Recipes,  Up: Top
 
 6 How to Use Variables
 **********************
 
 A "variable" is a name defined in a makefile to represent a string of
 text, called the variable's "value".  These values are substituted by
-explicit request into targets, prerequisites, commands, and other parts
+explicit request into targets, prerequisites, recipes, and other parts
 of the makefile.  (In some other versions of `make', variables are
 called "macros".)  
 
    Variables and functions in all parts of a makefile are expanded when
-read, except for the shell commands in rules, the right-hand sides of
-variable definitions using `=', and the bodies of variable definitions
-using the `define' directive.
+read, except for in recipes, the right-hand sides of variable
+definitions using `=', and the bodies of variable definitions using the
+`define' directive.
 
    Variables can represent lists of file names, options to pass to
 compilers, programs to run, directories to look in for source files,
@@ -3978,13 +3995,17 @@ have particular specialized uses.  *Note Automatic Variables::.
                                   of a variable.
 * Override Directive::          How to set a variable in the makefile even if
                                   the user has set it with a command argument.
-* Defining::                    An alternate way to set a variable
-                                  to a verbatim string.
+* Multi-Line::                  An alternate way to set a variable
+                                  to a multi-line string.
+* Undefine Directive::          How to undefine a variable so that it appears
+                                  as if it was never set.
 * Environment::                 Variable values can come from the environment.
 * Target-specific::             Variable values can be defined on a per-target
                                   basis.
 * Pattern-specific::            Target-specific variable values can be applied
                                   to a group of targets that match a pattern.
+* Suppressing Inheritance::     Suppress inheritance of variables.
+* Special Variables::           Variables with special meaning or behavior.
 
 \1f
 File: make.info,  Node: Reference,  Next: Flavors,  Prev: Using Variables,  Up: Using Variables
@@ -3996,12 +4017,12 @@ To substitute a variable's value, write a dollar sign followed by the
 name of the variable in parentheses or braces: either `$(foo)' or
 `${foo}' is a valid reference to the variable `foo'.  This special
 significance of `$' is why you must write `$$' to have the effect of a
-single dollar sign in a file name or command.
+single dollar sign in a file name or recipe.
 
    Variable references can be used in any context: targets,
-prerequisites, commands, most directives, and new variable values.
-Here is an example of a common case, where a variable holds the names
-of all the object files in a program:
+prerequisites, recipes, most directives, and new variable values.  Here
+is an example of a common case, where a variable holds the names of all
+the object files in a program:
 
      objects = program.o foo.o utils.o
      program : $(objects)
@@ -4039,7 +4060,7 @@ distinguished in how they are defined and in what they do when expanded.
    The first flavor of variable is a "recursively expanded" variable.
 Variables of this sort are defined by lines using `=' (*note Setting
 Variables: Setting.) or by the `define' directive (*note Defining
-Variables Verbatim: Defining.).  The value you specify is installed
+Multi-Line Variables: Multi-Line.).  The value you specify is installed
 verbatim; if it contains references to other variables, these
 references are expanded whenever this variable is substituted (in the
 course of expanding some other string).  When this happens, it is
@@ -4063,7 +4084,7 @@ of `make'.  It has its advantages and its disadvantages.  An advantage
      CFLAGS = $(include_dirs) -O
      include_dirs = -Ifoo -Ibar
 
-will do what was intended: when `CFLAGS' is expanded in a command, it
+will do what was intended: when `CFLAGS' is expanded in a recipe, it
 will expand to `-Ifoo -Ibar -O'.  A major disadvantage is that you
 cannot append something on the end of a variable, as in
 
@@ -4117,7 +4138,7 @@ Variables/Recursion, for information about `MAKELEVEL'.)
      endif
 
 An advantage of this use of `:=' is that a typical `descend into a
-directory' command then looks like this:
+directory' recipe then looks like this:
 
      ${subdirs}:
              ${MAKE} -C $@ all
@@ -4359,7 +4380,7 @@ variable assignment, or in a `define' directive, as in:
 
      dir = foo
      $(dir)_sources := $(wildcard $(dir)/*.c)
-     define $(dir)_print
+     define $(dir)_print =
      lpr $($(dir)_sources)
      endef
 
@@ -4384,7 +4405,7 @@ Variables can get values in several different ways:
 
    * You can specify a value in the makefile, either with an assignment
      (*note Setting Variables: Setting.) or with a verbatim definition
-     (*note Defining Variables Verbatim: Defining.).
+     (*note Defining Multi-Line Variables: Multi-Line.).
 
    * Variables in the environment become `make' variables.  *Note
      Variables from the Environment: Environment.
@@ -4488,7 +4509,7 @@ essentially as if you had included the extra text in the initial
 definition of the variable.  If you defined it first with `:=', making
 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 (see *Note Setting Variables: Setting, for a
+value just as `:=' does (see *note Setting Variables: Setting, for a
 full explanation of `:=').  In fact,
 
      variable := value
@@ -4548,7 +4569,7 @@ reference to `includes', so if that variable gets defined at any later
 point, a reference like `$(CFLAGS)' still uses its value.
 
 \1f
-File: make.info,  Node: Override Directive,  Next: Defining,  Prev: Appending,  Up: Using Variables
+File: make.info,  Node: Override Directive,  Next: Multi-Line,  Prev: Appending,  Up: Using Variables
 
 6.7 The `override' Directive
 ============================
@@ -4571,6 +4592,11 @@ or
 
 *Note Appending More Text to Variables: Appending.
 
+   Variable assignments marked with the `override' flag have a higher
+priority than all other assignments, except another `override'.
+Subsequent assignments or appends to this variable which are not marked
+`override' will be ignored.
+
    The `override' directive was not invented for escalation in the war
 between makefiles and command arguments.  It was invented so you can
 alter and add to values that the user specifies with command arguments.
@@ -4585,41 +4611,48 @@ switches with a command argument just as usual.  You could use this
    You can also use `override' directives with `define' directives.
 This is done as you might expect:
 
-     override define foo
+     override define foo =
      bar
      endef
 
-*Note Defining Variables Verbatim: Defining.
+*Note Defining Multi-Line Variables: Multi-Line.
 
 \1f
-File: make.info,  Node: Defining,  Next: Environment,  Prev: Override Directive,  Up: Using Variables
+File: make.info,  Node: Multi-Line,  Next: Undefine Directive,  Prev: Override Directive,  Up: Using Variables
 
-6.8 Defining Variables Verbatim
-===============================
+6.8 Defining Multi-Line Variables
+=================================
 
 Another way to set the value of a variable is to use the `define'
 directive.  This directive has an unusual syntax which allows newline
-characters to be included in the value, which is convenient for defining
-both canned sequences of commands (*note Defining Canned Command
-Sequences: Sequences.), and also sections of makefile syntax to use
+characters to be included in the value, which is convenient for
+defining both canned sequences of commands (*note Defining Canned
+Recipes: Canned Recipes.), and also sections of makefile syntax to use
 with `eval' (*note Eval Function::).
 
    The `define' directive is followed on the same line by the name of
-the variable and nothing more.  The value to give the variable appears
-on the following lines.  The end of the value is marked by a line
-containing just the word `endef'.  Aside from this difference in
-syntax, `define' works just like `=': it creates a recursively-expanded
-variable (*note The Two Flavors of Variables: Flavors.).  The variable
-name may contain function and variable references, which are expanded
-when the directive is read to find the actual variable name to use.
+the variable being defined and an (optional) assignment operator, and
+nothing more.  The value to give the variable appears on the following
+lines.  The end of the value is marked by a line containing just the
+word `endef'.  Aside from this difference in syntax, `define' works
+just like any other variable definition.  The variable name may contain
+function and variable references, which are expanded when the directive
+is read to find the actual variable name to use.
+
+   You may omit the variable assignment operator if you prefer.  If
+omitted, `make' assumes it to be `=' and creates a recursively-expanded
+variable (*note The Two Flavors of Variables: Flavors.).  When using a
+`+=' operator, the value is appended to the previous value as with any
+other append operation: with a single space separating the old and new
+values.
 
    You may nest `define' directives: `make' will keep track of nested
 directives and report an error if they are not all properly closed with
-`endef'.  Note that lines beginning with tab characters are considered
-part of a command script, so any `define' or `endef' strings appearing
-on such a line will not be considered `make' operators.
+`endef'.  Note that lines beginning with the recipe prefix character
+are considered part of a recipe, so any `define' or `endef' strings
+appearing on such a line will not be considered `make' directives.
 
-     define two-lines
+     define two-lines =
      echo foo
      echo $(bar)
      endef
@@ -4629,7 +4662,7 @@ newlines that separate the lines of the value in a `define' become part
 of the variable's value (except for the final newline which precedes
 the `endef' and is not considered part of the value).
 
-   When used in a command script, the previous example is functionally
+   When used in a recipe, the previous example is functionally
 equivalent to this:
 
      two-lines = echo foo; echo $(bar)
@@ -4637,13 +4670,13 @@ equivalent to this:
 since two commands separated by semicolon behave much like two separate
 shell commands.  However, note that using two separate lines means
 `make' will invoke the shell twice, running an independent subshell for
-each line.  *Note Command Execution: Execution.
+each line.  *Note Recipe Execution: Execution.
 
    If you want variable definitions made with `define' to take
 precedence over command-line variable definitions, you can use the
 `override' directive together with `define':
 
-     override define two-lines
+     override define two-lines =
      foo
      $(bar)
      endef
@@ -4651,10 +4684,42 @@ precedence over command-line variable definitions, you can use the
 *Note The `override' Directive: Override Directive.
 
 \1f
-File: make.info,  Node: Environment,  Next: Target-specific,  Prev: Defining,  Up: Using Variables
+File: make.info,  Node: Undefine Directive,  Next: Environment,  Prev: Multi-Line,  Up: Using Variables
 
-6.9 Variables from the Environment
-==================================
+6.9 Undefining Variables
+========================
+
+If you want to clear a variable, setting its value to empty is usually
+sufficient. Expanding such a variable will yield the same result (empty
+string) regardless of whether it was set or not. However, if you are
+using the `flavor' (*note Flavor Function::) and `origin' (*note Origin
+Function::) functions, there is a difference between a variable that
+was never set and a variable with an empty value.  In such situations
+you may want to use the `undefine' directive to make a variable appear
+as if it was never set. For example:
+
+     foo := foo
+     bar = bar
+
+     undefine foo
+     undefine bar
+
+     $(info $(origin foo))
+     $(info $(flavor bar))
+
+   This example will print "undefined" for both variables.
+
+   If you want to undefine a command-line variable definition, you can
+use the `override' directive together with `undefine', similar to how
+this is done for variable definitions:
+
+     override undefine CFLAGS
+
+\1f
+File: make.info,  Node: Environment,  Next: Target-specific,  Prev: Undefine Directive,  Up: Using Variables
+
+6.10 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
@@ -4673,9 +4738,9 @@ 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' 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':
+   When `make' runs a recipe, variables defined in the makefile are
+placed into the environment of each shell.  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
@@ -4691,12 +4756,12 @@ This is against the whole purpose of most makefiles.
 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' handles the `SHELL' environment
-variable in a special way; see *Note Choosing the Shell::.
+variable in a special way; see *note Choosing the Shell::.
 
 \1f
 File: make.info,  Node: Target-specific,  Next: Pattern-specific,  Prev: Environment,  Up: Using Variables
 
-6.10 Target-specific Variable Values
+6.11 Target-specific Variable Values
 ====================================
 
 Variable values in `make' are usually global; that is, they are the
@@ -4708,19 +4773,15 @@ Variables::).
 feature allows you to define different values for the same variable,
 based on the target that `make' is currently building.  As with
 automatic variables, these values are only available within the context
-of a target's command script (and in other target-specific assignments).
+of a target's recipe (and in other target-specific assignments).
 
    Set a target-specific variable value like this:
 
      TARGET ... : VARIABLE-ASSIGNMENT
 
-or like this:
-
-     TARGET ... : override VARIABLE-ASSIGNMENT
-
-or like this:
-
-     TARGET ... : export VARIABLE-ASSIGNMENT
+   Target-specific variable assignments can be prefixed with any or all
+of the special keywords `export', `override', or `private'; these apply
+their normal behavior to this instance of the variable only.
 
    Multiple TARGET values create a target-specific variable value for
 each member of the target list individually.
@@ -4735,7 +4796,7 @@ the two variables do not have to have the same flavor (recursive vs.
 static).
 
    Target-specific variables have the same priority as any other
-makefile variable.  Variables provided on the command-line (and in the
+makefile variable.  Variables provided on the command line (and in the
 environment if the `-e' option is in force) will take precedence.
 Specifying the `override' directive will allow the target-specific
 variable value to be preferred.
@@ -4750,10 +4811,9 @@ statement like this:
      prog : CFLAGS = -g
      prog : prog.o foo.o bar.o
 
-will set `CFLAGS' to `-g' in the command script for `prog', but it will
-also set `CFLAGS' to `-g' in the command scripts that create `prog.o',
-`foo.o', and `bar.o', and any command scripts which create their
-prerequisites.
+will set `CFLAGS' to `-g' in the recipe for `prog', but it will also
+set `CFLAGS' to `-g' in the recipes that create `prog.o', `foo.o', and
+`bar.o', and any recipes which create their prerequisites.
 
    Be aware that a given prerequisite will only be built once per
 invocation of make, at most.  If the same file is a prerequisite of
@@ -4764,35 +4824,24 @@ inherit the target-specific value from the first target.  It will
 ignore the target-specific values from any other targets.
 
 \1f
-File: make.info,  Node: Pattern-specific,  Prev: Target-specific,  Up: Using Variables
+File: make.info,  Node: Pattern-specific,  Next: Suppressing Inheritance,  Prev: Target-specific,  Up: Using Variables
 
-6.11 Pattern-specific Variable Values
+6.12 Pattern-specific Variable Values
 =====================================
 
 In addition to target-specific variable values (*note Target-specific
 Variable Values: Target-specific.), GNU `make' supports
 pattern-specific variable values.  In this form, the variable is
-defined for any target that matches the pattern specified.  If a target
-matches more than one pattern, all the matching pattern-specific
-variables are interpreted in the order in which they were defined in
-the makefile, and collected together into one set.  Variables defined
-in this way are searched after any target-specific variables defined
-explicitly for that target, and before target-specific variables
-defined for the parent target.
+defined for any target that matches the pattern specified.
 
    Set a pattern-specific variable value like this:
 
      PATTERN ... : VARIABLE-ASSIGNMENT
-
-or like this:
-
-     PATTERN ... : override VARIABLE-ASSIGNMENT
-
-where PATTERN is a %-pattern.  As with target-specific variable values,
-multiple PATTERN values create a pattern-specific variable value for
-each pattern individually.  The VARIABLE-ASSIGNMENT can be any valid
-form of assignment.  Any command-line variable setting will take
-precedence, unless `override' is specified.
+   where PATTERN is a %-pattern.  As with target-specific variable
+values, multiple PATTERN values create a pattern-specific variable
+value for each pattern individually.  The VARIABLE-ASSIGNMENT can be
+any valid form of assignment.  Any command line variable setting will
+take precedence, unless `override' is specified.
 
    For example:
 
@@ -4801,18 +4850,213 @@ precedence, unless `override' is specified.
 will assign `CFLAGS' the value of `-O' for all targets matching the
 pattern `%.o'.
 
+   If a target matches more than one pattern, the matching
+pattern-specific variables with longer stems are interpreted first.
+This results in more specific variables taking precedence over the more
+generic ones, for example:
+
+     %.o: %.c
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+     lib/%.o: CFLAGS := -fPIC -g
+     %.o: CFLAGS := -g
+
+     all: foo.o lib/bar.o
+
+   In this example the first definition of the `CFLAGS' variable will
+be used to update `lib/bar.o' even though the second one also applies
+to this target. Pattern-specific variables which result in the same
+stem length are considered in the order in which they were defined in
+the makefile.
+
+   Pattern-specific variables are searched after any target-specific
+variables defined explicitly for that target, and before target-specific
+variables defined for the parent target.
+
+\1f
+File: make.info,  Node: Suppressing Inheritance,  Next: Special Variables,  Prev: Pattern-specific,  Up: Using Variables
+
+6.13 Suppressing Inheritance
+============================
+
+As described in previous sections, `make' variables are inherited by
+prerequisites.  This capability allows you to modify the behavior of a
+prerequisite based on which targets caused it to be rebuilt.  For
+example, you might set a target-specific variable on a `debug' target,
+then running `make debug' will cause that variable to be inherited by
+all prerequisites of `debug', while just running `make all' (for
+example) would not have that assignment.
+
+   Sometimes, however, you may not want a variable to be inherited.  For
+these situations, `make' provides the `private' modifier.  Although
+this modifier can be used with any variable assignment, it makes the
+most sense with target- and pattern-specific variables.  Any variable
+marked `private' will be visible to its local target but will not be
+inherited by prerequisites of that target.  A global variable marked
+`private' will be visible in the global scope but will not be inherited
+by any target, and hence will not be visible in any recipe.
+
+   As an example, consider this makefile:
+     EXTRA_CFLAGS =
+
+     prog: private EXTRA_CFLAGS = -L/usr/local/lib
+     prog: a.o b.o
+
+   Due to the `private' modifier, `a.o' and `b.o' will not inherit the
+`EXTRA_CFLAGS' variable assignment from the `progs' target.
+
+\1f
+File: make.info,  Node: Special Variables,  Prev: Suppressing Inheritance,  Up: Using Variables
+
+6.14 Other Special Variables
+============================
+
+GNU `make' supports some variables that have special properties.
+
+`MAKEFILE_LIST'
+     Contains the name of each makefile that is parsed by `make', in
+     the order in which it was parsed.  The name is appended just
+     before `make' begins to parse the makefile.  Thus, if the first
+     thing a makefile does is examine the last word in this variable, it
+     will be the name of the current makefile.  Once the current
+     makefile has used `include', however, the last word will be the
+     just-included makefile.
+
+     If a makefile named `Makefile' has this content:
+
+          name1 := $(lastword $(MAKEFILE_LIST))
+
+          include inc.mk
+
+          name2 := $(lastword $(MAKEFILE_LIST))
+
+          all:
+                  @echo name1 = $(name1)
+                  @echo name2 = $(name2)
+
+     then you would expect to see this output:
+
+          name1 = Makefile
+          name2 = inc.mk
+
+`.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.
+
+`.RECIPEPREFIX'
+     The first character of the value of this variable is used as the
+     character make assumes is introducing a recipe line.  If the
+     variable is empty (as it is by default) that character is the
+     standard tab character.  For example, this is a valid makefile:
+
+          .RECIPEPREFIX = >
+          all:
+          > @echo Hello, world
+
+     The value of `.RECIPEPREFIX' can be changed multiple times; once
+     set it stays in effect for all rules parsed until it is modified.
+
+`.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.).
+
+
 \1f
 File: make.info,  Node: Conditionals,  Next: Functions,  Prev: Using Variables,  Up: Top
 
 7 Conditional Parts of Makefiles
 ********************************
 
-A "conditional" causes part of a makefile to be obeyed or ignored
-depending on the values of variables.  Conditionals can compare the
-value of one variable to another, or the value of a variable to a
+A "conditional" directive causes part of a makefile to be obeyed or
+ignored depending on the values of variables.  Conditionals can compare
+the value of one variable to another, or the value of a variable to a
 constant string.  Conditionals control what `make' actually "sees" in
-the makefile, so they _cannot_ be used to control shell commands at the
-time of execution.
+the makefile, so they _cannot_ be used to control recipes at the time
+of execution.
 
 * Menu:
 
@@ -4828,10 +5072,10 @@ File: make.info,  Node: Conditional Example,  Next: Conditional Syntax,  Prev: C
 
 The following example of a conditional tells `make' to use one set of
 libraries if the `CC' variable is `gcc', and a different set of
-libraries otherwise.  It works by controlling which of two command
-lines will be used as the command for a rule.  The result is that
-`CC=gcc' as an argument to `make' changes not only which compiler is
-used but also which libraries are linked.
+libraries otherwise.  It works by controlling which of two recipe lines
+will be used for the rule.  The result is that `CC=gcc' as an argument
+to `make' changes not only which compiler is used but also which
+libraries are linked.
 
      libs_for_gcc = -lgnu
      normal_libs =
@@ -5026,10 +5270,10 @@ table of them:
 
    Extra spaces are allowed and ignored at the beginning of the
 conditional directive line, but a tab is not allowed.  (If the line
-begins with a tab, it will be considered a command for a rule.)  Aside
-from this, extra spaces or tabs may be inserted with no effect anywhere
-except within the directive name or within an argument.  A comment
-starting with `#' may appear at the end of the line.
+begins with a tab, it will be considered part of a recipe for a rule.)
+Aside from this, extra spaces or tabs may be inserted with no effect
+anywhere except within the directive name or within an argument.  A
+comment starting with `#' may appear at the end of the line.
 
    The other two directives that play a part in a conditional are `else'
 and `endif'.  Each of these directives is written as one word, with no
@@ -5046,7 +5290,7 @@ conditional.
 
    `make' evaluates conditionals when it reads a makefile.
 Consequently, you cannot use automatic variables in the tests of
-conditionals because they are not defined until commands are run (*note
+conditionals because they are not defined until recipes are run (*note
 Automatic Variables::).
 
    To prevent intolerable confusion, it is not permitted to start a
@@ -5081,7 +5325,7 @@ marking an archive file up to date:
              ranlib archive.a
      endif
 
-The `+' prefix marks those command lines as "recursive" so that they
+The `+' prefix marks those recipe lines as "recursive" so that they
 will be executed despite use of the `-t' flag.  *Note Recursive Use of
 `make': Recursion.
 
@@ -5092,11 +5336,11 @@ File: make.info,  Node: Functions,  Next: Running,  Prev: Conditionals,  Up: Top
 *********************************
 
 "Functions" allow you to do text processing in the makefile to compute
-the files to operate on or the commands to use.  You use a function in a
-"function call", where you give the name of the function and some text
-(the "arguments") for the function to operate on.  The result of the
-function's processing is substituted into the makefile at the point of
-the call, just as a variable might be substituted.
+the files to operate on or the commands to use in recipes.  You use a
+function in a "function call", where you give the name of the function
+and some text (the "arguments") for the function to operate on.  The
+result of the function's processing is substituted into the makefile at
+the point of the call, just as a variable might be substituted.
 
 * Menu:
 
@@ -5821,7 +6065,7 @@ Now your individual makefiles are quite straightforward.
      .PHONY: all
      all: $(PROGRAMS)
 
-     define PROGRAM_template
+     define PROGRAM_template =
       $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
       ALL_OBJS   += $$($(1)_OBJS)
      endef
@@ -5866,13 +6110,13 @@ VARIABLE was defined:
      function will return the origin of the later definition.
 
 `environment'
-     if VARIABLE was defined as an environment variable and the `-e'
-     option is _not_ turned on (*note Summary of Options: Options
-     Summary.).
+     if VARIABLE was inherited from the environment provided to `make'.
 
 `environment override'
-     if VARIABLE was defined as an environment variable and the `-e'
-     option _is_ turned on (*note Summary of Options: Options Summary.).
+     if VARIABLE was inherited from the environment provided to `make',
+     and is overriding a setting for VARIABLE in the makefile as a
+     result of the `-e' option (*note Summary of Options: Options
+     Summary.).
 
 `file'
      if VARIABLE was defined in a makefile.
@@ -5886,7 +6130,7 @@ VARIABLE was defined:
 
 `automatic'
      if VARIABLE is an automatic variable defined for the execution of
-     the commands for each rule (*note Automatic Variables::).
+     the recipe for each rule (*note Automatic Variables::).
 
    This information is primarily useful (other than for your curiosity)
 to determine if you want to believe the value of a variable.  For
@@ -6004,9 +6248,9 @@ if some sort of environmental error is detected.
 `$(error TEXT...)'
      Generates a fatal error where the message is TEXT.  Note that the
      error is generated whenever this function is evaluated.  So, if
-     you put it inside a command script or on the right side of a
-     recursive variable assignment, it won't be evaluated until later.
-     The TEXT will be expanded before the error is generated.
+     you put it inside a recipe or on the right side of a recursive
+     variable assignment, it won't be evaluated until later.  The TEXT
+     will be expanded before the error is generated.
 
      For example,
 
@@ -6068,7 +6312,7 @@ things and many others.
 `1'
      The exit status is one if you use the `-q' flag and `make'
      determines that some target is not already up to date.  *Note
-     Instead of Executing the Commands: Instead of Execution.
+     Instead of Executing Recipes: Instead of Execution.
 
 * Menu:
 
@@ -6076,7 +6320,7 @@ things and many others.
 * Goals::                       How to use goal arguments to specify which
                                   parts of the makefile to use.
 * Instead of Execution::        How to use mode flags to specify what
-                                  kind of thing to do with the commands
+                                  kind of thing to do with the recipes
                                   in the makefile other than simply
                                   execute them.
 * Avoiding Compilation::        How to avoid recompiling certain files.
@@ -6123,7 +6367,7 @@ 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
+   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.
@@ -6166,14 +6410,14 @@ or a version of the program that is compiled specially for testing,
 which has a rule in the makefile but is not a prerequisite of the
 default goal.
 
-   Another use of specifying a goal is to run the commands associated
-with a phony target (*note Phony Targets::) or empty target (*note
-Empty Target Files to Record Events: Empty Targets.).  Many makefiles
-contain a phony target named `clean' which deletes everything except
-source files.  Naturally, this is done only if you request it
-explicitly with `make clean'.  Following is a list of typical phony and
-empty target names.  *Note Standard Targets::, for a detailed list of
-all the standard target names which GNU software packages use.
+   Another use of specifying a goal is to run the recipe associated with
+a phony target (*note Phony Targets::) or empty target (*note Empty
+Target Files to Record Events: Empty Targets.).  Many makefiles contain
+a phony target named `clean' which deletes everything except source
+files.  Naturally, this is done only if you request it explicitly with
+`make clean'.  Following is a list of typical phony and empty target
+names.  *Note Standard Targets::, for a detailed list of all the
+standard target names which GNU software packages use.
 
 `all'
      Make all the top-level targets the makefile knows about.
@@ -6224,8 +6468,8 @@ all the standard target names which GNU software packages use.
 \1f
 File: make.info,  Node: Instead of Execution,  Next: Avoiding Compilation,  Prev: Goals,  Up: Running
 
-9.3 Instead of Executing the Commands
-=====================================
+9.3 Instead of Executing Recipes
+================================
 
 The makefile tells `make' how to tell whether a target is up to date,
 and how to update each target.  But updating the targets is not always
@@ -6235,8 +6479,10 @@ what you want.  Certain options specify other activities for `make'.
 `--just-print'
 `--dry-run'
 `--recon'
-     "No-op".  The activity is to print what commands would be used to
-     make the targets up to date, but not actually execute them.
+     "No-op".  The activity is to print what recipe would be used to
+     make the targets up to date, but not actually execute it.  Some
+     recipes are still executed, even with this flag (*note How the
+     `MAKE' Variable Works: MAKE Variable.).
 
 `-t'
 `--touch'
@@ -6247,7 +6493,7 @@ what you want.  Certain options specify other activities for `make'.
 `-q'
 `--question'
      "Question".  The activity is to find out silently whether the
-     targets are up to date already; but execute no commands in either
+     targets are up to date already; but execute no recipe in either
      case.  In other words, neither compilation nor output will occur.
 
 `-W FILE'
@@ -6260,16 +6506,16 @@ what you want.  Certain options specify other activities for `make'.
      same.  You can use the `-W' flag in conjunction with the `-n' flag
      to see what would happen if you were to modify specific files.
 
-   With the `-n' flag, `make' prints the commands that it would
-normally execute but does not execute them.
+   With the `-n' flag, `make' prints the recipe that it would normally
+execute but usually does not execute it.
 
-   With the `-t' flag, `make' ignores the commands in the rules and
-uses (in effect) the command `touch' for each target that needs to be
+   With the `-t' flag, `make' ignores the recipes in the rules and uses
+(in effect) the command `touch' for each target that needs to be
 remade.  The `touch' command is also printed, unless `-s' or `.SILENT'
 is used.  For speed, `make' does not actually invoke the program
 `touch'.  It does the work directly.
 
-   With the `-q' flag, `make' prints nothing and executes no commands,
+   With the `-q' flag, `make' prints nothing and executes no recipes,
 but the exit status code it returns is zero if and only if the targets
 to be considered are already up to date.  If the exit status is one,
 then some updating needs to be done.  If `make' encounters an error,
@@ -6279,7 +6525,7 @@ that is not up to date.
    It is an error to use more than one of these three flags in the same
 invocation of `make'.
 
-   The `-n', `-t', and `-q' options do not affect command lines that
+   The `-n', `-t', and `-q' options do not affect recipe lines that
 begin with `+' characters or contain the strings `$(MAKE)' or
 `${MAKE}'.  Note that only the line containing the `+' character or the
 strings `$(MAKE)' or `${MAKE}' is run regardless of these options.
@@ -6287,14 +6533,19 @@ Other lines in the same rule are not run unless they too begin with `+'
 or contain `$(MAKE)' or `${MAKE}' (*Note How the `MAKE' Variable Works:
 MAKE Variable.)
 
+   The `-t' flag prevents phony targets (*note Phony Targets::) from
+being updated, unless there are recipe lines beginning with `+' or
+containing `$(MAKE)' or `${MAKE}'.
+
    The `-W' flag provides two features:
 
    * If you also use the `-n' or `-q' flag, you can see what `make'
      would do if you were to modify some files.
 
    * Without the `-n' or `-q' flag, when `make' is actually executing
-     commands, the `-W' flag can direct `make' to act as if some files
-     had been modified, without actually modifying the files.
+     recipes, the `-W' flag can direct `make' to act as if some files
+     had been modified, without actually running the recipes for those
+     files.
 
    Note that the options `-p' and `-v' allow you to obtain other
 information about `make' or about the makefiles in use (*note Summary
@@ -6315,7 +6566,7 @@ they do not need to be recompiled and you would rather not waste the
 time waiting for them to compile.
 
    If you anticipate the problem before changing the header file, you
-can use the `-t' flag.  This flag tells `make' not to run the commands
+can use the `-t' flag.  This flag tells `make' not to run the recipes
 in the rules, but rather to mark the target up to date by changing its
 last-modification date.  You would follow this procedure:
 
@@ -6357,8 +6608,8 @@ argument.
 
    The most common way to use this facility is to pass extra flags to
 compilers.  For example, in a properly written makefile, the variable
-`CFLAGS' is included in each command that runs the C compiler, so a
-file `foo.c' would be compiled something like this:
+`CFLAGS' is included in each recipe that runs the C compiler, so a file
+`foo.c' would be compiled something like this:
 
      cc -c $(CFLAGS) foo.c
 
@@ -6382,13 +6633,13 @@ by Implicit Rules: Implicit Variables, for a complete list.
 your own, giving the user the ability to control other aspects of how
 the makefile works by changing the variables.
 
-   When you override a variable with a command argument, you can define
-either a recursively-expanded variable or a simply-expanded variable.
-The examples shown above make a recursively-expanded variable; to make a
-simply-expanded variable, write `:=' instead of `='.  But, unless you
-want to include a variable reference or function call in the _value_
-that you specify, it makes no difference which kind of variable you
-create.
+   When you override a variable with a command line argument, you can
+define either a recursively-expanded variable or a simply-expanded
+variable.  The examples shown above make a recursively-expanded
+variable; to make a simply-expanded variable, write `:=' instead of
+`='.  But, unless you want to include a variable reference or function
+call in the _value_ that you specify, it makes no difference which kind
+of variable you create.
 
    There is one way that the makefile can change a variable that you
 have overridden.  This is to use the `override' directive, which is a
@@ -6402,7 +6653,7 @@ File: make.info,  Node: Testing,  Next: Options Summary,  Prev: Overriding,  Up:
 ========================================
 
 Normally, when an error happens in executing a shell command, `make'
-gives up immediately, returning a nonzero status.  No further commands
+gives up immediately, returning a nonzero status.  No further recipes
 are executed for any target.  The error implies that the goal cannot be
 correctly remade, and `make' reports this as soon as it knows.
 
@@ -6513,6 +6764,12 @@ Here is a table of all the options `make' understands:
      variables from makefiles.  *Note Variables from the Environment:
      Environment.
 
+`--eval=STRING'
+     Evaluate STRING as makefile syntax.  This is a command-line
+     version of the `eval' function (*note Eval Function::).  The
+     evaluation is performed after the default rules and variables have
+     been defined, but before any makefiles are read.
+
 `-f FILE'
 `--file=FILE'
 `--makefile=FILE'
@@ -6525,8 +6782,8 @@ Here is a table of all the options `make' understands:
 
 `-i'
 `--ignore-errors'
-     Ignore all errors in commands executed to remake files.  *Note
-     Errors in Commands: Errors.
+     Ignore all errors in recipes executed to remake files.  *Note
+     Errors in Recipes: Errors.
 
 `-I DIR'
 `--include-dir=DIR'
@@ -6537,11 +6794,11 @@ Here is a table of all the options `make' understands:
 
 `-j [JOBS]'
 `--jobs[=JOBS]'
-     Specifies the number of jobs (commands) to run simultaneously.
-     With no argument, `make' runs as many jobs simultaneously as
+     Specifies the number of recipes (jobs) to run simultaneously.
+     With no argument, `make' runs as many recipes simultaneously as
      possible.  If there is more than one `-j' option, the last one is
      effective.  *Note Parallel Execution: Parallel, for more
-     information on how commands are run.  Note that this option is
+     information on how recipes are run.  Note that this option is
      ignored on MS-DOS.
 
 `-k'
@@ -6554,8 +6811,8 @@ Here is a table of all the options `make' understands:
 `-l [LOAD]'
 `--load-average[=LOAD]'
 `--max-load[=LOAD]'
-     Specifies that no new jobs (commands) should be started if there
-     are other jobs running and the load average is at least LOAD (a
+     Specifies that no new recipes should be started if there are other
+     recipes running and the load average is at least LOAD (a
      floating-point number).  With no argument, removes a previous load
      limit.  *Note Parallel Execution: Parallel.
 
@@ -6572,8 +6829,9 @@ Here is a table of all the options `make' understands:
 `--just-print'
 `--dry-run'
 `--recon'
-     Print the commands that would be executed, but do not execute them.
-     *Note Instead of Executing the Commands: Instead of Execution.
+     Print the recipe that would be executed, but do not execute it
+     (except in certain circumstances).  *Note Instead of Executing
+     Recipes: Instead of Execution.
 
 `-o FILE'
 `--old-file=FILE'
@@ -6593,16 +6851,16 @@ Here is a table of all the options `make' understands:
      remake any files, use `make -qp'.  To print the data base of
      predefined rules and variables, use `make -p -f /dev/null'.  The
      data base output contains filename and linenumber information for
-     command and variable definitions, so it can be a useful debugging
+     recipe and variable definitions, so it can be a useful debugging
      tool in complex environments.
 
 `-q'
 `--question'
-     "Question mode".  Do not run any commands, or print anything; just
+     "Question mode".  Do not run any recipes, or print anything; just
      return an exit status that is zero if the specified targets are
      already up to date, one if any remaking is required, or two if an
-     error is encountered.  *Note Instead of Executing the Commands:
-     Instead of Execution.
+     error is encountered.  *Note Instead of Executing Recipes: Instead
+     of Execution.
 
 `-r'
 `--no-builtin-rules'
@@ -6629,8 +6887,8 @@ Here is a table of all the options `make' understands:
 `-s'
 `--silent'
 `--quiet'
-     Silent operation; do not print the commands as they are executed.
-     *Note Command Echoing: Echoing.
+     Silent operation; do not print the recipes as they are executed.
+     *Note Recipe Echoing: Echoing.
 
 `-S'
 `--no-keep-going'
@@ -6644,10 +6902,9 @@ Here is a table of all the options `make' understands:
 `-t'
 `--touch'
      Touch files (mark them up to date without really changing them)
-     instead of running their commands.  This is used to pretend that
-     the commands were done, in order to fool future invocations of
-     `make'.  *Note Instead of Executing the Commands: Instead of
-     Execution.
+     instead of running their recipes.  This is used to pretend that the
+     recipes were done, in order to fool future invocations of `make'.
+     *Note Instead of Executing Recipes: Instead of Execution.
 
 `-v'
 `--version'
@@ -6661,7 +6918,7 @@ Here is a table of all the options `make' understands:
      down errors from complicated nests of recursive `make' commands.
      *Note Recursive Use of `make': Recursion.  (In practice, you
      rarely need to specify this option since `make' does it for you;
-     see *Note The `--print-directory' Option: -w Option.)
+     see *note The `--print-directory' Option: -w Option.)
 
 `--no-print-directory'
      Disable printing of the working directory under `-w'.  This option
@@ -6678,7 +6935,7 @@ Here is a table of all the options `make' understands:
      to modify that file.  Without `-n', it is almost the same as
      running a `touch' command on the given file before running `make',
      except that the modification time is changed only in the
-     imagination of `make'.  *Note Instead of Executing the Commands:
+     imagination of `make'.  *Note Instead of Executing Recipes:
      Instead of Execution.
 
 `--warn-undefined-variables'
@@ -6707,10 +6964,10 @@ file name endings.
    A chain of implicit rules can apply in sequence; for example, `make'
 will remake a `.o' file from a `.y' file by way of a `.c' file.
 
-   The built-in implicit rules use several variables in their commands
-so that, by changing the values of the variables, you can change the
-way the implicit rule works.  For example, the variable `CFLAGS'
-controls the flags given to the C compiler by the implicit rule for C
+   The built-in implicit rules use several variables in their recipes so
+that, by changing the values of the variables, you can change the way
+the implicit rule works.  For example, the variable `CFLAGS' controls
+the flags given to the C compiler by the implicit rule for C
 compilation.
 
    You can define your own implicit rules by writing "pattern rules".
@@ -6722,12 +6979,12 @@ retained for compatibility.
 * Menu:
 
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the commands for updating a file.
+                                  to get the recipes for updating a file.
 * Catalogue of Rules::          A list of built-in implicit rules.
 * Implicit Variables::          How to change what predefined rules do.
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to define commands for rules which
+* Last Resort::                 How to define recipes for rules which
                                   cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -6740,10 +6997,10 @@ File: make.info,  Node: Using Implicit,  Next: Catalogue of Rules,  Prev: Implic
 =========================
 
 To allow `make' to find a customary method for updating a target file,
-all you have to do is refrain from specifying commands yourself.  Either
-write a rule with no command lines, or don't write a rule at all.  Then
-`make' will figure out which implicit rule to use based on which kind
-of source file exists or can be made.
+all you have to do is refrain from specifying recipes yourself.  Either
+write a rule with no recipe, or don't write a rule at all.  Then `make'
+will figure out which implicit rule to use based on which kind of
+source file exists or can be made.
 
    For example, suppose the makefile looks like this:
 
@@ -6754,9 +7011,9 @@ Because you mention `foo.o' but do not give a rule for it, `make' will
 automatically look for an implicit rule that tells how to update it.
 This happens whether or not the file `foo.o' currently exists.
 
-   If an implicit rule is found, it can supply both commands and one or
+   If an implicit rule is found, it can supply both a recipe and one or
 more prerequisites (the source files).  You would want to write a rule
-for `foo.o' with no command lines if you need to specify additional
+for `foo.o' with no recipe if you need to specify additional
 prerequisites, such as header files, that the implicit rule cannot
 supply.
 
@@ -6784,7 +7041,7 @@ that "chaining" is occurring.  *Note Chains of Implicit Rules: Chained
 Rules.
 
    In general, `make' searches for an implicit rule for each target, and
-for each double-colon rule, that has no commands.  A file that is
+for each double-colon rule, that has no recipe.  A file that is
 mentioned only as a prerequisite is considered a target whose rule
 specifies nothing, so implicit rule search happens for it.  *Note
 Implicit Rule Search Algorithm: Implicit Rule Search, for the details
@@ -6804,458 +7061,6 @@ in the list of predefined implicit rules (*note Catalogue of Implicit
 Rules: Catalogue of Rules.).
 
    If you do not want an implicit rule to be used for a target that has
-no commands, you can give that target empty commands by writing a
-semicolon (*note Defining Empty Commands: Empty Commands.).
-
-\1f
-File: make.info,  Node: Catalogue of Rules,  Next: Implicit Variables,  Prev: Using Implicit,  Up: Implicit Rules
-
-10.2 Catalogue of Implicit Rules
-================================
-
-Here is a catalogue of predefined implicit rules which are always
-available unless the makefile explicitly overrides or cancels them.
-*Note Canceling Implicit Rules: Canceling Rules, for information on
-canceling or overriding an implicit rule.  The `-r' or
-`--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
-implemented in `make' as suffix rules, so which ones will be defined
-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', `.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
-     `N.o' is made automatically from `N.c' with a command of the form
-     `$(CC) -c $(CPPFLAGS) $(CFLAGS)'.
-
-Compiling C++ programs
-     `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
-     `N.o' is made automatically from `N.p' with the command `$(PC) -c
-     $(PFLAGS)'.
-
-Compiling Fortran and Ratfor programs
-     `N.o' is made automatically from `N.r', `N.F' or `N.f' by running
-     the Fortran compiler.  The precise command used is as follows:
-
-    `.f'
-          `$(FC) -c $(FFLAGS)'.
-
-    `.F'
-          `$(FC) -c $(FFLAGS) $(CPPFLAGS)'.
-
-    `.r'
-          `$(FC) -c $(FFLAGS) $(RFLAGS)'.
-
-Preprocessing Fortran and Ratfor programs
-     `N.f' is made automatically from `N.r' or `N.F'.  This rule runs
-     just the preprocessor to convert a Ratfor or preprocessable
-     Fortran program into a strict Fortran program.  The precise
-     command used is as follows:
-
-    `.F'
-          `$(FC) -F $(CPPFLAGS) $(FFLAGS)'.
-
-    `.r'
-          `$(FC) -F $(FFLAGS) $(RFLAGS)'.
-
-Compiling Modula-2 programs
-     `N.sym' is made from `N.def' with a command of the form `$(M2C)
-     $(M2FLAGS) $(DEFFLAGS)'.  `N.o' is made from `N.mod'; the form is:
-     `$(M2C) $(M2FLAGS) $(MODFLAGS)'.
-
-Assembling and preprocessing assembler programs
-     `N.o' is made automatically from `N.s' by running the assembler,
-     `as'.  The precise command is `$(AS) $(ASFLAGS)'.
-
-     `N.s' is made automatically from `N.S' by running the C
-     preprocessor, `cpp'.  The precise command is `$(CPP) $(CPPFLAGS)'.
-
-Linking a single object file
-     `N' is made automatically from `N.o' by running the linker
-     (usually called `ld') via the C compiler.  The precise command
-     used is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'.
-
-     This rule does the right thing for a simple program with only one
-     source file.  It will also do the right thing if there are multiple
-     object files (presumably coming from various other source files),
-     one of which has a name matching that of the executable file.
-     Thus,
-
-          x: y.o z.o
-
-     when `x.c', `y.c' and `z.c' all exist will execute:
-
-          cc -c x.c -o x.o
-          cc -c y.c -o y.o
-          cc -c z.c -o z.o
-          cc x.o y.o z.o -o x
-          rm -f x.o
-          rm -f y.o
-          rm -f z.o
-
-     In more complicated cases, such as when there is no object file
-     whose name derives from the executable file name, you must write
-     an explicit command for linking.
-
-     Each kind of file automatically made into `.o' object files will
-     be automatically linked by using the compiler (`$(CC)', `$(FC)' or
-     `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files)
-     without the `-c' option.  This could be done by using the `.o'
-     object files as intermediates, but it is faster to do the
-     compiling and linking in one step, so that's how it's done.
-
-Yacc for C programs
-     `N.c' is made automatically from `N.y' by running Yacc with the
-     command `$(YACC) $(YFLAGS)'.
-
-Lex for C programs
-     `N.c' is made automatically from `N.l' by running Lex.  The actual
-     command is `$(LEX) $(LFLAGS)'.
-
-Lex for Ratfor programs
-     `N.r' is made automatically from `N.l' by running Lex.  The actual
-     command is `$(LEX) $(LFLAGS)'.
-
-     The convention of using the same suffix `.l' for all Lex files
-     regardless of whether they produce C code or Ratfor code makes it
-     impossible for `make' to determine automatically which of the two
-     languages you are using in any particular case.  If `make' is
-     called upon to remake an object file from a `.l' file, it must
-     guess which compiler to use.  It will guess the C compiler, because
-     that is more common.  If you are using Ratfor, make sure `make'
-     knows this by mentioning `N.r' in the makefile.  Or, if you are
-     using Ratfor exclusively, with no C files, remove `.c' from the
-     list of implicit rule suffixes with:
-
-          .SUFFIXES:
-          .SUFFIXES: .o .r .f .l ...
-
-Making Lint Libraries from C, Yacc, or Lex programs
-     `N.ln' is made from `N.c' by running `lint'.  The precise command
-     is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'.  The same command is
-     used on the C code produced from `N.y' or `N.l'.
-
-TeX and Web
-     `N.dvi' is made from `N.tex' with the command `$(TEX)'.  `N.tex'
-     is made from `N.web' with `$(WEAVE)', or from `N.w' (and from
-     `N.ch' if it exists or can be made) with `$(CWEAVE)'.  `N.p' is
-     made from `N.web' with `$(TANGLE)' and `N.c' is made from `N.w'
-     (and from `N.ch' if it exists or can be made) with `$(CTANGLE)'.
-
-Texinfo and Info
-     `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with
-     the command `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'.  `N.info' is made from
-     `N.texinfo', `N.texi', or `N.txinfo', with the command
-     `$(MAKEINFO) $(MAKEINFO_FLAGS)'.
-
-RCS
-     Any file `N' is extracted if necessary from an RCS file named
-     either `N,v' or `RCS/N,v'.  The precise command used is
-     `$(CO) $(COFLAGS)'.  `N' will not be extracted from RCS if it
-     already exists, even if the RCS file is newer.  The rules for RCS
-     are terminal (*note Match-Anything Pattern Rules: Match-Anything
-     Rules.), so RCS files cannot be generated from another source;
-     they must actually exist.
-
-SCCS
-     Any file `N' is extracted if necessary from an SCCS file named
-     either `s.N' or `SCCS/s.N'.  The precise command used is
-     `$(GET) $(GFLAGS)'.  The rules for SCCS are terminal (*note
-     Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS
-     files cannot be generated from another source; they must actually
-     exist.
-
-     For the benefit of SCCS, a file `N' is copied from `N.sh' and made
-     executable (by everyone).  This is for shell scripts that are
-     checked into SCCS.  Since RCS preserves the execution permission
-     of a file, you do not need to use this feature with RCS.
-
-     We recommend that you avoid using of SCCS.  RCS is widely held to
-     be superior, and is also free.  By choosing free software in place
-     of comparable (or inferior) proprietary software, you support the
-     free software movement.
-
-   Usually, you want to change only the variables listed in the table
-above, which are documented in the following section.
-
-   However, the commands in built-in implicit rules actually use
-variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose
-values contain the commands listed above.
-
-   `make' follows the convention that the rule to compile a `.X' source
-file uses the variable `COMPILE.X'.  Similarly, the rule to produce an
-executable from a `.X' file uses `LINK.X'; and the rule to preprocess a
-`.X' file uses `PREPROCESS.X'.
-
-   Every rule that produces an object file uses the variable
-`OUTPUT_OPTION'.  `make' defines this variable either to contain `-o
-$@', or to be empty, depending on a compile-time option.  You need the
-`-o' option to ensure that the output goes into the right file when the
-source file is in a different directory, as when using `VPATH' (*note
-Directory Search::).  However, compilers on some systems do not accept
-a `-o' switch for object files.  If you use such a system, and use
-`VPATH', some compilations will put their output in the wrong place.  A
-possible workaround for this problem is to give `OUTPUT_OPTION' the
-value `; mv $*.o $@'.
-
-\1f
-File: make.info,  Node: Implicit Variables,  Next: Chained Rules,  Prev: Catalogue of Rules,  Up: 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 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.
-
-   For example, the command used to compile a C source file actually
-says `$(CC) -c $(CFLAGS) $(CPPFLAGS)'.  The default values of the
-variables used are `cc' and nothing, resulting in the command `cc -c'.
-By redefining `CC' to `ncc', you could cause `ncc' to be used for all C
-compilations performed by the implicit rule.  By redefining `CFLAGS' to
-be `-g', you could pass the `-g' option to each compilation.  _All_
-implicit rules that do C compilation use `$(CC)' to get the program
-name for the compiler and _all_ include `$(CFLAGS)' among the arguments
-given to the compiler.
-
-   The variables used in implicit rules fall into two classes: those
-that are names of programs (like `CC') and those that contain arguments
-for the programs (like `CFLAGS').  (The "name of a program" may also
-contain some command arguments, but it must start with an actual
-executable program name.)  If a variable value contains more than one
-argument, separate them with spaces.
-
-   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'.  
-
-`AS'
-     Program for compiling assembly files; default `as'.  
-
-`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++'.  
-
-`CO'
-     Program for extracting a file from RCS; default `co'.  
-
-`CPP'
-     Program for running the C preprocessor, with results to standard
-     output; default `$(CC) -E'.
-
-`FC'
-     Program for compiling or preprocessing Fortran and Ratfor programs;
-     default `f77'.  
-
-`GET'
-     Program for extracting a file from SCCS; default `get'.  
-
-`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'.  
-
-`MAKEINFO'
-     Program to convert a Texinfo source file into an Info file; default
-     `makeinfo'.  
-
-`TEX'
-     Program to make TeX DVI files from TeX source; default `tex'.  
-
-`TEXI2DVI'
-     Program to make TeX DVI files from Texinfo source; default
-     `texi2dvi'.  
-
-`WEAVE'
-     Program to translate Web into TeX; default `weave'.  
-
-`CWEAVE'
-     Program to translate C Web into TeX; default `cweave'.  
-
-`TANGLE'
-     Program to translate Web into Pascal; default `tangle'.  
-
-`CTANGLE'
-     Program to translate C Web into C; default `ctangle'.  
-
-`RM'
-     Command to remove a file; default `rm -f'.  
-
-   Here is a table of variables whose values are additional arguments
-for the programs above.  The default values for all of these is the
-empty string, unless otherwise noted.
-
-`ARFLAGS'
-     Flags to give the archive-maintaining program; default `rv'.
-
-`ASFLAGS'
-     Extra flags to give to the assembler (when explicitly invoked on a
-     `.s' or `.S' file).
-
-`CFLAGS'
-     Extra flags to give to the C compiler.
-
-`CXXFLAGS'
-     Extra flags to give to the C++ compiler.
-
-`COFLAGS'
-     Extra flags to give to the RCS `co' program.
-
-`CPPFLAGS'
-     Extra flags to give to the C preprocessor and programs that use it
-     (the C and Fortran compilers).
-
-`FFLAGS'
-     Extra flags to give to the Fortran compiler.
-
-`GFLAGS'
-     Extra flags to give to the SCCS `get' program.
-
-`LDFLAGS'
-     Extra flags to give to compilers when they are supposed to invoke
-     the linker, `ld'.
-
-`LFLAGS'
-     Extra flags to give to Lex.
-
-`YFLAGS'
-     Extra flags to give to Yacc.
-
-`PFLAGS'
-     Extra flags to give to the Pascal compiler.
-
-`RFLAGS'
-     Extra flags to give to the Fortran compiler for Ratfor programs.
-
-`LINTFLAGS'
-     Extra flags to give to lint.
-
-\1f
-File: make.info,  Node: Chained Rules,  Next: Pattern Rules,  Prev: Implicit Variables,  Up: Implicit Rules
-
-10.4 Chains of Implicit Rules
-=============================
-
-Sometimes a file can be made by a sequence of implicit rules.  For
-example, a file `N.o' could be made from `N.y' by running first Yacc
-and then `cc'.  Such a sequence is called a "chain".
-
-   If the file `N.c' exists, or is mentioned in the makefile, no
-special searching is required: `make' finds that the object file can be
-made by C compilation from `N.c'; later on, when considering how to
-make `N.c', the rule for running Yacc is used.  Ultimately both `N.c'
-and `N.o' are updated.
-
-   However, even if `N.c' does not exist and is not mentioned, `make'
-knows how to envision it as the missing link between `N.o' and `N.y'!
-In this case, `N.c' is called an "intermediate file".  Once `make' has
-decided to use the intermediate file, it is entered in the data base as
-if it had been mentioned in the makefile, along with the implicit rule
-that says how to create it.
-
-   Intermediate files are remade using their rules just like all other
-files.  But intermediate files are treated differently in two ways.
-
-   The first difference is what happens if the intermediate file does
-not exist.  If an ordinary file B does not exist, and `make' considers
-a target that depends on B, it invariably creates B and then updates
-the target from B.  But if B is an intermediate file, then `make' can
-leave well enough alone.  It won't bother updating B, or the ultimate
-target, unless some prerequisite of B is newer than that target or
-there is some other reason to update that target.
-
-   The second difference is that if `make' _does_ create B in order to
-update something else, it deletes B later on after it is no longer
-needed.  Therefore, an intermediate file which did not exist before
-`make' also does not exist after `make'.  `make' reports the deletion
-to you by printing a `rm -f' command showing which file it is deleting.
-
-   Ordinarily, a file cannot be intermediate if it is mentioned in the
-makefile as a target or prerequisite.  However, you can explicitly mark
-a file as intermediate by listing it as a prerequisite of the special
-target `.INTERMEDIATE'.  This takes effect even if the file is mentioned
-explicitly in some other way.
-
-   You can prevent automatic deletion of an intermediate file by
-marking it as a "secondary" file.  To do this, list it as a
-prerequisite of the special target `.SECONDARY'.  When a file is
-secondary, `make' will not create the file merely because it does not
-already exist, but `make' does not automatically delete the file.
-Marking a file as secondary also marks it as intermediate.
-
-   You can list the target pattern of an implicit rule (such as `%.o')
-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::.  
-
-   A chain can involve more than two implicit rules.  For example, it is
-possible to make a file `foo' from `RCS/foo.y,v' by running RCS, Yacc
-and `cc'.  Then both `foo.y' and `foo.c' are intermediate files that
-are deleted at the end.
-
-   No single implicit rule can appear more than once in a chain.  This
-means that `make' will not even consider such a ridiculous thing as
-making `foo' from `foo.o.o' by running the linker twice.  This
-constraint has the added benefit of preventing any infinite loop in the
-search for an implicit rule chain.
-
-   There are some special implicit rules to optimize certain cases that
-would otherwise be handled by rule chains.  For example, making `foo'
-from `foo.c' could be handled by compiling and linking with separate
-chained rules, using `foo.o' as an intermediate file.  But what
-actually happens is that a special rule for this case does the
-compilation and linking with a single `cc' command.  The optimized rule
-is used in preference to the step-by-step chain because it comes
-earlier in the ordering of rules.
+no recipe, you can give that target an empty recipe by writing a
+semicolon (*note Defining Empty Recipes: Empty Recipes.).
 
index 19727b2..cd95ff0 100644 (file)
@@ -1,15 +1,15 @@
-This is make.info, produced by makeinfo version 4.8 from make.texi.
+This is make.info, produced by makeinfo version 4.13 from make.texi.
 
-   This file documents the GNU `make' utility, which determines
+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.
+   This is Edition 0.71, last updated 19 July 2010, of `The GNU Make
+Manual', for GNU `make' version 3.82.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software
-Foundation, Inc.
+1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -19,16 +19,464 @@ Foundation, Inc.
      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."
+     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
+     modify this GNU manual.  Buying copies from the FSF supports it in
+     developing GNU and promoting software freedom."
 
-INFO-DIR-SECTION GNU Packages
+INFO-DIR-SECTION Software development
 START-INFO-DIR-ENTRY
 * Make: (make).            Remake files automatically.
 END-INFO-DIR-ENTRY
 
 \1f
+File: make.info,  Node: Catalogue of Rules,  Next: Implicit Variables,  Prev: Using Implicit,  Up: Implicit Rules
+
+10.2 Catalogue of Implicit Rules
+================================
+
+Here is a catalogue of predefined implicit rules which are always
+available unless the makefile explicitly overrides or cancels them.
+*Note Canceling Implicit Rules: Canceling Rules, for information on
+canceling or overriding an implicit rule.  The `-r' or
+`--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
+implemented in `make' as suffix rules, so which ones will be defined
+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', `.cpp', `.p', `.f', `.F', `.m', `.r', `.y',
+`.l', `.ym', `.lm', `.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
+     `N.o' is made automatically from `N.c' with a recipe of the form
+     `$(CC) $(CPPFLAGS) $(CFLAGS) -c'.
+
+Compiling C++ programs
+     `N.o' is made automatically from `N.cc', `N.cpp', or `N.C' with a
+     recipe of the form `$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c'.  We
+     encourage you to use the suffix `.cc' for C++ source files instead
+     of `.C'.
+
+Compiling Pascal programs
+     `N.o' is made automatically from `N.p' with the recipe `$(PC)
+     $(PFLAGS) -c'.
+
+Compiling Fortran and Ratfor programs
+     `N.o' is made automatically from `N.r', `N.F' or `N.f' by running
+     the Fortran compiler.  The precise recipe used is as follows:
+
+    `.f'
+          `$(FC) $(FFLAGS) -c'.
+
+    `.F'
+          `$(FC) $(FFLAGS) $(CPPFLAGS) -c'.
+
+    `.r'
+          `$(FC) $(FFLAGS) $(RFLAGS) -c'.
+
+Preprocessing Fortran and Ratfor programs
+     `N.f' is made automatically from `N.r' or `N.F'.  This rule runs
+     just the preprocessor to convert a Ratfor or preprocessable
+     Fortran program into a strict Fortran program.  The precise recipe
+     used is as follows:
+
+    `.F'
+          `$(FC) $(CPPFLAGS) $(FFLAGS) -F'.
+
+    `.r'
+          `$(FC) $(FFLAGS) $(RFLAGS) -F'.
+
+Compiling Modula-2 programs
+     `N.sym' is made from `N.def' with a recipe of the form `$(M2C)
+     $(M2FLAGS) $(DEFFLAGS)'.  `N.o' is made from `N.mod'; the form is:
+     `$(M2C) $(M2FLAGS) $(MODFLAGS)'.
+
+Assembling and preprocessing assembler programs
+     `N.o' is made automatically from `N.s' by running the assembler,
+     `as'.  The precise recipe is `$(AS) $(ASFLAGS)'.
+
+     `N.s' is made automatically from `N.S' by running the C
+     preprocessor, `cpp'.  The precise recipe is `$(CPP) $(CPPFLAGS)'.
+
+Linking a single object file
+     `N' is made automatically from `N.o' by running the linker
+     (usually called `ld') via the C compiler.  The precise recipe used
+     is `$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'.
+
+     This rule does the right thing for a simple program with only one
+     source file.  It will also do the right thing if there are multiple
+     object files (presumably coming from various other source files),
+     one of which has a name matching that of the executable file.
+     Thus,
+
+          x: y.o z.o
+
+     when `x.c', `y.c' and `z.c' all exist will execute:
+
+          cc -c x.c -o x.o
+          cc -c y.c -o y.o
+          cc -c z.c -o z.o
+          cc x.o y.o z.o -o x
+          rm -f x.o
+          rm -f y.o
+          rm -f z.o
+
+     In more complicated cases, such as when there is no object file
+     whose name derives from the executable file name, you must write
+     an explicit recipe for linking.
+
+     Each kind of file automatically made into `.o' object files will
+     be automatically linked by using the compiler (`$(CC)', `$(FC)' or
+     `$(PC)'; the C compiler `$(CC)' is used to assemble `.s' files)
+     without the `-c' option.  This could be done by using the `.o'
+     object files as intermediates, but it is faster to do the
+     compiling and linking in one step, so that's how it's done.
+
+Yacc for C programs
+     `N.c' is made automatically from `N.y' by running Yacc with the
+     recipe `$(YACC) $(YFLAGS)'.
+
+Lex for C programs
+     `N.c' is made automatically from `N.l' by running Lex.  The actual
+     recipe is `$(LEX) $(LFLAGS)'.
+
+Lex for Ratfor programs
+     `N.r' is made automatically from `N.l' by running Lex.  The actual
+     recipe is `$(LEX) $(LFLAGS)'.
+
+     The convention of using the same suffix `.l' for all Lex files
+     regardless of whether they produce C code or Ratfor code makes it
+     impossible for `make' to determine automatically which of the two
+     languages you are using in any particular case.  If `make' is
+     called upon to remake an object file from a `.l' file, it must
+     guess which compiler to use.  It will guess the C compiler, because
+     that is more common.  If you are using Ratfor, make sure `make'
+     knows this by mentioning `N.r' in the makefile.  Or, if you are
+     using Ratfor exclusively, with no C files, remove `.c' from the
+     list of implicit rule suffixes with:
+
+          .SUFFIXES:
+          .SUFFIXES: .o .r .f .l ...
+
+Making Lint Libraries from C, Yacc, or Lex programs
+     `N.ln' is made from `N.c' by running `lint'.  The precise recipe
+     is `$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'.  The same recipe is used
+     on the C code produced from `N.y' or `N.l'.
+
+TeX and Web
+     `N.dvi' is made from `N.tex' with the recipe `$(TEX)'.  `N.tex' is
+     made from `N.web' with `$(WEAVE)', or from `N.w' (and from `N.ch'
+     if it exists or can be made) with `$(CWEAVE)'.  `N.p' is made from
+     `N.web' with `$(TANGLE)' and `N.c' is made from `N.w' (and from
+     `N.ch' if it exists or can be made) with `$(CTANGLE)'.
+
+Texinfo and Info
+     `N.dvi' is made from `N.texinfo', `N.texi', or `N.txinfo', with
+     the recipe `$(TEXI2DVI) $(TEXI2DVI_FLAGS)'.  `N.info' is made from
+     `N.texinfo', `N.texi', or `N.txinfo', with the recipe
+     `$(MAKEINFO) $(MAKEINFO_FLAGS)'.
+
+RCS
+     Any file `N' is extracted if necessary from an RCS file named
+     either `N,v' or `RCS/N,v'.  The precise recipe used is
+     `$(CO) $(COFLAGS)'.  `N' will not be extracted from RCS if it
+     already exists, even if the RCS file is newer.  The rules for RCS
+     are terminal (*note Match-Anything Pattern Rules: Match-Anything
+     Rules.), so RCS files cannot be generated from another source;
+     they must actually exist.
+
+SCCS
+     Any file `N' is extracted if necessary from an SCCS file named
+     either `s.N' or `SCCS/s.N'.  The precise recipe used is
+     `$(GET) $(GFLAGS)'.  The rules for SCCS are terminal (*note
+     Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS
+     files cannot be generated from another source; they must actually
+     exist.
+
+     For the benefit of SCCS, a file `N' is copied from `N.sh' and made
+     executable (by everyone).  This is for shell scripts that are
+     checked into SCCS.  Since RCS preserves the execution permission
+     of a file, you do not need to use this feature with RCS.
+
+     We recommend that you avoid using of SCCS.  RCS is widely held to
+     be superior, and is also free.  By choosing free software in place
+     of comparable (or inferior) proprietary software, you support the
+     free software movement.
+
+   Usually, you want to change only the variables listed in the table
+above, which are documented in the following section.
+
+   However, the recipes in built-in implicit rules actually use
+variables such as `COMPILE.c', `LINK.p', and `PREPROCESS.S', whose
+values contain the recipes listed above.
+
+   `make' follows the convention that the rule to compile a `.X' source
+file uses the variable `COMPILE.X'.  Similarly, the rule to produce an
+executable from a `.X' file uses `LINK.X'; and the rule to preprocess a
+`.X' file uses `PREPROCESS.X'.
+
+   Every rule that produces an object file uses the variable
+`OUTPUT_OPTION'.  `make' defines this variable either to contain `-o
+$@', or to be empty, depending on a compile-time option.  You need the
+`-o' option to ensure that the output goes into the right file when the
+source file is in a different directory, as when using `VPATH' (*note
+Directory Search::).  However, compilers on some systems do not accept
+a `-o' switch for object files.  If you use such a system, and use
+`VPATH', some compilations will put their output in the wrong place.  A
+possible workaround for this problem is to give `OUTPUT_OPTION' the
+value `; mv $*.o $@'.
+
+\1f
+File: make.info,  Node: Implicit Variables,  Next: Chained Rules,  Prev: Catalogue of Rules,  Up: Implicit Rules
+
+10.3 Variables Used by Implicit Rules
+=====================================
+
+The recipes in built-in implicit rules make liberal use of certain
+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.
+
+   For example, the recipe used to compile a C source file actually says
+`$(CC) -c $(CFLAGS) $(CPPFLAGS)'.  The default values of the variables
+used are `cc' and nothing, resulting in the command `cc -c'.  By
+redefining `CC' to `ncc', you could cause `ncc' to be used for all C
+compilations performed by the implicit rule.  By redefining `CFLAGS' to
+be `-g', you could pass the `-g' option to each compilation.  _All_
+implicit rules that do C compilation use `$(CC)' to get the program
+name for the compiler and _all_ include `$(CFLAGS)' among the arguments
+given to the compiler.
+
+   The variables used in implicit rules fall into two classes: those
+that are names of programs (like `CC') and those that contain arguments
+for the programs (like `CFLAGS').  (The "name of a program" may also
+contain some command arguments, but it must start with an actual
+executable program name.)  If a variable value contains more than one
+argument, separate them with spaces.
+
+   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 `make' selects 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'.  
+
+`AS'
+     Program for compiling assembly files; default `as'.  
+
+`CC'
+     Program for compiling C programs; default `cc'.  
+
+`CXX'
+     Program for compiling C++ programs; default `g++'.  
+
+`CPP'
+     Program for running the C preprocessor, with results to standard
+     output; default `$(CC) -E'.
+
+`FC'
+     Program for compiling or preprocessing Fortran and Ratfor programs;
+     default `f77'.  
+
+`M2C'
+     Program to use to compile Modula-2 source code; default `m2c'.  
+
+`PC'
+     Program for compiling Pascal programs; default `pc'.  
+
+`CO'
+     Program for extracting a file from RCS; default `co'.  
+
+`GET'
+     Program for extracting a file from SCCS; default `get'.  
+
+`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'.  
+
+`MAKEINFO'
+     Program to convert a Texinfo source file into an Info file; default
+     `makeinfo'.  
+
+`TEX'
+     Program to make TeX DVI files from TeX source; default `tex'.  
+
+`TEXI2DVI'
+     Program to make TeX DVI files from Texinfo source; default
+     `texi2dvi'.  
+
+`WEAVE'
+     Program to translate Web into TeX; default `weave'.  
+
+`CWEAVE'
+     Program to translate C Web into TeX; default `cweave'.  
+
+`TANGLE'
+     Program to translate Web into Pascal; default `tangle'.  
+
+`CTANGLE'
+     Program to translate C Web into C; default `ctangle'.  
+
+`RM'
+     Command to remove a file; default `rm -f'.  
+
+   Here is a table of variables whose values are additional arguments
+for the programs above.  The default values for all of these is the
+empty string, unless otherwise noted.
+
+`ARFLAGS'
+     Flags to give the archive-maintaining program; default `rv'.
+
+`ASFLAGS'
+     Extra flags to give to the assembler (when explicitly invoked on a
+     `.s' or `.S' file).
+
+`CFLAGS'
+     Extra flags to give to the C compiler.
+
+`CXXFLAGS'
+     Extra flags to give to the C++ compiler.
+
+`COFLAGS'
+     Extra flags to give to the RCS `co' program.
+
+`CPPFLAGS'
+     Extra flags to give to the C preprocessor and programs that use it
+     (the C and Fortran compilers).
+
+`FFLAGS'
+     Extra flags to give to the Fortran compiler.
+
+`GFLAGS'
+     Extra flags to give to the SCCS `get' program.
+
+`LDFLAGS'
+     Extra flags to give to compilers when they are supposed to invoke
+     the linker, `ld'.
+
+`LFLAGS'
+     Extra flags to give to Lex.
+
+`YFLAGS'
+     Extra flags to give to Yacc.
+
+`PFLAGS'
+     Extra flags to give to the Pascal compiler.
+
+`RFLAGS'
+     Extra flags to give to the Fortran compiler for Ratfor programs.
+
+`LINTFLAGS'
+     Extra flags to give to lint.
+
+\1f
+File: make.info,  Node: Chained Rules,  Next: Pattern Rules,  Prev: Implicit Variables,  Up: Implicit Rules
+
+10.4 Chains of Implicit Rules
+=============================
+
+Sometimes a file can be made by a sequence of implicit rules.  For
+example, a file `N.o' could be made from `N.y' by running first Yacc
+and then `cc'.  Such a sequence is called a "chain".
+
+   If the file `N.c' exists, or is mentioned in the makefile, no
+special searching is required: `make' finds that the object file can be
+made by C compilation from `N.c'; later on, when considering how to
+make `N.c', the rule for running Yacc is used.  Ultimately both `N.c'
+and `N.o' are updated.
+
+   However, even if `N.c' does not exist and is not mentioned, `make'
+knows how to envision it as the missing link between `N.o' and `N.y'!
+In this case, `N.c' is called an "intermediate file".  Once `make' has
+decided to use the intermediate file, it is entered in the data base as
+if it had been mentioned in the makefile, along with the implicit rule
+that says how to create it.
+
+   Intermediate files are remade using their rules just like all other
+files.  But intermediate files are treated differently in two ways.
+
+   The first difference is what happens if the intermediate file does
+not exist.  If an ordinary file B does not exist, and `make' considers
+a target that depends on B, it invariably creates B and then updates
+the target from B.  But if B is an intermediate file, then `make' can
+leave well enough alone.  It won't bother updating B, or the ultimate
+target, unless some prerequisite of B is newer than that target or
+there is some other reason to update that target.
+
+   The second difference is that if `make' _does_ create B in order to
+update something else, it deletes B later on after it is no longer
+needed.  Therefore, an intermediate file which did not exist before
+`make' also does not exist after `make'.  `make' reports the deletion
+to you by printing a `rm -f' command showing which file it is deleting.
+
+   Ordinarily, a file cannot be intermediate if it is mentioned in the
+makefile as a target or prerequisite.  However, you can explicitly mark
+a file as intermediate by listing it as a prerequisite of the special
+target `.INTERMEDIATE'.  This takes effect even if the file is mentioned
+explicitly in some other way.
+
+   You can prevent automatic deletion of an intermediate file by
+marking it as a "secondary" file.  To do this, list it as a
+prerequisite of the special target `.SECONDARY'.  When a file is
+secondary, `make' will not create the file merely because it does not
+already exist, but `make' does not automatically delete the file.
+Marking a file as secondary also marks it as intermediate.
+
+   You can list the target pattern of an implicit rule (such as `%.o')
+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::.  
+
+   A chain can involve more than two implicit rules.  For example, it is
+possible to make a file `foo' from `RCS/foo.y,v' by running RCS, Yacc
+and `cc'.  Then both `foo.y' and `foo.c' are intermediate files that
+are deleted at the end.
+
+   No single implicit rule can appear more than once in a chain.  This
+means that `make' will not even consider such a ridiculous thing as
+making `foo' from `foo.o.o' by running the linker twice.  This
+constraint has the added benefit of preventing any infinite loop in the
+search for an implicit rule chain.
+
+   There are some special implicit rules to optimize certain cases that
+would otherwise be handled by rule chains.  For example, making `foo'
+from `foo.c' could be handled by compiling and linking with separate
+chained rules, using `foo.o' as an intermediate file.  But what
+actually happens is that a special rule for this case does the
+compilation and linking with a single `cc' command.  The optimized rule
+is used in preference to the step-by-step chain because it comes
+earlier in the ordering of rules.
+
+\1f
 File: make.info,  Node: Pattern Rules,  Next: Last Resort,  Prev: Chained Rules,  Up: Implicit Rules
 
 10.5 Defining and Redefining Pattern Rules
@@ -47,7 +495,7 @@ 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
+read.  *Note How to Use Variables: Using Variables, and *note Functions
 for Transforming Text: Functions.
 
 * Menu:
@@ -55,7 +503,7 @@ for Transforming Text: Functions.
 * 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.
+                                  recipes of implicit rules.
 * Pattern Match::               How patterns match.
 * Match-Anything Rules::        Precautions you should take prior to
                                   defining rules that can match any
@@ -88,7 +536,7 @@ prerequisites of the target.
 
    Thus, a rule of the form
 
-     %.o : %.c ; COMMAND...
+     %.o : %.c ; RECIPE...
 
 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.
@@ -102,24 +550,20 @@ 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::.
 
+   More than one pattern rule may match a target.  In this case `make'
+will choose the "best fit" rule.  *Note How Patterns Match: Pattern
+Match.
+
    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
+and recipe.  If a pattern rule has multiple targets, `make' knows that
+the rule's recipe is responsible for making all of the targets.  The
+recipe is 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.  
+incidental: `make' worries only about giving a recipe and prerequisites
+to the file presently in question.  However, when this file's recipe is
+run, the other targets are marked as having been updated themselves.  
 
 \1f
 File: make.info,  Node: Pattern Examples,  Next: Automatic Variables,  Prev: Pattern Intro,  Up: Pattern Rules
@@ -133,7 +577,7 @@ 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
+defines a rule that can make any file `X.o' from `X.c'.  The recipe
 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::).
@@ -155,10 +599,10 @@ file (*note Match-Anything Pattern Rules: Match-Anything Rules.).
      %.tab.c %.tab.h: %.y
              bison -d $<
 
-This tells `make' that the command `bison -d X.y' will make both
+This tells `make' that the recipe `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'
+`parse.tab.h', when `parse.y' is changed, the recipe `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
@@ -173,7 +617,7 @@ File: make.info,  Node: Automatic Variables,  Next: Pattern Match,  Prev: Patter
 
 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,
+right source file name?  You cannot write the name in the recipe,
 because the name is different each time the implicit rule is applied.
 
    What you do is use a special feature of `make', the "automatic
@@ -184,9 +628,9 @@ 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
+the recipe.  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
@@ -200,7 +644,7 @@ be used in prerequisite lists.
      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.
+     target caused the rule's recipe to be run.
 
 `$%'
      The target member name, when the target is an archive member.
@@ -209,18 +653,18 @@ be used in prerequisite lists.
      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 name of the first prerequisite.  If the target got its recipe
+     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::).  
+     members, only the named member 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
+     prerequisites which are archive members, only the named member 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
@@ -362,6 +806,44 @@ 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'.
 
+   A pattern rule can be used to build a given file only if there is a
+target pattern that matches the file name, _and_ all prerequisites in
+that rule either exist or can be built.  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.
+
+   It is possible that more than one pattern rule will meet these
+criteria.  In that case, `make' will choose the rule with the shortest
+stem (that is, the pattern that matches most specifically).  If more
+than one pattern rule has the shortest stem, `make' will choose the
+first one found in the makefile.
+
+   This algorithm results in more specific rules being preferred over
+more generic ones; for example:
+
+     %.o: %.c
+             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+     %.o : %.f
+             $(COMPILE.F) $(OUTPUT_OPTION) $<
+
+     lib/%.o: lib/%.c
+             $(CC) -fPIC -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+   Given these rules and asked to build `bar.o' where both `bar.c' and
+`bar.f' exist, `make' will choose the first rule and compile `bar.c'
+into `bar.o'.  In the same situation where `bar.c' does not exist, then
+`make' will choose the second rule and compile `bar.f' into `bar.o'.
+
+   If `make' is asked to build `lib/bar.o' and both `lib/bar.c' and
+`lib/bar.f' exist, then the third rule will be chosen since the stem
+for this rule (`bar') is shorter than the stem for the first rule
+(`lib/bar').  If `lib/bar.c' does not exist then the third rule is not
+eligible and the second rule will be used, even though the stem is
+longer.
+
 \1f
 File: make.info,  Node: Match-Anything Rules,  Next: Canceling Rules,  Prev: Pattern Match,  Up: Pattern Rules
 
@@ -426,8 +908,8 @@ 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
+considered.  These dummy rules have no prerequisites and no recipes, and
+they are ignored for all other purposes.  For example, the built-in
 implicit rule
 
      %.p :
@@ -448,12 +930,12 @@ File: make.info,  Node: Canceling Rules,  Prev: Match-Anything Rules,  Up: Patte
 
 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,
+prerequisites, but a different recipe.  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,
+with the same target and prerequisites, but no recipe.  For example,
 the following would cancel the rule that runs the assembler:
 
      %.o : %.s
@@ -468,8 +950,8 @@ 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.
+recipe is used for all targets and prerequisites that have no recipe 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
@@ -481,24 +963,24 @@ do this:
 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
+   You can instead define a recipe to be used for targets for which
+there are no rules at all, even ones which don't specify recipes.  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.
+recipe is 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:
+   If you use `.DEFAULT' with no recipe or prerequisites:
 
      .DEFAULT:
 
-the commands previously stored for `.DEFAULT' are cleared.  Then `make'
+the recipe previously stored for `.DEFAULT' is 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.).
+   If you do not want a target to get the recipe from a match-anything
+pattern rule or `.DEFAULT', but you also do not want any recipe to be
+run for the target, you can give it an empty recipe (*note Defining
+Empty Recipes: Empty Recipes.).
 
    You can use a last-resort rule to override part of another makefile.
 *Note Overriding Part of Another Makefile: Overriding Makefiles.
@@ -559,10 +1041,10 @@ and is not at all like the pattern rule:
 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.
+   Suffix rules with no recipe are also meaningless.  They do not remove
+previous rules as do pattern rules with no recipe (*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
@@ -597,8 +1079,8 @@ File: make.info,  Node: Implicit Rule Search,  Prev: Suffix Rules,  Up: Implicit
 
 Here is the procedure `make' uses for searching for an implicit rule
 for a target T.  This procedure is followed for each double-colon rule
-with no commands, for each target of ordinary rules none of which have
-commands, and for each prerequisite that is not the target of any rule.
+with no recipe, for each target of ordinary rules none of which have a
+recipe, and for each prerequisite that is not the target of any rule.
 It is also followed recursively for prerequisites that come from
 implicit rules, in the search for a chain of rules.
 
@@ -622,7 +1104,7 @@ rule.
   3. If any rule in that list is _not_ a match-anything rule, then
      remove all nonterminal match-anything rules from the list.
 
-  4. Remove from the list all rules with no commands.
+  4. Remove from the list all rules with no recipe.
 
   5. For each pattern rule in the list:
 
@@ -657,18 +1139,18 @@ rule.
           implicit rules, then this rule applies.
 
   7. If no implicit rule applies, the rule for `.DEFAULT', if any,
-     applies.  In that case, give T the same commands that `.DEFAULT'
-     has.  Otherwise, there are no commands for T.
+     applies.  In that case, give T the same recipe that `.DEFAULT'
+     has.  Otherwise, there is no recipe for T.
 
    Once a rule that applies has been found, for each target pattern of
 the rule other than the one that matched T or N, the `%' in the pattern
 is replaced with S and the resultant file name is stored until the
-commands to remake the target file T are executed.  After these
-commands are executed, each of these stored file names are entered into
-the data base and marked as having been updated and having the same
-update status as the file T.
+recipe to remake the target file T is executed.  After the recipe is
+executed, each of these stored file names are entered into the data
+base and marked as having been updated and having the same update
+status as the file T.
 
-   When the commands of a pattern rule are executed for T, the automatic
+   When the recipe of a pattern rule is executed for T, the automatic
 variables are set corresponding to the target and prerequisites.  *Note
 Automatic Variables::.
 
@@ -703,10 +1185,10 @@ file ARCHIVE as follows:
      ARCHIVE(MEMBER)
 
 This construct is available only in targets and prerequisites, not in
-commands!  Most programs that you might use in commands do not support
+recipes!  Most programs that you might use in recipes do not support
 this syntax and cannot act directly on archive members.  Only `ar' and
 other programs specifically designed to operate on archives can do so.
-Therefore, valid commands to update an archive member target probably
+Therefore, valid recipes to update an archive member target probably
 must use `ar'.  For example, this rule says to create a member `hack.o'
 in archive `foolib' by copying the file `hack.o':
 
@@ -754,7 +1236,7 @@ copying the _file_ `bar.o' into the archive `foo.a' as a _member_ named
    When this rule is chained with others, the result is very powerful.
 Thus, `make "foo.a(bar.o)"' (the quotes are needed to protect the `('
 and `)' from being interpreted specially by the shell) in the presence
-of a file `bar.c' is enough to cause the following commands to be run,
+of a file `bar.c' is enough to cause the following recipe to be run,
 even without a makefile:
 
      cc -c bar.c -o bar.o
@@ -770,7 +1252,7 @@ variable `$%'.  *Note Automatic Variables::.
    An archive member name in an archive cannot contain a directory
 name, but it may be useful in a makefile to pretend that it does.  If
 you write an archive member target `foo.a(dir/file.o)', `make' will
-perform automatic updating with this command:
+perform automatic updating with this recipe:
 
      ar r foo.a dir/file.o
 
@@ -825,7 +1307,7 @@ switch; *note Parallel Execution: Parallel.) and archives.  If multiple
 not know about each other and can corrupt the file.
 
    Possibly a future version of `make' will provide a mechanism to
-circumvent this problem by serializing all commands that operate on the
+circumvent this problem by serializing all recipes that operate on the
 same archive file.  But for the time being, you must either write your
 makefiles to avoid this problem in some other way, or not use `-j'.
 
@@ -878,7 +1360,7 @@ Here is a summary of the features of GNU `make', for comparison with
 and credit to other versions of `make'.  We consider the features of
 `make' in 4.2 BSD systems as a baseline.  If you are concerned with
 writing portable makefiles, you should not use the features of `make'
-listed here, nor the ones in *Note Missing::.
+listed here, nor the ones in *note Missing::.
 
    Many features come from the version of `make' in System V.
 
@@ -909,7 +1391,7 @@ listed here, nor the ones in *Note Missing::.
    * Substitution variable references.  *Note Basics of Variable
      References: Reference.
 
-   * The command-line options `-b' and `-m', accepted and ignored.  In
+   * The command line options `-b' and `-m', accepted and ignored.  In
      System V `make', these options actually do something.
 
    * Execution of recursive commands to run `make' via the variable
@@ -923,8 +1405,8 @@ listed here, nor the ones in *Note Missing::.
      an archive (*note Archive Update::) to be sufficient.
 
    * The arrangement of lines and backslash-newline combinations in
-     commands is retained when the commands are printed, so they appear
-     as they do in the makefile, except for the stripping of initial
+     recipes is retained when the recipes are printed, so they appear as
+     they do in the makefile, except for the stripping of initial
      whitespace.
 
    The following features were inspired by various other versions of
@@ -950,12 +1432,12 @@ which others.
      `$+' is a simple extension of `$^'.
 
    * The "what if" flag (`-W' in GNU `make') was (as far as we know)
-     invented by Andrew Hume in `mk'.  *Note Instead of Executing the
-     Commands: Instead of Execution.
+     invented by Andrew Hume in `mk'.  *Note Instead of Executing
+     Recipes: Instead of Execution.
 
    * The concept of doing several things at once (parallelism) exists in
      many incarnations of `make' and similar programs, though not in the
-     System V or BSD implementations.  *Note Command Execution:
+     System V or BSD implementations.  *Note Recipe Execution:
      Execution.
 
    * Modified variable references using pattern substitution come from
@@ -966,8 +1448,8 @@ which others.
      inspired whom, since GNU `make' had `patsubst' before SunOS 4 was
      released.
 
-   * The special significance of `+' characters preceding command lines
-     (*note Instead of Executing the Commands: Instead of Execution.) is
+   * The special significance of `+' characters preceding recipe lines
+     (*note Instead of Executing Recipes: Instead of Execution.) is
      mandated by `IEEE Standard 1003.2-1992' (POSIX.2).
 
    * The `+=' syntax to append to the value of a variable comes from
@@ -993,7 +1475,7 @@ which others.
    * Simply-expanded variables.  *Note The Two Flavors of Variables:
      Flavors.
 
-   * Pass command-line variable assignments automatically through the
+   * Pass command line variable assignments automatically through the
      variable `MAKE' to recursive `make' invocations.  *Note Recursive
      Use of `make': Recursion.
 
@@ -1001,7 +1483,7 @@ which others.
      *Note Summary of Options: Options Summary.
 
    * Make verbatim variable definitions with `define'.  *Note Defining
-     Variables Verbatim: Defining.
+     Multi-Line Variables: Multi-Line.
 
    * Declare phony targets with the special target `.PHONY'.
 
@@ -1102,8 +1584,8 @@ these features.
 
    * In System V and 4.3 BSD `make', files found by `VPATH' search
      (*note Searching Directories for Prerequisites: Directory Search.)
-     have their names changed inside command strings.  We feel it is
-     much cleaner to always use automatic variables and thus make this
+     have their names changed inside recipes.  We feel it is much
+     cleaner to always use automatic variables and thus make this
      feature obsolete.
 
    * In some Unix `make's, the automatic variable `$*' appearing in the
@@ -1115,7 +1597,7 @@ these features.
 
    * In some Unix `make's, implicit rule search (*note Using Implicit
      Rules: Implicit Rules.) is apparently done for _all_ targets, not
-     just those without commands.  This means you can do:
+     just those without recipes.  This means you can do:
 
           foo.o:
                   cc -c foo.c
@@ -1130,15 +1612,15 @@ these features.
      compiling or preprocessing EFL programs.  If we hear of anyone who
      is using EFL, we will gladly add them.
 
-   * It appears that in SVR4 `make', a suffix rule can be specified with
-     no commands, and it is treated as if it had empty commands (*note
-     Empty Commands::).  For example:
+   * It appears that in SVR4 `make', a suffix rule can be specified
+     with no recipe, and it is treated as if it had an empty recipe
+     (*note Empty Recipes::).  For example:
 
           .c.a:
 
      will override the built-in `.c.a' suffix rule.
 
-     We feel that it is cleaner for a rule without commands to always
+     We feel that it is cleaner for a rule without a recipe to always
      simply add to the prerequisite list for the target.  The above
      example can be easily rewritten to get the desired behavior in GNU
      `make':
@@ -1149,7 +1631,7 @@ these features.
      except under `-k' (*note Testing the Compilation of a Program:
      Testing.).  The `-e' flag tells the shell to exit as soon as any
      program it runs returns a nonzero status.  We feel it is cleaner to
-     write each shell command line to stand on its own and not require
+     write each line of the recipe to stand on its own and not require
      this special treatment.
 
 \1f
@@ -1160,15 +1642,17 @@ File: make.info,  Node: Makefile Conventions,  Next: Quick Reference,  Prev: Mis
 
 This node describes conventions for writing the Makefiles for GNU
 programs.  Using Automake will help you write a Makefile that follows
-these conventions.
+these conventions.  For more information on portable Makefiles, see
+POSIX and *note Portable Make Programming: (autoconf)Portable Make.
 
 * Menu:
 
-* 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
+* Makefile Basics::             General conventions for Makefiles.
+* Utilities in Makefiles::      Utilities to be used in Makefiles.
+* Command Variables::           Variables for specifying commands.
+* DESTDIR::                     Supporting staged installs.
+* Directory Variables::         Variables for installation directories.
+* Standard Targets::            Standard targets for users.
 * Install Command Categories::  Three categories of commands in the `install'
                                   rule: normal, pre-install and post-install.
 
@@ -1210,7 +1694,7 @@ build in a separate directory using the `--srcdir' option to
 `configure'.  A rule of the form:
 
      foo.1 : foo.man sedscript
-             sed -e sedscript foo.man > foo.1
+             sed -f sedscript foo.man > foo.1
 
 will fail when the build directory is not the source directory, because
 `foo.man' and `sedscript' are in the source directory.
@@ -1235,7 +1719,7 @@ to make the rule work well.  For example, the target above for `foo.1'
 is best written as:
 
      foo.1 : foo.man sedscript
-             sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
+             sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@
 
    GNU distributions usually contain some files which are not source
 files--for example, Info files, and the output from Autoconf, Automake,
@@ -1259,23 +1743,28 @@ File: make.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev:
 ===========================
 
 Write the Makefile commands (and any shell scripts, such as
-`configure') to run in `sh', not in `csh'.  Don't use any special
-features of `ksh' or `bash'.
+`configure') to run under `sh' (both the traditional Bourne shell and
+the POSIX shell), not `csh'.  Don't use any special features of `ksh'
+or `bash', or POSIX features not widely supported in traditional Bourne
+`sh'.
 
    The `configure' script and the Makefile rules for building and
 installation should not use any utilities directly except these:
 
-     cat cmp cp diff echo egrep expr false grep install-info
-     ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
+     awk cat cmp cp diff echo egrep expr false grep install-info ln ls
+     mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true
 
-   The compression program `gzip' can be used in the `dist' rule.
+   Compression programs such as `gzip' can be used in the `dist' rule.
 
-   Stick to the generally supported options for these programs.  For
-example, don't use `mkdir -p', convenient as it may be, because most
-systems don't support it.
+   Generally, stick to the widely-supported (usually POSIX-specified)
+options and features of these programs.  For example, don't use `mkdir
+-p', convenient as it may be, because a few systems don't support it at
+all and with others, it is not safe for parallel execution.  For a list
+of known incompatibilities, see *note Portable Shell Programming:
+(autoconf)Portable Shell.
 
    It is a good idea to avoid creating symbolic links in makefiles,
-since a few systems don't support them.
+since a few file systems don't support them.
 
    The Makefile rules for building and installation can also use
 compilers and related programs, but should do so via `make' variables
@@ -1308,7 +1797,7 @@ intended only for particular systems where you know those utilities
 exist.
 
 \1f
-File: make.info,  Node: Command Variables,  Next: Directory Variables,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
+File: make.info,  Node: Command Variables,  Next: DESTDIR,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
 
 14.3 Variables for Specifying Commands
 ======================================
@@ -1367,36 +1856,79 @@ basic command for installing a file into the system.
 and `INSTALL_DATA'.  (The default for `INSTALL_PROGRAM' should be
 `$(INSTALL)'; the default for `INSTALL_DATA' should be `${INSTALL} -m
 644'.)  Then it should use those variables as the commands for actual
-installation, for executables and nonexecutables respectively.  Use
-these variables as follows:
+installation, for executables and non-executables respectively.
+Minimal use of these variables is as follows:
 
      $(INSTALL_PROGRAM) foo $(bindir)/foo
      $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
 
-   Optionally, you may prepend the value of `DESTDIR' to the target
-filename.  Doing this allows the installer to create a snapshot of the
-installation to be copied onto the real target filesystem later.  Do not
-set the value of `DESTDIR' in your Makefile, and do not include it in
-any installed files.  With support for `DESTDIR', the above examples
-become:
+   However, it is preferable to support a `DESTDIR' prefix on the
+target files, as explained in the next section.
+
+   It is acceptable, but not required, to install multiple files in one
+command, with the final argument being a directory, as in:
+
+     $(INSTALL_PROGRAM) foo bar baz $(bindir)
+
+\1f
+File: make.info,  Node: DESTDIR,  Next: Directory Variables,  Prev: Command Variables,  Up: Makefile Conventions
+
+14.4 `DESTDIR': Support for Staged Installs
+===========================================
+
+`DESTDIR' is a variable prepended to each installed target file, like
+this:
 
      $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
      $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
 
-Always use a file name, not a directory name, as the second argument of
-the installation commands.  Use a separate command for each file to be
-installed.
+   The `DESTDIR' variable is specified by the user on the `make'
+command line as an absolute file name.  For example:
+
+     make DESTDIR=/tmp/stage install
+
+`DESTDIR' should be supported only in the `install*' and `uninstall*'
+targets, as those are the only targets where it is useful.
+
+   If your installation step would normally install
+`/usr/local/bin/foo' and `/usr/local/lib/libfoo.a', then an
+installation invoked as in the example above would install
+`/tmp/stage/usr/local/bin/foo' and `/tmp/stage/usr/local/lib/libfoo.a'
+instead.
+
+   Prepending the variable `DESTDIR' to each target in this way
+provides for "staged installs", where the installed files are not
+placed directly into their expected location but are instead copied
+into a temporary location (`DESTDIR').  However, installed files
+maintain their relative directory structure and any embedded file names
+will not be modified.
+
+   You should not set the value of `DESTDIR' in your `Makefile' at all;
+then the files are installed into their expected locations by default.
+Also, specifying `DESTDIR' should not change the operation of the
+software in any way, so its value should not be included in any file
+contents.
+
+   `DESTDIR' support is commonly used in package creation.  It is also
+helpful to users who want to understand what a given package will
+install where, and to allow users who don't normally have permissions
+to install into protected areas to build and install before gaining
+those permissions.  Finally, it can be useful with tools such as
+`stow', where code is installed in one place but made to appear to be
+installed somewhere else using symbolic links or special mount
+operations.  So, we strongly recommend GNU packages support `DESTDIR',
+though it is not an absolute requirement.
 
 \1f
-File: make.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: Command Variables,  Up: Makefile Conventions
+File: make.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: DESTDIR,  Up: Makefile Conventions
 
-14.4 Variables for Installation Directories
+14.5 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 and the values they should have in GNU packages are described
-below.  They are based on a standard filesystem layout; variants of it
+below.  They are based on a standard file system layout; variants of it
 are used in GNU/Linux and other modern operating systems.
 
    Installers are expected to override these values when calling `make'
@@ -1407,9 +1939,13 @@ 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
-installation directories should be subdirectories of one of these two,
-and nothing should be directly installed into these two directories.
+   All installation directories, and their parent directories, should be
+created (if necessary) before they are installed into.
+
+   These first two variables set the root for the installation.  All the
+other installation directories should be subdirectories of one of these
+two, and nothing should be directly installed into these two
+directories.
 
 `prefix'
      A prefix used in constructing the default values of the variables
@@ -1597,8 +2133,7 @@ have Info files, so every program needs `infodir', but not all need
 `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
+     format.  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,
@@ -1614,8 +2149,8 @@ have Info files, so every program needs `infodir', but not all need
 
 `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'.
+     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
@@ -1673,7 +2208,7 @@ have Info files, so every program needs `infodir', but not all need
 `srcdir'
      The directory for the sources being compiled.  The value of this
      variable is normally inserted by the `configure' shell script.
-     (If you are using Autconf, use `srcdir = @srcdir@'.)
+     (If you are using Autoconf, use `srcdir = @srcdir@'.)
 
    For example:
 
@@ -1702,10 +2237,18 @@ specify the exact same values for several different GNU packages.  In
 order for this to be useful, all the packages must be designed so that
 they will work sensibly when the user does so.
 
+   At times, not all of these variables may be implemented in the
+current release of Autoconf and/or Automake; but as of Autoconf 2.60, we
+believe all of them are.  When any are missing, the descriptions here
+serve as specifications for what Autoconf will implement.  As a
+programmer, you can either use a development version of Autoconf or
+avoid using these variables until a stable release is made which
+supports them.
+
 \1f
 File: make.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
 
-14.5 Standard Targets for Users
+14.6 Standard Targets for Users
 ===============================
 
 All GNU programs should have the following targets in their Makefiles:
@@ -1713,8 +2256,9 @@ All GNU programs should have the following targets in their Makefiles:
 `all'
      Compile the entire program.  This should be the default target.
      This target need not rebuild any documentation files; Info files
-     should normally be included in the distribution, and DVI files
-     should be made only when explicitly asked for.
+     should normally be included in the distribution, and DVI (and other
+     documentation format) files should be made only when explicitly
+     asked for.
 
      By default, the Make rules should compile and link with `-g', so
      that executable programs have debugging symbols.  Users who don't
@@ -1751,23 +2295,28 @@ All GNU programs should have the following targets in their Makefiles:
      the `install-info' program if it is present.  `install-info' is a
      program that edits the Info `dir' file to add or update the menu
      entry for the given Info file; it is part of the Texinfo package.
-     Here is a sample rule to install an Info file:
 
-          $(DESTDIR)$(infodir)/foo.info: foo.info
-                  $(POST_INSTALL)
-          # There may be a newer info file in . than in srcdir.
-                  -if test -f foo.info; then d=.; \
-                   else d=$(srcdir); fi; \
-                  $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
+     Here is a sample rule to install an Info file that also tries to
+     handle some additional situations, such as `install-info' not
+     being present.
+
+          do-install-info: foo.info installdirs
+                  $(NORMAL_INSTALL)
+          # Prefer an info file in . to one in srcdir.
+                  if test -f foo.info; then d=.; \
+                   else d="$(srcdir)"; fi; \
+                  $(INSTALL_DATA) $$d/foo.info \
+                    "$(DESTDIR)$(infodir)/foo.info"
           # Run install-info only if it exists.
           # Use `if' instead of just prepending `-' to the
           # line so we notice real errors from install-info.
-          # We use `$(SHELL) -c' because some shells do not
+          # Use `$(SHELL) -c' because some shells do not
           # fail gracefully when there is an unknown command.
+                  $(POST_INSTALL)
                   if $(SHELL) -c 'install-info --version' \
                      >/dev/null 2>&1; then \
-                    install-info --dir-file=$(DESTDIR)$(infodir)/dir \
-                                 $(DESTDIR)$(infodir)/foo.info; \
+                    install-info --dir-file="$(DESTDIR)$(infodir)/dir" \
+                                 "$(DESTDIR)$(infodir)/foo.info"; \
                   else true; fi
 
      When writing the `install' target, you must classify all the
@@ -1794,6 +2343,9 @@ All GNU programs should have the following targets in their Makefiles:
      or two nodes with the same name in different manuals will
      overwrite each other.
 
+     Please make these `install-FORMAT' targets invoke the commands for
+     the FORMAT target, for example, by making FORMAT a dependency.
+
 `uninstall'
      Delete all the installed files--the copies that the `install' and
      `install-*' targets create.
@@ -1910,7 +2462,12 @@ All GNU programs should have the following targets in their Makefiles:
 `html'
 `pdf'
 `ps'
-     Generate documentation files in the given format, if possible.
+     Generate documentation files in the given format.  These targets
+     should always exist, but any or all can be a no-op if the given
+     output format cannot be generated.  These targets should not be
+     dependencies of the `all' target; the user must manually invoke
+     them.
+
      Here's an example rule for generating DVI files from Texinfo:
 
           dvi: foo.dvi
@@ -1949,6 +2506,7 @@ All GNU programs should have the following targets in their Makefiles:
 
      Compress the tar file with `gzip'.  For example, the actual
      distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
+     It is ok to support other free compression formats as well.
 
      The `dist' target should explicitly depend on all non-source files
      that are in the distribution, to make sure they are up to date in
@@ -1972,7 +2530,7 @@ programs in which they are useful.
      It's useful to add a target named `installdirs' to create the
      directories where files are installed, and their parent
      directories.  There is a script called `mkinstalldirs' which is
-     convenient for this; you can find it in the Texinfo package.  You
+     convenient for this; you can find it in the Gnulib package.  You
      can use a rule like this:
 
           # Make sure all installation directories (e.g. $(bindir))
@@ -1982,7 +2540,7 @@ programs in which they are useful.
                                           $(libdir) $(infodir) \
                                           $(mandir)
 
-     or, if you wish to support `DESTDIR',
+     or, if you wish to support `DESTDIR' (strongly encouraged),
 
           # Make sure all installation directories (e.g. $(bindir))
           # actually exist by making them if necessary.
@@ -2003,7 +2561,7 @@ not distributed with Texinfo.
 \1f
 File: make.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
 
-14.6 Install Command Categories
+14.7 Install Command Categories
 ===============================
 
 When writing the `install' target, you must classify all the commands
@@ -2112,15 +2670,23 @@ Appendix A Quick Reference
 
 This appendix summarizes the directives, text manipulation functions,
 and special variables which GNU `make' understands.  *Note Special
-Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
-*Note Summary of Options: Options Summary, for other summaries.
+Targets::, *note Catalogue of Implicit Rules: Catalogue of Rules, and
+*note Summary of Options: Options Summary, for other summaries.
 
    Here is a summary of the directives GNU `make' recognizes:
 
 `define VARIABLE'
+`define VARIABLE ='
+`define VARIABLE :='
+`define VARIABLE +='
+`define VARIABLE ?='
 `endef'
-     Define a multi-line, recursively-expanded variable.
-     *Note Sequences::.
+     Define multi-line variables.
+     *Note Multi-Line::.
+
+`undefine VARIABLE'
+     Undefining variables.
+     *Note Undefine Directive::.
 
 `ifdef VARIABLE'
 `ifndef VARIABLE'
@@ -2141,12 +2707,7 @@ Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
      Include another makefile.
      *Note Including Other Makefiles: Include.
 
-`override VARIABLE = VALUE'
-`override VARIABLE := VALUE'
-`override VARIABLE += VALUE'
-`override VARIABLE ?= VALUE'
-`override define VARIABLE'
-`endef'
+`override VARIABLE-ASSIGNMENT'
      Define a variable, overriding any previous definition, even one
      from the command line.
      *Note The `override' Directive: Override Directive.
@@ -2156,15 +2717,17 @@ Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
      *Note Communicating Variables to a Sub-`make': Variables/Recursion.
 
 `export VARIABLE'
-`export VARIABLE = VALUE'
-`export VARIABLE := VALUE'
-`export VARIABLE += VALUE'
-`export VARIABLE ?= VALUE'
+`export VARIABLE-ASSIGNMENT'
 `unexport VARIABLE'
      Tell `make' whether or not to export a particular variable to child
      processes.
      *Note Communicating Variables to a Sub-`make': Variables/Recursion.
 
+`private VARIABLE-ASSIGNMENT'
+     Do not allow this variable assignment to be inherited by
+     prerequisites.
+     *Note Suppressing Inheritance::.
+
 `vpath PATTERN PATH'
      Specify a search path for files matching a `%' pattern.
      *Note The `vpath' Directive: Selective Search.
@@ -2311,6 +2874,25 @@ Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
      concatenate the results.
      *Note The `foreach' Function: Foreach Function.
 
+`$(if CONDITION,THEN-PART[,ELSE-PART])'
+     Evaluate the condition CONDITION; if it's non-empty substitute the
+     expansion of the THEN-PART otherwise substitute the expansion of
+     the ELSE-PART.
+     *Note Functions for Conditionals: Conditional Functions.
+
+`$(or CONDITION1[,CONDITION2[,CONDITION3...]])'
+     Evaluate each condition CONDITIONN one at a time; substitute the
+     first non-empty expansion.  If all expansions are empty, substitute
+     the empty string.
+     *Note Functions for Conditionals: Conditional Functions.
+
+`$(and CONDITION1[,CONDITION2[,CONDITION3...]])'
+     Evaluate each condition CONDITIONN one at a time; if any expansion
+     results in the empty string substitute the empty string.  If all
+     expansions result in a non-empty string, substitute the expansion
+     of the last CONDITION.
+     *Note Functions for Conditionals: Conditional Functions.
+
 `$(call VAR,PARAM,...)'
      Evaluate the variable VAR replacing any references to `$(1)',
      `$(2)' with the first, second, etc. PARAM values.
@@ -2341,12 +2923,12 @@ Variables::, for full information.
 `$?'
      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::).
+     members, only the named member 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
+     prerequisites which are archive members, only the named member is
      used (*note Archives::).  The value of `$^' omits duplicate
      prerequisites, while `$+' retains them and preserves their order.
 
@@ -2395,7 +2977,7 @@ Variables::, for full information.
 `SHELL'
      The name of the system default command interpreter, usually
      `/bin/sh'.  You can set `SHELL' in the makefile to change the
-     shell used to run commands.  *Note Command Execution: Execution.
+     shell used to run recipes.  *Note Recipe Execution: Execution.
      The `SHELL' variable is handled specially when importing from and
      exporting to the environment.  *Note Choosing the Shell::.
 
@@ -2406,8 +2988,8 @@ Variables::, for full information.
 
 `MAKE'
      The name with which `make' was invoked.  Using this variable in
-     commands has special meaning.  *Note How the `MAKE' Variable
-     Works: MAKE Variable.
+     recipes has special meaning.  *Note How the `MAKE' Variable Works:
+     MAKE Variable.
 
 `MAKELEVEL'
      The number of levels of recursion (sub-`make's).
@@ -2418,7 +3000,7 @@ Variables::, for full information.
      a makefile to set flags.
      *Note Communicating Options to a Sub-`make': Options/Recursion.
 
-     It is _never_ appropriate to use `MAKEFLAGS' directly on a command
+     It is _never_ appropriate to use `MAKEFLAGS' directly in a recipe
      line: its contents may not be quoted correctly for use in the
      shell.  Always allow recursive `make''s to obtain these values
      through the environment from its parent.
@@ -2452,8 +3034,8 @@ Here is a list of the more common errors you might see generated by
 `make', and some information about what they mean and how to fix them.
 
    Sometimes `make' errors are not fatal, especially in the presence of
-a `-' prefix on a command script line, or the `-k' command line option.
-Errors that are fatal are prefixed with the string `***'.
+a `-' prefix on a recipe line, or the `-k' command line option.  Errors
+that are fatal are prefixed with the string `***'.
 
    Error messages are all either prefixed with the name of the program
 (usually `make'), or, if the error is found in a makefile, the name of
@@ -2464,10 +3046,10 @@ the file and linenumber containing the problem.
 `[FOO] Error NN'
 `[FOO] SIGNAL DESCRIPTION'
      These errors are not really `make' errors at all.  They mean that a
-     program that `make' invoked as part of a command script returned a
-     non-0 error code (`Error NN'), which `make' interprets as failure,
-     or it exited in some other abnormal fashion (with a signal of some
-     type).  *Note Errors in Commands: Errors.
+     program that `make' invoked as part of a recipe returned a non-0
+     error code (`Error NN'), which `make' interprets as failure, or it
+     exited in some other abnormal fashion (with a signal of some
+     type).  *Note Errors in Recipes: Errors.
 
      If no `***' is attached to the message, then the subprocess failed
      but the rule in the makefile was prefixed with the `-' special
@@ -2476,25 +3058,26 @@ the file and linenumber containing the problem.
 `missing separator.  Stop.'
 `missing separator (did you mean TAB instead of 8 spaces?).  Stop.'
      This means that `make' could not understand much of anything about
-     the command line it just read.  GNU `make' looks for various kinds
-     of separators (`:', `=', TAB characters, etc.) to help it decide
-     what kind of commandline it's seeing.  This means it couldn't find
-     a valid one.
+     the makefile line it just read.  GNU `make' looks for various
+     separators (`:', `=', recipe prefix characters, etc.) to indicate
+     what kind of line it's parsing.  This message means it couldn't
+     find a valid one.
 
      One of the most common reasons for this message is that you (or
      perhaps your oh-so-helpful editor, as is the case with many
-     MS-Windows editors) have attempted to indent your command scripts
-     with spaces instead of a TAB character.  In this case, `make' will
+     MS-Windows editors) have attempted to indent your recipe lines
+     with spaces instead of a tab character.  In this case, `make' will
      use the second form of the error above.  Remember that every line
-     in the command script must begin with a TAB character.  Eight
-     spaces do not count.  *Note Rule Syntax::.
+     in the recipe must begin with a tab character (unless you set
+     `.RECIPEPREFIX'; *note Special Variables::).  Eight spaces do not
+     count.  *Note Rule Syntax::.
 
-`commands commence before first target.  Stop.'
-`missing rule before commands.  Stop.'
+`recipe commences before first target.  Stop.'
+`missing rule before recipe.  Stop.'
      This means the first thing in the makefile seems to be part of a
-     command script: it begins with a TAB character and doesn't appear
-     to be a legal `make' command (such as a variable assignment).
-     Command scripts must always be associated with a target.
+     recipe: it begins with a recipe prefix character and doesn't
+     appear to be a legal `make' directive (such as a variable
+     assignment).  Recipes must always be associated with a target.
 
      The second form is generated if the line has a semicolon as the
      first non-whitespace character; `make' interprets this to mean you
@@ -2528,13 +3111,13 @@ the file and linenumber containing the problem.
      A makefile specified on the command line (first form) or included
      (second form) was not found.
 
-`warning: overriding commands for target `XXX''
-`warning: ignoring old commands for target `XXX''
-     GNU `make' allows commands to be specified only once per target
-     (except for double-colon rules).  If you give commands for a target
-     which already has been defined to have commands, this warning is
-     issued and the second set of commands will overwrite the first set.
-     *Note Multiple Rules for One Target: Multiple Rules.
+`warning: overriding recipe for target `XXX''
+`warning: ignoring old recipe for target `XXX''
+     GNU `make' allows only one recipe to be specified per target
+     (except for double-colon rules).  If you give a recipe for a target
+     which already has been defined to have one, this warning is issued
+     and the second recipe will overwrite the first.  *Note Multiple
+     Rules for One Target: Multiple Rules.
 
 `Circular XXX <- YYY dependency dropped.'
      This means that `make' detected a loop in the dependency graph:
@@ -2736,18 +3319,14 @@ distribution kits.
 
      #### End of system configuration section. ####
 
-     SRC1 =  tar.c create.c extract.c buffer.c \
-             getoldopt.c update.c gnu.c mangle.c
-     SRC2 =  version.c list.c names.c diffarch.c \
-             port.c wildmat.c getopt.c
-     SRC3 =  getopt1.c regex.c getdate.y
-     SRCS =  $(SRC1) $(SRC2) $(SRC3)
-     OBJ1 =  tar.o create.o extract.o buffer.o \
-             getoldopt.o update.o gnu.o mangle.o
-     OBJ2 =  version.o list.o names.o diffarch.o \
-             port.o wildmat.o getopt.o
-     OBJ3 =  getopt1.o regex.o getdate.o $(RTAPELIB)
-     OBJS =  $(OBJ1) $(OBJ2) $(OBJ3)
+     SRCS_C  = tar.c create.c extract.c buffer.c   \
+               getoldopt.c update.c gnu.c mangle.c \
+               version.c list.c names.c diffarch.c \
+               port.c wildmat.c getopt.c getopt1.c \
+               regex.c
+     SRCS_Y  = getdate.y
+     SRCS    = $(SRCS_C) $(SRCS_Y)
+     OBJS    = $(SRCS_C:.c=.o) $(SRCS_Y:.y=.o) $(RTAPELIB)
      AUX =   README COPYING ChangeLog Makefile.in  \
              makefile.pc configure configure.in \
              tar.texinfo tar.info* texinfo.tex \
@@ -2759,7 +3338,6 @@ distribution kits.
      .PHONY: all
      all:    tar rmt tar.info
 
-     .PHONY: tar
      tar:    $(OBJS)
              $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
 
@@ -2835,13 +3413,13 @@ distribution kits.
 \1f
 File: make.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Complex Makefile,  Up: Top
 
-Appendix D GNU Free Documentation License
-*****************************************
+C.1 GNU Free Documentation License
+==================================
 
-                      Version 1.2, November 2002
+                     Version 1.3, 3 November 2008
 
-     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
-     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     `http://fsf.org/'
 
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.
@@ -2943,6 +3521,9 @@ Appendix D GNU Free Documentation License
      Page" means the text near the most prominent appearance of the
      work's title, preceding the beginning of the body of the text.
 
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
      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
@@ -3208,12 +3789,29 @@ Appendix D GNU Free Documentation License
   9. TERMINATION
 
      You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided for under this License.  Any other
-     attempt to copy, modify, sublicense or distribute the Document is
-     void, and will automatically terminate your rights under this
-     License.  However, parties who have received copies, or rights,
-     from you under this License will not have their licenses
-     terminated so long as such parties remain in full compliance.
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
 
  10. FUTURE REVISIONS OF THIS LICENSE
 
@@ -3231,10 +3829,44 @@ Appendix D GNU Free Documentation License
      published (not as a draft) by the Free Software Foundation.  If
      the Document does not specify a version number of this License,
      you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
 
-D.1 ADDENDUM: How to use this License for your documents
-========================================================
+
+ADDENDUM: How to use this License for your documents
+====================================================
 
 To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and license
@@ -3242,7 +3874,7 @@ notices just after the title page:
 
        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.2
+       under the terms of the GNU Free Documentation License, Version 1.3
        or any later version published by the Free Software Foundation;
        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
@@ -3273,12 +3905,12 @@ Index of Concepts
 \0\b[index\0\b]
 * Menu:
 
-* # (comments), in commands:             Command Syntax.      (line  27)
-* # (comments), in makefile:             Makefile Contents.   (line  41)
+* # (comments), in makefile:             Makefile Contents.   (line  42)
+* # (comments), in recipes:              Recipe Syntax.       (line  29)
 * #include:                              Automatic Prerequisites.
                                                               (line  16)
 * $, in function call:                   Syntax of Functions. (line   6)
-* $, in rules:                           Rule Syntax.         (line  32)
+* $, in rules:                           Rule Syntax.         (line  34)
 * $, in variable name:                   Computed Names.      (line   6)
 * $, in variable reference:              Reference.           (line   6)
 * %, in pattern rules:                   Pattern Intro.       (line   9)
@@ -3289,100 +3921,101 @@ Index of Concepts
 * %, 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.
-                                                              (line  58)
-* +, and commands:                       MAKE Variable.       (line  18)
-* +, and define:                         Sequences.           (line  50)
+* +, and define:                         Canned Recipes.      (line  49)
+* +, and recipe execution:               Instead of Execution.
+                                                              (line  60)
+* +, and recipes:                        MAKE Variable.       (line  18)
 * +=:                                    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)
+* - (in recipes):                        Errors.              (line  19)
+* -, and define:                         Canned Recipes.      (line  49)
 * --always-make:                         Options Summary.     (line  15)
-* --assume-new <1>:                      Options Summary.     (line 242)
+* --assume-new <1>:                      Options Summary.     (line 248)
 * --assume-new:                          Instead of Execution.
-                                                              (line  33)
+                                                              (line  35)
 * --assume-new, and recursion:           Options/Recursion.   (line  22)
-* --assume-old <1>:                      Options Summary.     (line 147)
+* --assume-old <1>:                      Options Summary.     (line 154)
 * --assume-old:                          Avoiding Compilation.
                                                               (line   6)
 * --assume-old, and recursion:           Options/Recursion.   (line  22)
-* --check-symlink-times:                 Options Summary.     (line 130)
+* --check-symlink-times:                 Options Summary.     (line 136)
 * --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 <1>:                         Options Summary.     (line 146)
 * --dry-run <2>:                         Instead of Execution.
                                                               (line  14)
 * --dry-run:                             Echoing.             (line  18)
 * --environment-overrides:               Options Summary.     (line  78)
-* --file <1>:                            Options Summary.     (line  84)
+* --eval:                                Options Summary.     (line  83)
+* --file <1>:                            Options Summary.     (line  90)
 * --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)
+* --help:                                Options Summary.     (line  96)
+* --ignore-errors <1>:                   Options Summary.     (line 100)
 * --ignore-errors:                       Errors.              (line  30)
-* --include-dir <1>:                     Options Summary.     (line  99)
-* --include-dir:                         Include.             (line  52)
-* --jobs <1>:                            Options Summary.     (line 106)
+* --include-dir <1>:                     Options Summary.     (line 105)
+* --include-dir:                         Include.             (line  53)
+* --jobs <1>:                            Options Summary.     (line 112)
 * --jobs:                                Parallel.            (line   6)
 * --jobs, and recursion:                 Options/Recursion.   (line  25)
-* --just-print <1>:                      Options Summary.     (line 139)
+* --just-print <1>:                      Options Summary.     (line 145)
 * --just-print <2>:                      Instead of Execution.
                                                               (line  14)
 * --just-print:                          Echoing.             (line  18)
-* --keep-going <1>:                      Options Summary.     (line 115)
+* --keep-going <1>:                      Options Summary.     (line 121)
 * --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)
+* --load-average <1>:                    Options Summary.     (line 128)
+* --load-average:                        Parallel.            (line  58)
+* --makefile <1>:                        Options Summary.     (line  91)
 * --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)
+* --max-load <1>:                        Options Summary.     (line 129)
+* --max-load:                            Parallel.            (line  58)
+* --new-file <1>:                        Options Summary.     (line 247)
 * --new-file:                            Instead of Execution.
-                                                              (line  33)
+                                                              (line  35)
 * --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-builtin-rules:                    Options Summary.     (line 182)
+* --no-builtin-variables:                Options Summary.     (line 195)
+* --no-keep-going:                       Options Summary.     (line 210)
+* --no-print-directory <1>:              Options Summary.     (line 239)
 * --no-print-directory:                  -w Option.           (line  20)
-* --old-file <1>:                        Options Summary.     (line 146)
+* --old-file <1>:                        Options Summary.     (line 153)
 * --old-file:                            Avoiding Compilation.
                                                               (line   6)
 * --old-file, and recursion:             Options/Recursion.   (line  22)
-* --print-data-base:                     Options Summary.     (line 155)
-* --print-directory:                     Options Summary.     (line 225)
+* --print-data-base:                     Options Summary.     (line 162)
+* --print-directory:                     Options Summary.     (line 231)
 * --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 <1>:                        Options Summary.     (line 174)
 * --question:                            Instead of Execution.
-                                                              (line  25)
-* --quiet <1>:                           Options Summary.     (line 198)
+                                                              (line  27)
+* --quiet <1>:                           Options Summary.     (line 205)
 * --quiet:                               Echoing.             (line  24)
-* --recon <1>:                           Options Summary.     (line 141)
+* --recon <1>:                           Options Summary.     (line 147)
 * --recon <2>:                           Instead of Execution.
                                                               (line  14)
 * --recon:                               Echoing.             (line  18)
-* --silent <1>:                          Options Summary.     (line 197)
+* --silent <1>:                          Options Summary.     (line 204)
 * --silent:                              Echoing.             (line  24)
-* --stop:                                Options Summary.     (line 204)
-* --touch <1>:                           Options Summary.     (line 212)
+* --stop:                                Options Summary.     (line 211)
+* --touch <1>:                           Options Summary.     (line 219)
 * --touch:                               Instead of Execution.
-                                                              (line  19)
+                                                              (line  21)
 * --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)
+* --version:                             Options Summary.     (line 226)
+* --warn-undefined-variables:            Options Summary.     (line 257)
+* --what-if <1>:                         Options Summary.     (line 246)
 * --what-if:                             Instead of Execution.
-                                                              (line  33)
+                                                              (line  35)
 * -B:                                    Options Summary.     (line  14)
 * -b:                                    Options Summary.     (line   9)
 * -C <1>:                                Options Summary.     (line  25)
@@ -3393,57 +4026,57 @@ Index of Concepts
 * -e:                                    Options Summary.     (line  77)
 * -e (shell flag):                       Automatic Prerequisites.
                                                               (line  66)
-* -f <1>:                                Options Summary.     (line  83)
+* -f <1>:                                Options Summary.     (line  89)
 * -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)
+* -h:                                    Options Summary.     (line  95)
+* -I:                                    Options Summary.     (line 104)
+* -i <1>:                                Options Summary.     (line  99)
 * -i:                                    Errors.              (line  30)
-* -I:                                    Include.             (line  52)
-* -j <1>:                                Options Summary.     (line 105)
+* -I:                                    Include.             (line  53)
+* -j <1>:                                Options Summary.     (line 111)
 * -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 <1>:                                Options Summary.     (line 120)
 * -k <2>:                                Testing.             (line  16)
 * -k:                                    Errors.              (line  47)
-* -L:                                    Options Summary.     (line 129)
-* -l:                                    Options Summary.     (line 121)
+* -L:                                    Options Summary.     (line 135)
+* -l:                                    Options Summary.     (line 127)
 * -l (library search):                   Libraries/Search.    (line   6)
-* -l (load average):                     Parallel.            (line  57)
+* -l (load average):                     Parallel.            (line  58)
 * -m:                                    Options Summary.     (line  10)
 * -M (to compiler):                      Automatic Prerequisites.
                                                               (line  18)
 * -MM (to GNU compiler):                 Automatic Prerequisites.
                                                               (line  68)
-* -n <1>:                                Options Summary.     (line 138)
+* -n <1>:                                Options Summary.     (line 144)
 * -n <2>:                                Instead of Execution.
                                                               (line  14)
 * -n:                                    Echoing.             (line  18)
-* -o <1>:                                Options Summary.     (line 145)
+* -o <1>:                                Options Summary.     (line 152)
 * -o:                                    Avoiding Compilation.
                                                               (line   6)
 * -o, and recursion:                     Options/Recursion.   (line  22)
-* -p:                                    Options Summary.     (line 154)
-* -q <1>:                                Options Summary.     (line 166)
+* -p:                                    Options Summary.     (line 161)
+* -q <1>:                                Options Summary.     (line 173)
 * -q:                                    Instead of Execution.
-                                                              (line  25)
-* -R:                                    Options Summary.     (line 187)
-* -r:                                    Options Summary.     (line 174)
-* -S:                                    Options Summary.     (line 202)
-* -s <1>:                                Options Summary.     (line 196)
+                                                              (line  27)
+* -R:                                    Options Summary.     (line 194)
+* -r:                                    Options Summary.     (line 181)
+* -S:                                    Options Summary.     (line 209)
+* -s <1>:                                Options Summary.     (line 203)
 * -s:                                    Echoing.             (line  24)
-* -t <1>:                                Options Summary.     (line 211)
+* -t <1>:                                Options Summary.     (line 218)
 * -t:                                    Instead of Execution.
-                                                              (line  19)
+                                                              (line  21)
 * -t, and recursion:                     MAKE Variable.       (line  34)
-* -v:                                    Options Summary.     (line 219)
-* -W:                                    Options Summary.     (line 239)
-* -w:                                    Options Summary.     (line 224)
+* -v:                                    Options Summary.     (line 225)
+* -W:                                    Options Summary.     (line 245)
+* -w:                                    Options Summary.     (line 230)
 * -W:                                    Instead of Execution.
-                                                              (line  33)
+                                                              (line  35)
 * -w, and -C:                            -w Option.           (line  20)
 * -w, and recursion:                     -w Option.           (line  20)
 * -W, and recursion:                     Options/Recursion.   (line  22)
@@ -3467,12 +4100,14 @@ Index of Concepts
 * .ln:                                   Catalogue of Rules.  (line 146)
 * .mod:                                  Catalogue of Rules.  (line  74)
 * .o:                                    Catalogue of Rules.  (line  35)
+* .ONESHELL, use of:                     One Shell.           (line   6)
 * .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)
+* .SHELLFLAGS, value of:                 Choosing the Shell.  (line   6)
 * .sym:                                  Catalogue of Rules.  (line  74)
 * .tex:                                  Catalogue of Rules.  (line 151)
 * .texi:                                 Catalogue of Rules.  (line 158)
@@ -3491,11 +4126,11 @@ Index of Concepts
 * ?= <1>:                                Setting.             (line   6)
 * ?=:                                    Flavors.             (line 129)
 * ?=, expansion:                         Reading Makefiles.   (line  33)
-* @ (in commands):                       Echoing.             (line   6)
-* @, and define:                         Sequences.           (line  50)
+* @ (in recipes):                        Echoing.             (line   6)
+* @, and define:                         Canned Recipes.      (line  49)
 * [...] (wildcard characters):           Wildcards.           (line   6)
 * \ (backslash), for continuation lines: Simple Makefile.     (line  40)
-* \ (backslash), in commands:            Splitting Lines.     (line   6)
+* \ (backslash), in recipes:             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)
@@ -3504,7 +4139,7 @@ Index of Concepts
 * 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)
+* ar:                                    Implicit Variables.  (line  40)
 * archive:                               Archives.            (line   6)
 * archive member targets:                Archive Members.     (line   6)
 * archive symbol directory updating:     Archive Symbols.     (line   6)
@@ -3514,17 +4149,17 @@ Index of Concepts
                                                               (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 <1>:                                Implicit Variables.  (line  43)
 * as:                                    Catalogue of Rules.  (line  79)
 * assembly, rule to compile:             Catalogue of Rules.  (line  79)
 * automatic generation of prerequisites <1>: Automatic Prerequisites.
                                                               (line   6)
-* automatic generation of prerequisites: Include.             (line  50)
+* automatic generation of prerequisites: Include.             (line  51)
 * 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 (\), in recipes:             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)
@@ -3533,51 +4168,34 @@ Index of Concepts
 * basename:                              File Name Functions. (line  57)
 * binary packages:                       Install Command Categories.
                                                               (line  80)
-* broken pipe:                           Parallel.            (line  30)
+* broken pipe:                           Parallel.            (line  31)
 * 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)
+* canned recipes:                        Canned Recipes.      (line   6)
+* cc <1>:                                Implicit Variables.  (line  46)
 * cc:                                    Catalogue of Rules.  (line  35)
 * cd (shell command) <1>:                MAKE Variable.       (line  16)
-* cd (shell command):                    Execution.           (line  10)
+* cd (shell command):                    Execution.           (line  12)
 * 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)
+* clean target:                          Simple Makefile.     (line  84)
 * cleaning up:                           Cleanup.             (line   6)
 * clobber (standard target):             Goals.               (line  86)
-* co <1>:                                Implicit Variables.  (line  56)
+* co <1>:                                Implicit Variables.  (line  66)
 * co:                                    Catalogue of Rules.  (line 164)
 * combining rules by prerequisite:       Combine By Prerequisite.
                                                               (line   6)
+* command expansion:                     Shell Function.      (line   6)
 * command line variable definitions, and recursion: Options/Recursion.
                                                               (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.
-                                                              (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)
+* commands, sequences of:                Canned Recipes.      (line   6)
+* comments, in makefile:                 Makefile Contents.   (line  42)
+* comments, in recipes:                  Recipe Syntax.       (line  29)
 * compatibility:                         Features.            (line   6)
 * compatibility in exporting:            Variables/Recursion. (line 105)
 * compilation, testing:                  Testing.             (line   6)
@@ -3591,22 +4209,23 @@ Index of Concepts
                                                               (line   6)
 * conventions for makefiles:             Makefile Conventions.
                                                               (line   6)
-* ctangle <1>:                           Implicit Variables.  (line 107)
+* ctangle <1>:                           Implicit Variables.  (line 103)
 * ctangle:                               Catalogue of Rules.  (line 151)
-* cweave <1>:                            Implicit Variables.  (line 101)
+* cweave <1>:                            Implicit Variables.  (line  97)
 * 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)
+* data base of make rules:               Options Summary.     (line 162)
+* deducing recipes (implicit rules):     make Deduces.        (line   6)
+* default directories for included makefiles: Include.        (line  53)
 * 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)
+* defining variables verbatim:           Multi-Line.          (line   6)
 * deletion of target files <1>:          Interrupts.          (line   6)
 * deletion of target files:              Errors.              (line  64)
 * directive:                             Makefile Contents.   (line  28)
+* directories, creating installation:    Directory Variables. (line  20)
 * directories, printing them:            -w Option.           (line   6)
 * directories, updating archive symbol:  Archive Symbols.     (line   6)
 * directory part:                        File Name Functions. (line  17)
@@ -3615,46 +4234,45 @@ Index of Concepts
                                                               (line   6)
 * directory search (VPATH), and link libraries: Libraries/Search.
                                                               (line   6)
-* directory search (VPATH), and shell commands: Commands/Search.
-                                                              (line   6)
+* directory search (VPATH), and recipes: Recipes/Search.      (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 rules:             Rule Syntax.         (line  34)
 * 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)
+* DOS, choosing a shell in:              Choosing the Shell.  (line  38)
 * 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)
+* echoing of recipes:                    Echoing.             (line   6)
 * editor:                                Introduction.        (line  22)
 * Emacs (M-x compile):                   Errors.              (line  62)
-* empty commands:                        Empty Commands.      (line   6)
+* empty recipes:                         Empty Recipes.       (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)
+* environment, SHELL in:                 Choosing the Shell.  (line  12)
 * error, stopping on:                    Make Control Functions.
                                                               (line  11)
-* errors (in commands):                  Errors.              (line   6)
+* errors (in recipes):                   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.
                                                               (line   6)
-* execution, of commands:                Execution.           (line   6)
+* execution, of recipes:                 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 rule, expansion:              Reading Makefiles.   (line  77)
 * explicit rules, secondary expansion of: Secondary Expansion.
                                                               (line 106)
 * exporting variables:                   Variables/Recursion. (line   6)
-* f77 <1>:                               Implicit Variables.  (line  64)
+* f77 <1>:                               Implicit Variables.  (line  57)
 * f77:                                   Catalogue of Rules.  (line  49)
 * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line   6)
@@ -3673,7 +4291,7 @@ Index of Concepts
 * 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)
+                                                              (line  35)
 * files, assuming old:                   Avoiding Compilation.
                                                               (line   6)
 * files, avoiding recompilation of:      Avoiding Compilation.
@@ -3696,13 +4314,13 @@ Index of Concepts
 * 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++ <1>:                               Implicit Variables.  (line  49)
 * g++:                                   Catalogue of Rules.  (line  39)
 * gcc:                                   Catalogue of Rules.  (line  35)
 * generating prerequisites automatically <1>: Automatic Prerequisites.
                                                               (line   6)
-* generating prerequisites automatically: Include.            (line  50)
-* get <1>:                               Implicit Variables.  (line  67)
+* generating prerequisites automatically: Include.            (line  51)
+* get <1>:                               Implicit Variables.  (line  69)
 * get:                                   Catalogue of Rules.  (line 173)
 * globbing (wildcards):                  Wildcards.           (line   6)
 * goal:                                  How Make Works.      (line  11)
@@ -3711,15 +4329,15 @@ Index of Concepts
 * 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)
+* ifdef, expansion:                      Reading Makefiles.   (line  67)
+* ifeq, expansion:                       Reading Makefiles.   (line  67)
+* ifndef, expansion:                     Reading Makefiles.   (line  67)
+* ifneq, expansion:                      Reading Makefiles.   (line  67)
 * 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, expansion:              Reading Makefiles.   (line  77)
 * 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)
@@ -3727,45 +4345,48 @@ Index of Concepts
                                                               (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.
-                                                              (line   6)
+* included makefiles, default directories: Include.           (line  53)
+* including (MAKEFILE_LIST variable):    Special Variables.   (line   8)
 * 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)
+* inheritance, suppressing:              Suppressing Inheritance.
+                                                              (line   6)
 * install (standard target):             Goals.               (line  92)
+* installation directories, creating:    Directory Variables. (line  20)
+* installations, staged:                 DESTDIR.             (line   6)
 * 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)
+* jobs, limiting based on load:          Parallel.            (line  58)
 * 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 <1>:                               Implicit Variables.  (line  73)
 * 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.
                                                               (line   6)
-* limiting jobs based on load:           Parallel.            (line  57)
+* limiting jobs based on load:           Parallel.            (line  58)
 * 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 <1>:                              Implicit Variables.  (line  80)
 * 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)
+* load average:                          Parallel.            (line  58)
 * 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 <1>:                               Implicit Variables.  (line  60)
 * m2c:                                   Catalogue of Rules.  (line  74)
 * macro:                                 Using Variables.     (line  10)
 * make depend:                           Automatic Prerequisites.
@@ -3786,10 +4407,9 @@ Index of Concepts
 * 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.
-                                                              (line   6)
+* makefiles, and MAKEFILE_LIST variable: Special Variables.   (line   8)
 * makefiles, and special variables:      Special Variables.   (line   6)
-* makeinfo <1>:                          Implicit Variables.  (line  88)
+* makeinfo <1>:                          Implicit Variables.  (line  84)
 * makeinfo:                              Catalogue of Rules.  (line 158)
 * match-anything rule:                   Match-Anything Rules.
                                                               (line   6)
@@ -3800,15 +4420,16 @@ Index of Concepts
 * modified variable reference:           Substitution Refs.   (line   6)
 * Modula-2, rule to compile:             Catalogue of Rules.  (line  74)
 * mostlyclean (standard target):         Goals.               (line  78)
+* multi-line variable definition:        Multi-Line.          (line   6)
 * 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)
+* multiple targets, in pattern rule:     Pattern Intro.       (line  53)
 * 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)
+* newline, quoting, in recipes:          Splitting Lines.     (line   6)
 * nondirectory part:                     File Name Functions. (line  27)
 * normal prerequisites:                  Prerequisite Types.  (line   6)
 * OBJ:                                   Variables Simplify.  (line  20)
@@ -3822,7 +4443,7 @@ Index of Concepts
 * 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 of pattern rules:                Pattern Match.       (line  30)
 * order-only prerequisites:              Prerequisite Types.  (line   6)
 * origin of variable:                    Origin Function.     (line   6)
 * overriding makefiles:                  Overriding Makefiles.
@@ -3831,40 +4452,43 @@ Index of Concepts
 * 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)
+* parallel execution, overriding:        Special Targets.     (line 130)
 * 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 rule, expansion:               Reading Makefiles.   (line  77)
+* pattern rules, order of:               Pattern Match.       (line  30)
 * 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 <1>:                                Implicit Variables.  (line  63)
 * pc:                                    Catalogue of Rules.  (line  45)
 * phony targets:                         Phony Targets.       (line   6)
+* phony targets and recipe execution:    Instead of Execution.
+                                                              (line  68)
 * pitfalls of wildcards:                 Wildcard Pitfall.    (line   6)
 * portability:                           Features.            (line   6)
 * POSIX:                                 Overview.            (line  13)
+* POSIX-conforming mode, setting:        Special Targets.     (line 143)
 * POSIX.2:                               Options/Recursion.   (line  60)
 * post-installation commands:            Install Command Categories.
                                                               (line   6)
 * pre-installation commands:             Install Command Categories.
                                                               (line   6)
 * precious targets:                      Special Targets.     (line  29)
-* predefined rules and variables, printing: Options Summary.  (line 155)
+* predefined rules and variables, printing: Options Summary.  (line 162)
 * 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)
+* prerequisite, expansion:               Reading Makefiles.   (line  77)
+* prerequisites:                         Rule Syntax.         (line  48)
 * prerequisites, and automatic variables: Automatic Variables.
                                                               (line  17)
 * prerequisites, automatic generation <1>: Automatic Prerequisites.
                                                               (line   6)
-* prerequisites, automatic generation:   Include.             (line  50)
+* prerequisites, automatic generation:   Include.             (line  51)
 * prerequisites, introduction to:        Rule Introduction.   (line   8)
 * prerequisites, list of all:            Automatic Variables. (line  61)
 * prerequisites, list of changed:        Automatic Variables. (line  51)
@@ -3881,25 +4505,49 @@ Index of Concepts
 * printing directories:                  -w Option.           (line   6)
 * printing messages:                     Make Control Functions.
                                                               (line  43)
-* printing of commands:                  Echoing.             (line   6)
+* printing of recipes:                   Echoing.             (line   6)
 * printing user warnings:                Make Control Functions.
                                                               (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.
-                                                              (line  25)
+                                                              (line  27)
 * 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)
+* quoting newline, in recipes:           Splitting Lines.     (line   6)
 * 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)
+* recipe:                                Simple Makefile.     (line  73)
+* recipe execution, single invocation:   Special Targets.     (line 137)
+* recipe lines, single shell:            One Shell.           (line   6)
+* recipe syntax:                         Recipe Syntax.       (line   6)
+* recipe, execution:                     Execution.           (line   6)
+* recipes <1>:                           Recipes.             (line   6)
+* recipes:                               Rule Syntax.         (line  26)
+* recipes setting shell variables:       Execution.           (line  12)
+* recipes, and directory search:         Recipes/Search.      (line   6)
+* recipes, backslash (\) in:             Splitting Lines.     (line   6)
+* recipes, canned:                       Canned Recipes.      (line   6)
+* recipes, comments in:                  Recipe Syntax.       (line  29)
+* recipes, echoing:                      Echoing.             (line   6)
+* recipes, empty:                        Empty Recipes.       (line   6)
+* recipes, errors in:                    Errors.              (line   6)
+* recipes, execution in parallel:        Parallel.            (line   6)
+* recipes, how to write:                 Recipes.             (line   6)
+* recipes, instead of executing:         Instead of Execution.
+                                                              (line   6)
+* recipes, introduction to:              Rule Introduction.   (line   8)
+* recipes, quoting newlines in:          Splitting Lines.     (line   6)
+* recipes, splitting:                    Splitting Lines.     (line   6)
+* recipes, using variables in:           Variables in Recipes.
+                                                              (line   6)
 * recompilation:                         Introduction.        (line  22)
 * recompilation, avoiding:               Avoiding Compilation.
                                                               (line   6)
@@ -3916,7 +4564,7 @@ Index of Concepts
                                                               (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 MAKEFILES variable:     MAKEFILES Variable.  (line  15)
 * recursion, and options:                Options/Recursion.   (line   6)
 * recursion, and printing directories:   -w Option.           (line   6)
 * recursion, and variables:              Variables/Recursion. (line   6)
@@ -3931,16 +4579,15 @@ Index of Concepts
 * 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 targets on failure:           Special Targets.     (line  64)
 * removing, to clean up:                 Cleanup.             (line   6)
 * reporting bugs:                        Bugs.                (line   6)
-* rm:                                    Implicit Variables.  (line 110)
+* rm:                                    Implicit Variables.  (line 106)
 * 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)
+* rm (shell command):                    Simple Makefile.     (line  84)
+* rule prerequisites:                    Rule Syntax.         (line  48)
 * rule syntax:                           Rule Syntax.         (line   6)
 * rule targets:                          Rule Syntax.         (line  18)
 * rule, double-colon (::):               Double-Colon.        (line   6)
@@ -3956,13 +4603,13 @@ Index of Concepts
 * 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, no recipe 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.
                                                               (line   6)
 * rule, with multiple targets:           Multiple Targets.    (line   6)
-* rules, and $:                          Rule Syntax.         (line  32)
+* rules, and $:                          Rule Syntax.         (line  34)
 * 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.
@@ -3986,25 +4633,22 @@ Index of Concepts
                                                               (line  73)
 * selecting a word:                      Text Functions.      (line 159)
 * selecting word lists:                  Text Functions.      (line 168)
-* sequences of commands:                 Sequences.           (line   6)
+* sequences of commands:                 Canned Recipes.      (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 variables, setting in recipes:   Execution.           (line  12)
 * 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, in DOS and Windows:             Choosing the Shell.  (line  38)
+* SHELL, MS-DOS specifics:               Choosing the Shell.  (line  44)
 * SHELL, value of:                       Choosing the Shell.  (line   6)
 * signal:                                Interrupts.          (line   6)
 * silent operation:                      Echoing.             (line   6)
@@ -4018,8 +4662,9 @@ Index of Concepts
 * 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)
+* splitting recipes:                     Splitting Lines.     (line   6)
+* staged installs:                       DESTDIR.             (line   6)
+* standard input:                        Parallel.            (line  31)
 * standards conformance:                 Overview.            (line  13)
 * standards for makefiles:               Makefile Conventions.
                                                               (line   6)
@@ -4031,6 +4676,7 @@ Index of Concepts
                                                               (line 138)
 * stem <1>:                              Pattern Match.       (line   6)
 * stem:                                  Static Usage.        (line  17)
+* stem, shortest:                        Pattern Match.       (line  38)
 * stem, variable for:                    Automatic Variables. (line  77)
 * stopping make:                         Make Control Functions.
                                                               (line  11)
@@ -4045,14 +4691,16 @@ Index of Concepts
 * suffix, adding:                        File Name Functions. (line  68)
 * suffix, function to find:              File Name Functions. (line  43)
 * suffix, substituting in variables:     Substitution Refs.   (line   6)
+* suppressing inheritance:               Suppressing Inheritance.
+                                                              (line   6)
 * switches:                              Options Summary.     (line   6)
 * symbol directories, updating archive:  Archive Symbols.     (line   6)
-* syntax of commands:                    Command Syntax.      (line   6)
+* syntax of recipe:                      Recipe 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 <1>:                            Implicit Variables.  (line 100)
 * tangle:                                Catalogue of Rules.  (line 151)
 * tar (standard target):                 Goals.               (line 100)
 * target:                                Rules.               (line   6)
@@ -4060,11 +4708,11 @@ Index of Concepts
 * 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, expansion:                     Reading Makefiles.   (line  77)
+* target, multiple in pattern rule:      Pattern Intro.       (line  53)
 * target, multiple rules for one:        Multiple Rules.      (line   6)
 * target, touching:                      Instead of Execution.
-                                                              (line  19)
+                                                              (line  21)
 * target-specific variables:             Target-specific.     (line   6)
 * targets:                               Rule Syntax.         (line  18)
 * targets without a file:                Phony Targets.       (line   6)
@@ -4078,20 +4726,21 @@ Index of Concepts
                                                               (line   6)
 * test (standard target):                Goals.               (line 115)
 * testing compilation:                   Testing.             (line   6)
-* tex <1>:                               Implicit Variables.  (line  91)
+* tex <1>:                               Implicit Variables.  (line  87)
 * tex:                                   Catalogue of Rules.  (line 151)
 * TeX, rule to run:                      Catalogue of Rules.  (line 151)
-* texi2dvi <1>:                          Implicit Variables.  (line  95)
+* texi2dvi <1>:                          Implicit Variables.  (line  91)
 * 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.
-                                                              (line  19)
+                                                              (line  21)
 * traditional directory search (GPATH):  Search Algorithm.    (line  42)
 * types of prerequisites:                Prerequisite Types.  (line   6)
-* undefined variables, warning message:  Options Summary.     (line 251)
+* undefined variables, warning message:  Options Summary.     (line 257)
+* undefining variable:                   Undefine Directive.  (line   6)
 * updating archive symbol directories:   Archive Symbols.     (line   6)
 * updating makefiles:                    Remaking Makefiles.  (line   6)
 * user defined functions:                Call Function.       (line   6)
@@ -4099,7 +4748,7 @@ Index of Concepts
 * 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.
+* variable references in recipes:        Variables in Recipes.
                                                               (line   6)
 * variables:                             Variables Simplify.  (line   6)
 * variables, $ in name:                  Computed Names.      (line   6)
@@ -4110,7 +4759,7 @@ Index of Concepts
 * 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, defining verbatim:          Multi-Line.          (line   6)
 * variables, environment <1>:            Environment.         (line   6)
 * variables, environment:                Variables/Recursion. (line   6)
 * variables, exporting:                  Variables/Recursion. (line   6)
@@ -4120,6 +4769,7 @@ Index of Concepts
 * variables, how to reference:           Reference.           (line   6)
 * variables, loops in expansion:         Flavors.             (line  44)
 * variables, modified reference:         Substitution Refs.   (line   6)
+* variables, multi-line:                 Multi-Line.          (line   6)
 * variables, nested references:          Computed Names.      (line   6)
 * variables, origin of:                  Origin Function.     (line   6)
 * variables, overriding:                 Override Directive.  (line   6)
@@ -4133,19 +4783,19 @@ Index of Concepts
 * 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)
+* variables, warning for undefined:      Options Summary.     (line 257)
 * varying prerequisites:                 Static Pattern.      (line   6)
-* verbatim variable definition:          Defining.            (line   6)
+* verbatim variable definition:          Multi-Line.          (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.
                                                               (line  35)
-* weave <1>:                             Implicit Variables.  (line  98)
+* weave <1>:                             Implicit Variables.  (line  94)
 * weave:                                 Catalogue of Rules.  (line 151)
 * Web, rule to run:                      Catalogue of Rules.  (line 151)
 * what if:                               Instead of Execution.
-                                                              (line  33)
+                                                              (line  35)
 * whitespace, in variable values:        Flavors.             (line 103)
 * whitespace, stripping:                 Text Functions.      (line  80)
 * wildcard:                              Wildcards.           (line   6)
@@ -4155,7 +4805,7 @@ Index of Concepts
 * wildcard, in include:                  Include.             (line  13)
 * wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall.
                                                               (line  31)
-* Windows, choosing a shell in:          Choosing the Shell.  (line  36)
+* Windows, choosing a shell in:          Choosing the Shell.  (line  38)
 * word, selecting a:                     Text Functions.      (line 159)
 * words, extracting first:               Text Functions.      (line 184)
 * words, extracting last:                Text Functions.      (line 197)
@@ -4166,11 +4816,11 @@ Index of Concepts
 * 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 recipes:                       Recipes.             (line   6)
 * writing rules:                         Rules.               (line   6)
-* yacc <1>:                              Implicit Variables.  (line  75)
+* yacc <1>:                              Implicit Variables.  (line  77)
 * yacc <2>:                              Catalogue of Rules.  (line 120)
-* yacc:                                  Sequences.           (line  18)
+* yacc:                                  Canned Recipes.      (line  18)
 * Yacc, rule to run:                     Catalogue of Rules.  (line 120)
 * ~ (tilde):                             Wildcards.           (line  11)
 
@@ -4218,37 +4868,43 @@ Index of Functions, Variables, & Directives
 * +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)
+* .DEFAULT, and empty recipes:           Empty Recipes.       (line  16)
+* .DEFAULT_GOAL (define default goal):   Special Variables.   (line  34)
 * .DELETE_ON_ERROR <1>:                  Errors.              (line  64)
-* .DELETE_ON_ERROR:                      Special Targets.     (line  67)
+* .DELETE_ON_ERROR:                      Special Targets.     (line  63)
 * .EXPORT_ALL_VARIABLES <1>:             Variables/Recursion. (line  99)
-* .EXPORT_ALL_VARIABLES:                 Special Targets.     (line 129)
-* .FEATURES (list of supported features): Special Variables.  (line  65)
+* .EXPORT_ALL_VARIABLES:                 Special Targets.     (line 124)
+* .FEATURES (list of supported features): Special Variables.  (line 102)
 * .IGNORE <1>:                           Errors.              (line  30)
-* .IGNORE:                               Special Targets.     (line  74)
+* .IGNORE:                               Special Targets.     (line  69)
 * .INCLUDE_DIRS (list of include directories): Special Variables.
-                                                              (line  98)
+                                                              (line 135)
 * .INTERMEDIATE:                         Special Targets.     (line  43)
 * .LIBPATTERNS:                          Libraries/Search.    (line   6)
-* .LOW_RESOLUTION_TIME:                  Special Targets.     (line  86)
-* .NOTPARALLEL:                          Special Targets.     (line 134)
+* .LOW_RESOLUTION_TIME:                  Special Targets.     (line  81)
+* .NOTPARALLEL:                          Special Targets.     (line 129)
+* .ONESHELL <1>:                         One Shell.           (line   6)
+* .ONESHELL:                             Special Targets.     (line 136)
 * .PHONY <1>:                            Special Targets.     (line   8)
 * .PHONY:                                Phony Targets.       (line  22)
-* .POSIX:                                Options/Recursion.   (line  60)
+* .POSIX <1>:                            Options/Recursion.   (line  60)
+* .POSIX:                                Special Targets.     (line 142)
 * .PRECIOUS <1>:                         Interrupts.          (line  22)
 * .PRECIOUS:                             Special Targets.     (line  28)
+* .RECIPEPREFIX (change the recipe prefix character): Special Variables.
+                                                              (line  80)
 * .SECONDARY:                            Special Targets.     (line  48)
 * .SECONDEXPANSION <1>:                  Special Targets.     (line  57)
 * .SECONDEXPANSION:                      Secondary Expansion. (line   6)
+* .SHELLFLAGS:                           Choosing the Shell.  (line   6)
 * .SILENT <1>:                           Echoing.             (line  24)
-* .SILENT:                               Special Targets.     (line 116)
+* .SILENT:                               Special Targets.     (line 111)
 * .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)
+* .VARIABLES (list of variables):        Special Variables.   (line  93)
+* /usr/gnu/include:                      Include.             (line  53)
+* /usr/include:                          Include.             (line  53)
+* /usr/local/include:                    Include.             (line  53)
 * < (automatic variable):                Automatic Variables. (line  43)
 * <D (automatic variable):               Automatic Variables. (line 137)
 * <F (automatic variable):               Automatic Variables. (line 138)
@@ -4266,45 +4922,46 @@ Index of Functions, Variables, & Directives
 * 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)
+* AR:                                    Implicit Variables.  (line  40)
+* ARFLAGS:                               Implicit Variables.  (line 113)
+* AS:                                    Implicit Variables.  (line  43)
+* ASFLAGS:                               Implicit Variables.  (line 116)
 * basename:                              File Name Functions. (line  57)
-* bindir:                                Directory Variables. (line  53)
+* bindir:                                Directory Variables. (line  57)
 * 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)
+* CC:                                    Implicit Variables.  (line  46)
+* CFLAGS:                                Implicit Variables.  (line 120)
+* CO:                                    Implicit Variables.  (line  66)
+* COFLAGS:                               Implicit Variables.  (line 126)
+* COMSPEC:                               Choosing the Shell.  (line  41)
+* CPP:                                   Implicit Variables.  (line  52)
+* CPPFLAGS:                              Implicit Variables.  (line 129)
+* CTANGLE:                               Implicit Variables.  (line 103)
 * CURDIR:                                Recursion.           (line  28)
-* CWEAVE:                                Implicit Variables.  (line 101)
-* CXX:                                   Implicit Variables.  (line  53)
-* CXXFLAGS:                              Implicit Variables.  (line 127)
-* define:                                Defining.            (line   6)
+* CWEAVE:                                Implicit Variables.  (line  97)
+* CXX:                                   Implicit Variables.  (line  49)
+* CXXFLAGS:                              Implicit Variables.  (line 123)
+* define:                                Multi-Line.          (line   6)
+* DESTDIR:                               DESTDIR.             (line   6)
 * dir:                                   File Name Functions. (line  17)
 * else:                                  Conditional Syntax.  (line   6)
-* endef:                                 Defining.            (line   6)
+* endef:                                 Multi-Line.          (line   6)
 * endif:                                 Conditional Syntax.  (line   6)
 * error:                                 Make Control Functions.
                                                               (line  11)
 * eval:                                  Eval Function.       (line   6)
-* exec_prefix:                           Directory Variables. (line  35)
+* exec_prefix:                           Directory Variables. (line  39)
 * export:                                Variables/Recursion. (line  40)
-* FC:                                    Implicit Variables.  (line  63)
-* FFLAGS:                                Implicit Variables.  (line 137)
+* FC:                                    Implicit Variables.  (line  56)
+* FFLAGS:                                Implicit Variables.  (line 133)
 * 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)
+* GET:                                   Implicit Variables.  (line  69)
+* GFLAGS:                                Implicit Variables.  (line 136)
 * GNUmakefile:                           Makefile Names.      (line   7)
 * GPATH:                                 Search Algorithm.    (line  48)
 * if:                                    Conditional Functions.
@@ -4318,32 +4975,32 @@ Index of Functions, Variables, & Directives
                                                               (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)
+* LDFLAGS:                               Implicit Variables.  (line 139)
+* LEX:                                   Implicit Variables.  (line  72)
+* LFLAGS:                                Implicit Variables.  (line 143)
+* libexecdir:                            Directory Variables. (line  70)
+* LINT:                                  Implicit Variables.  (line  80)
+* LINTFLAGS:                             Implicit Variables.  (line 155)
+* M2C:                                   Implicit Variables.  (line  60)
 * MAKE <1>:                              Flavors.             (line  84)
 * MAKE:                                  MAKE Variable.       (line   6)
 * MAKE_RESTARTS (number of times make has restarted): Special Variables.
-                                                              (line  49)
+                                                              (line  73)
 * 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)
+* MAKEFILE_LIST (list of parsed makefiles): Special Variables.
+                                                              (line   8)
 * MAKEFILES <1>:                         Variables/Recursion. (line 127)
 * MAKEFILES:                             MAKEFILES Variable.  (line   6)
 * MAKEFLAGS:                             Options/Recursion.   (line   6)
-* MAKEINFO:                              Implicit Variables.  (line  87)
+* MAKEINFO:                              Implicit Variables.  (line  83)
 * 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)
+                                                              (line  27)
 * MFLAGS:                                Options/Recursion.   (line  65)
 * notdir:                                File Name Functions. (line  27)
 * or:                                    Conditional Functions.
@@ -4353,25 +5010,28 @@ Index of Functions, Variables, & Directives
 * 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)
+* PC:                                    Implicit Variables.  (line  63)
+* PFLAGS:                                Implicit Variables.  (line 149)
+* prefix:                                Directory Variables. (line  29)
+* private:                               Suppressing Inheritance.
+                                                              (line   6)
 * realpath:                              File Name Functions. (line 114)
-* RFLAGS:                                Implicit Variables.  (line 156)
-* RM:                                    Implicit Variables.  (line 110)
-* sbindir:                               Directory Variables. (line  59)
+* RFLAGS:                                Implicit Variables.  (line 152)
+* RM:                                    Implicit Variables.  (line 106)
+* sbindir:                               Directory Variables. (line  63)
 * shell:                                 Shell Function.      (line   6)
 * SHELL:                                 Choosing the Shell.  (line   6)
-* SHELL (command execution):             Execution.           (line   6)
+* SHELL (recipe 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)
+* TANGLE:                                Implicit Variables.  (line 100)
+* TEX:                                   Implicit Variables.  (line  87)
+* TEXI2DVI:                              Implicit Variables.  (line  90)
+* undefine:                              Undefine Directive.  (line   6)
 * unexport:                              Variables/Recursion. (line  45)
 * value:                                 Value Function.      (line   6)
 * vpath:                                 Selective Search.    (line   6)
@@ -4380,14 +5040,14 @@ Index of Functions, Variables, & Directives
 * VPATH:                                 Directory Search.    (line   6)
 * warning:                               Make Control Functions.
                                                               (line  35)
-* WEAVE:                                 Implicit Variables.  (line  98)
+* WEAVE:                                 Implicit Variables.  (line  94)
 * 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)
+* YACC:                                  Implicit Variables.  (line  76)
+* YFLAGS:                                Implicit Variables.  (line 146)
 * | (automatic variable):                Automatic Variables. (line  69)
 
 
index be22ea3..fc7e8a3 100644 (file)
@@ -3,8 +3,8 @@
 @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 $
+@set EDITION 0.71
+@set RCSID $Id: make.texi,v 1.66 2010/07/19 07:10:54 psmith Exp $
 
 @settitle GNU @code{make}
 @setchapternewpage odd
@@ -13,8 +13,8 @@
 @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 ISBN confirmed by Jasimin Huang <jasimin@fsf.org> on 25 Mar 2009
+@set ISBN 1-882114-83-3
 @c %**end of header
 
 @copying
@@ -26,8 +26,8 @@ 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.
+1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -38,9 +38,9 @@ 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.''
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.  Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
@@ -50,7 +50,7 @@ Software Foundation raise funds for GNU development.''
 @c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
 
 
-@dircategory GNU Packages
+@dircategory Software development
 @direntry
 * Make: (make).            Remake files automatically.
 @end direntry
@@ -91,7 +91,7 @@ Cover art by Etienne Suvasa.
 * Introduction::                An introduction to @code{make}.
 * Makefiles::                   Makefiles tell @code{make} what to do.
 * Rules::                       Rules describe when a file must be remade.
-* Commands::                    Commands say how to remake a file.
+* Recipes::                     Recipes say how to remake a file.
 * Using Variables::             You can use variables to avoid repetition.
 * Conditionals::                Use or ignore parts of the makefile based
                                   on the values of variables.
@@ -118,19 +118,19 @@ Cover art by Etienne Suvasa.
 
 Overview of @code{make}
 
-* Preparing::                   Preparing and Running Make
-* Reading::                     On Reading this Text
-* Bugs::                        Problems and Bugs
+* Preparing::                   Preparing and running make
+* Reading::                     On reading this text
+* Bugs::                        Problems and bugs
 
 An Introduction to Makefiles
 
 * Rule Introduction::           What a rule looks like.
-* Simple Makefile::             A Simple Makefile
-* How Make Works::              How @code{make} Processes This Makefile
-* Variables Simplify::          Variables Make Makefiles Simpler
-* make Deduces::                Letting @code{make} Deduce the Commands
-* Combine By Prerequisite::     Another Style of Makefile
-* Cleanup::                     Rules for Cleaning the Directory
+* Simple Makefile::             A simple makefile
+* How Make Works::              How @code{make} processes this makefile
+* Variables Simplify::          Variables make makefiles simpler
+* make Deduces::                Letting @code{make} deduce the recipe
+* Combine By Prerequisite::     Another style of makefile
+* Cleanup::                     Rules for cleaning the directory
 
 Writing Makefiles
 
@@ -138,8 +138,6 @@ Writing Makefiles
 * Makefile Names::              How to name your makefile.
 * Include::                     How one makefile can use another makefile.
 * MAKEFILES Variable::          The environment can specify extra makefiles.
-* MAKEFILE_LIST Variable::      Discover which makefiles have been read.
-* Special Variables::           Other special variables.
 * Remaking Makefiles::          How makefiles get remade.
 * Overriding Makefiles::        How to override part of one makefile
                                   with another makefile.
@@ -154,7 +152,7 @@ Writing Rules
 * Wildcards::                   Using wildcard characters such as `*'.
 * Directory Search::            Searching other directories for source files.
 * Phony Targets::               Using a target that is not a real file's name.
-* Force Targets::               You can use a target without commands
+* Force Targets::               You can use a target without a recipe
                                   or prerequisites to mark other targets
                                   as phony.
 * Empty Targets::               When only the date matters and the
@@ -184,7 +182,7 @@ Searching Directories for Prerequisites
 * Selective Search::            Specifying a search path
                                   for a specified class of names.
 * Search Algorithm::            When and how search paths are applied.
-* Commands/Search::             How to write shell commands that work together
+* Recipes/Search::              How to write recipes that work together
                                   with search paths.
 * Implicit/Search::             How search paths affect implicit rules.
 * Libraries/Search::            Directory search for link libraries.
@@ -194,27 +192,27 @@ Static Pattern Rules
 * Static Usage::                The syntax of static pattern rules.
 * Static versus Implicit::      When are they better than implicit rules?
 
-Writing the Commands in Rules
+Writing Recipes in Rules
 
-* Command Syntax::              Command syntax features and pitfalls.
-* Echoing::                     How to control when commands are echoed.
-* Execution::                   How commands are executed.
-* Parallel::                    How commands can be executed in parallel.
-* Errors::                      What happens after a command execution error.
-* Interrupts::                  What happens when a command is interrupted.
+* Recipe Syntax::               Recipe syntax features and pitfalls.
+* Echoing::                     How to control when recipes are echoed.
+* Execution::                   How recipes are executed.
+* Parallel::                    How recipes can be executed in parallel.
+* Errors::                      What happens after a recipe execution error.
+* Interrupts::                  What happens when a recipe is interrupted.
 * Recursion::                   Invoking @code{make} from makefiles.
-* Sequences::                   Defining canned sequences of commands.
-* Empty Commands::              Defining useful, do-nothing commands.
+* Canned Recipes::              Defining canned recipes.
+* Empty Recipes::               Defining useful, do-nothing recipes.
 
-Command Syntax
+Recipe Syntax
 
-* Splitting Lines::             Breaking long command lines for readability.
-* Variables in Commands::       Using @code{make} variables in commands.
+* Splitting Lines::             Breaking long recipe lines for readability.
+* Variables in Recipes::        Using @code{make} variables in recipes.
 
-Command Execution
+Recipe Execution
 
 * Choosing the Shell::          How @code{make} chooses the shell used
-                                  to run commands.
+                                  to run recipes.
 
 Recursive Use of @code{make}
 
@@ -235,13 +233,15 @@ How to Use Variables
                                   of a variable.
 * Override Directive::          How to set a variable in the makefile even if
                                   the user has set it with a command argument.
-* Defining::                    An alternate way to set a variable
-                                  to a verbatim string.
+* Multi-Line::                  An alternate way to set a variable
+                                  to a multi-line string.
 * Environment::                 Variable values can come from the environment.
 * Target-specific::             Variable values can be defined on a per-target
                                   basis.
 * Pattern-specific::            Target-specific variable values can be applied
                                   to a group of targets that match a pattern.
+* Suppressing Inheritance::     Suppress inheritance of variables.
+* Special Variables::           Variables with special meaning or behavior.
 
 Advanced Features for Reference to Variables
 
@@ -276,7 +276,7 @@ How to Run @code{make}
 * Goals::                       How to use goal arguments to specify which
                                   parts of the makefile to use.
 * Instead of Execution::        How to use mode flags to specify what
-                                  kind of thing to do with the commands
+                                  kind of thing to do with the recipes
                                   in the makefile other than simply
                                   execute them.
 * Avoiding Compilation::        How to avoid recompiling certain files.
@@ -289,12 +289,12 @@ How to Run @code{make}
 Using Implicit Rules
 
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the commands for updating a file.
+                                  to get the recipe for updating a file.
 * Catalogue of Rules::          A list of built-in implicit rules.
 * Implicit Variables::          How to change what predefined rules do.
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to define commands for rules which
+* Last Resort::                 How to define a recipe for rules which
                                   cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -305,7 +305,7 @@ Defining and Redefining Pattern Rules
 * 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.
+                                  recipe of implicit rules.
 * Pattern Match::               How patterns match.
 * Match-Anything Rules::        Precautions you should take prior to
                                   defining rules that can match any
@@ -377,7 +377,7 @@ make
 suffices to perform all necessary recompilations.  The @code{make} program
 uses the makefile data base and the last-modification times of the files to
 decide which of the files need to be updated.  For each of those files, it
-issues the commands recorded in the data base.
+issues the recipes recorded in the data base.
 
 You can provide command line arguments to @code{make} to control which
 files should be recompiled, or how.  @xref{Running, ,How to Run
@@ -431,7 +431,7 @@ send us the makefile and the exact results @code{make} gave you,
 including any error or warning messages.  Please don't paraphrase
 these messages: it's best to cut and paste them into your report.
 When generating this small makefile, be sure to not use any non-free
-or unusual tools in your commands: you can almost always emulate what
+or unusual tools in your recipes: you can almost always emulate what
 such a tool would do with simple shell commands.  Finally, be sure to
 explain what you expected to occur; this will help us decide whether
 the problem was really in the documentation.
@@ -489,7 +489,7 @@ together to produce the new executable editor.
 * Simple Makefile::             A Simple Makefile
 * How Make Works::              How @code{make} Processes This Makefile
 * Variables Simplify::          Variables Make Makefiles Simpler
-* make Deduces::                Letting @code{make} Deduce the Commands
+* make Deduces::                Letting @code{make} Deduce the Recipes
 * Combine By Prerequisite::     Another Style of Makefile
 * Cleanup::                     Rules for Cleaning the Directory
 @end menu
@@ -505,11 +505,11 @@ A simple makefile consists of ``rules'' with the following shape:
 
 @cindex targets, introduction to
 @cindex prerequisites, introduction to
-@cindex commands, introduction to
+@cindex recipes, introduction to
 @example
 @group
 @var{target} @dots{} : @var{prerequisites} @dots{}
-        @var{command}
+        @var{recipe}
         @dots{}
         @dots{}
 @end group
@@ -524,20 +524,23 @@ A @dfn{prerequisite} is a file that is used as input to create the
 target.  A target often depends on several files.
 
 @cindex tabs in rules
-A @dfn{command} is an action that @code{make} carries out.
-A rule may have more than one command, each on its own line.
-@strong{Please note:} you need to put a tab character at the beginning of
-every command line!  This is an obscurity that catches the unwary.
-
-Usually a command is in a rule with prerequisites and serves to create a
+A @dfn{recipe} is an action that @code{make} carries out.  A recipe
+may have more than one command, either on the same line or each on its
+own line.  @strong{Please note:} you need to put a tab character at
+the beginning of every recipe line!  This is an obscurity that catches
+the unwary.  If you prefer to prefix your recipes with a character
+other than tab, you can set the @code{.RECIPEPREFIX} variable to an
+alternate character (@pxref{Special Variables}).
+
+Usually a recipe is in a rule with prerequisites and serves to create a
 target file if any of the prerequisites change.  However, the rule that
-specifies commands for the target need not have prerequisites.  For
+specifies a recipe for the target need not have prerequisites.  For
 example, the rule containing the delete command associated with the
 target @samp{clean} does not have prerequisites.
 
 A @dfn{rule}, then, explains how and when to remake certain files
 which are the targets of the particular rule.  @code{make} carries out
-the commands on the prerequisites to create or update the target.  A
+the recipe on the prerequisites to create or update the target.  A
 rule can also explain how and when to carry out an action.
 @xref{Rules, , Writing Rules}.
 
@@ -614,7 +617,7 @@ In the example makefile, the targets include the executable file
 @samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}.  The
 prerequisites are files such as @samp{main.c} and @samp{defs.h}.
 In fact, each @samp{.o} file is both a target and a prerequisite.
-Commands include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}.
+Recipes include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}.
 
 When a target is a file, it needs to be recompiled or relinked if any
 of its prerequisites change.  In addition, any prerequisites that are
@@ -623,28 +626,29 @@ example, @file{edit} depends on each of the eight object files; the
 object file @file{main.o} depends on the source file @file{main.c} and
 on the header file @file{defs.h}.
 
-A shell command follows each line that contains a target and
-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 command lines from other lines in the makefile.  (Bear in
-mind that @code{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 @code{make} does is execute the commands in the rule
-you have specified when the target file needs to be updated.)
-@cindex shell command
+A recipe may follow each line that contains a target and
+prerequisites.  These recipes say how to update the target file.  A
+tab character (or whatever character is specified by the
+@code{.RECIPEPREFIX} variable; @pxref{Special Variables}) must come at
+the beginning of every line in the recipe to distinguish recipes from
+other lines in the makefile.  (Bear in mind that @code{make} does not
+know anything about how the recipes work.  It is up to you to supply
+recipes that will update the target file properly.  All @code{make}
+does is execute the recipe you have specified when the target file
+needs to be updated.)@refill
+@cindex recipe
 
 The target @samp{clean} is not a file, but merely the name of an
-action.  Since you
-normally
-do not want to carry out the actions in this rule, @samp{clean} is not a prerequisite of any other rule.
+action.  Since you normally do not want to carry out the actions in
+this rule, @samp{clean} is not a prerequisite of any other rule.
 Consequently, @code{make} never does anything with it unless you tell
-it specifically.  Note that this rule not only is not a prerequisite, it
-also does not have any prerequisites, so the only purpose of the rule
-is to run the specified commands.  Targets that do not refer to files
-but are just actions are called @dfn{phony targets}.  @xref{Phony
-Targets}, for information about this kind of target.  @xref{Errors, ,
-Errors in Commands}, to see how to cause @code{make} to ignore errors
-from @code{rm} or any other command.
+it specifically.  Note that this rule not only is not a prerequisite,
+it also does not have any prerequisites, so the only purpose of the
+rule is to run the specified recipe.  Targets that do not refer to
+files but are just actions are called @dfn{phony targets}.
+@xref{Phony Targets}, for information about this kind of target.
+@xref{Errors, , Errors in Recipes}, to see how to cause @code{make}
+to ignore errors from @code{rm} or any other command.
 @cindex @code{clean} target
 @cindex @code{rm} (shell command)
 
@@ -792,22 +796,22 @@ clean :
 @end example
 
 @node make Deduces, Combine By Prerequisite, Variables Simplify, Introduction
-@section Letting @code{make} Deduce the Commands
-@cindex deducing commands (implicit rules)
+@section Letting @code{make} Deduce the Recipes
+@cindex deducing recipes (implicit rules)
 @cindex implicit rule, introduction to
 @cindex rule, implicit, introduction to
 
-It is not necessary to spell out the commands for compiling the individual
+It is not necessary to spell out the recipes for compiling the individual
 C source files, because @code{make} can figure them out: it has an
 @dfn{implicit rule} for updating a @samp{.o} file from a correspondingly
 named @samp{.c} file using a @samp{cc -c} command.  For example, it will
-use the command @samp{cc -c main.c -o main.o} to compile @file{main.c} into
-@file{main.o}.  We can therefore omit the commands from the rules for the
+use the recipe @samp{cc -c main.c -o main.o} to compile @file{main.c} into
+@file{main.o}.  We can therefore omit the recipes from the rules for the
 object files.  @xref{Implicit Rules, ,Using Implicit Rules}.@refill
 
 When a @samp{.c} file is used automatically in this way, it is also
 automatically added to the list of prerequisites.  We can therefore omit
-the @samp{.c} files from the prerequisites, provided we omit the commands.
+the @samp{.c} files from the prerequisites, provided we omit the recipe.
 
 Here is the entire example, with both of these changes, and a variable
 @code{objects} as suggested above:
@@ -838,7 +842,7 @@ clean :
 @noindent
 This is how we would write the makefile in actual practice.  (The
 complications associated with @samp{clean} are described elsewhere.
-See @ref{Phony Targets}, and @ref{Errors, ,Errors in Commands}.)
+See @ref{Phony Targets}, and @ref{Errors, ,Errors in Recipes}.)
 
 Because implicit rules are so convenient, they are important.  You
 will see them used frequently.@refill
@@ -911,7 +915,7 @@ clean :
 This prevents @code{make} from getting confused by an actual file
 called @file{clean} and causes it to continue in spite of errors from
 @code{rm}.  (See @ref{Phony Targets}, and @ref{Errors, ,Errors in
-Commands}.)
+Recipes}.)
 
 @noindent
 A rule such as this should not be placed at the beginning of the
@@ -936,8 +940,6 @@ reading a data base called the @dfn{makefile}.
 * Makefile Names::              How to name your makefile.
 * Include::                     How one makefile can use another makefile.
 * MAKEFILES Variable::          The environment can specify extra makefiles.
-* MAKEFILE_LIST Variable::      Discover which makefiles have been read.
-* Special Variables::           Other special variables.
 * Remaking Makefiles::          How makefiles get remade.
 * Overriding Makefiles::        How to override part of one makefile
                                   with another makefile.
@@ -960,7 +962,7 @@ length in later chapters.@refill
 An @dfn{explicit rule} says when and how to remake one or more files,
 called the rule's @dfn{targets}.  It lists the other files that the
 targets depend on, called the @dfn{prerequisites} of the target, and
-may also give commands to use to create or update the targets.
+may also give a recipe to use to create or update the targets.
 @xref{Rules, ,Writing Rules}.
 
 @cindex rule, implicit, definition of
@@ -968,7 +970,7 @@ may also give commands to use to create or update the targets.
 @item
 An @dfn{implicit rule} says when and how to remake a class of files
 based on their names.  It describes how a target may depend on a file
-with a name similar to the target and gives commands to create or
+with a name similar to the target and gives a recipe to create or
 update such a target.  @xref{Implicit Rules, ,Using Implicit Rules}.
 
 @cindex variable definition
@@ -981,8 +983,8 @@ Make Makefiles Simpler}).
 
 @cindex directive
 @item
-A @dfn{directive} is a command for @code{make} to do something special while
-reading the makefile.  These include:
+A @dfn{directive} is an instruction for @code{make} to do something
+special while reading the makefile.  These include:
 
 @itemize @bullet
 @item
@@ -994,7 +996,7 @@ ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefi
 
 @item
 Defining a variable from a verbatim string containing multiple lines
-(@pxref{Defining, ,Defining Variables Verbatim}).
+(@pxref{Multi-Line, ,Defining Multi-Line Variables}).
 @end itemize
 
 @cindex comments, in makefile
@@ -1009,16 +1011,19 @@ it) is effectively blank, and is ignored.  If you want a literal
 appear on any line in the makefile, although they are treated
 specially in certain situations.
 
-Within a command script (if the line begins with a TAB character) the
-entire line is passed to the shell, just as with any other line that
-begins with a TAB.  The shell decides how to interpret the text:
-whether or not this is a comment is up to the shell.
+You cannot use comments within variable references or function calls:
+any instance of @code{#} will be treated literally (rather than as the
+start of a comment) inside a variable reference or function call.
+
+Comments within a recipe are passed to the shell, just as with any
+other recipe text.  The shell decides how to interpret it: whether or
+not this is a comment is up to the shell.
 
 Within a @code{define} directive, comments are not ignored during the
 definition of the variable, but rather kept intact in the value of the
 variable.  When the variable is expanded they will either be treated
-as @code{make} comments or as command script text, depending on the
-context in which the variable is evaluated.
+as @code{make} comments or as recipe text, depending on the context in
+which the variable is evaluated.
 @end itemize
 
 @node Makefile Names, Include, Makefile Contents, Makefiles
@@ -1091,8 +1096,9 @@ include @var{filenames}@dots{}
 @cindex wildcard, in @code{include}
 
 Extra spaces are allowed and ignored at the beginning of the line, but
-a tab is not allowed.  (If the line begins with a tab, it will be
-considered a command line.)  Whitespace is required between
+the first character must not be a tab (or the value of
+@code{.RECIPEPREFIX})---if the line begins with a tab, it will be
+considered a recipe line.  Whitespace is required between
 @code{include} and the file names, and between file names; extra
 whitespace is ignored there and at the end of the directive.  A
 comment starting with @samp{#} is allowed at the end of the line.  If
@@ -1165,7 +1171,7 @@ Only after it has tried to find a way to remake a makefile and failed,
 will @code{make} diagnose the missing makefile as a fatal error.
 
 If you want @code{make} to simply ignore a makefile which does not exist
-and cannot be remade, with no error message, use the @w{@code{-include}}
+or cannot be remade, with no error message, use the @w{@code{-include}}
 directive instead of @code{include}, like this:
 
 @example
@@ -1173,11 +1179,14 @@ directive instead of @code{include}, like this:
 @end example
 
 This acts like @code{include} in every way except that there is no
-error (not even a warning) if any of the @var{filenames} do not exist.
+error (not even a warning) if any of the @var{filenames} (or any
+prerequisites of any of the @var{filenames}) do not exist or cannot be
+remade.
+
 For compatibility with some other @code{make} implementations,
 @code{sinclude} is another name for @w{@code{-include}}.
 
-@node MAKEFILES Variable, MAKEFILE_LIST Variable, Include, Makefiles
+@node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles
 @section The Variable @code{MAKEFILES}
 @cindex makefile, and @code{MAKEFILES} variable
 @cindex including (@code{MAKEFILES} variable)
@@ -1185,11 +1194,12 @@ For compatibility with some other @code{make} implementations,
 @vindex MAKEFILES
 If the environment variable @code{MAKEFILES} is defined, @code{make}
 considers its value as a list of names (separated by whitespace) of
-additional makefiles to be read before the others.  This works much like
-the @code{include} directive: various directories are searched for those
-files (@pxref{Include, ,Including Other Makefiles}).  In addition, the
-default goal is never taken from one of these makefiles and it is not an
-error if the files listed in @code{MAKEFILES} are not found.@refill
+additional makefiles to be read before the others.  This works much
+like the @code{include} directive: various directories are searched
+for those files (@pxref{Include, ,Including Other Makefiles}).  In
+addition, the default goal is never taken from one of these makefiles
+(or any makefile included by them) and it is not an error if the files
+listed in @code{MAKEFILES} are not found.@refill
 
 @cindex recursion, and @code{MAKEFILES} variable
 The main use of @code{MAKEFILES} is in communication between recursive
@@ -1207,187 +1217,7 @@ This is a very bad idea, because such makefiles will fail to work if run by
 anyone else.  It is much better to write explicit @code{include} directives
 in the makefiles.  @xref{Include, , Including Other Makefiles}.
 
-@node MAKEFILE_LIST Variable, Special Variables, MAKEFILES Variable, Makefiles
-@comment  node-name,  next,  previous,  up
-@section The Variable @code{MAKEFILE_LIST}
-@cindex makefiles, and @code{MAKEFILE_LIST} variable
-@cindex including (@code{MAKEFILE_LIST} variable)
-@vindex MAKEFILE_LIST
-
-As @code{make} reads various makefiles, including any obtained from the
-@code{MAKEFILES} variable, the command line, the default files, or
-from @code{include} directives, their names will be automatically
-appended to the @code{MAKEFILE_LIST} variable.  They are added right
-before @code{make} begins to parse them.
-
-This means that if the first thing a makefile does is examine the last
-word in this variable, it will be the name of the current makefile.
-Once the current makefile has used @code{include}, however, the last
-word will be the just-included makefile.
-
-If a makefile named @code{Makefile} has this content:
-
-@example
-@group
-name1 := $(lastword $(MAKEFILE_LIST))
-
-include inc.mk
-
-name2 := $(lastword $(MAKEFILE_LIST))
-
-all:
-        @@echo name1 = $(name1)
-        @@echo name2 = $(name2)
-@end group
-@end example
-
-@noindent
-then you would expect to see this output:
-
-@example
-@group
-name1 = Makefile
-name2 = inc.mk
-@end group
-@end example
-
-@xref{Text Functions}, for more information on the @code{word} and
-@code{words} functions used above.  @xref{Flavors, The Two Flavors of
-Variables}, for more information on simply-expanded (@code{:=})
-variable definitions.
-
-@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
-@comment  node-name,  next,  previous,  up
-@section Other Special Variables
-@cindex makefiles, and special variables
-@cindex special variables
-
-GNU @code{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.
-
-@table @code
-
-@vindex .DEFAULT_GOAL @r{(define default goal)}
-@item .DEFAULT_GOAL
-Sets the default goal to be used if no targets were specified on the
-command line (@pxref{Goals, , Arguments to Specify the Goals}).  The
-@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
-example illustrates these cases:
-
-@example
-@group
-# 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
-@end group
-@end example
-
-This makefile prints:
-
-@example
-@group
-no default goal is set
-default goal is foo
-default goal is bar
-foo
-@end group
-@end example
-
-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)}
-@item .VARIABLES
-Expands to a list of the @emph{names} of all global variables defined
-so far.  This includes variables which have empty values, as well as
-built-in variables (@pxref{Implicit Variables, , Variables Used by
-Implicit Rules}), 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.
-
-@c @vindex .TARGETS @r{(list of targets)}
-@c @item .TARGETS
-@c The second special variable is @code{.TARGETS}.  When expanded, the
-@c value consists of a list of all targets defined in all makefiles read
-@c up until that point.  Note it's not enough for a file to be simply
-@c mentioned in the makefile to be listed in this variable, even if it
-@c would match an implicit rule and become an ``implicit target''.  The
-@c file must appear as a target, on the left-hand side of a ``:'', to be
-@c considered a target for the purposes of this variable.
-
-@vindex .FEATURES @r{(list of supported features)}
-@item .FEATURES
-Expands to a list of special features supported by this version of
-@code{make}.  Possible values include:
-
-@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}.
-
-@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
-
-@node Remaking Makefiles, Overriding Makefiles, Special Variables, Makefiles
+@node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles
 @section How Makefiles Are Remade
 
 @cindex updating makefiles
@@ -1408,23 +1238,23 @@ again.  (It will also attempt to update each of them over again, but
 normally this will not change them again, since they are already up to
 date.)@refill
 
-If you know that one or more of your makefiles cannot be remade and you
-want to keep @code{make} from performing an implicit rule search on
-them, perhaps for efficiency reasons, you can use any normal method of
-preventing implicit rule lookup to do so.  For example, you can write an
-explicit rule with the makefile as the target, and an empty command
-string (@pxref{Empty Commands, ,Using Empty Commands}).
+If you know that one or more of your makefiles cannot be remade and
+you want to keep @code{make} from performing an implicit rule search
+on them, perhaps for efficiency reasons, you can use any normal method
+of preventing implicit rule lookup to do so.  For example, you can
+write an explicit rule with the makefile as the target, and an empty
+recipe (@pxref{Empty Recipes, ,Using Empty Recipes}).
 
 If the makefiles specify a double-colon rule to remake a file with
-commands but no prerequisites, that file will always be remade
+a recipe but no prerequisites, that file will always be remade
 (@pxref{Double-Colon}).  In the case of makefiles, a makefile that has a
-double-colon rule with commands but no prerequisites will be remade every
+double-colon rule with a recipe but no prerequisites will be remade every
 time @code{make} is run, and then again after @code{make} starts over
 and reads the makefiles in again.  This would cause an infinite loop:
 @code{make} would constantly remake the makefile, and never do anything
 else.  So, to avoid this, @code{make} will @strong{not} attempt to
 remake makefiles which are specified as targets of a double-colon rule
-with commands but no prerequisites.@refill
+with a recipe but no prerequisites.@refill
 
 If you do not specify any makefiles to be read with @samp{-f} or
 @samp{--file} options, @code{make} will try the default makefile names;
@@ -1443,7 +1273,7 @@ that it is not an error if @code{make} cannot find or make any makefile;
 a makefile is not always necessary.@refill
 
 When you use the @samp{-t} or @samp{--touch} option
-(@pxref{Instead of Execution, ,Instead of Executing the Commands}),
+(@pxref{Instead of Execution, ,Instead of Executing Recipes}),
 you would not want to use an out-of-date makefile to decide which
 targets to touch.  So the @samp{-t} option has no effect on updating
 makefiles; they are really updated even if @samp{-t} is specified.
@@ -1451,8 +1281,8 @@ Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or
 @samp{--just-print}) do not prevent updating of makefiles, because an
 out-of-date makefile would result in the wrong output for other targets.
 Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in,
-and then print the commands to update @file{foo} and its prerequisites
-without running them.  The commands printed for @file{foo} will be those
+and then print the recipe to update @file{foo} and its prerequisites
+without running it.  The recipe printed for @file{foo} will be the one
 specified in the updated contents of @file{mfile}.
 
 However, on occasion you might actually wish to prevent updating of even
@@ -1462,9 +1292,9 @@ makefile name is specified explicitly as a goal, the options @samp{-t}
 and so on do apply to them.
 
 Thus, @samp{make -f mfile -n mfile foo} would read the makefile
-@file{mfile}, print the commands needed to update it without actually
-running them, and then print the commands needed to update @file{foo}
-without running them.  The commands for @file{foo} will be those
+@file{mfile}, print the recipe needed to update it without actually
+running it, and then print the recipe needed to update @file{foo}
+without running that.  The recipe for @file{foo} will be the one
 specified by the existing contents of @file{mfile}.
 
 @node Overriding Makefiles, Reading Makefiles, Remaking Makefiles, Makefiles
@@ -1475,8 +1305,8 @@ specified by the existing contents of @file{mfile}.
 Sometimes it is useful to have a makefile that is mostly just like
 another makefile.  You can often use the @samp{include} directive to
 include one in the other, and add more targets or variable definitions.
-However, if the two makefiles give different commands for the same
-target, @code{make} will not let you just do this.  But there is another way.
+However, it is illegal for two makefiles to give different recipes for
+the same target.  But there is another way.
 
 @cindex match-anything rule, used to override
 In the containing makefile (the one that wants to include the other),
@@ -1499,19 +1329,19 @@ force: ;
 @end example
 
 If you say @samp{make foo}, @code{make} will find @file{GNUmakefile},
-read it, and see that to make @file{foo}, it needs to run the command
+read it, and see that to make @file{foo}, it needs to run the recipe
 @samp{frobnicate > foo}.  If you say @samp{make bar}, @code{make} will
 find no way to make @file{bar} in @file{GNUmakefile}, so it will use the
-commands from the pattern rule: @samp{make -f Makefile bar}.  If
+recipe from the pattern rule: @samp{make -f Makefile bar}.  If
 @file{Makefile} provides a rule for updating @file{bar}, @code{make}
 will apply the rule.  And likewise for any other target that
 @file{GNUmakefile} does not say how to make.
 
 The way this works is that the pattern rule has a pattern of just
 @samp{%}, so it matches any target whatever.  The rule specifies a
-prerequisite @file{force}, to guarantee that the commands will be run even
-if the target file already exists.  We give @file{force} target empty
-commands to prevent @code{make} from searching for an implicit rule to
+prerequisite @file{force}, to guarantee that the recipe will be run even
+if the target file already exists.  We give the @file{force} target an
+empty recipe to prevent @code{make} from searching for an implicit rule to
 build it---otherwise it would apply the same match-anything rule to
 @file{force} itself and create a prerequisite loop!
 
@@ -1537,7 +1367,7 @@ constructs within the makefile.  We say that expansion is
 @code{make} will expand any variables or functions in that section of a
 construct as the makefile is parsed.  We say that expansion is
 @dfn{deferred} if expansion is not performed immediately.  Expansion of
-deferred construct is not performed until either the construct appears
+deferred construct is not performed until either the construct appears
 later in an immediate context, or until the second phase.
 
 You may not be familiar with some of these constructs yet.  You can
@@ -1562,26 +1392,40 @@ Variable definitions are parsed as follows:
 define @var{immediate}
   @var{deferred}
 endef
+
+define @var{immediate} =
+  @var{deferred}
+endef
+
+define @var{immediate} ?=
+  @var{deferred}
+endef
+
+define @var{immediate} :=
+  @var{immediate}
+endef
+
+define @var{immediate} +=
+  @var{deferred} or @var{immediate}
+endef
 @end example
 
 For the append operator, @samp{+=}, the right-hand side is considered
 immediate if the variable was previously set as a simple variable
 (@samp{:=}), and deferred otherwise.
 
-@subheading Conditional Statements
+@subheading Conditional Directives
 @cindex ifdef, expansion
 @cindex ifeq, expansion
 @cindex ifndef, expansion
 @cindex ifneq, expansion
 
-All instances of conditional syntax are parsed immediately, in their
-entirety; this includes the @code{ifdef}, @code{ifeq}, @code{ifndef},
-and @code{ifneq} 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 @emph{must} use
-shell conditional syntax, in your command script proper, for these
-tests, not @code{make} conditionals.
+Conditional directives are parsed immediately.  This means, for
+example, that automatic variables cannot be used in conditional
+directives, as automatic variables are not set until the recipe for
+that rule is invoked.  If you need to use automatic variables in a
+conditional directive you @emph{must} move the condition into the
+recipe and use shell conditional syntax instead.
 
 @subheading Rule Definition
 @cindex target, expansion
@@ -1598,7 +1442,7 @@ A rule is always expanded the same way, regardless of the form:
 @end example
 
 That is, the target and prerequisite sections are expanded immediately,
-and the commands used to construct the target are always deferred.  This
+and the recipe used to construct the target is always deferred.  This
 general rule is true for explicit rules, pattern rules, suffix rules,
 static pattern rules, and simple prerequisite definitions.
 
@@ -1672,11 +1516,11 @@ 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 @code{$@@},
 @code{$*}, 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 @code{$}.  Also, secondary
-expansion occurs for both explicit and implicit (pattern) rules.
-Knowing this, the possible uses for this feature increase
-dramatically.  For example:
+expected values, just as in the recipe.  All you have to do is 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 increase dramatically.  For
+example:
 
 @example
 .SECONDEXPANSION:
@@ -1694,7 +1538,7 @@ the target and so the expansion for the @file{main} target will yield
 secondary expansion for the @file{lib} target will yield
 @code{$(lib_OBJS)}, or @code{lib.o api.o}.
 
-You can also mix functions here, as long as they are properly escaped:
+You can also mix in functions here, as long as they are properly escaped:
 
 @example
 main_SRCS := main.c try.c test.c
@@ -1710,11 +1554,11 @@ example.
 
 Evaluation of automatic variables during the secondary expansion
 phase, especially of the target name variable @code{$$@@}, 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 @code{make} understands.
-The subtleties of using the different automatic variables are
-described below.
+similarly to evaluation within recipes.  However, there are some
+subtle differences and ``corner cases'' which come into play for the
+different types of rule definitions that @code{make} understands.  The
+subtleties of using the different automatic variables are described
+below.
 
 @subheading Secondary Expansion of Explicit Rules
 @cindex secondary expansion and explicit rules
@@ -1744,10 +1588,10 @@ In the first prerequisite list, all three variables (@code{$$<},
 second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and
 @code{foo.1 bar.1} respectively.  In the third they will have values
 @code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1
-foo.2 bar.2} respectively.
+foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively.
 
 Rules undergo secondary expansion in makefile order, except that
-the rule with the command script is always evaluated last.
+the rule with the recipe is always evaluated last.
 
 The variables @code{$$?} and @code{$$*} are not available and expand
 to the empty string.
@@ -1804,7 +1648,7 @@ prefix reconstruction will be @file{/tmp/foo/foo.c /tmp/var/bar/foo.c
 foo.h}.  If you are not interested in this reconstruction, you can use
 @code{$$*} instead of @code{%} in the prerequisites list.
 
-@node Rules, Commands, Makefiles, Top
+@node Rules, Recipes, Makefiles, Top
 @chapter Writing Rules
 @cindex writing rules
 @cindex rule, how to write
@@ -1814,7 +1658,7 @@ foo.h}.  If you are not interested in this reconstruction, you can use
 A @dfn{rule} appears in the makefile and says when and how to remake
 certain files, called the rule's @dfn{targets} (most often only one per rule).
 It lists the other files that are the @dfn{prerequisites} of the target, and
-@dfn{commands} to use to create or update the target.
+the @dfn{recipe} to use to create or update the target.
 
 @cindex default goal
 @cindex goal, default
@@ -1840,7 +1684,7 @@ the makefile (often with a target called @samp{all}).
 * Wildcards::                   Using wildcard characters such as `*'.
 * Directory Search::            Searching other directories for source files.
 * Phony Targets::               Using a target that is not a real file's name.
-* Force Targets::               You can use a target without commands
+* Force Targets::               You can use a target without recipes
                                   or prerequisites to mark other targets
                                   as phony.
 * Empty Targets::               When only the date matters and the
@@ -1869,8 +1713,8 @@ foo.o : foo.c defs.h       # module for twiddling the frobs
 @end example
 
 Its target is @file{foo.o} and its prerequisites are @file{foo.c} and
-@file{defs.h}.  It has one command, which is @samp{cc -c -g foo.c}.
-The command line starts with a tab to identify it as a command.
+@file{defs.h}.  It has one command in the recipe: @samp{cc -c -g foo.c}.
+The recipe starts with a tab to identify it as a recipe.
 
 This rule says two things:
 
@@ -1882,7 +1726,7 @@ more recent than it.
 
 @item
 How to update the file @file{foo.o}: by running @code{cc} as stated.
-The command does not explicitly mention @file{defs.h}, but we presume
+The recipe does not explicitly mention @file{defs.h}, but we presume
 that @file{foo.c} includes it, and that that is why @file{defs.h} was
 added to the prerequisites.
 @end itemize
@@ -1897,7 +1741,7 @@ In general, a rule looks like this:
 
 @example
 @var{targets} : @var{prerequisites}
-        @var{command}
+        @var{recipe}
         @dots{}
 @end example
 
@@ -1905,8 +1749,8 @@ In general, a rule looks like this:
 or like this:
 
 @example
-@var{targets} : @var{prerequisites} ; @var{command}
-        @var{command}
+@var{targets} : @var{prerequisites} ; @var{recipe}
+        @var{recipe}
         @dots{}
 @end example
 
@@ -1921,13 +1765,15 @@ Usually there is only one
 target per rule, but occasionally there is a reason to have more
 (@pxref{Multiple Targets, , Multiple Targets in a Rule}).@refill
 
-@cindex commands
+@cindex recipes
 @cindex tab character (in commands)
-The @var{command} lines start with a tab character.  The first command may
-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.  There are other differences in the syntax of command lines.
-@xref{Commands, ,Writing the Commands in Rules}.
+The @var{recipe} lines start with a tab character (or the first
+character in the value of the @code{.RECIPEPREFIX} variable;
+@pxref{Special Variables}).  The first recipe line may 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.
+There are other differences in the syntax of recipes.
+@xref{Recipes, ,Writing Recipes in Rules}.
 
 @cindex dollar sign (@code{$}), in rules
 @cindex @code{$}, in rules
@@ -1937,7 +1783,7 @@ references, if you really want a dollar sign in a target or
 prerequisite you must write two of them, @samp{$$} (@pxref{Using
 Variables, ,How to Use Variables}).  If you have enabled secondary
 expansion (@pxref{Secondary Expansion}) and you want a literal dollar
-sign in the prerequisites lise, you must actually write @emph{four}
+sign in the prerequisites list, you must actually write @emph{four}
 dollar signs (@samp{$$$$}).
 
 You may split a long line by inserting a backslash followed by a
@@ -1959,9 +1805,9 @@ information in the prerequisites, so if any of the prerequisites changes,
 the contents of the existing target file are no longer necessarily
 valid.
 
-How to update is specified by @var{commands}.  These are lines to be
-executed by the shell (normally @samp{sh}), but with some extra features
-(@pxref{Commands, ,Writing the Commands in Rules}).
+How to update is specified by a @var{recipe}.  This is one or more
+lines to be executed by the shell (normally @samp{sh}), but with some
+extra features (@pxref{Recipes, ,Writing Recipes in Rules}).
 
 @node Prerequisite Types, Wildcards, Rule Syntax, Rules
 @comment  node-name,  next,  previous,  up
@@ -1976,12 +1822,12 @@ executed by the shell (normally @samp{sh}), but with some extra features
 There are actually two different types of prerequisites understood by
 GNU @code{make}: normal prerequisites such as described in the
 previous section, and @dfn{order-only} prerequisites.  A normal
-prerequisite makes two statements: first, it imposes an order of
-execution of build commands: any commands necessary to build any of a
-target's prerequisites will be fully executed before any commands
-necessary to build the target.  Second, it imposes a dependency
-relationship: if any prerequisite is newer than the target, then the
-target is considered out-of-date and must be rebuilt.
+prerequisite makes two statements: first, it imposes an order in which
+recipes will be invoked: the recipes for all prerequisites of a target
+will be completed before the recipe for the target is run.  Second, it
+imposes a dependency relationship: if any prerequisite is newer than
+the target, then the target is considered out-of-date and must be
+rebuilt.
 
 Normally, this is exactly what you want: if a target's prerequisite is
 updated, then the target should also be updated.
@@ -2000,10 +1846,41 @@ symbol are normal; any prerequisites to the right are order-only:
 
 The normal prerequisites section may of course be empty.  Also, you
 may still declare multiple lines of prerequisites for the same target:
-they are appended appropriately.  Note that if you declare the same
-file to be both a normal and an order-only prerequisite, the normal
-prerequisite takes precedence (since they are a strict superset of the
-behavior of an order-only prerequisite).
+they are appended appropriately (normal prerequisites are appended to
+the list of normal prerequisites; order-only prerequisites are
+appended to the list of order-only prerequisites).  Note that if you
+declare the same file to be both a normal and an order-only
+prerequisite, the normal prerequisite takes precedence (since they
+have a strict superset of the behavior of an order-only prerequisite).
+
+Consider an example where your targets are to be placed in a separate
+directory, and that directory might not exist before @code{make} is
+run.  In this situation, you want the directory to be created before
+any targets are placed into it but, because the timestamps on
+directories change whenever a file is added, removed, or renamed, we
+certainly don't want to rebuild all the targets whenever the
+directory's timestamp changes.  One way to manage this is with
+order-only prerequisites: make the directory an order-only
+prerequisite on all the targets:
+
+@example
+OBJDIR := objdir
+OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
+
+$(OBJDIR)/%.o : %.c
+        $(COMPILE.c) $(OUTPUT_OPTION) $<
+
+all: $(OBJS)
+
+$(OBJS): | $(OBJDIR)
+
+$(OBJDIR):
+        mkdir $(OBJDIR)
+@end example
+
+Now the rule to create the @file{objdir} directory will be run, if
+needed, before any @samp{.o} is built, but no @samp{.o} will be built
+because the @file{objdir} directory timestamp changed.
 
 @node Wildcards, Directory Search, Prerequisite Types, Rules
 @section Using Wildcard Characters in File Names
@@ -2034,7 +1911,7 @@ functionality can be simulated by setting the environment variable
 @var{HOME}.@refill
 
 Wildcard expansion is performed by @code{make} automatically in
-targets and in prerequisites.  In commands the shell is responsible
+targets and in prerequisites.  In recipes, the shell is responsible
 for wildcard expansion.  In other contexts, wildcard expansion happens
 only if you request it explicitly with the @code{wildcard} function.
 
@@ -2053,7 +1930,7 @@ specific file whose name consists of @samp{foo}, an asterisk, and
 @node Wildcard Examples, Wildcard Pitfall, Wildcards, Wildcards
 @subsection Wildcard Examples
 
-Wildcards can be used in the commands of a rule, where they are expanded
+Wildcards can be used in the recipe of a rule, where they are expanded
 by the shell.  For example, here is a rule to delete all the object files:
 
 @example
@@ -2092,9 +1969,11 @@ objects = *.o
 
 @noindent
 then the value of the variable @code{objects} is the actual string
-@samp{*.o}.  However, if you use the value of @code{objects} in a target,
-prerequisite or command, wildcard expansion will take place at that time.
-To set @code{objects} to the expansion, instead use:
+@samp{*.o}.  However, if you use the value of @code{objects} in a
+target or prerequisite, wildcard expansion will take place there.  If
+you use the value of @code{objects} in a recipe, the shell may perform
+wildcard expansion when the recipe runs.  To set @code{objects} to the
+expansion, instead use:
 
 @example
 objects := $(wildcard *.o)
@@ -2240,7 +2119,7 @@ just the search paths.
 * Selective Search::            Specifying a search path
                                   for a specified class of names.
 * Search Algorithm::            When and how search paths are applied.
-* Commands/Search::             How to write shell commands that work together
+* Recipes/Search::             How to write recipes that work together
                                   with search paths.
 * Implicit/Search::             How search paths affect implicit rules.
 * Libraries/Search::            Directory search for link libraries.
@@ -2261,8 +2140,7 @@ in the current directory, @code{make} searches the directories listed in
 @code{VPATH} for a file with that name.  If a file is found in one of
 them, that file may become the prerequisite (see below).  Rules may then
 specify the names of files in the prerequisite list as if they all
-existed in the current directory.  @xref{Commands/Search, ,Writing Shell
-Commands with Directory Search}.
+existed in the current directory.  @xref{Recipes/Search, ,Writing Recipes with Directory Search}.
 
 In the @code{VPATH} variable, directory names are separated by colons or
 blanks.  The order in which directories are listed is the order followed
@@ -2397,7 +2275,7 @@ vpath %   blish
 will look for a file ending in @samp{.c} in @file{foo}, then
 @file{bar}, then @file{blish}.
 
-@node Search Algorithm, Commands/Search, Selective Search, Directory Search
+@node Search Algorithm, Recipes/Search, Selective Search, Directory Search
 @subsection How Directory Searches are Performed
 @cindex algorithm for directory search
 @cindex directory search algorithm
@@ -2464,14 +2342,14 @@ is found by directory search in a directory that also appears in
 @code{GPATH}, then that pathname is not thrown away.  The target is
 rebuilt using the expanded path.
 
-@node Commands/Search, Implicit/Search, Search Algorithm, Directory Search
-@subsection Writing Shell Commands with Directory Search
-@cindex shell command, and directory search
-@cindex directory search (@code{VPATH}), and shell commands
+@node Recipes/Search, Implicit/Search, Search Algorithm, Directory Search
+@subsection Writing Recipes with Directory Search
+@cindex recipes, and directory search
+@cindex directory search (@code{VPATH}), and recipes
 
 When a prerequisite is found in another directory through directory search,
-this cannot change the commands of the rule; they will execute as written.
-Therefore, you must write the commands with care so that they will look for
+this cannot change the recipe of the rule; they will execute as written.
+Therefore, you must write the recipe with care so that it will look for
 the prerequisite in the directory where @code{make} finds it.
 
 This is done with the @dfn{automatic variables} such as @samp{$^}
@@ -2493,7 +2371,7 @@ affect all C compilations uniformly;
 @pxref{Implicit Variables, ,Variables Used by Implicit Rules}.)
 
 Often the prerequisites include header files as well, which you do not
-want to mention in the commands.  The automatic variable @samp{$<} is
+want to mention in the recipe.  The automatic variable @samp{$<} is
 just the first prerequisite:
 
 @example
@@ -2502,7 +2380,7 @@ foo.o : foo.c defs.h hack.h
         cc -c $(CFLAGS) $< -o $@@
 @end example
 
-@node Implicit/Search, Libraries/Search, Commands/Search, Directory Search
+@node Implicit/Search, Libraries/Search, Recipes/Search, Directory Search
 @subsection Directory Search and Implicit Rules
 @cindex @code{VPATH}, and implicit rules
 @cindex directory search (@code{VPATH}), and implicit rules
@@ -2523,7 +2401,7 @@ current directory, the appropriate directories are searched for it.  If
 @file{foo.c} exists (or is mentioned in the makefile) in any of the
 directories, the implicit rule for C compilation is applied.
 
-The commands of implicit rules normally use automatic variables as a
+The recipes of implicit rules normally use automatic variables as a
 matter of necessity; consequently they will use the file names found by
 directory search with no extra effort.
 
@@ -2547,17 +2425,15 @@ file, and the @emph{file name} of a library generally looks like
 @file{lib@var{name}.a}, not like @samp{-l@var{name}}.)@refill
 
 When a prerequisite's name has the form @samp{-l@var{name}}, @code{make}
-handles it specially by searching for the file @file{lib@var{name}.so} in
-the current directory, in directories specified by matching @code{vpath}
+handles it specially by searching for the file @file{lib@var{name}.so},
+and, if it is not found, for the file @file{lib@var{name}.a} in the current
+directory, in directories specified by matching @code{vpath}
 search paths and the @code{VPATH} search path, and then in the
 directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib}
 (normally @file{/usr/local/lib}, but MS-DOS/MS-Windows versions of
 @code{make} behave as if @var{prefix} is defined to be the root of the
 DJGPP installation tree).
 
-If that file is not found, then the file @file{lib@var{name}.a} is
-searched for, in the same directories as above.
-
 For example, if there is a @file{/usr/lib/libcurses.a} library on your
 system (and no @file{/usr/lib/libcurses.so} file), then
 
@@ -2579,8 +2455,7 @@ via the @code{.LIBPATTERNS} variable.  Each word in the value of this
 variable is a pattern string.  When a prerequisite like
 @samp{-l@var{name}} is seen, @code{make} will replace the percent in
 each pattern in the list with @var{name} and perform the above directory
-searches using that library filename.  If no library is found, the next
-word in the list will be used.
+searches using each library filename.
 
 The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a},
 which provides the default behavior described above.
@@ -2594,13 +2469,13 @@ variable to an empty value.
 @cindex targets, phony
 @cindex targets without a file
 
-A phony target is one that is not really the name of a file.  It is just a
-name for some commands to be executed when you make an explicit request.
-There are two reasons to use a phony target: to avoid a conflict with
-a file of the same name, and to improve performance.
+A phony target is one that is not really the name of a file; rather it
+is just a name for a recipe to be executed when you make an explicit
+request.  There are two reasons to use a phony target: to avoid a
+conflict with a file of the same name, and to improve performance.
 
-If you write a rule whose commands will not create the target file, the
-commands will be executed every time the target comes up for remaking.
+If you write a rule whose recipe will not create the target file, the
+recipe will be executed every time the target comes up for remaking.
 Here is an example:
 
 @example
@@ -2620,7 +2495,7 @@ will be executed every time you say @samp{make clean}.
 The phony target will cease to work if anything ever does create a file
 named @file{clean} in this directory.  Since it has no prerequisites, the
 file @file{clean} would inevitably be considered up to date, and its
-commands would not be executed.  To avoid this problem, you can explicitly
+recipe would not be executed.  To avoid this problem, you can explicitly
 declare the target to be phony, using the special target @code{.PHONY}
 (@pxref{Special Targets, ,Special Built-in Target Names}) as follows:
 
@@ -2629,7 +2504,7 @@ declare the target to be phony, using the special target @code{.PHONY}
 @end example
 
 @noindent
-Once this is done, @samp{make clean} will run the commands regardless of
+Once this is done, @samp{make clean} will run the recipe regardless of
 whether there is a file named @file{clean}.
 
 Since it knows that phony targets do not name actual files that could be
@@ -2654,7 +2529,7 @@ with recursive invocations of @code{make} (for more information, see
 @ref{Recursion, ,Recursive Use of @code{make}}).  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 shell loop over the subdirectories, like this:
+whose recipe is a shell loop over the subdirectories, like this:
 
 @example
 @group
@@ -2667,14 +2542,15 @@ subdirs:
 @end group
 @end example
 
-There are a few problems with this method, however.  First, any error
-detected in a submake is not noted by this rule, so it will continue to
-build the rest of the directories even when one fails.  This can be
+There are problems with this method, however.  First, any error
+detected in a submake is ignored by this rule, so it will continue
+to build the rest of the directories even when one fails.  This can be
 overcome by adding shell commands to note the error and exit, but then
-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 @code{make}'s ability to build targets in parallel
-(@pxref{Parallel, ,Parallel Execution}), since there is only one rule.
+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 @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
 the subdirectory obviously always exists; otherwise it won't be built)
@@ -2701,9 +2577,9 @@ relationship declaration is particularly important when attempting
 parallel builds.
 
 A phony target should not be a prerequisite of a real target file; if it
-is, its commands are run every time @code{make} goes to update that
+is, its recipe will be run every time @code{make} goes to update that
 file.  As long as a phony target is never a prerequisite of a real
-target, the phony target commands will be executed only when the phony
+target, the phony target recipe will be executed only when the phony
 target is a specified goal (@pxref{Goals, ,Arguments to Specify the
 Goals}).
 
@@ -2752,16 +2628,16 @@ cleandiff :
 @end example
 
 @node Force Targets, Empty Targets, Phony Targets, Rules
-@section Rules without Commands or Prerequisites
+@section Rules without Recipes or Prerequisites
 @cindex force targets
 @cindex targets, force
 @cindex @code{FORCE}
-@cindex rule, no commands or prerequisites
+@cindex rule, no recipe or prerequisites
 
-If a rule has no prerequisites or commands, and the target of the rule
+If a rule has no prerequisites or recipe, and the target of the rule
 is a nonexistent file, then @code{make} imagines this target to have
 been updated whenever its rule is run.  This implies that all targets
-depending on this one will always have their commands run.
+depending on this one will always have their recipe run.
 
 An example will illustrate this:
 
@@ -2774,9 +2650,9 @@ FORCE:
 @end example
 
 Here the target @samp{FORCE} satisfies the special conditions, so the
-target @file{clean} that depends on it is forced to run its commands.
-There is nothing special about the name @samp{FORCE}, but that is one name
-commonly used this way.
+target @file{clean} that depends on it is forced to run its recipe.
+There is nothing special about the name @samp{FORCE}, but that is one
+name commonly used this way.
 
 As you can see, using @samp{FORCE} this way has the same results as using
 @samp{.PHONY: clean}.
@@ -2792,18 +2668,18 @@ other versions of @code{make} do not support @samp{.PHONY}; thus
 @cindex recording events with empty targets
 
 The @dfn{empty target} is a variant of the phony target; it is used to hold
-commands for an action that you request explicitly from time to time.
+recipes for an action that you request explicitly from time to time.
 Unlike a phony target, this target file can really exist; but the file's
 contents do not matter, and usually are empty.
 
 The purpose of the empty target file is to record, with its
-last-modification time, when the rule's commands were last executed.  It
-does so because one of the commands is a @code{touch} command to update the
-target file.
+last-modification time, when the rule's recipe was last executed.  It
+does so because one of the commands in the recipe is a @code{touch}
+command to update the target file.
 
 The empty target file should have some prerequisites (otherwise it
 doesn't make sense).  When you ask to remake the empty target, the
-commands are executed if any prerequisite is more recent than the target;
+recipe is executed if any prerequisite is more recent than the target;
 in other words, if a prerequisite has changed since the last time you
 remade the target.  Here is an example:
 
@@ -2836,7 +2712,7 @@ Certain names have special meanings if they appear as targets.
 
 The prerequisites of the special target @code{.PHONY} are considered to
 be phony targets.  When it is time to consider such a target,
-@code{make} will run its commands unconditionally, regardless of
+@code{make} will run its recipe unconditionally, regardless of
 whether a file with that name exists or what its last-modification
 time is.  @xref{Phony Targets, ,Phony Targets}.
 
@@ -2850,11 +2726,11 @@ of suffixes to be used in checking for suffix rules.
 @findex .DEFAULT
 @item .DEFAULT
 
-The commands specified for @code{.DEFAULT} are used for any target for
+The recipe specified for @code{.DEFAULT} is used for any target for
 which no rules are found (either explicit rules or implicit rules).
-@xref{Last Resort}.  If @code{.DEFAULT} commands are specified, every
+@xref{Last Resort}.  If a @code{.DEFAULT} recipe is specified, every
 file mentioned as a prerequisite, but not as a target in a rule, will have
-these commands executed on its behalf.  @xref{Implicit Rule Search,
+that recipe executed on its behalf.  @xref{Implicit Rule Search,
 ,Implicit Rule Search Algorithm}.
 
 @findex .PRECIOUS
@@ -2864,7 +2740,7 @@ these commands executed on its behalf.  @xref{Implicit Rule Search,
 
 The targets which @code{.PRECIOUS} depends on are given the following
 special treatment: if @code{make} is killed or interrupted during the
-execution of their commands, the target is not deleted.
+execution of their recipes, the target is not deleted.
 @xref{Interrupts, ,Interrupting or Killing @code{make}}.  Also, if the
 target is an intermediate file, it will not be deleted after it is no
 longer needed, as is normally done.  @xref{Chained Rules, ,Chains of
@@ -2905,49 +2781,46 @@ 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
 @item .DELETE_ON_ERROR
 @cindex removing targets on failure
 
 If @code{.DELETE_ON_ERROR} is mentioned as a target anywhere in the
 makefile, then @code{make} will delete the target of a rule if it has
-changed and its commands exit with a nonzero exit status, just as it
-does when it receives a signal.  @xref{Errors, ,Errors in Commands}.
+changed and its recipe exits with a nonzero exit status, just as it
+does when it receives a signal.  @xref{Errors, ,Errors in Recipes}.
 
 @findex .IGNORE
 @item .IGNORE
 
 If you specify prerequisites for @code{.IGNORE}, then @code{make} will
-ignore errors in execution of the commands run for those particular
-files.  The commands for @code{.IGNORE} are not meaningful.
+ignore errors in execution of the recipe for those particular files.
+The recipe for @code{.IGNORE} (if any) is ignored.
 
 If mentioned as a target with no prerequisites, @code{.IGNORE} says to
-ignore errors in execution of commands for all files.  This usage of
+ignore errors in execution of recipes for all files.  This usage of
 @samp{.IGNORE} is supported only for historical compatibility.  Since
-this affects every command in the makefile, it is not very useful; we
+this affects every recipe in the makefile, it is not very useful; we
 recommend you use the more selective ways to ignore errors in specific
-commands.  @xref{Errors, ,Errors in Commands}.
+recipes.  @xref{Errors, ,Errors in Recipes}.
 
 @findex .LOW_RESOLUTION_TIME
 @item .LOW_RESOLUTION_TIME
 
 If you specify prerequisites for @code{.LOW_RESOLUTION_TIME},
 @command{make} assumes that these files are created by commands that
-generate low resolution time stamps.  The commands for
-@code{.LOW_RESOLUTION_TIME} are not meaningful.
-
-The high resolution file time stamps of many modern hosts lessen the
-chance of @command{make} incorrectly concluding that a file is up to
-date.  Unfortunately, these hosts provide no way to set a high
-resolution file time stamp, so commands like @samp{cp -p} that
-explicitly set a file's time stamp must discard its subsecond part.  If
-a file is created by such a command, you should list it as a
-prerequisite of @code{.LOW_RESOLUTION_TIME} so that @command{make} does
-not mistakenly conclude that the file is out of date.  For example:
+generate low resolution time stamps.  The recipe for the
+@code{.LOW_RESOLUTION_TIME} target are ignored.
+
+The high resolution file time stamps of many modern file systems
+lessen the chance of @command{make} incorrectly concluding that a file
+is up to date.  Unfortunately, some hosts do not provide a way to set a
+high resolution file time stamp, so commands like @samp{cp -p} that
+explicitly set a file's time stamp must discard its subsecond part.
+If a file is created by such a command, you should list it as a
+prerequisite of @code{.LOW_RESOLUTION_TIME} so that @command{make}
+does not mistakenly conclude that the file is out of date.  For
+example:
 
 @example
 @group
@@ -2972,14 +2845,14 @@ automatically.
 @item .SILENT
 
 If you specify prerequisites for @code{.SILENT}, then @code{make} will
-not print the commands to remake those particular files before executing
-them.  The commands for @code{.SILENT} are not meaningful.
+not print the recipe used to remake those particular files before
+executing them.  The recipe for @code{.SILENT} is ignored.
 
 If mentioned as a target with no prerequisites, @code{.SILENT} says not
-to print any commands before executing them.  This usage of
+to print any recipes before executing them.  This usage of
 @samp{.SILENT} is supported only for historical compatibility.  We
-recommend you use the more selective ways to silence specific commands.
-@xref{Echoing, ,Command Echoing}.  If you want to silence all commands
+recommend you use the more selective ways to silence specific recipes.
+@xref{Echoing, ,Recipe Echoing}.  If you want to silence all recipes
 for a particular run of @code{make}, use the @samp{-s} or
 @w{@samp{--silent}} option (@pxref{Options Summary}).
 
@@ -2995,11 +2868,35 @@ Sub-@code{make}}.
 @item .NOTPARALLEL
 @cindex parallel execution, overriding
 
-If @code{.NOTPARALLEL} is mentioned as a target, then this invocation of
-@code{make} will be run serially, even if the @samp{-j} option is
-given.  Any recursively invoked @code{make} command will still be run in
-parallel (unless its makefile contains this target).  Any prerequisites
-on this target are ignored.
+If @code{.NOTPARALLEL} is mentioned as a target, then this invocation
+of @code{make} will be run serially, even if the @samp{-j} option is
+given.  Any recursively invoked @code{make} command will still run
+recipes in parallel (unless its makefile also contains this target).
+Any prerequisites on this target are ignored.
+
+@findex .ONESHELL
+@item .ONESHELL
+@cindex recipe execution, single invocation
+
+If @code{.ONESHELL} is mentioned as a target, then when a target is
+built all lines of the recipe will be given to a single invocation of
+the shell rather than each line being invoked separately
+(@pxref{Execution, ,Recipe Execution}).
+
+@findex .POSIX
+@item .POSIX
+@cindex POSIX-conforming mode, setting
+
+If @code{.POSIX} is mentioned as a target, then the makefile will be
+parsed and run in POSIX-conforming mode.  This does @emph{not} mean
+that only POSIX-conforming makefiles will be accepted: all advanced
+GNU @code{make} features are still available.  Rather, this target
+causes @code{make} to behave as required by POSIX in those areas
+where @code{make}'s default behavior differs.
+
+In particular, if this target is mentioned then recipes will be
+invoked as if the shell had been passed the @code{-e} flag: the first
+failing command in a recipe will cause the recipe to fail immediately.
 @end table
 
 Any defined implicit rule suffix also counts as a special target if it
@@ -3019,16 +2916,16 @@ both pieces to the suffix list.  In practice, suffixes normally begin with
 @cindex rule, with multiple targets
 
 A rule with multiple targets is equivalent to writing many rules, each with
-one target, and all identical aside from that.  The same commands apply to
-all the targets, but their effects may vary because you can substitute the
-actual target name into the command using @samp{$@@}.  The rule contributes
+one target, and all identical aside from that.  The same recipe applies to
+all the targets, but its effect may vary because you can substitute the
+actual target name into the recipe using @samp{$@@}.  The rule contributes
 the same prerequisites to all the targets also.
 
 This is useful in two cases.
 
 @itemize @bullet
 @item
-You want just prerequisites, no commands.  For example:
+You want just prerequisites, no recipe.  For example:
 
 @example
 kbd.o command.o files.o: command.h
@@ -3039,7 +2936,7 @@ gives an additional prerequisite to each of the three object files
 mentioned.
 
 @item
-Similar commands work for all the targets.  The commands do not need
+Similar recipes work for all the targets.  The recipes do not need
 to be absolutely identical, since the automatic variable @samp{$@@}
 can be used to substitute the particular target to be remade into the
 commands (@pxref{Automatic Variables}).  For example:
@@ -3070,11 +2967,11 @@ types of output, one if given @samp{-big} and one if given
 for an explanation of the @code{subst} function.
 @end itemize
 
-Suppose you would like to vary the prerequisites according to the target,
-much as the variable @samp{$@@} allows you to vary the commands.
-You cannot do this with multiple targets in an ordinary rule, but you can
-do it with a @dfn{static pattern rule}.
-@xref{Static Pattern, ,Static Pattern Rules}.
+Suppose you would like to vary the prerequisites according to the
+target, much as the variable @samp{$@@} allows you to vary the recipe.
+You cannot do this with multiple targets in an ordinary rule, but you
+can do it with a @dfn{static pattern rule}.  @xref{Static Pattern,
+,Static Pattern Rules}.
 
 @node Multiple Rules, Static Pattern, Multiple Targets, Rules
 @section Multiple Rules for One Target
@@ -3086,15 +2983,15 @@ do it with a @dfn{static pattern rule}.
 One file can be the target of several rules.  All the prerequisites
 mentioned in all the rules are merged into one list of prerequisites for
 the target.  If the target is older than any prerequisite from any rule,
-the commands are executed.
-
-There can only be one set of commands to be executed for a file.  If
-more than one rule gives commands for the same file, @code{make} uses
-the last set given and prints an error message.  (As a special case,
-if the file's name begins with a dot, no error message is printed.
-This odd behavior is only for compatibility with other implementations
-of @code{make}... you should avoid using it).  Occasionally it is
-useful to have the same target invoke multiple commands which are
+the recipe is executed.
+
+There can only be one recipe to be executed for a file.  If more than
+one rule gives a recipe for the same file, @code{make} uses the last
+one given and prints an error message.  (As a special case, if the
+file's name begins with a dot, no error message is printed.  This odd
+behavior is only for compatibility with other implementations of
+@code{make}@dots{} you should avoid using it).  Occasionally it is
+useful to have the same target invoke multiple recipes which are
 defined in different parts of your makefile; you can use
 @dfn{double-colon rules} (@pxref{Double-Colon}) for this.
 
@@ -3116,9 +3013,9 @@ This could be inserted or taken out without changing the rules that really
 specify how to make the object files, making it a convenient form to use if
 you wish to add the additional prerequisite intermittently.
 
-Another wrinkle is that the additional prerequisites could be specified with
-a variable that you set with a command argument to @code{make}
-(@pxref{Overriding, ,Overriding Variables}).  For example,
+Another wrinkle is that the additional prerequisites could be
+specified with a variable that you set with a command line argument to
+@code{make} (@pxref{Overriding, ,Overriding Variables}).  For example,
 
 @example
 @group
@@ -3132,8 +3029,8 @@ means that the command @samp{make extradeps=foo.h} will consider
 @file{foo.h} as a prerequisite of each object file, but plain @samp{make}
 will not.
 
-If none of the explicit rules for a target has commands, then @code{make}
-searches for an applicable implicit rule to find some commands
+If none of the explicit rules for a target has a recipe, then @code{make}
+searches for an applicable implicit rule to find one
 @pxref{Implicit Rules, ,Using Implicit Rules}).
 
 @node Static Pattern, Double-Colon, Multiple Rules, Rules
@@ -3164,7 +3061,7 @@ Here is the syntax of a static pattern rule:
 
 @example
 @var{targets} @dots{}: @var{target-pattern}: @var{prereq-patterns} @dots{}
-        @var{commands}
+        @var{recipe}
         @dots{}
 @end example
 
@@ -3279,7 +3176,7 @@ names of prerequisites.  The difference is in how @code{make} decides
 @emph{when} the rule applies.
 
 An implicit rule @emph{can} apply to any target that matches its pattern,
-but it @emph{does} apply only when the target has no commands otherwise
+but it @emph{does} apply only when the target has no recipe otherwise
 specified, and only when the prerequisites can be found.  If more than one
 implicit rule appears applicable, only one applies; the choice depends on
 the order of rules.
@@ -3287,7 +3184,7 @@ the order of rules.
 By contrast, a static pattern rule applies to the precise list of targets
 that you specify in the rule.  It cannot apply to any other target and it
 invariably does apply to each of the targets specified.  If two conflicting
-rules apply, and both have commands, that's an error.
+rules apply, and both have recipes, that's an error.
 
 The static pattern rule can be better than an implicit rule for these
 reasons:
@@ -3314,15 +3211,17 @@ to precisely the targets specified.
 @cindex multiple rules for one target (@code{::})
 @cindex @code{::} rules (double-colon)
 
-@dfn{Double-colon} rules are rules written with @samp{::} instead of
-@samp{:} after the target names.  They are handled differently from
-ordinary rules when the same target appears in more than one rule.
+@dfn{Double-colon} rules are explicit rules written with @samp{::}
+instead of @samp{:} after the target names.  They are handled
+differently from ordinary rules when the same target appears in more
+than one rule.  Pattern rules with double-colons have an entirely
+different meaning (@pxref{Match-Anything Rules}).
 
 When a target appears in multiple rules, all the rules must be the same
 type: all ordinary, or all double-colon.  If they are double-colon, each
-of them is independent of the others.  Each double-colon rule's commands
-are executed if the target is older than any prerequisites of that rule.
-If there are no prerequisites for that rule, its commands are always
+of them is independent of the others.  Each double-colon rule's recipe
+is executed if the target is older than any prerequisites of that rule.
+If there are no prerequisites for that rule, its recipe is always
 executed (even if the target already exists).  This can result in
 executing none, any, or all of the double-colon rules.
 
@@ -3332,14 +3231,14 @@ as rules with different targets are processed.
 
 The double-colon rules for a target are executed in the order they appear
 in the makefile.  However, the cases where double-colon rules really make
-sense are those where the order of executing the commands would not matter.
+sense are those where the order of executing the recipes would not matter.
 
 Double-colon rules are somewhat obscure and not often very useful; they
 provide a mechanism for cases in which the method used to update a target
 differs depending on which prerequisite files caused the update, and such
 cases are rare.
 
-Each double-colon rule should specify commands; if it does not, an
+Each double-colon rule should specify a recipe; if it does not, an
 implicit rule will be used if one applies.
 @xref{Implicit Rules, ,Using Implicit Rules}.
 
@@ -3484,114 +3383,118 @@ default goal in your makefiles or run the risk of having a random
 object file become the default goal.
 @xref{How Make Works}.
 
-@node Commands, Using Variables, Rules, Top
-@chapter Writing the Commands in Rules
-@cindex commands, how to write
-@cindex rule commands
-@cindex writing rule commands
+@node Recipes, Using Variables, Rules, Top
+@chapter Writing Recipes in Rules
+@cindex recipes
+@cindex recipes, how to write
+@cindex writing recipes
 
-The commands of a rule consist of one or more shell command lines to
+The recipe of a rule consists 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
+Users use many different shell programs, but recipes in makefiles are
 always interpreted by @file{/bin/sh} unless the makefile specifies
-otherwise.  @xref{Execution, ,Command Execution}.
+otherwise.  @xref{Execution, ,Recipe Execution}.
 
 @menu
-* Command Syntax::              Command syntax features and pitfalls.
-* Echoing::                     How to control when commands are echoed.
-* Execution::                   How commands are executed.
-* Parallel::                    How commands can be executed in parallel.
-* Errors::                      What happens after a command execution error.
-* Interrupts::                  What happens when a command is interrupted.
+* Recipe Syntax::               Recipe syntax features and pitfalls.
+* Echoing::                     How to control when recipes are echoed.
+* Execution::                   How recipes are executed.
+* Parallel::                    How recipes can be executed in parallel.
+* Errors::                      What happens after a recipe execution error.
+* Interrupts::                  What happens when a recipe is interrupted.
 * Recursion::                   Invoking @code{make} from makefiles.
-* Sequences::                   Defining canned sequences of commands.
-* Empty Commands::              Defining useful, do-nothing commands.
+* Canned Recipes::              Defining canned recipes.
+* Empty Recipes::               Defining useful, do-nothing recipes.
 @end menu
 
-@node Command Syntax, Echoing, Commands, Commands
-@section Command Syntax
-@cindex command syntax
-@cindex syntax of commands
+@node Recipe Syntax, Echoing, Recipes, Recipes
+@section Recipe Syntax
+@cindex recipe syntax
+@cindex syntax of recipe
 
 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.
+(@pxref{Makefiles, ,Writing Makefiles}).  However, recipes 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 recipe before handing it to the shell.
+
+Each line in the recipe must start with a tab (or the first character
+in the value of the @code{.RECIPEPREFIX} variable; @pxref{Special
+Variables}), except that the first recipe 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 part of a recipe for that
+rule.  Blank lines and lines of just comments may appear among the
+recipe 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}).
+recipe (@pxref{Empty Recipes}).
 
-@cindex comments, in commands
-@cindex commands, comments in
-@cindex @code{#} (comments), in commands
+@cindex comments, in recipes
+@cindex recipes, comments in
+@cindex @code{#} (comments), in recipes
 @item
-A comment in a command line is not a @code{make} comment; it will be
+A comment in a recipe 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.
+as the first character on the line, will be considered part of a
+recipe, 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.
+line, will be considered part of a recipe 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.
+* Splitting Lines::             Breaking long recipe lines for readability.
+* Variables in Recipes::        Using @code{make} variables in recipes.
 @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.
+@node Splitting Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax
+@subsection Splitting Recipe Lines
+@cindex recipes, splitting
+@cindex splitting recipes
+@cindex recipes, backslash (@code{\}) in
+@cindex recipes, quoting newlines in
+@cindex backslash (@code{\}), in recipes
+@cindex @code{\} (backslash), in recipes
+@cindex quoting newline, in recipes
+@cindex newline, quoting, in recipes
+
+One of the few ways in which @code{make} does interpret recipes is
+checking for a backslash just before the newline.  As in normal
+makefile syntax, a single logical recipe line can be split into
+multiple physical lines in the makefile by placing a backslash before
+each newline.  A sequence of lines like this is considered a single
+recipe line, 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
+recipe.  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.
+depends on your shell.  If the first character of the next line after
+the backslash-newline is the recipe prefix character (a tab by
+default; @pxref{Special Variables}), then that character (and only
+that character) is removed.  Whitespace is never added to the recipe.
 
-For example, this makefile:
+For example, the recipe for the all target in this makefile:
 
 @example
 @group
@@ -3630,7 +3533,7 @@ all : ; @@echo 'hello \
 @end example
 
 @noindent
-will run one shell with a command script of:
+will invoke one shell with a command of:
 
 @example
 @group
@@ -3652,11 +3555,12 @@ hello     world
 @end example
 
 @noindent
-Notice how the backslash/newline pair was removed inside the string quoted
-with double quotes (@code{"..."}), but not from the string quoted with single
-quotes (@code{'...'}).  This is the way the default shell (@file{/bin/sh})
-handles backslash/newline pairs.  If you specify a different shell in your
-makefiles it may treat them differently.
+Notice how the backslash/newline pair was removed inside the string
+quoted with double quotes (@code{"@dots{}"}), but not from the string
+quoted with single quotes (@code{'@dots{}'}).  This is the way the
+default shell (@file{/bin/sh}) handles backslash/newline pairs.  If
+you specify a different shell in your makefiles it may treat them
+differently.
 
 Sometimes you want to split a long line inside of single quotes, but
 you don't want the backslash-newline to appear in the quoted content.
@@ -3664,7 +3568,7 @@ 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
+@code{make} variable then use the variable in the recipe.  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:
@@ -3689,24 +3593,24 @@ hello world
 
 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
+a tighter correspondence between the variable and the recipe 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
+@node Variables in Recipes,  , Splitting Lines, Recipe Syntax
+@subsection Using Variables in Recipes
+@cindex variable references in recipes
+@cindex recipes, using variables in
 
-The other way in which @code{make} processes commands is by expanding
+The other way in which @code{make} processes recipes 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.
+recipes for targets which are not rebuilt are never expanded.
 
-Variable and function references in commands have identical syntax and
+Variable and function references in recipes 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
+recipe, 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
@@ -3744,20 +3648,20 @@ three
 @end group
 @end example
 
-@node Echoing, Execution, Command Syntax, Commands
-@section Command Echoing
-@cindex echoing of commands
+@node Echoing, Execution, Recipe Syntax, Recipes
+@section Recipe Echoing
+@cindex echoing of recipes
 @cindex silent operation
-@cindex @code{@@} (in commands)
-@cindex commands, echoing
-@cindex printing of commands
+@cindex @code{@@} (in recipes)
+@cindex recipes, echoing
+@cindex printing of recipes
 
-Normally @code{make} prints each command line before it is executed.
-We call this @dfn{echoing} because it gives the appearance that you
-are typing the commands yourself.
+Normally @code{make} prints each line of the recipe before it is
+executed.  We call this @dfn{echoing} because it gives the appearance
+that you are typing the lines yourself.
 
 When a line starts with @samp{@@}, the echoing of that line is suppressed.
-The @samp{@@} is discarded before the command is passed to the shell.
+The @samp{@@} is discarded before the line is passed to the shell.
 Typically you would use this for a command whose only effect is to print
 something, such as an @code{echo} command to indicate progress through
 the makefile:
@@ -3770,46 +3674,46 @@ the makefile:
 @cindex @code{--just-print}
 @cindex @code{--dry-run}
 @cindex @code{--recon}
-When @code{make} is given the flag @samp{-n} or @samp{--just-print}
-it only echoes commands, it won't execute them.  @xref{Options Summary,
-,Summary of Options}.  In this case and only this case, even the
-commands starting with @samp{@@} are printed.  This flag is useful for
-finding out which commands @code{make} thinks are necessary without
-actually doing them.
+When @code{make} is given the flag @samp{-n} or @samp{--just-print} it
+only echoes most recipes, without executing them.  @xref{Options
+Summary, ,Summary of Options}.  In this case even the recipe lines
+starting with @samp{@@} are printed.  This flag is useful for finding
+out which recipes @code{make} thinks are necessary without actually
+doing them.
 
 @cindex @code{-s}
 @cindex @code{--silent}
 @cindex @code{--quiet}
 @findex .SILENT
 The @samp{-s} or @samp{--silent}
-flag to @code{make} prevents all echoing, as if all commands
+flag to @code{make} prevents all echoing, as if all recipes
 started with @samp{@@}.  A rule in the makefile for the special target
 @code{.SILENT} without prerequisites has the same effect
 (@pxref{Special Targets, ,Special Built-in Target Names}).
 @code{.SILENT} is essentially obsolete since @samp{@@} is more flexible.@refill
 
-@node Execution, Parallel, Echoing, Commands
-@section Command Execution
-@cindex commands, execution
-@cindex execution, of commands
-@cindex shell command, execution
-@vindex @code{SHELL} @r{(command execution)}
+@node Execution, Parallel, Echoing, Recipes
+@section Recipe Execution
+@cindex recipe, execution
+@cindex execution, of recipes
+@vindex @code{SHELL} @r{(recipe 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.)
+When it is time to execute recipes to update a target, they are
+executed by invoking a new subshell for each line of the recipe,
+unless the @code{.ONESHELL} special target is in effect
+(@pxref{One Shell, ,Using One Shell})  (In practice, @code{make} may
+take shortcuts that do not affect the results.)
 
 @cindex @code{cd} (shell command)
-@cindex shell variables, setting in commands
-@cindex commands setting shell variables
+@cindex shell variables, setting in recipes
+@cindex recipes 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
+each process will not affect the following lines in the recipe.@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
+changing it @emph{will} affect the following recipe 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
+put both statements in a single recipe line.  Then @code{make} will
 invoke one shell to run the entire line, and the shell will execute
 the statements in sequence.  For example:
 
@@ -3826,19 +3730,126 @@ problems (in this case it would certainly cause @file{../foo} to be
 truncated, at least).
 
 @menu
+* One Shell::                   One shell for all lines in a recipe
 * Choosing the Shell::          How @code{make} chooses the shell used
-                                  to run commands.
+                                  to run recipes.
 @end menu
 
-@node Choosing the Shell,  , Execution, Execution
+@node One Shell, Choosing the Shell, Execution, Execution
+@subsection Using One Shell
+@cindex recipe lines, single shell
+@cindex @code{.ONESHELL}, use of
+@findex .ONESHELL
+
+Sometimes you would prefer that all the lines in the recipe be passed
+to a single invocation of the shell.  There are generally two
+situations where this is useful: first, it can improve performance in
+makefiles where recipes consist of many command lines, by avoiding
+extra processes.  Second, you might want newlines to be included in
+your recipe command (for example perhaps you are using a very
+different interpreter as your @code{SHELL}).  If the @code{.ONESHELL}
+special target appears anywhere in the makefile then @emph{all}
+recipe lines for each target will be provided to a single invocation
+of the shell.  Newlines between recipe lines will be preserved.  For
+example:
+
+@example
+.ONESHELL:
+foo : bar/lose
+        cd $(@@D)
+        gobble $(@@F) > ../$@@
+@end example
+
+@noindent
+would now work as expected even though the commands are on different
+recipe lines.
+
+If @code{.ONESHELL} is provided, then only the first line of the
+recipe will be checked for the special prefix characters (@samp{@@},
+@samp{-}, and @samp{+}).  Subsequent lines will include the special
+characters in the recipe line when the @code{SHELL} is invoked.  If
+you want your recipe to start with one of these special characters
+you'll need to arrange for them to not be the first characters on the
+first line, perhaps by adding a comment or similar.  For example, this
+would be a syntax error in Perl because the first @samp{@@} is removed
+by make:
+
+@example
+.ONESHELL:
+SHELL = /usr/bin/perl
+.SHELLFLAGS = -e
+show :
+        @@f = qw(a b c);
+        print "@@f\n";
+@end example
+
+@noindent
+However, either of these alternatives would work properly:
+
+@example
+.ONESHELL:
+SHELL = /usr/bin/perl
+.SHELLFLAGS = -e
+show :
+        # Make sure "@@" is not the first character on the first line
+        @@f = qw(a b c);
+        print "@@f\n";
+@end example
+
+@noindent
+or
+
+@example
+.ONESHELL:
+SHELL = /usr/bin/perl
+.SHELLFLAGS = -e
+show :
+        my @@f = qw(a b c);
+        print "@@f\n";
+@end example
+
+As a special feature, if @code{SHELL} is determined to be a
+POSIX-style shell, the special prefix characters in ``internal''
+recipe lines will @emph{removed} before the recipe is processed.  This
+feature is intended to allow existing makefiles to add the
+@code{.ONESHELL} special target and still run properly without
+extensive modifications.  Since the special prefix characters are not
+legal at the beginning of a line in a POSIX shell script this is not a
+loss in functionality.  For example, this works as expected:
+
+@example
+.ONESHELL:
+foo : bar/lose
+        @@cd $(@@D)
+        @@gobble $(@@F) > ../$@@
+@end example
+
+Even with this special feature, however, makefiles with
+@code{.ONESHELL} will behave differently in ways that could be
+noticeable.  For example, normally if any line in the recipe fails,
+that causes the rule to fail and no more recipe lines are processed.
+Under @code{.ONESHELL} a failure of any but the final recipe line will
+not be noticed by @code{make}.  You can modify @code{.SHELLFLAGS} to
+add the @code{-e} option to the shell which will cause any failure
+anywhere in the command line to cause the shell to fail, but this
+could itself cause your recipe to behave differently.  Ultimately you
+may need to harden your recipe lines to allow them to work with
+@code{.ONESHELL}.
+
+@node Choosing the Shell,  , One Shell, Execution
 @subsection Choosing the Shell
 @cindex shell, choosing the
 @cindex @code{SHELL}, value of
+@cindex @code{.SHELLFLAGS}, value of
 
 @vindex SHELL
+@vindex .SHELLFLAGS
 The program used as the shell is taken from the variable @code{SHELL}.
 If this variable is not set in your makefile, the program
-@file{/bin/sh} is used as the shell.
+@file{/bin/sh} is used as the shell.  The argument(s) passed to the
+shell are taken from the variable @code{.SHELLFLAGS}.  The default
+value of @code{.SHELLFLAGS} is @code{-c} normally, or @code{-ec} in
+POSIX-conforming mode.
 
 @cindex environment, @code{SHELL} in
 Unlike most variables, the variable @code{SHELL} is never set from the
@@ -3849,12 +3860,12 @@ 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.
+is @emph{not} exported in the environment to recipe lines 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 recipe lines.
 
 @vindex @code{MAKESHELL} @r{(MS-DOS alternative to @code{SHELL})}
 However, on MS-DOS and MS-Windows the value of @code{SHELL} in the
@@ -3929,65 +3940,70 @@ 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}.
 
-@node Parallel, Errors, Execution, Commands
+@vindex SHELL
+@vindex .SHELLFLAGS
+
+@node Parallel, Errors, Execution, Recipes
 @section Parallel Execution
-@cindex commands, execution in parallel
+@cindex recipes, execution in parallel
 @cindex parallel execution
 @cindex execution, in parallel
 @cindex job slots
 @cindex @code{-j}
 @cindex @code{--jobs}
 
-GNU @code{make} knows how to execute several commands at once.
-Normally, @code{make} will execute only one command at a time, waiting
+GNU @code{make} knows how to execute several recipes at once.
+Normally, @code{make} will execute only one recipe at a time, waiting
 for it to finish before executing the next.  However, the @samp{-j} or
-@samp{--jobs} option tells @code{make} to execute many commands
-simultaneously.@refill
+@samp{--jobs} option tells @code{make} to execute many recipes
+simultaneously.  You can inhibit parallelism in a particular makefile
+with the @code{.NOTPARALLEL} pseudo-target (@pxref{Special
+Targets,Special Built-in Target Names}).@refill
 
 On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
 support multi-processing.
 
 If the @samp{-j} option is followed by an integer, this is the number of
-commands to execute at once; this is called the number of @dfn{job slots}.
+recipes to execute at once; this is called the number of @dfn{job slots}.
 If there is nothing looking like an integer after the @samp{-j} option,
 there is no limit on the number of job slots.  The default number of job
 slots is one, which means serial execution (one thing at a time).
 
-One unpleasant consequence of running several commands simultaneously is
-that output generated by the commands appears whenever each command
-sends it, so messages from different commands may be interspersed.
+One unpleasant consequence of running several recipes simultaneously is
+that output generated by the recipes appears whenever each recipe
+sends it, so messages from different recipes may be interspersed.
 
 Another problem is that two processes cannot both take input from the
-same device; so to make sure that only one command tries to take input
+same device; so to make sure that only one recipe tries to take input
 from the terminal at once, @code{make} will invalidate the standard
-input streams of all but one running command.  This means that
+input streams of all but one running recipe.  This means that
 attempting to read from standard input will usually be a fatal error (a
 @samp{Broken pipe} signal) for most child processes if there are
 several.
 @cindex broken pipe
 @cindex standard input
 
-It is unpredictable which command will have a valid standard input stream
+It is unpredictable which recipe will have a valid standard input stream
 (which will come from the terminal, or wherever you redirect the standard
-input of @code{make}).  The first command run will always get it first, and
-the first command started after that one finishes will get it next, and so
+input of @code{make}).  The first recipe run will always get it first, and
+the first recipe started after that one finishes will get it next, and so
 on.
 
 We will change how this aspect of @code{make} works if we find a better
-alternative.  In the mean time, you should not rely on any command using
+alternative.  In the mean time, you should not rely on any recipe using
 standard input at all if you are using the parallel execution feature; but
 if you are not using this feature, then standard input works normally in
-all commands.
+all recipes.
 
 Finally, handling recursive @code{make} invocations raises issues.  For
 more information on this, see
 @ref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
 
-If a command fails (is killed by a signal or exits with a nonzero
-status), and errors are not ignored for that command
-(@pxref{Errors, ,Errors in Commands}),
-the remaining command lines to remake the same target will not be run.
-If a command fails and the @samp{-k} or @samp{--keep-going}
+If a recipe fails (is killed by a signal or exits with a nonzero
+status), and errors are not ignored for that recipe
+(@pxref{Errors, ,Errors in Recipes}),
+the remaining recipe lines to remake the same target will not be run.
+If a recipe fails and the @samp{-k} or @samp{--keep-going}
 option was not given
 (@pxref{Options Summary, ,Summary of Options}),
 @code{make} aborts execution.  If make
@@ -4023,29 +4039,29 @@ average goes below that limit, or until all the other jobs finish.
 
 By default, there is no load limit.
 
-@node Errors, Interrupts, Parallel, Commands
-@section Errors in Commands
-@cindex errors (in commands)
-@cindex commands, errors in
+@node Errors, Interrupts, Parallel, Recipes
+@section Errors in Recipes
+@cindex errors (in recipes)
+@cindex recipes, errors in
 @cindex exit status (errors)
 
-After each shell command returns, @code{make} looks at its exit status.
-If the command completed successfully, the next command line is executed
-in a new shell; after the last command line is finished, the rule is
-finished.
+After each shell invocation returns, @code{make} looks at its exit
+status.  If the shell completed successfully (the exit status is
+zero), the next line in the recipe is executed in a new shell; after
+the last line is finished, the rule is finished.
 
 If there is an error (the exit status is nonzero), @code{make} gives up on
 the current rule, and perhaps on all rules.
 
-Sometimes the failure of a certain command does not indicate a problem.
+Sometimes the failure of a certain recipe line does not indicate a problem.
 For example, you may use the @code{mkdir} command to ensure that a
 directory exists.  If the directory already exists, @code{mkdir} will
 report an error, but you probably want @code{make} to continue regardless.
 
-@cindex @code{-} (in commands)
-To ignore errors in a command line, write a @samp{-} at the beginning of
-the line's text (after the initial tab).  The @samp{-} is discarded before
-the command is passed to the shell for execution.
+@cindex @code{-} (in recipes)
+To ignore errors in a recipe line, write a @samp{-} at the beginning
+of the line's text (after the initial tab).  The @samp{-} is discarded
+before the line is passed to the shell for execution.
 
 For example,
 
@@ -4058,13 +4074,14 @@ clean:
 @cindex @code{rm} (shell command)
 
 @noindent
-This causes @code{rm} to continue even if it is unable to remove a file.
+This causes @code{make} to continue even if @code{rm} is unable to
+remove a file.
 
 @cindex @code{-i}
 @cindex @code{--ignore-errors}
 @findex .IGNORE
 When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
-flag, errors are ignored in all commands of all rules.  A rule in the
+flag, errors are ignored in all recipes of all rules.  A rule in the
 makefile for the special target @code{.IGNORE} has the same effect, if
 there are no prerequisites.  These ways of ignoring errors are obsolete
 because @samp{-} is more flexible.
@@ -4072,12 +4089,12 @@ because @samp{-} is more flexible.
 When errors are to be ignored, because of either a @samp{-} or the
 @samp{-i} flag, @code{make} treats an error return just like success,
 except that it prints out a message that tells you the status code
-the command exited with, and says that the error has been ignored.
+the shell exited with, and says that the error has been ignored.
 
 When an error happens that @code{make} has not been told to ignore,
 it implies that the current target cannot be correctly remade, and neither
 can any other that depends on it either directly or indirectly.  No further
-commands will be executed for these targets, since their preconditions
+recipes will be executed for these targets, since their preconditions
 have not been achieved.
 
 
@@ -4106,19 +4123,19 @@ default.
 @cindex deletion of target files
 @cindex removal of target files
 @cindex target, deleting on error
-Usually when a command fails, if it has changed the target file at all,
+Usually when a recipe line fails, if it has changed the target file at all,
 the file is corrupted and cannot be used---or at least it is not
 completely updated.  Yet the file's time stamp says that it is now up to
 date, so the next time @code{make} runs, it will not try to update that
-file.  The situation is just the same as when the command is killed by a
+file.  The situation is just the same as when the shell is killed by a
 signal; @pxref{Interrupts}.  So generally the right thing to do is to
-delete the target file if the command fails after beginning to change
+delete the target file if the recipe fails after beginning to change
 the file.  @code{make} will do this if @code{.DELETE_ON_ERROR} appears
 as a target.  This is almost always what you want @code{make} to do, but
 it is not historical practice; so for compatibility, you must explicitly
 request it.
 
-@node Interrupts, Recursion, Errors, Commands
+@node Interrupts, Recursion, Errors, Recipes
 @section Interrupting or Killing @code{make}
 @cindex interrupt
 @cindex signal
@@ -4127,8 +4144,8 @@ request it.
 @cindex target, deleting on interrupt
 @cindex killing (interruption)
 
-If @code{make} gets a fatal signal while a command is executing, it may
-delete the target file that the command was supposed to update.  This is
+If @code{make} gets a fatal signal while a shell is executing, it may
+delete the target file that the recipe was supposed to update.  This is
 done if the target file's last-modification time has changed since
 @code{make} first checked it.
 
@@ -4153,7 +4170,7 @@ target is updated in some atomic fashion, or exists only to record a
 modification-time (its contents do not matter), or must exist at all
 times to prevent other sorts of trouble.
 
-@node Recursion, Sequences, Interrupts, Commands
+@node Recursion, Canned Recipes, Interrupts, Recipes
 @section Recursive Use of @code{make}
 @cindex recursion
 @cindex subdirectories, recursion for
@@ -4223,45 +4240,45 @@ subsystem:
 @end example
 
 The value of this variable is the file name with which @code{make} was
-invoked.  If this file name was @file{/bin/make}, then the command executed
+invoked.  If this file name was @file{/bin/make}, then the recipe executed
 is @samp{cd subdir && /bin/make}.  If you use a special version of
 @code{make} to run the top-level makefile, the same special version will be
 executed for recursive invocations.
 @cindex @code{cd} (shell command)
 
-@cindex +, and commands
-As a special feature, using the variable @code{MAKE} in the commands of
+@cindex +, and recipes
+As a special feature, using the variable @code{MAKE} in the recipe of
 a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n}
 (@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option.
 Using the @code{MAKE} variable has the same effect as using a @samp{+}
-character at the beginning of the command line.  @xref{Instead of
-Execution, ,Instead of Executing the Commands}.  This special feature
+character at the beginning of the recipe line.  @xref{Instead of
+Execution, ,Instead of Executing the Recipes}.  This special feature
 is only enabled if the @code{MAKE} variable appears directly in the
-command script: it does not apply if the @code{MAKE} variable is
-referenced through expansion of another variable.  In the latter case
-you must use the @samp{+} token to get these special effects.@refill
+recipe: it does not apply if the @code{MAKE} variable is referenced
+through expansion of another variable.  In the latter case you must
+use the @samp{+} token to get these special effects.@refill
 
 Consider the command @samp{make -t} in the above example.  (The
 @samp{-t} option marks targets as up to date without actually running
-any commands; see @ref{Instead of Execution}.)  Following the usual
+any recipes; see @ref{Instead of Execution}.)  Following the usual
 definition of @samp{-t}, a @samp{make -t} command in the example would
 create a file named @file{subsystem} and do nothing else.  What you
-really want it to do is run @samp{@w{cd subdir &&} @w{make -t}}; but that would
-require executing the command, and @samp{-t} says not to execute
-commands.@refill
+really want it to do is run @samp{@w{cd subdir &&} @w{make -t}}; but
+that would require executing the recipe, and @samp{-t} says not to
+execute recipes.@refill
 @cindex @code{-t}, and recursion
 @cindex recursion, and @code{-t}
 @cindex @code{--touch}, and recursion
 
-The special feature makes this do what you want: whenever a command
+The special feature makes this do what you want: whenever a recipe
 line of a rule contains the variable @code{MAKE}, the flags @samp{-t},
-@samp{-n} and @samp{-q} do not apply to that line.  Command lines
+@samp{-n} and @samp{-q} do not apply to that line.  Recipe lines
 containing @code{MAKE} are executed normally despite the presence of a
-flag that causes most commands not to be run.  The usual
+flag that causes most recipes not to be run.  The usual
 @code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make}
 (@pxref{Options/Recursion, ,Communicating Options to a
 Sub-@code{make}}), so your request to touch the files, or print the
-commands, is propagated to the subsystem.@refill
+recipes, is propagated to the subsystem.@refill
 
 @node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion
 @subsection Communicating Variables to a Sub-@code{make}
@@ -4280,11 +4297,11 @@ override what is specified in the makefile used by the sub-@code{make}
 makefile unless you use the @samp{-e} switch (@pxref{Options Summary,
 ,Summary of Options}).@refill
 
-To pass down, or @dfn{export}, a variable, @code{make} adds the variable
-and its value to the environment for running each command.  The
-sub-@code{make}, in turn, uses the environment to initialize its table
-of variable values.  @xref{Environment, ,Variables from the
-Environment}.
+To pass down, or @dfn{export}, a variable, @code{make} adds the
+variable and its value to the environment for running each line of the
+recipe.  The sub-@code{make}, in turn, uses the environment to
+initialize its table of variable values.  @xref{Environment,
+,Variables from the Environment}.
 
 Except by explicit request, @code{make} exports a variable only if it
 is either defined in the environment initially or set on the command
@@ -4419,7 +4436,7 @@ Likewise, you can use @code{unexport} by itself to tell @code{make}
 behavior, you would only need to do this if @code{export} had been used
 by itself earlier (in an included makefile, perhaps).  You
 @strong{cannot} use @code{export} and @code{unexport} by themselves to
-have variables exported for some commands and not for others.  The last
+have variables exported for some recipes and not for others.  The last
 @code{export} or @code{unexport} directive that appears by itself
 determines the behavior for the entire run of @code{make}.@refill
 
@@ -4430,7 +4447,7 @@ is passed down from level to level.  This variable's value is a string
 which is the depth of the level as a decimal number.  The value is
 @samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make},
 @samp{2} for a sub-sub-@code{make}, and so on.  The incrementation
-happens when @code{make} sets up the environment for a command.@refill
+happens when @code{make} sets up the environment for a recipe.@refill
 
 The main use of @code{MAKELEVEL} is to test it in a conditional
 directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this
@@ -4499,7 +4516,7 @@ supports it (most any UNIX system will; others typically won't), the
 parent @code{make} and all the sub-@code{make}s will communicate to
 ensure that there are only @samp{N} jobs running at the same time
 between them all.  Note that any job that is marked recursive
-(@pxref{Instead of Execution, ,Instead of Executing the Commands})
+(@pxref{Instead of Execution, ,Instead of Executing Recipes})
 doesn't count against the total jobs (otherwise we could get @samp{N}
 sub-@code{make}s running and have no slots left over for any real work!)
 
@@ -4635,21 +4652,23 @@ automatically turn on @samp{-w} if you also use @samp{-s}, which says to
 be silent, or if you use @samp{--no-print-directory} to explicitly
 disable it.
 
-@node Sequences, Empty Commands, Recursion, Commands
-@section Defining Canned Command Sequences
+@node Canned Recipes, Empty Recipes, Recursion, Recipes
+@section Defining Canned Recipes
+@cindex canned recipes
+@cindex recipes, canned
 @cindex sequences of commands
 @cindex commands, sequences of
 
-When the same sequence of commands is useful in making various targets, you
-can define it as a canned sequence with the @code{define} directive, and
-refer to the canned sequence from the rules for those targets.  The canned
-sequence is actually a variable, so the name must not conflict with other
-variable names.
+When the same sequence of commands is useful in making various
+targets, you can define it as a canned sequence with the @code{define}
+directive, and refer to the canned sequence from the recipes for those
+targets.  The canned sequence is actually a variable, so the name must
+not conflict with other variable names.
 
-Here is an example of defining a canned sequence of commands:
+Here is an example of defining a canned recipe:
 
 @example
-define run-yacc
+define run-yacc =
 yacc $(firstword $^)
 mv y.tab.c $@@
 endef
@@ -4663,7 +4682,7 @@ commands.  The @code{define} directive does not expand variable references
 and function calls in the canned sequence; the @samp{$} characters,
 parentheses, variable names, and so on, all become part of the value of the
 variable you are defining.
-@xref{Defining, ,Defining Variables Verbatim},
+@xref{Multi-Line, ,Defining Multi-Line Variables},
 for a complete explanation of @code{define}.
 
 The first command in this example runs Yacc on the first prerequisite of
@@ -4671,7 +4690,7 @@ whichever rule uses the canned sequence.  The output file from Yacc is
 always named @file{y.tab.c}.  The second command moves the output to the
 rule's target file name.
 
-To use the canned sequence, substitute the variable into the commands of a
+To use the canned sequence, substitute the variable into the recipe of a
 rule.  You can substitute it like any other variable
 (@pxref{Reference, ,Basics of Variable References}).
 Because variables defined by @code{define} are recursively expanded
@@ -4695,16 +4714,16 @@ commands based on the file names involved
 @cindex @@, and @code{define}
 @cindex -, and @code{define}
 @cindex +, and @code{define}
-In command execution, each line of a canned sequence is treated just as
+In recipe execution, each line of a canned sequence is treated just as
 if the line appeared on its own in the rule, preceded by a tab.  In
 particular, @code{make} invokes a separate subshell for each line.  You
 can use the special prefix characters that affect command lines
 (@samp{@@}, @samp{-}, and @samp{+}) on each line of a canned sequence.
-@xref{Commands, ,Writing the Commands in Rules}.
+@xref{Recipes, ,Writing Recipes in Rules}.
 For example, using this canned sequence:
 
 @example
-define frobnicate
+define frobnicate =
 @@echo "frobnicating target $@@"
 frob-step-1 $< -o $@@-step-1
 frob-step-2 $@@-step-1 -o $@@
@@ -4713,9 +4732,9 @@ endef
 
 @noindent
 @code{make} will not echo the first line, the @code{echo} command.
-But it @emph{will} echo the following two command lines.
+But it @emph{will} echo the following two recipe lines.
 
-On the other hand, prefix characters on the command line that refers to
+On the other hand, prefix characters on the recipe line that refers to
 a canned sequence apply to every line in the sequence.  So the rule:
 
 @example
@@ -4724,16 +4743,16 @@ frob.out: frob.in
 @end example
 
 @noindent
-does not echo @emph{any} commands.
-(@xref{Echoing, ,Command Echoing}, for a full explanation of @samp{@@}.)
+does not echo @emph{any} recipe lines.
+(@xref{Echoing, ,Recipe Echoing}, for a full explanation of @samp{@@}.)
 
-@node Empty Commands,  , Sequences, Commands
-@section Using Empty Commands
-@cindex empty commands
-@cindex commands, empty
+@node Empty Recipes,  , Canned Recipes, Recipes
+@section Using Empty Recipes
+@cindex empty recipes
+@cindex recipes, empty
 
-It is sometimes useful to define commands which do nothing.  This is done
-simply by giving a command that consists of nothing but whitespace.  For
+It is sometimes useful to define recipes which do nothing.  This is done
+simply by giving a recipe that consists of nothing but whitespace.  For
 example:
 
 @example
@@ -4741,14 +4760,14 @@ target: ;
 @end example
 
 @noindent
-defines an empty command string for @file{target}.  You could also use a
-line beginning with a tab character to define an empty command string,
+defines an empty recipe for @file{target}.  You could also use a line
+beginning with a recipe prefix character to define an empty recipe,
 but this would be confusing because such a line looks empty.
 
-@findex .DEFAULT@r{, and empty commands}
-You may be wondering why you would want to define a command string that
+@findex .DEFAULT@r{, and empty recipes}
+You may be wondering why you would want to define a recipe that
 does nothing.  The only reason this is useful is to prevent a target
-from getting implicit commands (from implicit rules or the
+from getting implicit recipes (from implicit rules or the
 @code{.DEFAULT} special target; @pxref{Implicit Rules} and
 @pxref{Last Resort, ,Defining Last-Resort Default Rules}).@refill
 
@@ -4762,13 +4781,13 @@ stamp-foo: foo.in
 @end example
 @end ignore
 
-You may be inclined to define empty command strings for targets that are
+You may be inclined to define empty recipes for targets that are
 not actual files, but only exist so that their prerequisites can be
 remade.  However, this is not the best way to do that, because the
 prerequisites may not be remade properly if the target file actually does exist.
 @xref{Phony Targets, ,Phony Targets}, for a better way to do this.
 
-@node Using Variables, Conditionals, Commands, Top
+@node Using Variables, Conditionals, Recipes, Top
 @chapter How to Use Variables
 @cindex variable
 @cindex value
@@ -4777,15 +4796,15 @@ prerequisites may not be remade properly if the target file actually does exist.
 
 A @dfn{variable} is a name defined in a makefile to represent a string
 of text, called the variable's @dfn{value}.  These values are
-substituted by explicit request into targets, prerequisites, commands,
+substituted by explicit request into targets, prerequisites, recipes,
 and other parts of the makefile.  (In some other versions of @code{make},
 variables are called @dfn{macros}.)
 @cindex macro
 
 Variables and functions in all parts of a makefile are expanded when
-read, except for the shell commands in rules, the right-hand sides of
-variable definitions using @samp{=}, and the bodies of variable
-definitions using the @code{define} directive.@refill
+read, except for in recipes, the right-hand sides of variable
+definitions using @samp{=}, and the bodies of variable definitions
+using the @code{define} directive.@refill
 
 Variables can represent lists of file names, options to pass to compilers,
 programs to run, directories to look in for source files, directories to
@@ -4822,13 +4841,17 @@ they have particular specialized uses.  @xref{Automatic Variables}.
                                   of a variable.
 * Override Directive::          How to set a variable in the makefile even if
                                   the user has set it with a command argument.
-* Defining::                    An alternate way to set a variable
-                                  to a verbatim string.
+* Multi-Line::                  An alternate way to set a variable
+                                  to a multi-line string.
+* Undefine Directive::          How to undefine a variable so that it appears
+                                  as if it was never set.
 * Environment::                 Variable values can come from the environment.
 * Target-specific::             Variable values can be defined on a per-target
                                   basis.
 * Pattern-specific::            Target-specific variable values can be applied
                                   to a group of targets that match a pattern.
+* Suppressing Inheritance::     Suppress inheritance of variables.
+* Special Variables::           Variables with special meaning or behavior.
 @end menu
 
 @node Reference, Flavors, Using Variables, Using Variables
@@ -4842,10 +4865,10 @@ To substitute a variable's value, write a dollar sign followed by the name
 of the variable in parentheses or braces: either @samp{$(foo)} or
 @samp{$@{foo@}} is a valid reference to the variable @code{foo}.  This
 special significance of @samp{$} is why you must write @samp{$$} to have
-the effect of a single dollar sign in a file name or command.
+the effect of a single dollar sign in a file name or recipe.
 
 Variable references can be used in any context: targets, prerequisites,
-commands, most directives, and new variable values.  Here is an
+recipes, most directives, and new variable values.  Here is an
 example of a common case, where a variable holds the names of all the
 object files in a program:
 
@@ -4897,7 +4920,7 @@ distinguished in how they are defined and in what they do when expanded.
 The first flavor of variable is a @dfn{recursively expanded} variable.
 Variables of this sort are defined by lines using @samp{=}
 (@pxref{Setting, ,Setting Variables}) or by the @code{define} directive
-(@pxref{Defining, ,Defining Variables Verbatim}).  The value you specify
+(@pxref{Multi-Line, ,Defining Multi-Line Variables}).  The value you specify
 is installed verbatim; if it contains references to other variables,
 these references are expanded whenever this variable is substituted (in
 the course of expanding some other string).  When this happens, it is
@@ -4927,7 +4950,7 @@ include_dirs = -Ifoo -Ibar
 @end example
 
 @noindent
-will do what was intended: when @samp{CFLAGS} is expanded in a command,
+will do what was intended: when @samp{CFLAGS} is expanded in a recipe,
 it will expand to @samp{-Ifoo -Ibar -O}.  A major disadvantage is that you
 cannot append something on the end of a variable, as in
 
@@ -5003,7 +5026,7 @@ endif
 
 @noindent
 An advantage of this use of @samp{:=} is that a typical
-`descend into a directory' command then looks like this:
+`descend into a directory' recipe then looks like this:
 
 @example
 @group
@@ -5324,7 +5347,7 @@ variable assignment, or in a @code{define} directive, as in:
 @example
 dir = foo
 $(dir)_sources := $(wildcard $(dir)/*.c)
-define $(dir)_print
+define $(dir)_print =
 lpr $($(dir)_sources)
 endef
 @end example
@@ -5353,7 +5376,7 @@ You can specify an overriding value when you run @code{make}.
 @item
 You can specify a value in the makefile, either
 with an assignment (@pxref{Setting, ,Setting Variables}) or with a
-verbatim definition (@pxref{Defining, ,Defining Variables Verbatim}).@refill
+verbatim definition (@pxref{Multi-Line, ,Defining Multi-Line Variables}).@refill
 
 @item
 Variables in the environment become @code{make} variables.
@@ -5561,7 +5584,7 @@ the reference to @code{includes}, so if that variable gets defined at
 any later point, a reference like @samp{$(CFLAGS)} still uses its
 value.
 
-@node Override Directive, Defining, Appending, Using Variables
+@node Override Directive, Multi-Line, Appending, Using Variables
 @section The @code{override} Directive
 @findex override
 @cindex overriding with @code{override}
@@ -5594,6 +5617,11 @@ override @var{variable} += @var{more text}
 @noindent
 @xref{Appending, ,Appending More Text to Variables}.
 
+Variable assignments marked with the @code{override} flag have a
+higher priority than all other assignments, except another
+@code{override}.  Subsequent assignments or appends to this variable
+which are not marked @code{override} will be ignored.
+
 The @code{override} directive was not invented for escalation in the war
 between makefiles and command arguments.  It was invented so you can alter
 and add to values that the user specifies with command arguments.
@@ -5611,7 +5639,7 @@ You can also use @code{override} directives with @code{define} directives.
 This is done as you might expect:
 
 @example
-override define foo
+override define foo =
 bar
 endef
 @end example
@@ -5621,43 +5649,52 @@ endef
 See the next section for information about @code{define}.
 @end iftex
 @ifnottex
-@xref{Defining, ,Defining Variables Verbatim}.
+@xref{Multi-Line, ,Defining Multi-Line Variables}.
 @end ifnottex
 
-@node Defining, Environment, Override Directive, Using Variables
-@section Defining Variables Verbatim
+@node Multi-Line, Undefine Directive, Override Directive, Using Variables
+@section Defining Multi-Line Variables
 @findex define
 @findex endef
+@cindex multi-line variable definition
+@cindex variables, multi-line
 @cindex verbatim variable definition
 @cindex defining variables verbatim
 @cindex variables, defining verbatim
 
 Another way to set the value of a variable is to use the @code{define}
 directive.  This directive has an unusual syntax which allows newline
-characters to be included in the value, which is convenient for defining
-both canned sequences of commands
-(@pxref{Sequences, ,Defining Canned Command Sequences}), and also
-sections of makefile syntax to use with @code{eval} (@pxref{Eval Function}).
-
-The @code{define} directive is followed on the same line by the name of the
-variable and nothing more.  The value to give the variable appears on the
-following lines.  The end of the value is marked by a line containing just
-the word @code{endef}.  Aside from this difference in syntax, @code{define}
-works just like @samp{=}: it creates a recursively-expanded variable
-(@pxref{Flavors, ,The Two Flavors of Variables}).
-The variable name may contain function and variable references, which
-are expanded when the directive is read to find the actual variable name
+characters to be included in the value, which is convenient for
+defining both canned sequences of commands (@pxref{Canned Recipes,
+,Defining Canned Recipes}), and also sections of makefile syntax to
+use with @code{eval} (@pxref{Eval Function}).@refill
+
+The @code{define} directive is followed on the same line by the name
+of the variable being defined and an (optional) assignment operator,
+and nothing more.  The value to give the variable appears on the
+following lines.  The end of the value is marked by a line containing
+just the word @code{endef}.  Aside from this difference in syntax,
+@code{define} works just like any other variable definition.  The
+variable name may contain function and variable references, which are
+expanded when the directive is read to find the actual variable name
 to use.
 
+You may omit the variable assignment operator if you prefer.  If
+omitted, @code{make} assumes it to be @samp{=} and creates a
+recursively-expanded variable (@pxref{Flavors, ,The Two Flavors of Variables}).
+When using a @samp{+=} operator, the value is appended to the previous
+value as with any other append operation: with a single space
+separating the old and new values.
+
 You may nest @code{define} directives: @code{make} will keep track of
 nested directives and report an error if they are not all properly
-closed with @code{endef}.  Note that lines beginning with tab
-characters are considered part of a command script, so any
-@code{define} or @code{endef} strings appearing on such a line will
-not be considered @code{make} operators.
+closed with @code{endef}.  Note that lines beginning with the recipe
+prefix character are considered part of a recipe, so any @code{define}
+or @code{endef} strings appearing on such a line will not be
+considered @code{make} directives.
 
 @example
-define two-lines
+define two-lines =
 echo foo
 echo $(bar)
 endef
@@ -5669,8 +5706,8 @@ part of the variable's value (except for the final newline which precedes
 the @code{endef} and is not considered part of the value).@refill
 
 @need 800
-When used in a command script, the previous example is functionally
-equivalent to this:
+When used in a recipe, the previous example is functionally equivalent
+to this:
 
 @example
 two-lines = echo foo; echo $(bar)
@@ -5680,14 +5717,14 @@ two-lines = echo foo; echo $(bar)
 since two commands separated by semicolon behave much like two separate
 shell commands.  However, note that using two separate lines means
 @code{make} will invoke the shell twice, running an independent subshell
-for each line.  @xref{Execution, ,Command Execution}.
+for each line.  @xref{Execution, ,Recipe Execution}.
 
 If you want variable definitions made with @code{define} to take
 precedence over command-line variable definitions, you can use the
 @code{override} directive together with @code{define}:
 
 @example
-override define two-lines
+override define two-lines =
 foo
 $(bar)
 endef
@@ -5696,7 +5733,42 @@ endef
 @noindent
 @xref{Override Directive, ,The @code{override} Directive}.
 
-@node Environment, Target-specific, Defining, Using Variables
+@node Undefine Directive, Environment, Multi-Line, Using Variables
+@section Undefining Variables
+@findex undefine
+@cindex undefining variable
+
+If you want to clear a variable, setting its value to empty is usually
+sufficient. Expanding such a variable will yield the same result (empty
+string) regardless of whether it was set or not. However, if you are
+using the @code{flavor} (@pxref{Flavor Function}) and
+@code{origin} (@pxref{Origin Function}) functions, there is a difference
+between a variable that was never set and a variable with an empty value.
+In such situations you may want to use the @code{undefine} directive to
+make a variable appear as if it was never set. For example:
+
+@example
+foo := foo
+bar = bar
+
+undefine foo
+undefine bar
+
+$(info $(origin foo))
+$(info $(flavor bar))
+@end example
+
+This example will print ``undefined'' for both variables.
+
+If you want to undefine a command-line variable definition, you can use
+the @code{override} directive together with @code{undefine}, similar to
+how this is done for variable definitions:
+
+@example
+override undefine CFLAGS
+@end example
+
+@node Environment, Target-specific, Undefine Directive, Using Variables
 @section Variables from the Environment
 
 @cindex variables, environment
@@ -5717,8 +5789,8 @@ because you know that no makefile will use them for other things.  (Note
 this is not totally reliable; some makefiles set @code{CFLAGS} explicitly
 and therefore are not affected by the value in the environment.)
 
-When @code{make} runs a command script, variables defined in the
-makefile are placed into the environment of that command.  This allows
+When @code{make} runs a recipe, variables defined in the
+makefile are placed into the environment of each shell.  This allows
 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
@@ -5754,7 +5826,7 @@ The other exception is @dfn{target-specific variable values}.  This
 feature allows you to define different values for the same variable,
 based on the target that @code{make} is currently building.  As with
 automatic variables, these values are only available within the context
-of a target's command script (and in other target-specific assignments).
+of a target's recipe (and in other target-specific assignments).
 
 Set a target-specific variable value like this:
 
@@ -5762,22 +5834,12 @@ Set a target-specific variable value like this:
 @var{target} @dots{} : @var{variable-assignment}
 @end example
 
-@noindent
-or like this:
-
-@example
-@var{target} @dots{} : override @var{variable-assignment}
-@end example
+Target-specific variable assignments can be prefixed with any or all of the
+special keywords @code{export}, @code{override}, or @code{private};
+these apply their normal behavior to this instance of the variable only.
 
-@noindent
-or like this:
-
-@example
-@var{target} @dots{} : export @var{variable-assignment}
-@end example
-
-Multiple @var{target} values create a target-specific variable value for
-each member of the target list individually.
+Multiple @var{target} values create a target-specific variable value for
+each member of the target list individually.
 
 The @var{variable-assignment} can be any valid form of assignment;
 recursive (@samp{=}), static (@samp{:=}), appending (@samp{+=}), or
@@ -5789,7 +5851,7 @@ any ``global'' value: the two variables do not have to have the same
 flavor (recursive vs.@: static).
 
 Target-specific variables have the same priority as any other makefile
-variable.  Variables provided on the command-line (and in the
+variable.  Variables provided on the command line (and in the
 environment if the @samp{-e} option is in force) will take precedence.
 Specifying the @code{override} directive will allow the target-specific
 variable value to be preferred.
@@ -5807,11 +5869,10 @@ prog : prog.o foo.o bar.o
 @end example
 
 @noindent
-will set @code{CFLAGS} to @samp{-g} in the command script for
-@file{prog}, but it will also set @code{CFLAGS} to @samp{-g} in the
-command scripts that create @file{prog.o}, @file{foo.o}, and
-@file{bar.o}, and any command scripts which create their
-prerequisites.
+will set @code{CFLAGS} to @samp{-g} in the recipe for @file{prog}, but
+it will also set @code{CFLAGS} to @samp{-g} in the recipes that create
+@file{prog.o}, @file{foo.o}, and @file{bar.o}, and any recipes which
+create their prerequisites.
 
 Be aware that a given prerequisite will only be built once per
 invocation of make, at most.  If the same file is a prerequisite of
@@ -5821,7 +5882,7 @@ will cause that prerequisite to be built and the prerequisite will
 inherit the target-specific value from the first target.  It will
 ignore the target-specific values from any other targets.
 
-@node Pattern-specific,  , Target-specific, Using Variables
+@node Pattern-specific, Suppressing Inheritance, Target-specific, Using Variables
 @section Pattern-specific Variable Values
 @cindex pattern-specific variables
 @cindex variables, pattern-specific
@@ -5830,31 +5891,17 @@ In addition to target-specific variable values
 (@pxref{Target-specific, ,Target-specific Variable Values}), GNU
 @code{make} supports pattern-specific variable values.  In this form,
 the variable is defined for any target that matches the pattern
-specified.  If a target matches more than one pattern, all the
-matching pattern-specific variables are interpreted in the order in
-which they were defined in the makefile, and collected together into
-one set.  Variables defined in this way are searched after any
-target-specific variables defined explicitly for that target, and
-before target-specific variables defined for the parent target.
+specified.
 
 Set a pattern-specific variable value like this:
 
 @example
 @var{pattern} @dots{} : @var{variable-assignment}
 @end example
-
-@noindent
-or like this:
-
-@example
-@var{pattern} @dots{} : override @var{variable-assignment}
-@end example
-
-@noindent
 where @var{pattern} is a %-pattern.  As with target-specific variable
 values, multiple @var{pattern} values create a pattern-specific variable
 value for each pattern individually.  The @var{variable-assignment} can
-be any valid form of assignment.  Any command-line variable setting will
+be any valid form of assignment.  Any command line variable setting will
 take precedence, unless @code{override} is specified.
 
 For example:
@@ -5867,16 +5914,262 @@ For example:
 will assign @code{CFLAGS} the value of @samp{-O} for all targets
 matching the pattern @code{%.o}.
 
+If a target matches more than one pattern, the matching pattern-specific
+variables with longer stems are interpreted first. This results in more
+specific variables taking precedence over the more generic ones, for
+example:
+
+@example
+%.o: %.c
+        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
+
+lib/%.o: CFLAGS := -fPIC -g
+%.o: CFLAGS := -g
+
+all: foo.o lib/bar.o
+@end example
+
+In this example the first definition of the @code{CFLAGS} variable
+will be used to update @file{lib/bar.o} even though the second one
+also applies to this target. Pattern-specific variables which result
+in the same stem length are considered in the order in which they
+were defined in the makefile.
+
+Pattern-specific variables are searched after any target-specific
+variables defined explicitly for that target, and before target-specific
+variables defined for the parent target.
+
+@node Suppressing Inheritance, Special Variables, Pattern-specific, Using Variables
+@section Suppressing Inheritance
+@findex private
+@cindex suppressing inheritance
+@cindex inheritance, suppressing
+
+As described in previous sections, @code{make} variables are inherited
+by prerequisites.  This capability allows you to modify the behavior
+of a prerequisite based on which targets caused it to be rebuilt.  For
+example, you might set a target-specific variable on a @code{debug}
+target, then running @samp{make debug} will cause that variable to be
+inherited by all prerequisites of @code{debug}, while just running
+@samp{make all} (for example) would not have that assignment.
+
+Sometimes, however, you may not want a variable to be inherited.  For
+these situations, @code{make} provides the @code{private} modifier.
+Although this modifier can be used with any variable assignment, it
+makes the most sense with target- and pattern-specific variables.  Any
+variable marked @code{private} will be visible to its local target but
+will not be inherited by prerequisites of that target.  A global
+variable marked @code{private} will be visible in the global scope but
+will not be inherited by any target, and hence will not be visible
+in any recipe.
+
+As an example, consider this makefile:
+@example
+EXTRA_CFLAGS =
+
+prog: private EXTRA_CFLAGS = -L/usr/local/lib
+prog: a.o b.o
+@end example
+
+Due to the @code{private} modifier, @code{a.o} and @code{b.o} will not
+inherit the @code{EXTRA_CFLAGS} variable assignment from the
+@code{progs} target.
+
+@node Special Variables,  , Suppressing Inheritance, Using Variables
+@comment  node-name,  next,  previous,  up
+@section Other Special Variables
+@cindex makefiles, and special variables
+@cindex special variables
+
+GNU @code{make} supports some variables that have special properties.
+
+@table @code
+
+@vindex MAKEFILE_LIST @r{(list of parsed makefiles)}
+@cindex makefiles, and @code{MAKEFILE_LIST} variable
+@cindex including (@code{MAKEFILE_LIST} variable)
+@item MAKEFILE_LIST
+Contains the name of each makefile that is parsed by @code{make}, in
+the order in which it was parsed.  The name is appended just
+before @code{make} begins to parse the makefile.  Thus, if the first
+thing a makefile does is examine the last word in this variable, it
+will be the name of the current makefile.  Once the current makefile
+has used @code{include}, however, the last word will be the
+just-included makefile.
+
+If a makefile named @code{Makefile} has this content:
+
+@example
+@group
+name1 := $(lastword $(MAKEFILE_LIST))
+
+include inc.mk
+
+name2 := $(lastword $(MAKEFILE_LIST))
+
+all:
+        @@echo name1 = $(name1)
+        @@echo name2 = $(name2)
+@end group
+@end example
+
+@noindent
+then you would expect to see this output:
+
+@example
+@group
+name1 = Makefile
+name2 = inc.mk
+@end group
+@end example
+
+@vindex .DEFAULT_GOAL @r{(define default goal)}
+@item .DEFAULT_GOAL
+Sets the default goal to be used if no targets were specified on the
+command line (@pxref{Goals, , Arguments to Specify the Goals}).  The
+@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
+example illustrates these cases:
+
+@example
+@group
+# 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
+@end group
+@end example
+
+This makefile prints:
+
+@example
+@group
+no default goal is set
+default goal is foo
+default goal is bar
+foo
+@end group
+@end example
+
+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 .RECIPEPREFIX @r{(change the recipe prefix character)}
+@item .RECIPEPREFIX
+The first character of the value of this variable is used as the
+character make assumes is introducing a recipe line.  If the variable
+is empty (as it is by default) that character is the standard tab
+character.  For example, this is a valid makefile:
+
+@example
+@group
+.RECIPEPREFIX = >
+all:
+> @@echo Hello, world
+@end group
+@end example
+
+The value of @code{.RECIPEPREFIX} can be changed multiple times; once set
+it stays in effect for all rules parsed until it is modified.
+
+@vindex .VARIABLES @r{(list of variables)}
+@item .VARIABLES
+Expands to a list of the @emph{names} of all global variables defined
+so far.  This includes variables which have empty values, as well as
+built-in variables (@pxref{Implicit Variables, , Variables Used by
+Implicit Rules}), 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.
+
+@c @vindex .TARGETS @r{(list of targets)}
+@c @item .TARGETS
+@c The second special variable is @code{.TARGETS}.  When expanded, the
+@c value consists of a list of all targets defined in all makefiles read
+@c up until that point.  Note it's not enough for a file to be simply
+@c mentioned in the makefile to be listed in this variable, even if it
+@c would match an implicit rule and become an ``implicit target''.  The
+@c file must appear as a target, on the left-hand side of a ``:'', to be
+@c considered a target for the purposes of this variable.
+
+@vindex .FEATURES @r{(list of supported features)}
+@item .FEATURES
+Expands to a list of special features supported by this version of
+@code{make}.  Possible values include:
+
+@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}.
+
+@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
+
 @node Conditionals, Functions, Using Variables, Top
 @chapter Conditional Parts of Makefiles
 
 @cindex conditionals
-A @dfn{conditional} causes part of a makefile to be obeyed or ignored
-depending on the values of variables.  Conditionals can compare the
-value of one variable to another, or the value of a variable to
-a constant string.  Conditionals control what @code{make} actually
-``sees'' in the makefile, so they @emph{cannot} be used to control shell
-commands at the time of execution.@refill
+A @dfn{conditional} directive causes part of a makefile to be obeyed
+or ignored depending on the values of variables.  Conditionals can
+compare the value of one variable to another, or the value of a
+variable to a constant string.  Conditionals control what @code{make}
+actually ``sees'' in the makefile, so they @emph{cannot} be used to
+control recipes at the time of execution.@refill
 
 @menu
 * Conditional Example::         Example of a conditional
@@ -5887,11 +6180,11 @@ commands at the time of execution.@refill
 @node Conditional Example, Conditional Syntax, Conditionals, Conditionals
 @section Example of a Conditional
 
-The following example of a conditional tells @code{make} to use one set
-of libraries if the @code{CC} variable is @samp{gcc}, and a different
-set of libraries otherwise.  It works by controlling which of two
-command lines will be used as the command for a rule.  The result is
-that @samp{CC=gcc} as an argument to @code{make} changes not only which
+The following example of a conditional tells @code{make} to use one
+set of libraries if the @code{CC} variable is @samp{gcc}, and a
+different set of libraries otherwise.  It works by controlling which
+of two recipe lines will be used for the rule.  The result is that
+@samp{CC=gcc} as an argument to @code{make} changes not only which
 compiler is used but also which libraries are linked.
 
 @example
@@ -6118,12 +6411,12 @@ if any, is effective.  The rules for expansion and testing of
 @var{variable-name} are identical to the @code{ifdef} directive.
 @end table
 
-Extra spaces are allowed and ignored at the beginning of the conditional
-directive line, but a tab is not allowed.  (If the line begins with a tab,
-it will be considered a command for a rule.)  Aside from this, extra spaces
-or tabs may be inserted with no effect anywhere except within the directive
-name or within an argument.  A comment starting with @samp{#} may appear at
-the end of the line.
+Extra spaces are allowed and ignored at the beginning of the
+conditional directive line, but a tab is not allowed.  (If the line
+begins with a tab, it will be considered part of a recipe for a rule.)
+Aside from this, extra spaces or tabs may be inserted with no effect
+anywhere except within the directive name or within an argument.  A
+comment starting with @samp{#} may appear at the end of the line.
 
 The other two directives that play a part in a conditional are @code{else}
 and @code{endif}.  Each of these directives is written as one word, with no
@@ -6140,7 +6433,7 @@ beginning or the end of the conditional.@refill
 
 @code{make} evaluates conditionals when it reads a makefile.
 Consequently, you cannot use automatic variables in the tests of
-conditionals because they are not defined until commands are run
+conditionals because they are not defined until recipes are run
 (@pxref{Automatic Variables}).
 
 To prevent intolerable confusion, it is not permitted to start a
@@ -6177,20 +6470,21 @@ endif
 @end example
 
 @noindent
-The @samp{+} prefix marks those command lines as ``recursive'' so
-that they will be executed despite use of the @samp{-t} flag.
+The @samp{+} prefix marks those recipe lines as ``recursive'' so that
+they will be executed despite use of the @samp{-t} flag.
 @xref{Recursion, ,Recursive Use of @code{make}}.
 
 @node Functions, Running, Conditionals, Top
 @chapter Functions for Transforming Text
 @cindex functions
 
-@dfn{Functions} allow you to do text processing in the makefile to compute
-the files to operate on or the commands to use.  You use a function in a
-@dfn{function call}, where you give the name of the function and some text
-(the @dfn{arguments}) for the function to operate on.  The result of the
-function's processing is substituted into the makefile at the point of the
-call, just as a variable might be substituted.
+@dfn{Functions} allow you to do text processing in the makefile to
+compute the files to operate on or the commands to use in recipes.
+You use a function in a @dfn{function call}, where you give the name
+of the function and some text (the @dfn{arguments}) for the function
+to operate on.  The result of the function's processing is substituted
+into the makefile at the point of the call, just as a variable might
+be substituted.
 
 @menu
 * Syntax of Functions::         How to write a function call.
@@ -7126,7 +7420,7 @@ client_LIBS = protocol
 .PHONY: all
 all: $(PROGRAMS)
 
-define PROGRAM_template
+define PROGRAM_template =
  $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
  ALL_OBJS   += $$($(1)_OBJS)
 endef
@@ -7179,14 +7473,15 @@ function will return the origin of the later definition.
 
 @item environment
 
-if @var{variable} was defined as an environment variable and the
-@samp{-e} option is @emph{not} turned on (@pxref{Options Summary, ,Summary of Options}).
+if @var{variable} was inherited from the environment provided to
+@code{make}.
 
 @item environment override
 
-if @var{variable} was defined as an environment variable and the
-@w{@samp{-e}} option @emph{is} turned on (@pxref{Options Summary,
-,Summary of Options}).@refill
+if @var{variable} was inherited from the environment provided to
+@code{make}, and is overriding a setting for @var{variable} in the
+makefile as a result of the @w{@samp{-e}} option (@pxref{Options
+Summary, ,Summary of Options}).@refill
 
 @item file
 
@@ -7203,9 +7498,8 @@ makefile (@pxref{Override Directive, ,The @code{override} Directive}).
 
 @item automatic
 
-if @var{variable} is an automatic variable defined for the
-execution of the commands for each rule
-(@pxref{Automatic Variables}).
+if @var{variable} is an automatic variable defined for the execution
+of the recipe for each rule (@pxref{Automatic Variables}).
 @end table
 
 This information is primarily useful (other than for your curiosity) to
@@ -7295,7 +7589,7 @@ if @var{variable} is a simply expanded variable.
 @node Shell Function, Make Control Functions, Flavor Function, Functions
 @section The @code{shell} Function
 @findex shell
-@cindex commands, expansion
+@cindex command expansion
 @cindex backquotes
 @cindex shell command, function for
 
@@ -7354,11 +7648,11 @@ if some sort of environmental error is detected.
 @findex error
 @cindex error, stopping on
 @cindex stopping make
-Generates a fatal error where the message is @var{text}.  Note that the
-error is generated whenever this function is evaluated.  So, if you put
-it inside a command script or on the right side of a recursive variable
-assignment, it won't be evaluated until later.  The @var{text} will be
-expanded before the error is generated.
+Generates a fatal error where the message is @var{text}.  Note that
+the error is generated whenever this function is evaluated.  So, if
+you put it inside a recipe or on the right side of a recursive
+variable assignment, it won't be evaluated until later.  The
+@var{text} will be expanded before the error is generated.
 
 For example,
 
@@ -7428,7 +7722,7 @@ It will print messages describing the particular errors.
 @item 1
 The exit status is one if you use the @samp{-q} flag and @code{make}
 determines that some target is not already up to date.
-@xref{Instead of Execution, ,Instead of Executing the Commands}.
+@xref{Instead of Execution, ,Instead of Executing Recipes}.
 @end table
 
 @menu
@@ -7436,7 +7730,7 @@ determines that some target is not already up to date.
 * Goals::                       How to use goal arguments to specify which
                                   parts of the makefile to use.
 * Instead of Execution::        How to use mode flags to specify what
-                                  kind of thing to do with the commands
+                                  kind of thing to do with the recipes
                                   in the makefile other than simply
                                   execute them.
 * Avoiding Compilation::        How to avoid recompiling certain files.
@@ -7483,7 +7777,7 @@ the whole list.  You can manage the selection of the default goal from
 within your makefile using the @code{.DEFAULT_GOAL} variable
 (@pxref{Special Variables, , Other Special Variables}).
 
-You can also specify a different goal or goals with command-line
+You can also specify a different goal or goals with command line
 arguments to @code{make}.  Use the name of the goal as an argument.
 If you specify several goals, @code{make} processes each of them in
 turn, in the order you name them.
@@ -7533,7 +7827,7 @@ made.  For example, there may be a file of debugging output, or a
 version of the program that is compiled specially for testing, which has
 a rule in the makefile but is not a prerequisite of the default goal.
 
-Another use of specifying a goal is to run the commands associated with
+Another use of specifying a goal is to run the recipe associated with
 a phony target (@pxref{Phony Targets}) or empty target (@pxref{Empty
 Targets, ,Empty Target Files to Record Events}).  Many makefiles contain
 a phony target named @file{clean} which deletes everything except source
@@ -7605,9 +7899,9 @@ Perform self tests on the program this makefile builds.
 @end table
 
 @node Instead of Execution, Avoiding Compilation, Goals, Running
-@section Instead of Executing the Commands
+@section Instead of Executing Recipes
 @cindex execution, instead of
-@cindex commands, instead of executing
+@cindex recipes, instead of executing
 
 The makefile tells @code{make} how to tell whether a target is up to date,
 and how to update each target.  But updating the targets is not always
@@ -7624,8 +7918,9 @@ what you want.  Certain options specify other activities for @code{make}.
 @cindex @code{--recon}
 @cindex @code{-n}
 
-``No-op''.  The activity is to print what commands would be used to make
-the targets up to date, but not actually execute them.
+``No-op''.  The activity is to print what recipe would be used to make
+the targets up to date, but not actually execute it.  Some recipes are
+still executed, even with this flag (@pxref{MAKE Variable, ,How the @code{MAKE} Variable Works}).
 
 @item -t
 @itemx --touch
@@ -7645,7 +7940,7 @@ the targets but does not really change their contents.
 @cindex question mode
 
 ``Question''.  The activity is to find out silently whether the targets
-are up to date already; but execute no commands in either case.  In other
+are up to date already; but execute no recipe in either case.  In other
 words, neither compilation nor output will occur.
 
 @item -W @var{file}
@@ -7666,17 +7961,17 @@ You can use the @samp{-W} flag in conjunction with the @samp{-n} flag
 to see what would happen if you were to modify specific files.@refill
 @end table
 
-With the @samp{-n} flag, @code{make} prints the commands that it would
-normally execute but does not execute them.
+With the @samp{-n} flag, @code{make} prints the recipe that it would
+normally execute but usually does not execute it.
 
-With the @samp{-t} flag, @code{make} ignores the commands in the rules
+With the @samp{-t} flag, @code{make} ignores the recipes in the rules
 and uses (in effect) the command @code{touch} for each target that needs to
 be remade.  The @code{touch} command is also printed, unless @samp{-s} or
 @code{.SILENT} is used.  For speed, @code{make} does not actually invoke
 the program @code{touch}.  It does the work directly.
 
 With the @samp{-q} flag, @code{make} prints nothing and executes no
-commands, but the exit status code it returns is zero if and only if the
+recipes, but the exit status code it returns is zero if and only if the
 targets to be considered are already up to date.  If the exit status is
 one, then some updating needs to be done.  If @code{make} encounters an
 error, the exit status is two, so you can distinguish an error from a
@@ -7685,8 +7980,8 @@ target that is not up to date.
 It is an error to use more than one of these three flags in the same
 invocation of @code{make}.
 
-@cindex +, and command execution
-The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect command
+@cindex +, and recipe execution
+The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect recipe
 lines that begin with @samp{+} characters or contain the strings
 @samp{$(MAKE)} or @samp{$@{MAKE@}}.  Note that only the line containing
 the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}}
@@ -7694,6 +7989,11 @@ is run regardless of these options.  Other lines in the same rule are
 not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or
 @samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.)
 
+@cindex phony targets and recipe execution
+The @samp{-t} flag prevents phony targets (@pxref{Phony Targets}) from
+being updated, unless there are recipe lines beginning with @samp{+}
+or containing @samp{$(MAKE)} or @samp{$@{MAKE@}}.
+
 The @samp{-W} flag provides two features:
 
 @itemize @bullet
@@ -7703,9 +8003,9 @@ If you also use the @samp{-n} or @samp{-q} flag, you can see what
 
 @item
 Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually
-executing commands, the @samp{-W} flag can direct @code{make} to act
-as if some files had been modified, without actually modifying the
-files.@refill
+executing recipes, the @samp{-W} flag can direct @code{make} to act as
+if some files had been modified, without actually running the recipes
+for those files.@refill
 @end itemize
 
 Note that the options @samp{-p} and @samp{-v} allow you to obtain other
@@ -7731,7 +8031,7 @@ the time waiting for them to compile.
 
 If you anticipate the problem before changing the header file, you can
 use the @samp{-t} flag.  This flag tells @code{make} not to run the
-commands in the rules, but rather to mark the target up to date by
+recipes in the rules, but rather to mark the target up to date by
 changing its last-modification date.  You would follow this procedure:
 
 @enumerate
@@ -7782,7 +8082,7 @@ variable in the makefile are ignored; we say they have been
 
 The most common way to use this facility is to pass extra flags to
 compilers.  For example, in a properly written makefile, the variable
-@code{CFLAGS} is included in each command that runs the C compiler, so a
+@code{CFLAGS} is included in each recipe that runs the C compiler, so a
 file @file{foo.c} would be compiled something like this:
 
 @example
@@ -7812,13 +8112,13 @@ You can also program the makefile to look at additional variables of your
 own, giving the user the ability to control other aspects of how the
 makefile works by changing the variables.
 
-When you override a variable with a command argument, you can define either
-a recursively-expanded variable or a simply-expanded variable.  The
-examples shown above make a recursively-expanded variable; to make a
-simply-expanded variable, write @samp{:=} instead of @samp{=}.  But, unless
-you want to include a variable reference or function call in the
-@emph{value} that you specify, it makes no difference which kind of
-variable you create.
+When you override a variable with a command line argument, you can
+define either a recursively-expanded variable or a simply-expanded
+variable.  The examples shown above make a recursively-expanded
+variable; to make a simply-expanded variable, write @samp{:=} instead
+of @samp{=}.  But, unless you want to include a variable reference or
+function call in the @emph{value} that you specify, it makes no
+difference which kind of variable you create.
 
 There is one way that the makefile can change a variable that you have
 overridden.  This is to use the @code{override} directive, which is a line
@@ -7831,7 +8131,7 @@ that looks like this: @samp{override @var{variable} = @var{value}}
 @cindex compilation, testing
 
 Normally, when an error happens in executing a shell command, @code{make}
-gives up immediately, returning a nonzero status.  No further commands are
+gives up immediately, returning a nonzero status.  No further recipes are
 executed for any target.  The error implies that the goal cannot be
 correctly remade, and @code{make} reports this as soon as it knows.
 
@@ -7959,6 +8259,15 @@ Give variables taken from the environment precedence
 over variables from makefiles.
 @xref{Environment, ,Variables from the Environment}.
 
+@item --eval=@var{string}
+@cindex @code{--eval}
+@c Extra blank line here makes the table look better.
+
+Evaluate @var{string} as makefile syntax.  This is a command-line
+version of the @code{eval} function (@pxref{Eval Function}).  The
+evaluation is performed after the default rules and variables have
+been defined, but before any makefiles are read.
+
 @item -f @var{file}
 @cindex @code{-f}
 @itemx --file=@var{file}
@@ -7980,8 +8289,8 @@ Remind you of the options that @code{make} understands and then exit.
 @cindex @code{-i}
 @itemx --ignore-errors
 @cindex @code{--ignore-errors}
-Ignore all errors in commands executed to remake files.
-@xref{Errors, ,Errors in Commands}.
+Ignore all errors in recipes executed to remake files.
+@xref{Errors, ,Errors in Recipes}.
 
 @item -I @var{dir}
 @cindex @code{-I}
@@ -7996,12 +8305,11 @@ searched in the order specified.
 @cindex @code{-j}
 @itemx --jobs[=@var{jobs}]
 @cindex @code{--jobs}
-Specifies the number of jobs (commands) to run simultaneously.  With no
-argument, @code{make} runs as many jobs simultaneously as possible.  If
-there is more than one @samp{-j} option, the last one is effective.
-@xref{Parallel, ,Parallel Execution},
-for more information on how commands are run.
-Note that this option is ignored on MS-DOS.
+Specifies the number of recipes (jobs) to run simultaneously.  With no
+argument, @code{make} runs as many recipes simultaneously as possible.
+If there is more than one @samp{-j} option, the last one is effective.
+@xref{Parallel, ,Parallel Execution}, for more information on how
+recipes are run.  Note that this option is ignored on MS-DOS.
 
 @item -k
 @cindex @code{-k}
@@ -8018,8 +8326,8 @@ prerequisites of these targets can be processed all the same.
 @cindex @code{--load-average}
 @itemx --max-load[=@var{load}]
 @cindex @code{--max-load}
-Specifies that no new jobs (commands) should be started if there are
-other jobs running and the load average is at least @var{load} (a
+Specifies that no new recipes should be started if there are other
+recipes running and the load average is at least @var{load} (a
 floating-point number).  With no argument, removes a previous load
 limit.  @xref{Parallel, ,Parallel Execution}.
 
@@ -8043,8 +8351,9 @@ links is taken as the modification time for this target file.
 @cindex @code{--recon}
 @c Extra blank line here makes the table look better.
 
-Print the commands that would be executed, but do not execute them.
-@xref{Instead of Execution, ,Instead of Executing the Commands}.
+Print the recipe that would be executed, but do not execute it (except
+in certain circumstances).
+@xref{Instead of Execution, ,Instead of Executing Recipes}.
 
 @item -o @var{file}
 @cindex @code{-o}
@@ -8065,23 +8374,24 @@ Some Files}.@refill
 @cindex data base of @code{make} rules
 @cindex predefined rules and variables, printing
 Print the data base (rules and variable values) that results from
-reading the makefiles; then execute as usual or as otherwise specified.
-This also prints the version information given by the @samp{-v} switch
-(see below).  To print the data base without trying to remake any files,
-use @w{@samp{make -qp}}.  To print the data base of predefined rules and
-variables, use @w{@samp{make -p -f /dev/null}}.  The data base output
-contains filename and linenumber information for command and variable
-definitions, so it can be a useful debugging tool in complex environments.
+reading the makefiles; then execute as usual or as otherwise
+specified.  This also prints the version information given by the
+@samp{-v} switch (see below).  To print the data base without trying
+to remake any files, use @w{@samp{make -qp}}.  To print the data base
+of predefined rules and variables, use @w{@samp{make -p -f /dev/null}}.
+The data base output contains filename and linenumber information for
+recipe and variable definitions, so it can be a useful debugging tool
+in complex environments.
 
 @item -q
 @cindex @code{-q}
 @itemx --question
 @cindex @code{--question}
-``Question mode''.  Do not run any commands, or print anything; just
+``Question mode''.  Do not run any recipes, or print anything; just
 return an exit status that is zero if the specified targets are already
 up to date, one if any remaking is required, or two if an error is
-encountered.  @xref{Instead of Execution, ,Instead of Executing the
-Commands}.@refill
+encountered.  @xref{Instead of Execution, ,Instead of Executing
+Recipes}.@refill
 
 @item -r
 @cindex @code{-r}
@@ -8116,8 +8426,8 @@ implicit rules without any definitions for the variables that they use.
 @cindex @code{--quiet}
 @c Extra blank line here makes the table look better.
 
-Silent operation; do not print the commands as they are executed.
-@xref{Echoing, ,Command Echoing}.
+Silent operation; do not print the recipes as they are executed.
+@xref{Echoing, ,Recipe Echoing}.
 
 @item -S
 @cindex @code{-S}
@@ -8140,9 +8450,9 @@ or if you set @samp{-k} in @code{MAKEFLAGS} in your environment.@refill
 @c Extra blank line here makes the table look better.
 
 Touch files (mark them up to date without really changing them)
-instead of running their commands.  This is used to pretend that the
-commands were done, in order to fool future invocations of
-@code{make}.  @xref{Instead of Execution, ,Instead of Executing the Commands}.
+instead of running their recipes.  This is used to pretend that the
+recipes were done, in order to fool future invocations of
+@code{make}.  @xref{Instead of Execution, ,Instead of Executing Recipes}.
 
 @item -v
 @cindex @code{-v}
@@ -8183,7 +8493,7 @@ to modify that file.  Without @samp{-n}, it is almost the same as
 running a @code{touch} command on the given file before running
 @code{make}, except that the modification time is changed only in the
 imagination of @code{make}.
-@xref{Instead of Execution, ,Instead of Executing the Commands}.
+@xref{Instead of Execution, ,Instead of Executing Recipes}.
 
 @item --warn-undefined-variables
 @cindex @code{--warn-undefined-variables}
@@ -8217,7 +8527,7 @@ will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file.
 @xref{Chained Rules, ,Chains of Implicit Rules}.
 @end iftex
 
-The built-in implicit rules use several variables in their commands so
+The built-in implicit rules use several variables in their recipes so
 that, by changing the values of the variables, you can change the way the
 implicit rule works.  For example, the variable @code{CFLAGS} controls the
 flags given to the C compiler by the implicit rule for C compilation.
@@ -8239,12 +8549,12 @@ retained for compatibility.
 
 @menu
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the commands for updating a file.
+                                  to get the recipes for updating a file.
 * Catalogue of Rules::          A list of built-in implicit rules.
 * Implicit Variables::          How to change what predefined rules do.
 * Chained Rules::               How to use a chain of implicit rules.
 * Pattern Rules::               How to define new implicit rules.
-* Last Resort::                 How to define commands for rules which
+* Last Resort::                 How to define recipes for rules which
                                   cannot find any.
 * Suffix Rules::                The old-fashioned style of implicit rule.
 * Implicit Rule Search::        The precise algorithm for applying
@@ -8256,11 +8566,11 @@ retained for compatibility.
 @cindex implicit rule, how to use
 @cindex rule, implicit, how to use
 
-To allow @code{make} to find a customary method for updating a target file,
-all you have to do is refrain from specifying commands yourself.  Either
-write a rule with no command lines, or don't write a rule at all.  Then
-@code{make} will figure out which implicit rule to use based on which
-kind of source file exists or can be made.
+To allow @code{make} to find a customary method for updating a target
+file, all you have to do is refrain from specifying recipes yourself.
+Either write a rule with no recipe, or don't write a rule at all.
+Then @code{make} will figure out which implicit rule to use based on
+which kind of source file exists or can be made.
 
 For example, suppose the makefile looks like this:
 
@@ -8274,9 +8584,9 @@ Because you mention @file{foo.o} but do not give a rule for it, @code{make}
 will automatically look for an implicit rule that tells how to update it.
 This happens whether or not the file @file{foo.o} currently exists.
 
-If an implicit rule is found, it can supply both commands and one or
+If an implicit rule is found, it can supply both a recipe and one or
 more prerequisites (the source files).  You would want to write a rule
-for @file{foo.o} with no command lines if you need to specify additional
+for @file{foo.o} with no recipe if you need to specify additional
 prerequisites, such as header files, that the implicit rule cannot
 supply.
 
@@ -8303,7 +8613,7 @@ result of another implicit rule, we say that @dfn{chaining} is occurring.
 @xref{Chained Rules, ,Chains of Implicit Rules}.
 
 In general, @code{make} searches for an implicit rule for each target, and
-for each double-colon rule, that has no commands.  A file that is mentioned
+for each double-colon rule, that has no recipe.  A file that is mentioned
 only as a prerequisite is considered a target whose rule specifies nothing,
 so implicit rule search happens for it.  @xref{Implicit Rule Search, ,Implicit Rule Search Algorithm}, for the
 details of how the search is done.
@@ -8326,8 +8636,8 @@ implicit rules (@pxref{Catalogue of Rules, , Catalogue of Implicit
 Rules}).
 
 If you do not want an implicit rule to be used for a target that has no
-commands, you can give that target empty commands by writing a semicolon
-(@pxref{Empty Commands, ,Defining Empty Commands}).
+recipe, you can give that target an empty recipe by writing a semicolon
+(@pxref{Empty Recipes, ,Defining Empty Recipes}).
 
 @node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules
 @section Catalogue of Implicit Rules
@@ -8352,17 +8662,18 @@ implemented in @code{make} as suffix rules, so which ones will be
 defined depends on the @dfn{suffix list} (the list of prerequisites of
 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{.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},
-@code{.texi}, @code{.txinfo}, @code{.w}, @code{.ch} @code{.web},
-@code{.sh}, @code{.elc}, @code{.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.  @xref{Suffix Rules, ,Old-Fashioned
-Suffix Rules}, for full details on suffix rules.
+@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.m},
+@code{.r}, @code{.y}, @code{.l}, @code{.ym}, @code{.lm}, @code{.s},
+@code{.S}, @code{.mod}, @code{.sym}, @code{.def}, @code{.h},
+@code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo}, @code{.texi},
+@code{.txinfo}, @code{.w}, @code{.ch} @code{.web}, @code{.sh},
+@code{.elc}, @code{.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.  @xref{Suffix Rules, ,Old-Fashioned Suffix Rules},
+for full details on suffix rules.
 
 @table @asis
 @item Compiling C programs
@@ -8372,7 +8683,7 @@ Suffix Rules}, for full details on suffix rules.
 @pindex .o
 @pindex .c
 @file{@var{n}.o} is made automatically from @file{@var{n}.c} with
-a command of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
+a recipe of the form @samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}.@refill
 
 @item Compiling C++ programs
 @cindex C++, rule to compile
@@ -8381,8 +8692,8 @@ a command of the form @samp{$(CC) -c $(CPPFLAGS) $(CFLAGS)}.@refill
 @pindex .cpp
 @pindex .C
 @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
+@file{@var{n}.cpp}, or @file{@var{n}.C} with a recipe of the form
+@samp{$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c}.  We encourage you to use the
 suffix @samp{.cc} for C++ source files instead of @samp{.C}.@refill
 
 @item Compiling Pascal programs
@@ -8390,7 +8701,7 @@ suffix @samp{.cc} for C++ source files instead of @samp{.C}.@refill
 @pindex pc
 @pindex .p
 @file{@var{n}.o} is made automatically from @file{@var{n}.p}
-with the command @samp{$(PC) -c $(PFLAGS)}.@refill
+with the recipe @samp{$(PC) $(PFLAGS) -c}.@refill
 
 @item Compiling Fortran and Ratfor programs
 @cindex Fortran, rule to compile
@@ -8401,28 +8712,28 @@ with the command @samp{$(PC) -c $(PFLAGS)}.@refill
 @pindex .F
 @file{@var{n}.o} is made automatically from @file{@var{n}.r},
 @file{@var{n}.F} or @file{@var{n}.f} by running the
-Fortran compiler.  The precise command used is as follows:@refill
+Fortran compiler.  The precise recipe used is as follows:@refill
 
 @table @samp
 @item .f
-@samp{$(FC) -c $(FFLAGS)}.
+@samp{$(FC) $(FFLAGS) -c}.
 @item .F
-@samp{$(FC) -c $(FFLAGS) $(CPPFLAGS)}.
+@samp{$(FC) $(FFLAGS) $(CPPFLAGS) -c}.
 @item .r
-@samp{$(FC) -c $(FFLAGS) $(RFLAGS)}.
+@samp{$(FC) $(FFLAGS) $(RFLAGS) -c}.
 @end table
 
 @item Preprocessing Fortran and Ratfor programs
 @file{@var{n}.f} is made automatically from @file{@var{n}.r} or
 @file{@var{n}.F}.  This rule runs just the preprocessor to convert a
 Ratfor or preprocessable Fortran program into a strict Fortran
-program.  The precise command used is as follows:@refill
+program.  The precise recipe used is as follows:@refill
 
 @table @samp
 @item .F
-@samp{$(FC) -F $(CPPFLAGS) $(FFLAGS)}.
+@samp{$(FC) $(CPPFLAGS) $(FFLAGS) -F}.
 @item .r
-@samp{$(FC) -F $(FFLAGS) $(RFLAGS)}.
+@samp{$(FC) $(FFLAGS) $(RFLAGS) -F}.
 @end table
 
 @item Compiling Modula-2 programs
@@ -8431,7 +8742,7 @@ program.  The precise command used is as follows:@refill
 @pindex .sym
 @pindex .def
 @pindex .mod
-@file{@var{n}.sym} is made from @file{@var{n}.def} with a command
+@file{@var{n}.sym} is made from @file{@var{n}.def} with a recipe
 of the form @samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}.  @file{@var{n}.o}
 is made from @file{@var{n}.mod}; the form is:
 @w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}.@refill
@@ -8442,12 +8753,12 @@ is made from @file{@var{n}.mod}; the form is:
 @pindex as
 @pindex .s
 @file{@var{n}.o} is made automatically from @file{@var{n}.s} by
-running the assembler, @code{as}.  The precise command is
+running the assembler, @code{as}.  The precise recipe is
 @samp{$(AS) $(ASFLAGS)}.@refill
 
 @pindex .S
 @file{@var{n}.s} is made automatically from @file{@var{n}.S} by
-running the C preprocessor, @code{cpp}.  The precise command is
+running the C preprocessor, @code{cpp}.  The precise recipe is
 @w{@samp{$(CPP) $(CPPFLAGS)}}.
 
 @item Linking a single object file
@@ -8456,7 +8767,7 @@ running the C preprocessor, @code{cpp}.  The precise command is
 @pindex .o
 @file{@var{n}} is made automatically from @file{@var{n}.o} by running
 the linker (usually called @code{ld}) via the C compiler.  The precise
-command used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}.
+recipe used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}.
 
 This rule does the right thing for a simple program with only one
 source file.  It will also do the right thing if there are multiple
@@ -8485,7 +8796,7 @@ rm -f z.o
 @noindent
 In more complicated cases, such as when there is no object file whose
 name derives from the executable file name, you must write an explicit
-command for linking.
+recipe for linking.
 
 Each kind of file automatically made into @samp{.o} object files will
 be automatically linked by using the compiler (@samp{$(CC)},
@@ -8500,18 +8811,18 @@ done.@refill
 @cindex Yacc, rule to run
 @pindex .y
 @file{@var{n}.c} is made automatically from @file{@var{n}.y} by
-running Yacc with the command @samp{$(YACC) $(YFLAGS)}.
+running Yacc with the recipe @samp{$(YACC) $(YFLAGS)}.
 
 @item Lex for C programs
 @pindex lex
 @cindex Lex, rule to run
 @pindex .l
 @file{@var{n}.c} is made automatically from @file{@var{n}.l} by
-running Lex.  The actual command is @samp{$(LEX) $(LFLAGS)}.
+running Lex.  The actual recipe is @samp{$(LEX) $(LFLAGS)}.
 
 @item Lex for Ratfor programs
 @file{@var{n}.r} is made automatically from @file{@var{n}.l} by
-running Lex.  The actual command is @samp{$(LEX) $(LFLAGS)}.
+running Lex.  The actual recipe is @samp{$(LEX) $(LFLAGS)}.
 
 The convention of using the same suffix @samp{.l} for all Lex files
 regardless of whether they produce C code or Ratfor code makes it
@@ -8536,8 +8847,8 @@ the list of implicit rule suffixes with:@refill
 @cindex @code{lint}, rule to run
 @pindex .ln
 @file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}.
-The precise command is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.
-The same command is used on the C code produced from
+The precise recipe is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}.
+The same recipe is used on the C code produced from
 @file{@var{n}.y} or @file{@var{n}.l}.@refill
 
 @item @TeX{} and Web
@@ -8553,7 +8864,7 @@ The same command is used on the C code produced from
 @pindex .web
 @pindex .w
 @pindex .ch
-@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the command
+@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the recipe
 @samp{$(TEX)}.  @file{@var{n}.tex} is made from @file{@var{n}.web} with
 @samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if
 it exists or can be made) with @samp{$(CWEAVE)}.  @file{@var{n}.p} is
@@ -8571,10 +8882,10 @@ or can be made) with @samp{$(CTANGLE)}.@refill
 @pindex .texi
 @pindex .txinfo
 @file{@var{n}.dvi} is made from @file{@var{n}.texinfo},
-@file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the command
+@file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the recipe
 @w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}.  @file{@var{n}.info} is made from
 @file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with
-the command @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
+the recipe @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
 
 @item RCS
 @cindex RCS, rule to extract from
@@ -8582,7 +8893,7 @@ the command @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}.
 @pindex ,v @r{(RCS file extension)}
 Any file @file{@var{n}} is extracted if necessary from an RCS file
 named either @file{@var{n},v} or @file{RCS/@var{n},v}.  The precise
-command used is @w{@samp{$(CO) $(COFLAGS)}}.  @file{@var{n}} will not be
+recipe used is @w{@samp{$(CO) $(COFLAGS)}}.  @file{@var{n}} will not be
 extracted from RCS if it already exists, even if the RCS file is
 newer.  The rules for RCS are terminal
 (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
@@ -8595,7 +8906,7 @@ actually exist.@refill
 @pindex s. @r{(SCCS file prefix)}
 Any file @file{@var{n}} is extracted if necessary from an SCCS file
 named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}.  The precise
-command used is @w{@samp{$(GET) $(GFLAGS)}}.  The rules for SCCS are
+recipe used is @w{@samp{$(GET) $(GFLAGS)}}.  The rules for SCCS are
 terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}),
 so SCCS files cannot be generated from another source; they must
 actually exist.@refill
@@ -8616,9 +8927,9 @@ software movement.
 Usually, you want to change only the variables listed in the table
 above, which are documented in the following section.
 
-However, the commands in built-in implicit rules actually use
+However, the recipes in built-in implicit rules actually use
 variables such as @code{COMPILE.c}, @code{LINK.p}, and
-@code{PREPROCESS.S}, whose values contain the commands listed above.
+@code{PREPROCESS.S}, whose values contain the recipes listed above.
 
 @code{make} follows the convention that the rule to compile a
 @file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}.
@@ -8643,14 +8954,14 @@ the value @w{@samp{; mv $*.o $@@}}.
 @section Variables Used by Implicit Rules
 @cindex flags for compilers
 
-The commands in built-in implicit rules make liberal use of certain
+The recipes in built-in implicit rules make liberal use of certain
 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
+For example, the recipe used to compile a C source file actually says
 @samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}.  The default values of the variables
 used are @samp{cc} and nothing, resulting in the command @samp{cc -c}.  By
 redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be
@@ -8669,7 +8980,7 @@ with spaces.
 
 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
+not be what @code{make} selects 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.
 
@@ -8693,21 +9004,11 @@ Program for compiling assembly files; default @samp{as}.
 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
-
 @item CXX
 @vindex CXX
 Program for compiling C++ programs; default @samp{g++}.
 @pindex g++
 
-@item CO
-@vindex CO
-Program for extracting a file from RCS; default @samp{co}.
-@pindex co
-
 @item CPP
 @vindex CPP
 Program for running the C preprocessor, with results to standard output;
@@ -8719,6 +9020,21 @@ Program for compiling or preprocessing Fortran and Ratfor programs;
 default @samp{f77}.
 @pindex f77
 
+@item M2C
+@vindex M2C
+Program to use to compile Modula-2 source code; default @samp{m2c}.
+@pindex m2c
+
+@item PC
+@vindex PC
+Program for compiling Pascal programs; default @samp{pc}.
+@pindex pc
+
+@item CO
+@vindex CO
+Program for extracting a file from RCS; default @samp{co}.
+@pindex co
+
 @item GET
 @vindex GET
 Program for extracting a file from SCCS; default @samp{get}.
@@ -8739,16 +9055,6 @@ Program to use to turn Yacc grammars into source code; default @samp{yacc}.
 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
-@vindex PC
-Program for compiling Pascal programs; default @samp{pc}.
-@pindex pc
-
 @item MAKEINFO
 @vindex MAKEINFO
 Program to convert a Texinfo source file into an Info file; default
@@ -8968,7 +9274,7 @@ Variables}, and @ref{Functions, ,Functions for Transforming Text}.
 * 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.
+                                  recipes of implicit rules.
 * Pattern Match::               How patterns match.
 * Match-Anything Rules::        Precautions you should take prior to
                                   defining rules that can match any
@@ -9005,7 +9311,7 @@ become prerequisites of the target.
 Thus, a rule of the form
 
 @example
-%.o : %.c ; @var{command}@dots{}
+%.o : %.c ; @var{recipe}@dots{}
 @end example
 
 @noindent
@@ -9022,30 +9328,25 @@ 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.  @xref{Last Resort}.
 
+More than one pattern rule may match a target.  In this case
+@code{make} will choose the ``best fit'' rule.  @xref{Pattern Match,
+,How Patterns Match}.
+
 @c !!! The end of of this paragraph should be rewritten.  --bob
-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, @code{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:
-@code{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.
+Pattern rules may have more than one target.  Unlike normal rules,
+this does not act as many different rules with the same prerequisites
+and recipe.  If a pattern rule has multiple targets, @code{make} knows
+that the rule's recipe is responsible for making all of the targets.
+The recipe is 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: @code{make} worries only about giving a recipe and
+prerequisites to the file presently in question.  However, when this
+file's recipe is run, the other targets are marked as having been
+updated themselves.
 @cindex multiple targets, in pattern rule
 @cindex target, multiple in pattern rule
 
-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.
-@cindex pattern rules, order of
-@cindex order of pattern rules
-
 @node Pattern Examples, Automatic Variables, Pattern Intro, Pattern Rules
 @subsection Pattern Rule Examples
 
@@ -9060,7 +9361,7 @@ files:@refill
 
 @noindent
 defines a rule that can make any file @file{@var{x}.o} from
-@file{@var{x}.c}.  The command uses the automatic variables @samp{$@@} and
+@file{@var{x}.c}.  The recipe uses the automatic variables @samp{$@@} and
 @samp{$<} to substitute the names of the target file and the source file
 in each case where the rule applies (@pxref{Automatic Variables}).@refill
 
@@ -9091,11 +9392,11 @@ This pattern rule has two targets:
 
 @noindent
 @c The following paragraph is rewritten to avoid overfull hboxes
-This tells @code{make} that the command @samp{bison -d @var{x}.y} will
+This tells @code{make} that the recipe @samp{bison -d @var{x}.y} will
 make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}.  If the file
 @file{foo} depends on the files @file{parse.tab.o} and @file{scan.o}
 and the file @file{scan.o} depends on the file @file{parse.tab.h},
-when @file{parse.y} is changed, the command @samp{bison -d parse.y}
+when @file{parse.y} is changed, the recipe @samp{bison -d parse.y}
 will be executed only once, and the prerequisites of both
 @file{parse.tab.o} and @file{scan.o} will be satisfied.  (Presumably
 the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c}
@@ -9111,7 +9412,7 @@ prerequisites, and it will execute happily ever after.)@refill
 
 Suppose you are writing a pattern rule to compile a @samp{.c} file into a
 @samp{.o} file: how do you write the @samp{cc} command so that it operates
-on the right source file name?  You cannot write the name in the command,
+on the right source file name?  You cannot write the name in the recipe,
 because the name is different each time the implicit rule is applied.
 
 What you do is use a special feature of @code{make}, the @dfn{automatic
@@ -9124,7 +9425,7 @@ for the source file name.
 @cindex prerequisites, and automatic variables
 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
+the recipe.  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
@@ -9143,7 +9444,7 @@ The file name of the target of the rule.  If the target is an archive
 member, then @samp{$@@} is the name of the archive file.  In a pattern
 rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to
 Pattern Rules}), @samp{$@@} is the name of whichever target caused the
-rule's commands to be run.
+rule's recipe to be run.
 
 @vindex $%
 @vindex % @r{(automatic variable)}
@@ -9156,7 +9457,7 @@ empty when the target is not an archive member.
 @vindex $<
 @vindex < @r{(automatic variable)}
 @item $<
-The name of the first prerequisite.  If the target got its commands from
+The name of the first prerequisite.  If the target got its recipe from
 an implicit rule, this will be the first prerequisite added by the
 implicit rule (@pxref{Implicit Rules}).
 
@@ -9165,7 +9466,7 @@ implicit rule (@pxref{Implicit Rules}).
 @item $?
 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 (@pxref{Archives}).
+the named member is used (@pxref{Archives}).
 @cindex prerequisites, list of changed
 @cindex list of changed prerequisites
 
@@ -9173,7 +9474,7 @@ the member named is used (@pxref{Archives}).
 @vindex ^ @r{(automatic variable)}
 @item $^
 The names of all the prerequisites, with spaces between them.  For
-prerequisites which are archive members, only the member named is used
+prerequisites which are archive members, only the named member is used
 (@pxref{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,
@@ -9358,6 +9659,50 @@ rest of the stem is substituted for the @samp{%}.  The stem
 @samp{src/a} with a prerequisite pattern @samp{c%r} gives the file name
 @file{src/car}.@refill
 
+@cindex pattern rules, order of
+@cindex order of pattern rules
+A pattern rule can be used to build a given file only if there is a
+target pattern that matches the file name, @emph{and} all
+prerequisites in that rule either exist or can be built.  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.
+
+@cindex stem, shortest
+It is possible that more than one pattern rule will meet these
+criteria.  In that case, @code{make} will choose the rule with the
+shortest stem (that is, the pattern that matches most specifically).
+If more than one pattern rule has the shortest stem, @code{make} will
+choose the first one found in the makefile.
+
+This algorithm results in more specific rules being preferred over
+more generic ones; for example:
+
+@example
+%.o: %.c
+        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
+
+%.o : %.f
+        $(COMPILE.F) $(OUTPUT_OPTION) $<
+
+lib/%.o: lib/%.c
+        $(CC) -fPIC -c $(CFLAGS) $(CPPFLAGS) $< -o $@@
+@end example
+
+Given these rules and asked to build @file{bar.o} where both
+@file{bar.c} and @file{bar.f} exist, @code{make} will choose the first
+rule and compile @file{bar.c} into @file{bar.o}.  In the same
+situation where @file{bar.c} does not exist, then @code{make} will
+choose the second rule and compile @file{bar.f} into @file{bar.o}.
+
+If @code{make} is asked to build @file{lib/bar.o} and both
+@file{lib/bar.c} and @file{lib/bar.f} exist, then the third rule will
+be chosen since the stem for this rule (@samp{bar}) is shorter than
+the stem for the first rule (@samp{lib/bar}).  If @file{lib/bar.c}
+does not exist then the third rule is not eligible and the second rule
+will be used, even though the stem is longer.
+
 @node Match-Anything Rules, Canceling Rules, Pattern Match, Pattern Rules
 @subsection Match-Anything Pattern Rules
 
@@ -9422,7 +9767,7 @@ 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
+considered.  These dummy rules have no prerequisites and no recipes, and
 they are ignored for all other purposes.  For example, the built-in
 implicit rule
 
@@ -9443,12 +9788,12 @@ suffix listed as valid for use in suffix rules (@pxref{Suffix Rules, ,Old-Fashio
 
 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
+prerequisites, but a different recipe.  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
+same target and prerequisites, but no recipe.  For example, the following
 would cancel the rule that runs the assembler:
 
 @example
@@ -9464,7 +9809,7 @@ You can define a last-resort implicit rule by writing a terminal
 match-anything pattern rule with no prerequisites (@pxref{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
+recipe is used for all targets and prerequisites that have no recipe
 of their own and for which no other implicit rule applies.
 
 For example, when testing a makefile, you might not care if the source
@@ -9480,27 +9825,27 @@ to cause all the source files needed (as prerequisites) to be created
 automatically.
 
 @findex .DEFAULT
-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
+You can instead define a recipe to be used for targets for which there
+are no rules at all, even ones which don't specify recipes.  You do
 this by writing a rule for the target @code{.DEFAULT}.  Such a rule's
-commands are used for all prerequisites which do not appear as targets in
+recipe is 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 @code{.DEFAULT} rule unless you write one.
 
-If you use @code{.DEFAULT} with no commands or prerequisites:
+If you use @code{.DEFAULT} with no recipe or prerequisites:
 
 @example
 .DEFAULT:
 @end example
 
 @noindent
-the commands previously stored for @code{.DEFAULT} are cleared.
-Then @code{make} acts as if you had never defined @code{.DEFAULT} at all.
+the recipe previously stored for @code{.DEFAULT} is cleared.  Then
+@code{make} acts as if you had never defined @code{.DEFAULT} at all.
 
-If you do not want a target to get the commands from a match-anything
-pattern rule or @code{.DEFAULT}, but you also do not want any commands
-to be run for the target, you can give it empty commands (@pxref{Empty
-Commands, ,Defining Empty Commands}).@refill
+If you do not want a target to get the recipe from a match-anything
+pattern rule or @code{.DEFAULT}, but you also do not want any recipe
+to be run for the target, you can give it an empty recipe
+(@pxref{Empty Recipes, ,Defining Empty Recipes}).@refill
 
 You can use a last-resort rule to override part of another makefile.
 @xref{Overriding Makefiles, , Overriding Part of Another Makefile}.
@@ -9568,10 +9913,10 @@ tells how to make the file @file{.c.o} from the prerequisite file
 which tells how to make @samp{.o} files from @samp{.c} files, and makes all
 @samp{.o} files using this pattern rule also depend on @file{foo.h}.
 
-Suffix rules with no commands are also meaningless.  They do not remove
-previous rules as do pattern rules with no commands (@pxref{Canceling
-Rules, , Canceling Implicit Rules}).  They simply enter the suffix or pair of suffixes concatenated as
-a target in the data base.@refill
+Suffix rules with no recipe are also meaningless.  They do not remove
+previous rules as do pattern rules with no recipe (@pxref{Canceling
+Rules, , Canceling Implicit Rules}).  They simply enter the suffix or
+pair of suffixes concatenated as a target in the data base.@refill
 
 @findex .SUFFIXES
 The known suffixes are simply the names of the prerequisites of the special
@@ -9614,8 +9959,8 @@ this variable.
 
 Here is the procedure @code{make} uses for searching for an implicit rule
 for a target @var{t}.  This procedure is followed for each double-colon
-rule with no commands, for each target of ordinary rules none of which have
-commands, and for each prerequisite that is not the target of any rule.  It
+rule with no recipe, for each target of ordinary rules none of which have
+a recipe, and for each prerequisite that is not the target of any rule.  It
 is also followed recursively for prerequisites that come from implicit
 rules, in the search for a chain of rules.
 
@@ -9644,7 +9989,7 @@ If any rule in that list is @emph{not} a match-anything rule, then
 remove all nonterminal match-anything rules from the list.
 
 @item
-Remove from the list all rules with no commands.
+Remove from the list all rules with no recipe.
 
 @item
 For each pattern rule in the list:
@@ -9694,21 +10039,21 @@ made by implicit rules, then this rule applies.
 
 @item
 If no implicit rule applies, the rule for @code{.DEFAULT}, if any,
-applies.  In that case, give @var{t} the same commands that
-@code{.DEFAULT} has.  Otherwise, there are no commands for @var{t}.
+applies.  In that case, give @var{t} the same recipe that
+@code{.DEFAULT} has.  Otherwise, there is no recipe for @var{t}.
 @end enumerate
 
-Once a rule that applies has been found, for each target pattern of the
-rule other than the one that matched @var{t} or @var{n}, the @samp{%} in
-the pattern is replaced with @var{s} and the resultant file name is stored
-until the commands to remake the target file @var{t} are executed.  After
-these commands are executed, each of these stored file names are entered
-into the data base and marked as having been updated and having the same
-update status as the file @var{t}.
+Once a rule that applies has been found, for each target pattern of
+the rule other than the one that matched @var{t} or @var{n}, the
+@samp{%} in the pattern is replaced with @var{s} and the resultant
+file name is stored until the recipe to remake the target file @var{t}
+is executed.  After the recipe is executed, each of these stored file
+names are entered into the data base and marked as having been updated
+and having the same update status as the file @var{t}.
 
-When the commands of a pattern rule are executed for @var{t}, the automatic
-variables are set corresponding to the target and prerequisites.
-@xref{Automatic Variables}.
+When the recipe of a pattern rule is executed for @var{t}, the
+automatic variables are set corresponding to the target and
+prerequisites.  @xref{Automatic Variables}.
 
 @node Archives, Features, Implicit Rules, Top
 @chapter Using @code{make} to Update Archive Files
@@ -9740,12 +10085,13 @@ archive file @var{archive} as follows:
 
 @noindent
 This construct is available only in targets and prerequisites, not in
-commands!  Most programs that you might use in commands do not support this
-syntax and cannot act directly on archive members.  Only @code{ar} and
-other programs specifically designed to operate on archives can do so.
-Therefore, valid commands to update an archive member target probably must
-use @code{ar}.  For example, this rule says to create a member
-@file{hack.o} in archive @file{foolib} by copying the file @file{hack.o}:
+recipes!  Most programs that you might use in recipes do not support
+this syntax and cannot act directly on archive members.  Only
+@code{ar} and other programs specifically designed to operate on
+archives can do so.  Therefore, valid recipes to update an archive
+member target probably must use @code{ar}.  For example, this rule
+says to create a member @file{hack.o} in archive @file{foolib} by
+copying the file @file{hack.o}:
 
 @example
 foolib(hack.o) : hack.o
@@ -9798,7 +10144,7 @@ When this rule is chained with others, the result is very powerful.
 Thus, @samp{make "foo.a(bar.o)"} (the quotes are needed to protect the
 @samp{(} and @samp{)} from being interpreted specially by the shell) in
 the presence of a file @file{bar.c} is enough to cause the following
-commands to be run, even without a makefile:
+recipe to be run, even without a makefile:
 
 @example
 cc -c bar.c -o bar.o
@@ -9816,7 +10162,7 @@ Implicit rules such as this one are written using the automatic variable
 An archive member name in an archive cannot contain a directory name, but
 it may be useful in a makefile to pretend that it does.  If you write an
 archive member target @file{foo.a(dir/file.o)}, @code{make} will perform
-automatic updating with this command:
+automatic updating with this recipe:
 
 @example
 ar r foo.a dir/file.o
@@ -9881,7 +10227,7 @@ If multiple @code{ar} commands run at the same time on the same archive
 file, they will not know about each other and can corrupt the file.
 
 Possibly a future version of @code{make} will provide a mechanism to
-circumvent this problem by serializing all commands that operate on the
+circumvent this problem by serializing all recipes that operate on the
 same archive file.  But for the time being, you must either write your
 makefiles to avoid this problem in some other way, or not use @code{-j}.
 
@@ -9987,7 +10333,7 @@ Substitution variable references.
 @xref{Reference, ,Basics of Variable References}.
 
 @item
-The command-line options @samp{-b} and @samp{-m}, accepted and
+The command line options @samp{-b} and @samp{-m}, accepted and
 ignored.  In System V @code{make}, these options actually do something.
 
 @item
@@ -10004,7 +10350,7 @@ archive (@pxref{Archive Update}) to be sufficient.
 
 @item
 The arrangement of lines and backslash-newline combinations in
-commands is retained when the commands are printed, so they appear as
+recipes is retained when the recipes are printed, so they appear as
 they do in the makefile, except for the stripping of initial
 whitespace.
 @end itemize
@@ -10038,12 +10384,12 @@ did.  @xref{Automatic Variables}.  The automatic variable
 @item
 The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know)
 invented by Andrew Hume in @code{mk}.
-@xref{Instead of Execution, ,Instead of Executing the Commands}.
+@xref{Instead of Execution, ,Instead of Executing Recipes}.
 
 @item
 The concept of doing several things at once (parallelism) exists in
 many incarnations of @code{make} and similar programs, though not in the
-System V or BSD implementations.  @xref{Execution, ,Command Execution}.
+System V or BSD implementations.  @xref{Execution, ,Recipe Execution}.
 
 @item
 Modified variable references using pattern substitution come from
@@ -10055,10 +10401,9 @@ inspired whom, since GNU @code{make} had @code{patsubst} before SunOS
 4 was released.@refill
 
 @item
-The special significance of @samp{+} characters preceding command lines
-(@pxref{Instead of Execution, ,Instead of Executing the Commands}) is
-mandated by
-@cite{IEEE Standard 1003.2-1992} (POSIX.2).
+The special significance of @samp{+} characters preceding recipe lines
+(@pxref{Instead of Execution, ,Instead of Executing Recipes}) is
+mandated by @cite{IEEE Standard 1003.2-1992} (POSIX.2).
 
 @item
 The @samp{+=} syntax to append to the value of a variable comes from SunOS
@@ -10092,7 +10437,7 @@ Use the @samp{-h} or @samp{--help} option to summarize the options to
 Simply-expanded variables.  @xref{Flavors, ,The Two Flavors of Variables}.
 
 @item
-Pass command-line variable assignments automatically through the
+Pass command line variable assignments automatically through the
 variable @code{MAKE} to recursive @code{make} invocations.
 @xref{Recursion, ,Recursive Use of @code{make}}.
 
@@ -10102,7 +10447,7 @@ directory.  @xref{Options Summary, ,Summary of Options}.
 
 @item
 Make verbatim variable definitions with @code{define}.
-@xref{Defining, ,Defining Variables Verbatim}.
+@xref{Multi-Line, ,Defining Multi-Line Variables}.
 
 @item
 Declare phony targets with the special target @code{.PHONY}.
@@ -10224,10 +10569,11 @@ general feature of rule chaining.
 @xref{Chained Rules, ,Chains of Implicit Rules}.
 
 @item
-In System V and 4.3 BSD @code{make}, files found by @code{VPATH} search
-(@pxref{Directory Search, ,Searching Directories for Prerequisites}) have their names changed inside command
-strings.  We feel it is much cleaner to always use automatic variables
-and thus make this feature obsolete.@refill
+In System V and 4.3 BSD @code{make}, files found by @code{VPATH}
+search (@pxref{Directory Search, ,Searching Directories for
+Prerequisites}) have their names changed inside recipes.  We feel it
+is much cleaner to always use automatic variables and thus make this
+feature obsolete.@refill
 
 @item
 In some Unix @code{make}s, the automatic variable @code{$*} appearing in
@@ -10238,9 +10584,9 @@ this; it is utterly inconsistent with the normal definition of @code{$*}.
 @vindex * @r{(automatic variable), unsupported bizarre usage}
 
 @item
-In some Unix @code{make}s, implicit rule search
-(@pxref{Implicit Rules, ,Using Implicit Rules}) is apparently done for
-@emph{all} targets, not just those without commands.  This means you can
+In some Unix @code{make}s, implicit rule search (@pxref{Implicit
+Rules, ,Using Implicit Rules}) is apparently done for @emph{all}
+targets, not just those without recipes.  This means you can
 do:@refill
 
 @example
@@ -10264,9 +10610,9 @@ compiling or preprocessing EFL programs.  If we hear of anyone who is
 using EFL, we will gladly add them.
 
 @item
-It appears that in SVR4 @code{make}, a suffix rule can be specified with
-no commands, and it is treated as if it had empty commands
-(@pxref{Empty Commands}).  For example:
+It appears that in SVR4 @code{make}, a suffix rule can be specified
+with no recipe, and it is treated as if it had an empty recipe
+(@pxref{Empty Recipes}).  For example:
 
 @example
 .c.a:
@@ -10275,7 +10621,7 @@ no commands, and it is treated as if it had empty commands
 @noindent
 will override the built-in @file{.c.a} suffix rule.
 
-We feel that it is cleaner for a rule without commands to always simply
+We feel that it is cleaner for a rule without a recipe to always simply
 add to the prerequisite list for the target.  The above example can be
 easily rewritten to get the desired behavior in GNU @code{make}:
 
@@ -10288,7 +10634,7 @@ Some versions of @code{make} invoke the shell with the @samp{-e} flag,
 except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a
 Program}).  The @samp{-e} flag tells the shell to exit as soon as any
 program it runs returns a nonzero status.  We feel it is cleaner to
-write each shell command line to stand on its own and not require this
+write each line of the recipe to stand on its own and not require this
 special treatment.
 @end itemize
 
@@ -10309,10 +10655,17 @@ Here is a summary of the directives GNU @code{make} recognizes:
 
 @table @code
 @item define @var{variable}
+@itemx define @var{variable} =
+@itemx define @var{variable} :=
+@itemx define @var{variable} +=
+@itemx define @var{variable} ?=
 @itemx endef
+Define multi-line variables.@*
+@xref{Multi-Line}.
 
-Define a multi-line, recursively-expanded variable.@*
-@xref{Sequences}.
+@item undefine @var{variable}
+Undefining variables.@*
+@xref{Undefine Directive}.
 
 @item ifdef @var{variable}
 @itemx ifndef @var{variable}
@@ -10324,43 +10677,35 @@ Define a multi-line, recursively-expanded variable.@*
 @itemx ifneq '@var{a}' '@var{b}'
 @itemx else
 @itemx endif
-
 Conditionally evaluate part of the makefile.@*
 @xref{Conditionals}.
 
 @item include @var{file}
 @itemx -include @var{file}
 @itemx sinclude @var{file}
-
 Include another makefile.@*
 @xref{Include, ,Including Other Makefiles}.
 
-@item override @var{variable} = @var{value}
-@itemx override @var{variable} := @var{value}
-@itemx override @var{variable} += @var{value}
-@itemx override @var{variable} ?= @var{value}
-@itemx override define @var{variable}
-@itemx endef
-
+@item override @var{variable-assignment}
 Define a variable, overriding any previous definition, even one from
 the command line.@*
 @xref{Override Directive, ,The @code{override} Directive}.
 
 @item export
-
 Tell @code{make} to export all variables to child processes by default.@*
 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
 
 @item export @var{variable}
-@itemx export @var{variable} = @var{value}
-@itemx export @var{variable} := @var{value}
-@itemx export @var{variable} += @var{value}
-@itemx export @var{variable} ?= @var{value}
+@itemx export @var{variable-assignment}
 @itemx unexport @var{variable}
 Tell @code{make} whether or not to export a particular variable to child
 processes.@*
 @xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}.
 
+@item private @var{variable-assignment}
+Do not allow this variable assignment to be inherited by prerequisites.@*
+@xref{Suppressing Inheritance}.
+
 @item vpath @var{pattern} @var{path}
 Specify a search path for files matching a @samp{%} pattern.@*
 @xref{Selective Search, , The @code{vpath} Directive}.
@@ -10469,54 +10814,64 @@ symlinks.@*
 @xref{File Name Functions, ,Functions for File Names}.
 
 @item $(error @var{text}@dots{})
-
 When this function is evaluated, @code{make} generates a fatal error
 with the message @var{text}.@*
 @xref{Make Control Functions, ,Functions That Control Make}.
 
 @item $(warning @var{text}@dots{})
-
 When this function is evaluated, @code{make} generates a warning with
 the message @var{text}.@*
 @xref{Make Control Functions, ,Functions That Control Make}.
 
 @item $(shell @var{command})
-
 Execute a shell command and return its output.@*
 @xref{Shell Function, , The @code{shell} Function}.
 
 @item $(origin @var{variable})
-
 Return a string describing how the @code{make} variable @var{variable} was
 defined.@*
 @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})
-
 Evaluate @var{text} with @var{var} bound to each word in @var{words},
 and concatenate the results.@*
 @xref{Foreach Function, ,The @code{foreach} Function}.
 
-@item $(call @var{var},@var{param},@dots{})
+@item $(if @var{condition},@var{then-part}[,@var{else-part}])
+Evaluate the condition @var{condition}; if it's non-empty substitute
+the expansion of the @var{then-part} otherwise substitute the
+expansion of the @var{else-part}.@*
+@xref{Conditional Functions, ,Functions for Conditionals}.
 
+@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
+Evaluate each condition @var{conditionN} one at a time; substitute the
+first non-empty expansion.  If all expansions are empty, substitute
+the empty string.@*
+@xref{Conditional Functions, ,Functions for Conditionals}.
+
+@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]])
+Evaluate each condition @var{conditionN} one at a time; if any
+expansion results in the empty string substitute the empty string.  If
+all expansions result in a non-empty string, substitute the expansion
+of the last @var{condition}.@*
+@xref{Conditional Functions, ,Functions for Conditionals}.
+
+@item $(call @var{var},@var{param},@dots{})
 Evaluate the variable @var{var} replacing any references to @code{$(1)},
 @code{$(2)} with the first, second, etc.@: @var{param} values.@*
 @xref{Call Function, ,The @code{call} Function}.
 
 @item $(eval @var{text})
-
 Evaluate @var{text} then read the results as makefile commands.
 Expands to the empty string.@*
 @xref{Eval Function, ,The @code{eval} Function}.
 
 @item $(value @var{var})
-
 Evaluates to the contents of the variable @var{var}, with no expansion
 performed on it.@*
 @xref{Value Function, ,The @code{value} Function}.
@@ -10540,12 +10895,12 @@ The name of the first prerequisite.
 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 (@pxref{Archives}).
+the named member is used (@pxref{Archives}).
 
 @item $^
 @itemx $+
 The names of all the prerequisites, with spaces between them.  For
-prerequisites which are archive members, only the member named is used
+prerequisites which are archive members, only the named member is used
 (@pxref{Archives}).  The value of @code{$^} omits duplicate
 prerequisites, while @code{$+} retains them and preserves their order.
 
@@ -10599,7 +10954,7 @@ Directory search path for files not found in the current directory.@*
 
 The name of the system default command interpreter, usually @file{/bin/sh}.
 You can set @code{SHELL} in the makefile to change the shell used to run
-commands.  @xref{Execution, ,Command Execution}.  The @code{SHELL}
+recipes.  @xref{Execution, ,Recipe Execution}.  The @code{SHELL}
 variable is handled specially when importing from and exporting to the
 environment.  @xref{Choosing the Shell}.
 
@@ -10611,9 +10966,9 @@ by @code{make}.  This value takes precedence over the value of
 
 @item MAKE
 
-The name with which @code{make} was invoked.
-Using this variable in commands has special meaning.
-@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.
+The name with which @code{make} was invoked.  Using this variable in
+recipes has special meaning.  @xref{MAKE Variable, ,How the
+@code{MAKE} Variable Works}.
 
 @item MAKELEVEL
 
@@ -10626,8 +10981,8 @@ The flags given to @code{make}.  You can set this in the environment or
 a makefile to set flags.@*
 @xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
 
-It is @emph{never} appropriate to use @code{MAKEFLAGS} directly on a
-command line: its contents may not be quoted correctly for use in the
+It is @emph{never} appropriate to use @code{MAKEFLAGS} directly in a
+recipe line: its contents may not be quoted correctly for use in the
 shell.  Always allow recursive @code{make}'s to obtain these values
 through the environment from its parent.
 
@@ -10663,8 +11018,8 @@ Here is a list of the more common errors you might see generated by
 them.
 
 Sometimes @code{make} errors are not fatal, especially in the presence
-of a @code{-} prefix on a command script line, or the @code{-k} command
-line option.  Errors that are fatal are prefixed with the string
+of a @code{-} prefix on a recipe line, or the @code{-k} command line
+option.  Errors that are fatal are prefixed with the string
 @code{***}.
 
 Error messages are all either prefixed with the name of the program
@@ -10678,10 +11033,10 @@ In the table below, these common prefixes are left off.
 @item [@var{foo}] Error @var{NN}
 @itemx [@var{foo}] @var{signal description}
 These errors are not really @code{make} errors at all.  They mean that a
-program that @code{make} invoked as part of a command script returned a
+program that @code{make} invoked as part of a recipe returned a
 non-0 error code (@samp{Error @var{NN}}), which @code{make} interprets
 as failure, or it exited in some other abnormal fashion (with a
-signal of some type).  @xref{Errors, ,Errors in Commands}.
+signal of some type).  @xref{Errors, ,Errors in Recipes}.
 
 If no @code{***} is attached to the message, then the subprocess failed
 but the rule in the makefile was prefixed with the @code{-} special
@@ -10689,26 +11044,27 @@ character, so @code{make} ignored the error.
 
 @item missing separator.  Stop.
 @itemx missing separator (did you mean TAB instead of 8 spaces?).  Stop.
-This means that @code{make} could not understand much of anything about
-the command line it just read.  GNU @code{make} looks for various kinds
-of separators (@code{:}, @code{=}, TAB characters, etc.) to help it
-decide what kind of commandline it's seeing.  This means it couldn't
-find a valid one.
-
-One of the most common reasons for this message is that you (or perhaps
-your oh-so-helpful editor, as is the case with many MS-Windows editors)
-have attempted to indent your command scripts with spaces instead of a
-TAB character.  In this case, @code{make} will use the second form of
-the error above.  Remember that every line in the command script must
-begin with a TAB character.  Eight spaces do not count.  @xref{Rule
-Syntax}.
-
-@item commands commence before first target.  Stop.
-@itemx missing rule before commands.  Stop.
-This means the first thing in the makefile seems to be part of a command
-script: it begins with a TAB character and doesn't appear to be a legal
-@code{make} command (such as a variable assignment).  Command scripts
-must always be associated with a target.
+This means that @code{make} could not understand much of anything
+about the makefile line it just read.  GNU @code{make} looks for
+various separators (@code{:}, @code{=}, recipe prefix characters,
+etc.) to indicate what kind of line it's parsing.  This message means
+it couldn't find a valid one.
+
+One of the most common reasons for this message is that you (or
+perhaps your oh-so-helpful editor, as is the case with many MS-Windows
+editors) have attempted to indent your recipe lines with spaces
+instead of a tab character.  In this case, @code{make} will use the
+second form of the error above.  Remember that every line in the
+recipe must begin with a tab character (unless you set
+@code{.RECIPEPREFIX}; @pxref{Special Variables}).  Eight spaces do not
+count.  @xref{Rule Syntax}.
+
+@item recipe commences before first target.  Stop.
+@itemx missing rule before recipe.  Stop.
+This means the first thing in the makefile seems to be part of a
+recipe: it begins with a recipe prefix character and doesn't appear to
+be a legal @code{make} directive (such as a variable assignment).
+Recipes must always be associated with a target.
 
 The second form is generated if the line has a semicolon as the first
 non-whitespace character; @code{make} interprets this to mean you left
@@ -10740,13 +11096,13 @@ has nothing to do in these situations.
 A makefile specified on the command line (first form) or included
 (second form) was not found.
 
-@item warning: overriding commands for target `@var{xxx}'
-@itemx warning: ignoring old commands for target `@var{xxx}'
-GNU @code{make} allows commands to be specified only once per target
-(except for double-colon rules).  If you give commands for a target
-which already has been defined to have commands, this warning is issued
-and the second set of commands will overwrite the first set.
-@xref{Multiple Rules, ,Multiple Rules for One Target}.
+@item warning: overriding recipe for target `@var{xxx}'
+@itemx warning: ignoring old recipe for target `@var{xxx}'
+GNU @code{make} allows only one recipe to be specified per target
+(except for double-colon rules).  If you give a recipe for a target
+which already has been defined to have one, this warning is issued and
+the second recipe will overwrite the first.  @xref{Multiple Rules,
+,Multiple Rules for One Target}.
 
 @item Circular @var{xxx} <- @var{yyy} dependency dropped.
 This means that @code{make} detected a loop in the dependency graph:
@@ -10960,18 +11316,16 @@ 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
-SRC2 =  version.c list.c names.c diffarch.c \
-        port.c wildmat.c getopt.c
-SRC3 =  getopt1.c regex.c getdate.y
-SRCS =  $(SRC1) $(SRC2) $(SRC3)
-OBJ1 =  tar.o create.o extract.o buffer.o \
-        getoldopt.o update.o gnu.o mangle.o
-OBJ2 =  version.o list.o names.o diffarch.o \
-        port.o wildmat.o getopt.o
-OBJ3 =  getopt1.o regex.o getdate.o $(RTAPELIB)
-OBJS =  $(OBJ1) $(OBJ2) $(OBJ3)
+@group
+SRCS_C  = tar.c create.c extract.c buffer.c   \
+          getoldopt.c update.c gnu.c mangle.c \
+          version.c list.c names.c diffarch.c \
+          port.c wildmat.c getopt.c getopt1.c \
+          regex.c
+SRCS_Y  = getdate.y
+SRCS    = $(SRCS_C) $(SRCS_Y)
+OBJS    = $(SRCS_C:.c=.o) $(SRCS_Y:.y=.o) $(RTAPELIB)
+@end group
 @group
 AUX =   README COPYING ChangeLog Makefile.in  \
         makefile.pc configure configure.in \
@@ -10986,7 +11340,6 @@ AUX =   README COPYING ChangeLog Makefile.in  \
 all:    tar rmt tar.info
 
 @group
-.PHONY: tar
 tar:    $(OBJS)
         $(CC) $(LDFLAGS) -o $@@ $(OBJS) $(LIBS)
 @end group
@@ -11087,9 +11440,10 @@ tar.zoo: $(SRCS) $(AUX)
 @end group
 @end example
 
-@raisesections
+@node GNU Free Documentation License, Concept Index, Complex Makefile, Top
+@appendixsec GNU Free Documentation License
+@cindex FDL, GNU Free Documentation License
 @include fdl.texi
-@lowersections
 
 @node Concept Index, Name Index, GNU Free Documentation License, Top
 @unnumbered Index of Concepts
index f75ce93..aac448b 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 1 April 2006
-@set UPDATED-MONTH April 2006
-@set EDITION 3.81
-@set VERSION 3.81
+@set UPDATED 19 July 2010
+@set UPDATED-MONTH July 2010
+@set EDITION 3.82
+@set VERSION 3.82
index f75ce93..aac448b 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 1 April 2006
-@set UPDATED-MONTH April 2006
-@set EDITION 3.81
-@set VERSION 3.81
+@set UPDATED 19 July 2010
+@set UPDATED-MONTH July 2010
+@set EDITION 3.82
+@set VERSION 3.82
index f8a06e1..c911e18 100644 (file)
@@ -1,19 +1,20 @@
 @echo off\r
-rem Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free\r
-rem Software Foundation, Inc.\r
+rem Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,\r
+rem 2008, 2009, 2010 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
-\r
-rem GNU Make is free software; you can redistribute it and/or modify it under the\r
-rem terms of the GNU General Public License as published by the Free Software\r
-rem Foundation; either version 2, or (at your option) any later version.\r
-\r
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-rem You should have received a copy of the GNU General Public License along with\r
-rem GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
+rem\r
+rem GNU Make is free software; you can redistribute it and/or modify it under\r
+rem the terms of the GNU General Public License as published by the Free\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
+rem more details.\r
+rem\r
+rem You should have received a copy of the GNU General Public License along\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
 echo Building Make for MSDOS\r
 \r
index 993e6d4..2315b06 100644 (file)
--- a/expand.c
+++ b/expand.c
@@ -1,20 +1,20 @@
 /* Variable expansion functions 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -55,7 +55,7 @@ char *variable_buffer;
    the following call.  */
 
 char *
-variable_buffer_output (char *ptr, char *string, unsigned int length)
+variable_buffer_output (char *ptr, const char *string, unsigned int length)
 {
   register unsigned int newlen = length + (ptr - variable_buffer);
 
@@ -65,12 +65,11 @@ variable_buffer_output (char *ptr, char *string, unsigned int length)
       variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
                                ? newlen + 100
                                : 2 * variable_buffer_length);
-      variable_buffer = (char *) xrealloc (variable_buffer,
-                                          variable_buffer_length);
+      variable_buffer = xrealloc (variable_buffer, variable_buffer_length);
       ptr = variable_buffer + offset;
     }
 
-  bcopy (string, ptr, length);
+  memcpy (ptr, string, length);
   return ptr + length;
 }
 
@@ -84,7 +83,7 @@ initialize_variable_output (void)
   if (variable_buffer == 0)
     {
       variable_buffer_length = 200;
-      variable_buffer = (char *) xmalloc (variable_buffer_length);
+      variable_buffer = xmalloc (variable_buffer_length);
       variable_buffer[0] = '\0';
     }
 
@@ -93,7 +92,7 @@ initialize_variable_output (void)
 \f
 /* Recursively expand V.  The returned string is malloc'd.  */
 
-static char *allocated_variable_append PARAMS ((const struct variable *v));
+static char *allocated_variable_append (const struct variable *v);
 
 char *
 recursively_expand_for_file (struct variable *v, struct file *file)
@@ -160,9 +159,9 @@ recursively_expand_for_file (struct variable *v, struct file *file)
 __inline
 #endif
 static char *
-reference_variable (char *o, char *name, unsigned int length)
+reference_variable (char *o, const char *name, unsigned int length)
 {
-  register struct variable *v;
+  struct variable *v;
   char *value;
 
   v = lookup_variable (name, length);
@@ -191,29 +190,39 @@ reference_variable (char *o, char *name, unsigned int length)
    Write the results to LINE, which must point into `variable_buffer'.  If
    LINE is NULL, start at the beginning of the buffer.
    Return a pointer to LINE, or to the beginning of the buffer if LINE is
-   NULL.  */
-
+   NULL.
+ */
 char *
-variable_expand_string (char *line, char *string, long length)
+variable_expand_string (char *line, const char *string, long length)
 {
-  register struct variable *v;
-  register char *p, *o, *p1;
-  char save_char = '\0';
+  struct variable *v;
+  const char *p, *p1;
+  char *abuf = NULL;
+  char *o;
   unsigned int line_offset;
 
   if (!line)
     line = initialize_variable_output();
-
-  p = string;
   o = line;
   line_offset = line - variable_buffer;
 
-  if (length >= 0)
+  if (length == 0)
     {
-      save_char = string[length];
-      string[length] = '\0';
+      variable_buffer_output (o, "", 1);
+      return (variable_buffer);
     }
 
+  /* If we want a subset of the string, allocate a temporary buffer for it.
+     Most of the functions we use here don't work with length limits.  */
+  if (length > 0 && string[length] != '\0')
+    {
+      abuf = xmalloc(length+1);
+      memcpy(abuf, string, length);
+      abuf[length] = '\0';
+      string = abuf;
+    }
+  p = string;
+
   while (1)
     {
       /* Copy all following uninteresting chars all at once to the
@@ -243,10 +252,11 @@ variable_expand_string (char *line, char *string, long length)
          {
            char openparen = *p;
            char closeparen = (openparen == '(') ? ')' : '}';
-           register char *beg = p + 1;
-           int free_beg = 0;
-           char *op, *begp;
-           char *end, *colon;
+            const char *begp;
+           const char *beg = p + 1;
+           char *op;
+            char *abeg = NULL;
+           const char *end, *colon;
 
            op = o;
            begp = p;
@@ -282,8 +292,8 @@ variable_expand_string (char *line, char *string, long length)
                   such as `$($(a)'.  */
                if (count < 0)
                  {
-                   beg = expand_argument (beg, p); /* Expand the name.  */
-                   free_beg = 1; /* Remember to free BEG when finished.  */
+                   abeg = expand_argument (beg, p); /* Expand the name.  */
+                   beg = abeg;
                    end = strchr (beg, '\0');
                  }
              }
@@ -301,7 +311,7 @@ variable_expand_string (char *line, char *string, long length)
            if (colon)
              {
                /* This looks like a substitution reference: $(FOO:A=B).  */
-               char *subst_beg, *subst_end, *replace_beg, *replace_end;
+               const char *subst_beg, *subst_end, *replace_beg, *replace_end;
 
                subst_beg = colon + 1;
                subst_end = lindex (subst_beg, end, '=');
@@ -333,15 +343,14 @@ variable_expand_string (char *line, char *string, long length)
                         /* Copy the pattern and the replacement.  Add in an
                            extra % at the beginning to use in case there
                            isn't one in the pattern.  */
-                        pattern = (char *) alloca (subst_end - subst_beg + 2);
+                        pattern = alloca (subst_end - subst_beg + 2);
                         *(pattern++) = '%';
-                        bcopy (subst_beg, pattern, subst_end - subst_beg);
+                        memcpy (pattern, subst_beg, subst_end - subst_beg);
                         pattern[subst_end - subst_beg] = '\0';
 
-                        replace = (char *) alloca (replace_end
-                                                   - replace_beg + 2);
+                        replace = alloca (replace_end - replace_beg + 2);
                         *(replace++) = '%';
-                        bcopy (replace_beg, replace,
+                        memcpy (replace, replace_beg,
                                replace_end - replace_beg);
                         replace[replace_end - replace_beg] = '\0';
 
@@ -351,7 +360,9 @@ variable_expand_string (char *line, char *string, long length)
                        if (ppercent)
                           {
                             ++ppercent;
-                            rpercent = 0;
+                            rpercent = find_percent (replace);
+                            if (rpercent)
+                              ++rpercent;
                           }
                        else
                           {
@@ -361,8 +372,8 @@ variable_expand_string (char *line, char *string, long length)
                             --replace;
                           }
 
-                        o = patsubst_expand (o, value, pattern, replace,
-                                             ppercent, rpercent);
+                        o = patsubst_expand_pat (o, value, pattern, replace,
+                                                 ppercent, rpercent);
 
                        if (v->recursive)
                          free (value);
@@ -375,8 +386,8 @@ variable_expand_string (char *line, char *string, long length)
                 Look up the value of the variable.  */
                o = reference_variable (o, beg, end - beg);
 
-         if (free_beg)
-           free (beg);
+         if (abeg)
+           free (abeg);
          }
          break;
 
@@ -396,14 +407,14 @@ variable_expand_string (char *line, char *string, long length)
 
       if (*p == '\0')
        break;
-      else
-       ++p;
+
+      ++p;
     }
 
-  if (save_char)
-    string[length] = save_char;
+  if (abuf)
+    free (abuf);
 
-  (void)variable_buffer_output (o, "", 1);
+  variable_buffer_output (o, "", 1);
   return (variable_buffer + line_offset);
 }
 \f
@@ -413,7 +424,7 @@ variable_expand_string (char *line, char *string, long length)
    and is valid only until the next time this function is called.  */
 
 char *
-variable_expand (char *line)
+variable_expand (const char *line)
 {
   return variable_expand_string(NULL, line, (long)-1);
 }
@@ -427,42 +438,57 @@ variable_expand (char *line)
 char *
 expand_argument (const char *str, const char *end)
 {
-  char *tmp;
+  char *tmp, *alloc = NULL;
+  char *r;
 
   if (str == end)
     return xstrdup("");
 
   if (!end || *end == '\0')
-    return allocated_variable_expand ((char *)str);
+    return allocated_variable_expand (str);
 
-  tmp = (char *) alloca (end - str + 1);
-  bcopy (str, tmp, end - str);
+  if (end - str + 1 > 1000)
+    tmp = alloc = xmalloc (end - str + 1);
+  else
+    tmp = alloca (end - str + 1);
+
+  memcpy (tmp, str, end - str);
   tmp[end - str] = '\0';
 
-  return allocated_variable_expand (tmp);
+  r = allocated_variable_expand (tmp);
+
+  if (alloc)
+    free (alloc);
+
+  return r;
 }
 \f
 /* Expand LINE for FILE.  Error messages refer to the file and line where
    FILE's commands were found.  Expansion uses FILE's variable set list.  */
 
 char *
-variable_expand_for_file (char *line, struct file *file)
+variable_expand_for_file (const char *line, struct file *file)
 {
   char *result;
-  struct variable_set_list *save;
+  struct variable_set_list *savev;
+  const struct floc *savef;
 
   if (file == 0)
     return variable_expand (line);
 
-  save = current_variable_set_list;
+  savev = current_variable_set_list;
   current_variable_set_list = file->variables;
+
+  savef = reading_file;
   if (file->cmds && file->cmds->fileinfo.filenm)
     reading_file = &file->cmds->fileinfo;
   else
     reading_file = 0;
+
   result = variable_expand (line);
-  current_variable_set_list = save;
-  reading_file = 0;
+
+  current_variable_set_list = savev;
+  reading_file = savef;
 
   return result;
 }
@@ -536,7 +562,7 @@ allocated_variable_append (const struct variable *v)
    This function is called a lot.  It wants to be efficient.  */
 
 char *
-allocated_variable_expand_for_file (char *line, struct file *file)
+allocated_variable_expand_for_file (const char *line, struct file *file)
 {
   char *value;
 
@@ -547,11 +573,6 @@ allocated_variable_expand_for_file (char *line, struct file *file)
 
   value = variable_expand_for_file (line, file);
 
-#if 0
-  /* Waste a little memory and save time.  */
-  value = xrealloc (value, strlen (value))
-#endif
-
   variable_buffer = obuf;
   variable_buffer_length = olen;
 
diff --git a/file.c b/file.c
index 90dd123..0a4edb2 100644 (file)
--- a/file.c
+++ b/file.c
@@ -1,20 +1,20 @@
 /* Target file management 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -69,16 +69,16 @@ static int all_secondary = 0;
 
 /* Access the hash table of all file records.
    lookup_file  given a name, return the struct file * for that name,
-           or nil if there is none.
-   enter_file   similar, but create one if there is none.  */
+                or nil if there is none.
+*/
 
 struct file *
-lookup_file (char *name)
+lookup_file (const char *name)
 {
-  register struct file *f;
+  struct file *f;
   struct file file_key;
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-  register char *lname, *ln;
+  char *lname;
 #endif
 
   assert (*name != '\0');
@@ -90,8 +90,9 @@ lookup_file (char *name)
 # ifndef WANT_CASE_SENSITIVE_TARGETS
   if (*name != '.')
     {
-      register char *n;
-      lname = (char *) malloc (strlen (name) + 1);
+      const char *n;
+      char *ln;
+      lname = xstrdup (name);
       for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
         *ln = isupper ((unsigned char)*n) ? tolower ((unsigned char)*n) : *n;
       *ln = '\0';
@@ -102,65 +103,75 @@ lookup_file (char *name)
   while (name[0] == '[' && name[1] == ']' && name[2] != '\0')
       name += 2;
 #endif
-  while (name[0] == '.' && name[1] == '/' && name[2] != '\0')
+  while (name[0] == '.'
+#ifdef HAVE_DOS_PATHS
+        && (name[1] == '/' || name[1] == '\\')
+#else
+        && name[1] == '/'
+#endif
+        && name[2] != '\0')
     {
       name += 2;
-      while (*name == '/')
+      while (*name == '/'
+#ifdef HAVE_DOS_PATHS
+            || *name == '\\'
+#endif
+            )
        /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
        ++name;
     }
 
   if (*name == '\0')
     /* It was all slashes after a dot.  */
-#ifdef VMS
+#if defined(VMS)
     name = "[]";
-#else
-#ifdef _AMIGA
+#elif defined(_AMIGA)
     name = "";
 #else
     name = "./";
-#endif /* AMIGA */
-#endif /* VMS */
+#endif
 
   file_key.hname = name;
-  f = (struct file *) hash_find_item (&files, &file_key);
+  f = hash_find_item (&files, &file_key);
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
   if (*name != '.')
     free (lname);
 #endif
+
   return f;
 }
 
+/* Look up a file record for file NAME and return it.
+   Create a new record if one doesn't exist.  NAME will be stored in the
+   new record so it should be constant or in the strcache etc.
+ */
+
 struct file *
-enter_file (char *name)
+enter_file (const char *name)
 {
-  register struct file *f;
-  register struct file *new;
-  register struct file **file_slot;
+  struct file *f;
+  struct file *new;
+  struct file **file_slot;
   struct file file_key;
-#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-  char *lname, *ln;
-#endif
 
   assert (*name != '\0');
+  assert (strcache_iscached (name));
 
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
   if (*name != '.')
     {
-      register char *n;
-      lname = (char *) malloc (strlen (name) + 1);
+      const char *n;
+      char *lname, *ln;
+      lname = xstrdup (name);
       for (n = name, ln = lname; *n != '\0'; ++n, ++ln)
-        {
-          if (isupper ((unsigned char)*n))
-            *ln = tolower ((unsigned char)*n);
-          else
-            *ln = *n;
-        }
+        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;
+      *ln = '\0';
+      name = strcache_add (lname);
+      free (lname);
     }
 #endif
 
@@ -168,16 +179,9 @@ enter_file (char *name)
   file_slot = (struct file **) hash_find_slot (&files, &file_key);
   f = *file_slot;
   if (! HASH_VACANT (f) && !f->double_colon)
-    {
-#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
-      if (*name != '.')
-        free (lname);
-#endif
-      return f;
-    }
+    return f;
 
-  new = (struct file *) xmalloc (sizeof (struct file));
-  bzero ((char *) new, sizeof (struct file));
+  new = xcalloc (sizeof (struct file));
   new->name = new->hname = name;
   new->update_status = -1;
 
@@ -197,27 +201,12 @@ enter_file (char *name)
   return new;
 }
 \f
-/* Rename FILE to NAME.  This is not as simple as resetting
-   the `name' member, since it must be put in a new hash bucket,
-   and possibly merged with an existing file called NAME.  */
-
-void
-rename_file (struct file *from_file, char *to_hname)
-{
-  rehash_file (from_file, to_hname);
-  while (from_file)
-    {
-      from_file->name = from_file->hname;
-      from_file = from_file->prev;
-    }
-}
-
 /* Rehash FILE to NAME.  This is not as simple as resetting
    the `hname' member, since it must be put in a new hash bucket,
    and possibly merged with an existing file called NAME.  */
 
 void
-rehash_file (struct file *from_file, char *to_hname)
+rehash_file (struct file *from_file, const char *to_hname)
 {
   struct file file_key;
   struct file **file_slot;
@@ -225,108 +214,130 @@ rehash_file (struct file *from_file, char *to_hname)
   struct file *deleted_file;
   struct file *f;
 
+  /* If it's already that name, we're done.  */
   file_key.hname = to_hname;
-  if (0 == file_hash_cmp (from_file, &file_key))
+  if (! file_hash_cmp (from_file, &file_key))
     return;
 
+  /* Find the end of the renamed list for the "from" file.  */
   file_key.hname = from_file->hname;
   while (from_file->renamed != 0)
     from_file = from_file->renamed;
   if (file_hash_cmp (from_file, &file_key))
-    /* hname changed unexpectedly */
+    /* hname changed unexpectedly!! */
     abort ();
 
+  /* Remove the "from" file from the hash.  */
   deleted_file = hash_delete (&files, from_file);
   if (deleted_file != from_file)
     /* from_file isn't the one stored in files */
     abort ();
 
+  /* Find where the newly renamed file will go in the hash.  */
   file_key.hname = to_hname;
   file_slot = (struct file **) hash_find_slot (&files, &file_key);
   to_file = *file_slot;
 
+  /* Change the hash name for this file.  */
   from_file->hname = to_hname;
   for (f = from_file->double_colon; f != 0; f = f->prev)
     f->hname = to_hname;
 
+  /* If the new name doesn't exist yet just set it to the renamed file.  */
   if (HASH_VACANT (to_file))
-    hash_insert_at (&files, from_file, file_slot);
-  else
     {
-      /* TO_FILE already exists under TO_HNAME.
-        We must retain TO_FILE and merge FROM_FILE into it.  */
+      hash_insert_at (&files, from_file, file_slot);
+      return;
+    }
 
-      if (from_file->cmds != 0)
-       {
-         if (to_file->cmds == 0)
-           to_file->cmds = from_file->cmds;
-         else if (from_file->cmds != to_file->cmds)
-           {
-             /* We have two sets of commands.  We will go with the
-                one given in the rule explicitly mentioning this name,
-                but give a message to let the user know what's going on.  */
-             if (to_file->cmds->fileinfo.filenm != 0)
-                error (&from_file->cmds->fileinfo,
-                      _("Commands were specified for file `%s' at %s:%lu,"),
-                      from_file->name, to_file->cmds->fileinfo.filenm,
-                      to_file->cmds->fileinfo.lineno);
-             else
-               error (&from_file->cmds->fileinfo,
-                      _("Commands for file `%s' were found by implicit rule search,"),
-                      from_file->name);
-             error (&from_file->cmds->fileinfo,
-                    _("but `%s' is now considered the same file as `%s'."),
-                    from_file->name, to_hname);
-             error (&from_file->cmds->fileinfo,
-                    _("Commands for `%s' will be ignored in favor of those for `%s'."),
-                    to_hname, from_file->name);
-           }
-       }
+  /* TO_FILE already exists under TO_HNAME.
+     We must retain TO_FILE and merge FROM_FILE into it.  */
+
+  if (from_file->cmds != 0)
+    {
+      if (to_file->cmds == 0)
+        to_file->cmds = from_file->cmds;
+      else if (from_file->cmds != to_file->cmds)
+        {
+          /* We have two sets of commands.  We will go with the
+             one given in the rule explicitly mentioning this name,
+             but give a message to let the user know what's going on.  */
+          if (to_file->cmds->fileinfo.filenm != 0)
+            error (&from_file->cmds->fileinfo,
+                   _("Recipe was specified for file `%s' at %s:%lu,"),
+                   from_file->name, to_file->cmds->fileinfo.filenm,
+                   to_file->cmds->fileinfo.lineno);
+          else
+            error (&from_file->cmds->fileinfo,
+                   _("Recipe for file `%s' was found by implicit rule search,"),
+                   from_file->name);
+          error (&from_file->cmds->fileinfo,
+                 _("but `%s' is now considered the same file as `%s'."),
+                 from_file->name, to_hname);
+          error (&from_file->cmds->fileinfo,
+                 _("Recipe for `%s' will be ignored in favor of the one for `%s'."),
+                 to_hname, from_file->name);
+        }
+    }
 
-      /* Merge the dependencies of the two files.  */
+  /* Merge the dependencies of the two files.  */
 
-      if (to_file->deps == 0)
-       to_file->deps = from_file->deps;
-      else
-       {
-         register struct dep *deps = to_file->deps;
-         while (deps->next != 0)
-           deps = deps->next;
-         deps->next = from_file->deps;
-       }
+  if (to_file->deps == 0)
+    to_file->deps = from_file->deps;
+  else
+    {
+      struct dep *deps = to_file->deps;
+      while (deps->next != 0)
+        deps = deps->next;
+      deps->next = from_file->deps;
+    }
 
-      merge_variable_set_lists (&to_file->variables, from_file->variables);
+  merge_variable_set_lists (&to_file->variables, from_file->variables);
 
-      if (to_file->double_colon && from_file->is_target && !from_file->double_colon)
-       fatal (NILF, _("can't rename single-colon `%s' to double-colon `%s'"),
-              from_file->name, to_hname);
-      if (!to_file->double_colon  && from_file->double_colon)
-       {
-         if (to_file->is_target)
-           fatal (NILF, _("can't rename double-colon `%s' to single-colon `%s'"),
-                  from_file->name, to_hname);
-         else
-           to_file->double_colon = from_file->double_colon;
-       }
+  if (to_file->double_colon && from_file->is_target && !from_file->double_colon)
+    fatal (NILF, _("can't rename single-colon `%s' to double-colon `%s'"),
+           from_file->name, to_hname);
+  if (!to_file->double_colon  && from_file->double_colon)
+    {
+      if (to_file->is_target)
+        fatal (NILF, _("can't rename double-colon `%s' to single-colon `%s'"),
+               from_file->name, to_hname);
+      else
+        to_file->double_colon = from_file->double_colon;
+    }
 
-      if (from_file->last_mtime > to_file->last_mtime)
-       /* %%% Kludge so -W wins on a file that gets vpathized.  */
-       to_file->last_mtime = from_file->last_mtime;
+  if (from_file->last_mtime > to_file->last_mtime)
+    /* %%% Kludge so -W wins on a file that gets vpathized.  */
+    to_file->last_mtime = from_file->last_mtime;
 
-      to_file->mtime_before_update = from_file->mtime_before_update;
+  to_file->mtime_before_update = from_file->mtime_before_update;
 
 #define MERGE(field) to_file->field |= from_file->field
-      MERGE (precious);
-      MERGE (tried_implicit);
-      MERGE (updating);
-      MERGE (updated);
-      MERGE (is_target);
-      MERGE (cmd_target);
-      MERGE (phony);
-      MERGE (ignore_vpath);
+  MERGE (precious);
+  MERGE (tried_implicit);
+  MERGE (updating);
+  MERGE (updated);
+  MERGE (is_target);
+  MERGE (cmd_target);
+  MERGE (phony);
+  MERGE (ignore_vpath);
 #undef MERGE
 
-      from_file->renamed = to_file;
+  from_file->renamed = to_file;
+}
+
+/* Rename FILE to NAME.  This is not as simple as resetting
+   the `name' member, since it must be put in a new hash bucket,
+   and possibly merged with an existing file called NAME.  */
+
+void
+rename_file (struct file *from_file, const char *to_hname)
+{
+  rehash_file (from_file, to_hname);
+  while (from_file)
+    {
+      from_file->name = from_file->hname;
+      from_file = from_file->prev;
     }
 }
 \f
@@ -338,8 +349,8 @@ rehash_file (struct file *from_file, char *to_hname)
 void
 remove_intermediates (int sig)
 {
-  register struct file **file_slot;
-  register struct file **file_end;
+  struct file **file_slot;
+  struct file **file_end;
   int doneany = 0;
 
   /* If there's no way we will ever remove anything anyway, punt early.  */
@@ -354,10 +365,10 @@ remove_intermediates (int sig)
   for ( ; file_slot < file_end; file_slot++)
     if (! HASH_VACANT (*file_slot))
       {
-       register struct file *f = *file_slot;
+       struct file *f = *file_slot;
         /* Is this file eligible for automatic deletion?
            Yes, IFF: it's marked intermediate, it's not secondary, it wasn't
-           given on the command-line, and it's either a -include makefile or
+           given on the command line, and it's either a -include makefile or
            it's not precious.  */
        if (f->intermediate && (f->dontcare || !f->precious)
            && !f->secondary && !f->cmd_target)
@@ -409,12 +420,13 @@ remove_intermediates (int sig)
     }
 }
 \f
+/* Given a string containing prerequisites (fully expanded), break it up into
+   a struct dep list.  Enter each of these prereqs into the file database.
+ */
 struct dep *
-parse_prereqs (char *p)
+split_prereqs (char *p)
 {
-  struct dep *new = (struct dep *)
-    multi_glob (parse_file_seq (&p, '|', sizeof (struct dep), 1),
-                sizeof (struct dep));
+  struct dep *new = PARSE_FILE_SEQ (&p, struct dep, '|', NULL, 0);
 
   if (*p)
     {
@@ -423,9 +435,7 @@ parse_prereqs (char *p)
       struct dep *ood;
 
       ++p;
-      ood = (struct dep *)
-        multi_glob (parse_file_seq (&p, '\0', sizeof (struct dep), 1),
-                    sizeof (struct dep));
+      ood = PARSE_FILE_SEQ (&p, struct dep, '\0', NULL, 0);
 
       if (! new)
         new = ood;
@@ -444,6 +454,84 @@ parse_prereqs (char *p)
   return new;
 }
 
+/* Given a list of prerequisites, enter them into the file database.
+   If STEM is set then first expand patterns using STEM.  */
+struct dep *
+enter_prereqs (struct dep *deps, const char *stem)
+{
+  struct dep *d1;
+
+  if (deps == 0)
+    return 0;
+
+  /* If we have a stem, expand the %'s.  We use patsubst_expand to translate
+     the prerequisites' patterns into plain prerequisite names.  */
+  if (stem)
+    {
+      const char *pattern = "%";
+      char *buffer = variable_expand ("");
+      struct dep *dp = deps, *dl = 0;
+
+      while (dp != 0)
+        {
+          char *percent;
+          int nl = strlen (dp->name) + 1;
+          char *nm = alloca (nl);
+          memcpy (nm, dp->name, nl);
+          percent = find_percent (nm);
+          if (percent)
+            {
+              char *o;
+
+              /* We have to handle empty stems specially, because that
+                 would be equivalent to $(patsubst %,dp->name,) which
+                 will always be empty.  */
+              if (stem[0] == '\0')
+                {
+                  memmove (percent, percent+1, strlen (percent));
+                  o = variable_buffer_output (buffer, nm, strlen (nm) + 1);
+                }
+              else
+                o = patsubst_expand_pat (buffer, stem, pattern, nm,
+                                         pattern+1, percent+1);
+
+              /* If the name expanded to the empty string, ignore it.  */
+              if (buffer[0] == '\0')
+                {
+                  struct dep *df = dp;
+                  if (dp == deps)
+                    dp = deps = deps->next;
+                  else
+                    dp = dl->next = dp->next;
+                  free_dep (df);
+                  continue;
+                }
+
+              /* Save the name.  */
+              dp->name = strcache_add_len (buffer, o - buffer);
+            }
+          dp->stem = stem;
+          dp->staticpattern = 1;
+          dl = dp;
+          dp = dp->next;
+        }
+    }
+
+  /* Enter them as files, unless they need a 2nd expansion.  */
+  for (d1 = deps; d1 != 0; d1 = d1->next)
+    {
+      if (d1->need_2nd_expansion)
+        continue;
+
+      d1->file = lookup_file (d1->name);
+      if (d1->file == 0)
+        d1->file = enter_file (d1->name);
+      d1->staticpattern = 0;
+      d1->name = 0;
+    }
+
+  return deps;
+}
 
 /* Set the intermediate flag.  */
 
@@ -459,164 +547,94 @@ static void
 expand_deps (struct file *f)
 {
   struct dep *d;
-  struct dep *old = f->deps;
-  char *file_stem = f->stem;
-  unsigned int last_dep_has_cmds = f->updating;
+  struct dep **dp;
+  const char *file_stem = f->stem;
   int initialized = 0;
 
   f->updating = 0;
-  f->deps = 0;
 
-  for (d = old; d != 0; d = d->next)
+  /* Walk through the dependencies.  For any dependency that needs 2nd
+     expansion, expand it then insert the result into the list.  */
+  dp = &f->deps;
+  d = f->deps;
+  while (d != 0)
     {
-      struct dep *new, *d1;
       char *p;
+      struct dep *new, *next;
+      char *name = (char *)d->name;
 
-      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
+      if (! d->name || ! d->need_2nd_expansion)
         {
-          /* 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;
+          /* This one is all set already.  */
+          dp = &d->next;
+          d = d->next;
+          continue;
         }
 
-      /* 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)
+      /* If it's from a static pattern rule, convert the patterns into
+         "$*" so they'll expand properly.  */
+      if (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;
-            }
+          char *o;
+          d->name = o = variable_expand ("");
+          o = subst_expand (o, name, "%", "$*", 1, 2, 0);
+          *o = '\0';
+          free (name);
+          d->name = name = xstrdup (d->name);
+          d->staticpattern = 0;
         }
 
-      /* Enter them as files. */
-      for (d1 = new; d1 != 0; d1 = d1->next)
+      /* We're 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)
         {
-          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;
+          initialize_file_variables (f, 0);
+          initialized = 1;
         }
 
-      /* 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 (d->stem != 0)
+        f->stem = d->stem;
 
-      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)
-                ;
+      set_file_variables (f);
 
-              *d_ptr = f->deps;
-              f->deps = new;
-            }
-          else
-            {
-              struct dep **d_ptr;
-              for (d_ptr = &f->deps; *d_ptr; d_ptr = &(*d_ptr)->next)
-                ;
+      p = variable_expand_for_file (d->name, f);
 
-              *d_ptr = new;
-            }
+      if (d->stem != 0)
+        f->stem = file_stem;
+
+      /* At this point we don't need the name anymore: free it.  */
+      free (name);
+
+      /* Parse the prerequisites and enter them into the file database.  */
+      new = enter_prereqs (split_prereqs (p), d->stem);
+
+      /* If there were no prereqs here (blank!) then throw this one out.  */
+      if (new == 0)
+        {
+          *dp = d->next;
+          free_dep (d);
+          d = *dp;
+          continue;
         }
+
+      /* Add newly parsed prerequisites.  */
+      next = d->next;
+      *dp = new;
+      for (dp = &new->next, d = new->next; d != 0; dp = &d->next, d = d->next)
+        ;
+      *dp = next;
+      d = *dp;
     }
+}
 
-  free_dep_chain (old);
+/* Reset the updating flag.  */
+
+static void
+reset_updating (const void *item)
+{
+  struct file *f = (struct file *) item;
+  f->updating = 0;
 }
 
 /* For each dependency of each file, make the `struct dep' point
@@ -631,30 +649,46 @@ snap_deps (void)
   struct file *f;
   struct file *f2;
   struct dep *d;
-  struct file **file_slot_0;
-  struct file **file_slot;
-  struct file **file_end;
 
-  /* Perform second expansion and enter each dependency
-     name as a file. */
-
-  /* Expand .SUFFIXES first; it's dependencies are used for
-     $$* calculation. */
-  for (f = lookup_file (".SUFFIXES"); f != 0; f = f->prev)
-    expand_deps (f);
-
-  /* We must use hash_dump (), because within this loop
-     we might add new files to the table, possibly causing
-     an in-situ table expansion.  */
-  file_slot_0 = (struct file **) hash_dump (&files, 0, 0);
-  file_end = file_slot_0 + files.ht_fill;
-  for (file_slot = file_slot_0; file_slot < file_end; file_slot++)
-    for (f = *file_slot; f != 0; f = f->prev)
-      {
-        if (strcmp (f->name, ".SUFFIXES") != 0)
-          expand_deps (f);
-      }
-  free (file_slot_0);
+  /* Remember that we've done this.  Once we start snapping deps we can no
+     longer define new targets.  */
+  snapped_deps = 1;
+
+  /* Perform second expansion and enter each dependency name as a file.  We
+     must use hash_dump() here because within these loops we likely add new
+     files to the table, possibly causing an in-situ table expansion.
+
+     We only need to do this if second_expansion has been defined; if it
+     hasn't then all deps were expanded as the makefile was read in.  If we
+     ever change make to be able to unset .SECONDARY_EXPANSION this will have
+     to change.  */
+
+  if (second_expansion)
+    {
+      struct file **file_slot_0 = (struct file **) hash_dump (&files, 0, 0);
+      struct file **file_end = file_slot_0 + files.ht_fill;
+      struct file **file_slot;
+      const char *suffixes;
+
+      /* Expand .SUFFIXES: its prerequisites are used for $$* calc.  */
+      f = lookup_file (".SUFFIXES");
+      suffixes = f ? f->name : 0;
+      for (; f != 0; f = f->prev)
+        expand_deps (f);
+
+      /* For every target that's not .SUFFIXES, expand its prerequisites.  */
+
+      for (file_slot = file_slot_0; file_slot < file_end; file_slot++)
+        for (f = *file_slot; f != 0; f = f->prev)
+          if (f->name != suffixes)
+            expand_deps (f);
+      free (file_slot_0);
+    }
+  else
+    /* We're not doing second expansion, so reset updating.  */
+    hash_map (&files, reset_updating);
+
+  /* Now manage all the special targets.  */
 
   for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev)
     for (d = f->deps; d != 0; d = d->next)
@@ -678,35 +712,26 @@ snap_deps (void)
        }
 
   for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev)
-    {
-      /* .INTERMEDIATE with deps listed
-        marks those deps as intermediate files.  */
-      for (d = f->deps; d != 0; d = d->next)
-       for (f2 = d->file; f2 != 0; f2 = f2->prev)
-         f2->intermediate = 1;
-      /* .INTERMEDIATE with no deps does nothing.
-        Marking all files as intermediates is useless
-        since the goal targets would be deleted after they are built.  */
-    }
+    /* Mark .INTERMEDIATE deps as intermediate files.  */
+    for (d = f->deps; d != 0; d = d->next)
+      for (f2 = d->file; f2 != 0; f2 = f2->prev)
+        f2->intermediate = 1;
+    /* .INTERMEDIATE with no deps does nothing.
+       Marking all files as intermediates is useless since the goal targets
+       would be deleted after they are built.  */
 
   for (f = lookup_file (".SECONDARY"); f != 0; f = f->prev)
-    {
-      /* .SECONDARY with deps listed
-        marks those deps as intermediate files
-        in that they don't get rebuilt if not actually needed;
-        but unlike real intermediate files,
-        these are not deleted after make finishes.  */
-      if (f->deps)
-        for (d = f->deps; d != 0; d = d->next)
-          for (f2 = d->file; f2 != 0; f2 = f2->prev)
-            f2->intermediate = f2->secondary = 1;
-      /* .SECONDARY with no deps listed marks *all* files that way.  */
-      else
-        {
-          all_secondary = 1;
-          hash_map (&files, set_intermediate);
-        }
-    }
+    /* Mark .SECONDARY deps as both intermediate and secondary.  */
+    if (f->deps)
+      for (d = f->deps; d != 0; d = d->next)
+        for (f2 = d->file; f2 != 0; f2 = f2->prev)
+          f2->intermediate = f2->secondary = 1;
+    /* .SECONDARY with no deps listed marks *all* files that way.  */
+    else
+      {
+        all_secondary = 1;
+        hash_map (&files, set_intermediate);
+      }
 
   f = lookup_file (".EXPORT_ALL_VARIABLES");
   if (f != 0 && f->is_target)
@@ -742,12 +767,9 @@ snap_deps (void)
   /* 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);
+    define_variable_cname ("OUTPUT_OPTION", "", o_default, 1);
   */
 #endif
-
-  /* Remember that we've done this. */
-  snapped_deps = 1;
 }
 \f
 /* Set the `command_state' member of FILE and all its `also_make's.  */
@@ -853,11 +875,10 @@ file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts)
     sprintf (p, "%lu", (unsigned long) t);
   p += strlen (p);
 
-  /* Append nanoseconds as a fraction, but remove trailing zeros.
-     We don't know the actual timestamp resolution, since clock_getres
-     applies only to local times, whereas this timestamp might come
-     from a remote filesystem.  So removing trailing zeros is the
-     best guess that we can do.  */
+  /* Append nanoseconds as a fraction, but remove trailing zeros.  We don't
+     know the actual timestamp resolution, since clock_getres applies only to
+     local times, whereas this timestamp might come from a remote filesystem.
+     So removing trailing zeros is the best guess that we can do.  */
   sprintf (p, ".%09d", FILE_TIMESTAMP_NS (ts));
   p += strlen (p) - 1;
   while (*p == '0')
@@ -869,42 +890,47 @@ file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts)
 \f
 /* Print the data base of files.  */
 
-static void
-print_file (const void *item)
+void
+print_prereqs (const struct dep *deps)
 {
-  struct file *f = (struct file *) item;
-  struct dep *d;
-  struct dep *ood = 0;
-
-  putchar ('\n');
-  if (!f->is_target)
-    puts (_("# Not a target:"));
-  printf ("%s:%s", f->name, f->double_colon ? ":" : "");
+  const struct dep *ood = 0;
 
   /* Print all normal dependencies; note any order-only deps.  */
-  for (d = f->deps; d != 0; d = d->next)
-    if (! d->ignore_mtime)
-      printf (" %s", dep_name (d));
+  for (; deps != 0; deps = deps->next)
+    if (! deps->ignore_mtime)
+      printf (" %s", dep_name (deps));
     else if (! ood)
-      ood = d;
+      ood = deps;
 
   /* Print order-only deps, if we have any.  */
   if (ood)
     {
       printf (" | %s", dep_name (ood));
-      for (d = ood->next; d != 0; d = d->next)
-        if (d->ignore_mtime)
-          printf (" %s", dep_name (d));
+      for (ood = ood->next; ood != 0; ood = ood->next)
+        if (ood->ignore_mtime)
+          printf (" %s", dep_name (ood));
     }
 
   putchar ('\n');
+}
+
+static void
+print_file (const void *item)
+{
+  const struct file *f = item;
+
+  putchar ('\n');
+  if (!f->is_target)
+    puts (_("# Not a target:"));
+  printf ("%s:%s", f->name, f->double_colon ? ":" : "");
+  print_prereqs (f->deps);
 
   if (f->precious)
     puts (_("#  Precious file (prerequisite of .PRECIOUS)."));
   if (f->phony)
     puts (_("#  Phony target (prerequisite of .PHONY)."));
   if (f->cmd_target)
-    puts (_("#  Command-line target."));
+    puts (_("#  Command line target."));
   if (f->dontcare)
     puts (_("#  A default, MAKEFILES, or -include/sinclude makefile."));
   puts (f->tried_implicit
@@ -916,6 +942,7 @@ print_file (const void *item)
     puts (_("#  File is an intermediate prerequisite."));
   if (f->also_make != 0)
     {
+      const struct dep *d;
       fputs (_("#  Also makes:"), stdout);
       for (d = f->also_make; d != 0; d = d->next)
        printf (" %s", dep_name (d));
@@ -938,10 +965,10 @@ print_file (const void *item)
   switch (f->command_state)
     {
     case cs_running:
-      puts (_("#  Commands currently running (THIS IS A BUG)."));
+      puts (_("#  Recipe currently running (THIS IS A BUG)."));
       break;
     case cs_deps_running:
-      puts (_("#  Dependencies commands running (THIS IS A BUG)."));
+      puts (_("#  Dependencies recipe running (THIS IS A BUG)."));
       break;
     case cs_not_started:
     case cs_finished:
@@ -993,6 +1020,40 @@ print_file_data_base (void)
   fputs (_("\n# files hash-table stats:\n# "), stdout);
   hash_print_stats (&files, stdout);
 }
+\f
+/* Verify the integrity of the data base of files.  */
+
+#define VERIFY_CACHED(_p,_n) \
+    do{\
+        if (_p->_n && _p->_n[0] && !strcache_iscached (_p->_n)) \
+          error (NULL, "%s: Field '%s' not cached: %s\n", _p->name, # _n, _p->_n); \
+    }while(0)
+
+static void
+verify_file (const void *item)
+{
+  const struct file *f = item;
+  const struct dep *d;
+
+  VERIFY_CACHED (f, name);
+  VERIFY_CACHED (f, hname);
+  VERIFY_CACHED (f, vpath);
+  VERIFY_CACHED (f, stem);
+
+  /* Check the deps.  */
+  for (d = f->deps; d != 0; d = d->next)
+    {
+      if (! d->need_2nd_expansion)
+        VERIFY_CACHED (d, name);
+      VERIFY_CACHED (d, stem);
+    }
+}
+
+void
+verify_file_data_base (void)
+{
+  hash_map (&files, verify_file);
+}
 
 #define EXPANSION_INCREMENT(_l)  ((((_l) / 500) + 1) * 500)
 
@@ -1030,7 +1091,7 @@ build_target_list (char *value)
                 p = &value[off];
               }
 
-            bcopy (f->name, p, l);
+            memcpy (p, f->name, l);
             p += l;
             *(p++) = ' ';
           }
index e4fe7c9..0a621b9 100644 (file)
--- a/filedef.h
+++ b/filedef.h
@@ -1,20 +1,20 @@
 /* Definition of target file data structures 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
 /* Structure that represents the info on one file
@@ -25,14 +25,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 struct file
   {
-    char *name;
-    char *hname;                /* Hashed filename */
-    char *vpath;                /* VPATH/vpath pathname */
+    const char *name;
+    const char *hname;          /* Hashed filename */
+    const char *vpath;          /* VPATH/vpath pathname */
     struct dep *deps;          /* all dependencies, including duplicates */
     struct commands *cmds;     /* Commands to execute for this target.  */
     int command_flags;         /* Flags OR'd in for cmds; see commands.h.  */
-    char *stem;                        /* Implicit stem, if an implicit
-                                  rule has been used */
+    const char *stem;          /* Implicit stem, if an implicit
+                                   rule has been used */
     struct dep *also_make;     /* Targets that are made by making this.  */
     FILE_TIMESTAMP last_mtime; /* File's modtime, if already known.  */
     FILE_TIMESTAMP mtime_before_update;        /* File's modtime before any updating
@@ -94,24 +94,28 @@ struct file
                                    pattern-specific variables.  */
     unsigned int considered:1;  /* equal to 'considered' if file has been
                                    considered on current scan of goal chain */
+    unsigned int no_diag:1;     /* True if the file failed to update and no
+                                   diagnostics has been issued (dontcare). */
   };
 
 
-extern struct file *default_goal_file, *suffix_file, *default_file;
-extern char **default_goal_name;
+extern struct file *suffix_file, *default_file;
 
 
-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));
-extern void rename_file PARAMS ((struct file *file, char *name));
-extern void rehash_file PARAMS ((struct file *file, char *name));
-extern void set_command_state PARAMS ((struct file *file, enum cmd_state state));
-extern void notice_finished_file PARAMS ((struct file *file));
-extern void init_hash_files PARAMS ((void));
-extern char *build_target_list PARAMS ((char *old_list));
+struct file *lookup_file (const char *name);
+struct file *enter_file (const char *name);
+struct dep *split_prereqs (char *prereqstr);
+struct dep *enter_prereqs (struct dep *prereqs, const char *stem);
+void remove_intermediates (int sig);
+void snap_deps (void);
+void rename_file (struct file *file, const char *name);
+void rehash_file (struct file *file, const char *name);
+void set_command_state (struct file *file, enum cmd_state state);
+void notice_finished_file (struct file *file);
+void init_hash_files (void);
+char *build_target_list (char *old_list);
+void print_prereqs (const struct dep *deps);
+void print_file_data_base (void);
 
 #if FILE_TIMESTAMP_HI_RES
 # define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
@@ -152,10 +156,9 @@ extern char *build_target_list PARAMS ((char *old_list));
     * 302 / 1000) \
    + 1 + 1 + 4 + 25)
 
-extern FILE_TIMESTAMP file_timestamp_cons PARAMS ((char const *,
-                                                  time_t, int));
-extern FILE_TIMESTAMP file_timestamp_now PARAMS ((int *));
-extern void file_timestamp_sprintf PARAMS ((char *p, FILE_TIMESTAMP ts));
+FILE_TIMESTAMP file_timestamp_cons (char const *, time_t, int);
+FILE_TIMESTAMP file_timestamp_now (int *);
+void file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts);
 
 /* Return the mtime of file F (a struct file *), caching it.
    The value is NONEXISTENT_MTIME if the file does not exist.  */
@@ -165,7 +168,7 @@ extern void file_timestamp_sprintf PARAMS ((char *p, FILE_TIMESTAMP ts));
    we don't find it.
    The value is NONEXISTENT_MTIME if the file does not exist.  */
 #define file_mtime_no_search(f) file_mtime_1 ((f), 0)
-extern FILE_TIMESTAMP f_mtime PARAMS ((struct file *file, int search));
+FILE_TIMESTAMP f_mtime (struct file *file, int search);
 #define file_mtime_1(f, v) \
   ((f)->last_mtime == UNKNOWN_MTIME ? f_mtime ((f), v) : (f)->last_mtime)
 
index c62f7ab..e2f6c8c 100644 (file)
@@ -1,20 +1,20 @@
 /* Builtin function expansion 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
@@ -36,28 +36,28 @@ struct function_table_entry
     unsigned char minimum_args;
     unsigned char maximum_args;
     char expand_args;
-    char *(*func_ptr) PARAMS ((char *output, char **argv, const char *fname));
+    char *(*func_ptr) (char *output, char **argv, const char *fname);
   };
 
 static unsigned long
 function_table_entry_hash_1 (const void *keyv)
 {
-  struct function_table_entry const *key = (struct function_table_entry const *) keyv;
+  const struct function_table_entry *key = keyv;
   return_STRING_N_HASH_1 (key->name, key->len);
 }
 
 static unsigned long
 function_table_entry_hash_2 (const void *keyv)
 {
-  struct function_table_entry const *key = (struct function_table_entry const *) keyv;
+  const struct function_table_entry *key = keyv;
   return_STRING_N_HASH_2 (key->name, key->len);
 }
 
 static int
 function_table_entry_hash_cmp (const void *xv, const void *yv)
 {
-  struct function_table_entry const *x = (struct function_table_entry const *) xv;
-  struct function_table_entry const *y = (struct function_table_entry const *) yv;
+  const struct function_table_entry *x = xv;
+  const struct function_table_entry *y = yv;
   int result = x->len - y->len;
   if (result)
     return result;
@@ -74,11 +74,11 @@ static struct hash_table function_table;
    whitespace-delimited words.  */
 
 char *
-subst_expand (char *o, char *text, char *subst, char *replace,
+subst_expand (char *o, const char *text, const char *subst, const char *replace,
               unsigned int slen, unsigned int rlen, int by_word)
 {
-  char *t = text;
-  char *p;
+  const char *t = text;
+  const char *p;
 
   if (slen == 0 && !by_word)
     {
@@ -123,10 +123,7 @@ subst_expand (char *o, char *text, char *subst, char *replace,
        o = variable_buffer_output (o, replace, rlen);
 
       /* Advance T past the string to be replaced.  */
-      {
-        char *nt = p + slen;
-        t = nt;
-      }
+      t = p + slen;
     } while (*t != '\0');
 
   return o;
@@ -144,24 +141,16 @@ subst_expand (char *o, char *text, char *subst, char *replace,
 */
 
 char *
-patsubst_expand (char *o, char *text, char *pattern, char *replace,
-                 char *pattern_percent, char *replace_percent)
+patsubst_expand_pat (char *o, const char *text,
+                     const char *pattern, const char *replace,
+                     const char *pattern_percent, const char *replace_percent)
 {
   unsigned int pattern_prepercent_len, pattern_postpercent_len;
   unsigned int replace_prepercent_len, replace_postpercent_len;
-  char *t;
+  const char *t;
   unsigned int len;
   int doneany = 0;
 
-  /* We call find_percent on REPLACE before checking PATTERN so that REPLACE
-     will be collapsed before we call subst_expand if PATTERN has no %.  */
-  if (!replace_percent)
-    {
-      replace_percent = find_percent (replace);
-      if (replace_percent)
-        ++replace_percent;
-    }
-
   /* Record the length of REPLACE before and after the % so we don't have to
      compute these lengths more than once.  */
   if (replace_percent)
@@ -176,12 +165,6 @@ patsubst_expand (char *o, char *text, char *pattern, char *replace,
     }
 
   if (!pattern_percent)
-    {
-      pattern_percent = find_percent (pattern);
-      if (pattern_percent)
-        ++pattern_percent;
-    }
-  if (!pattern_percent)
     /* With no % in the pattern, this is just a simple substitution.  */
     return subst_expand (o, text, pattern, replace,
                         strlen (pattern), strlen (replace), 1);
@@ -251,6 +234,32 @@ patsubst_expand (char *o, char *text, char *pattern, char *replace,
 
   return o;
 }
+
+/* Store into VARIABLE_BUFFER at O the result of scanning TEXT
+   and replacing strings matching PATTERN with REPLACE.
+   If PATTERN_PERCENT is not nil, PATTERN has already been
+   run through find_percent, and PATTERN_PERCENT is the result.
+   If REPLACE_PERCENT is not nil, REPLACE has already been
+   run through find_percent, and REPLACE_PERCENT is the result.
+   Note that we expect PATTERN_PERCENT and REPLACE_PERCENT to point to the
+   character _AFTER_ the %, not to the % itself.
+*/
+
+char *
+patsubst_expand (char *o, const char *text, char *pattern, char *replace)
+{
+  const char *pattern_percent = find_percent (pattern);
+  const char *replace_percent = find_percent (replace);
+
+  /* If there's a percent in the pattern or replacement skip it.  */
+  if (replace_percent)
+    ++replace_percent;
+  if (pattern_percent)
+    ++pattern_percent;
+
+  return patsubst_expand_pat (o, text, pattern, replace,
+                              pattern_percent, replace_percent);
+}
 \f
 
 /* Look up a function by name.  */
@@ -277,19 +286,19 @@ lookup_function (const char *s)
 /* Return 1 if PATTERN matches STR, 0 if not.  */
 
 int
-pattern_matches (char *pattern, char *percent, char *str)
+pattern_matches (const char *pattern, const char *percent, const char *str)
 {
   unsigned int sfxlen, strlength;
 
   if (percent == 0)
     {
       unsigned int len = strlen (pattern) + 1;
-      char *new_chars = (char *) alloca (len);
-      bcopy (pattern, new_chars, len);
-      pattern = new_chars;
-      percent = find_percent (pattern);
+      char *new_chars = alloca (len);
+      memcpy (new_chars, pattern, len);
+      percent = find_percent (new_chars);
       if (percent == 0)
-       return streq (pattern, str);
+       return streq (new_chars, str);
+      pattern = new_chars;
     }
 
   sfxlen = strlen (percent + 1);
@@ -343,48 +352,40 @@ string_glob (char *line)
 {
   static char *result = 0;
   static unsigned int length;
-  register struct nameseq *chain;
-  register unsigned int idx;
+  struct nameseq *chain;
+  unsigned int idx;
 
-  chain = multi_glob (parse_file_seq
-                     (&line, '\0', sizeof (struct nameseq),
-                      /* We do not want parse_file_seq to strip `./'s.
-                         That would break examples like:
-                         $(patsubst ./%.c,obj/%.o,$(wildcard ./?*.c)).  */
-                      0),
-                     sizeof (struct nameseq));
+  chain = PARSE_FILE_SEQ (&line, struct nameseq, '\0', NULL,
+                          /* We do not want parse_file_seq to strip `./'s.
+                             That would break examples like:
+                             $(patsubst ./%.c,obj/%.o,$(wildcard ./?*.c)).  */
+                          PARSEFS_NOSTRIP|PARSEFS_NOCACHE|PARSEFS_EXISTS);
 
   if (result == 0)
     {
       length = 100;
-      result = (char *) xmalloc (100);
+      result = xmalloc (100);
     }
 
   idx = 0;
   while (chain != 0)
     {
-      register char *name = chain->name;
-      unsigned int len = strlen (name);
-
       struct nameseq *next = chain->next;
-      free ((char *) chain);
-      chain = next;
+      unsigned int len = strlen (chain->name);
 
-      /* multi_glob will pass names without globbing metacharacters
-        through as is, but we want only files that actually exist.  */
-      if (file_exists_p (name))
-       {
-         if (idx + len + 1 > length)
-           {
-             length += (len + 1) * 2;
-             result = (char *) xrealloc (result, length);
-           }
-         bcopy (name, &result[idx], len);
-         idx += len;
-         result[idx++] = ' ';
-       }
+      if (idx + len + 1 > length)
+        {
+          length += (len + 1) * 2;
+          result = xrealloc (result, length);
+        }
+      memcpy (&result[idx], chain->name, len);
+      idx += len;
+      result[idx++] = ' ';
 
-      free (name);
+      /* Because we used PARSEFS_NOCACHE above, we have to free() NAME.  */
+      free ((char *)chain->name);
+      free (chain);
+      chain = next;
     }
 
   /* Kill the last space and terminate the string.  */
@@ -403,7 +404,7 @@ string_glob (char *line)
 static char *
 func_patsubst (char *o, char **argv, const char *funcname UNUSED)
 {
-  o = patsubst_expand (o, argv[2], argv[0], argv[1], (char *) 0, (char *) 0);
+  o = patsubst_expand (o, argv[2], argv[0], argv[1]);
   return o;
 }
 
@@ -417,10 +418,10 @@ func_join (char *o, char **argv, const char *funcname UNUSED)
      by the corresponding word of the second argument.
      If the two arguments have a different number of words,
      the excess words are just output separated by blanks.  */
-  register char *tp;
-  register char *pp;
-  char *list1_iterator = argv[0];
-  char *list2_iterator = argv[1];
+  const char *tp;
+  const char *pp;
+  const char *list1_iterator = argv[0];
+  const char *list2_iterator = argv[1];
   do
     {
       unsigned int len1, len2;
@@ -452,7 +453,7 @@ static char *
 func_origin (char *o, char **argv, const char *funcname UNUSED)
 {
   /* Expand the argument.  */
-  register struct variable *v = lookup_variable (argv[0], strlen (argv[0]));
+  struct variable *v = lookup_variable (argv[0], strlen (argv[0]));
   if (v == 0)
     o = variable_buffer_output (o, "undefined", 9);
   else
@@ -491,7 +492,7 @@ func_origin (char *o, char **argv, const char *funcname UNUSED)
 static char *
 func_flavor (char *o, char **argv, const char *funcname UNUSED)
 {
-  register struct variable *v = lookup_variable (argv[0], strlen (argv[0]));
+  struct variable *v = lookup_variable (argv[0], strlen (argv[0]));
 
   if (v == 0)
     o = variable_buffer_output (o, "undefined", 9);
@@ -519,8 +520,8 @@ static char *
 func_notdir_suffix (char *o, char **argv, const char *funcname)
 {
   /* Expand the argument.  */
-  char *list_iterator = argv[0];
-  char *p2 =0;
+  const char *list_iterator = argv[0];
+  const char *p2;
   int doneany =0;
   unsigned int len=0;
 
@@ -528,7 +529,7 @@ func_notdir_suffix (char *o, char **argv, const char *funcname)
   int is_notdir = !is_suffix;
   while ((p2 = find_next_token (&list_iterator, &len)) != 0)
     {
-      char *p = p2 + len;
+      const char *p = p2 + len;
 
 
       while (p >= p2 && (!is_suffix || *p != '.'))
@@ -563,13 +564,12 @@ func_notdir_suffix (char *o, char **argv, const char *funcname)
          doneany = 1;
        }
     }
+
   if (doneany)
     /* Kill last space.  */
     --o;
 
-
   return o;
-
 }
 
 
@@ -577,68 +577,68 @@ static char *
 func_basename_dir (char *o, char **argv, const char *funcname)
 {
   /* Expand the argument.  */
-  char *p3 = argv[0];
-  char *p2=0;
+  const char *p3 = argv[0];
+  const char *p2;
   int doneany=0;
   unsigned int len=0;
-  char *p=0;
+
   int is_basename= streq (funcname, "basename");
   int is_dir= !is_basename;
 
   while ((p2 = find_next_token (&p3, &len)) != 0)
-       {
-         p = p2 + len;
-         while (p >= p2 && (!is_basename  || *p != '.'))
-           {
-             if (IS_PATHSEP (*p))
-               break;
-                   --p;
-           }
+    {
+      const char *p = p2 + len;
+      while (p >= p2 && (!is_basename  || *p != '.'))
+        {
+          if (IS_PATHSEP (*p))
+            break;
+          --p;
+        }
 
-         if (p >= p2 && (is_dir))
-           o = variable_buffer_output (o, p2, ++p - p2);
-         else if (p >= p2 && (*p == '.'))
-           o = variable_buffer_output (o, p2, p - p2);
+      if (p >= p2 && (is_dir))
+        o = variable_buffer_output (o, p2, ++p - p2);
+      else if (p >= p2 && (*p == '.'))
+        o = variable_buffer_output (o, p2, p - p2);
 #ifdef HAVE_DOS_PATHS
-       /* Handle the "d:foobar" case */
-         else if (p2[0] && p2[1] == ':' && is_dir)
-           o = variable_buffer_output (o, p2, 2);
+      /* Handle the "d:foobar" case */
+      else if (p2[0] && p2[1] == ':' && is_dir)
+        o = variable_buffer_output (o, p2, 2);
 #endif
-         else if (is_dir)
+      else if (is_dir)
 #ifdef VMS
-           o = variable_buffer_output (o, "[]", 2);
+        o = variable_buffer_output (o, "[]", 2);
 #else
 #ifndef _AMIGA
-           o = variable_buffer_output (o, "./", 2);
+      o = variable_buffer_output (o, "./", 2);
 #else
-           ; /* Just a nop...  */
+      ; /* Just a nop...  */
 #endif /* AMIGA */
 #endif /* !VMS */
-         else
-           /* The entire name is the basename.  */
-           o = variable_buffer_output (o, p2, len);
+      else
+        /* The entire name is the basename.  */
+        o = variable_buffer_output (o, p2, len);
 
-         o = variable_buffer_output (o, " ", 1);
-         doneany = 1;
-       }
-      if (doneany)
-       /* Kill last space.  */
-       --o;
+      o = variable_buffer_output (o, " ", 1);
+      doneany = 1;
+    }
 
+  if (doneany)
+    /* Kill last space.  */
+    --o;
 
- return o;
 return o;
 }
 
 static char *
 func_addsuffix_addprefix (char *o, char **argv, const char *funcname)
 {
   int fixlen = strlen (argv[0]);
-  char *list_iterator = argv[1];
+  const char *list_iterator = argv[1];
   int is_addprefix = streq (funcname, "addprefix");
   int is_addsuffix = !is_addprefix;
 
   int doneany = 0;
-  char *p;
+  const char *p;
   unsigned int len;
 
   while ((p = find_next_token (&list_iterator, &len)) != 0)
@@ -673,8 +673,8 @@ static char *
 func_firstword (char *o, char **argv, const char *funcname UNUSED)
 {
   unsigned int i;
-  char *words = argv[0];    /* Use a temp variable for find_next_token */
-  char *p = find_next_token (&words, &i);
+  const char *words = argv[0];    /* Use a temp variable for find_next_token */
+  const char *p = find_next_token (&words, &i);
 
   if (p != 0)
     o = variable_buffer_output (o, p, i);
@@ -686,9 +686,9 @@ static char *
 func_lastword (char *o, char **argv, const char *funcname UNUSED)
 {
   unsigned int i;
-  char *words = argv[0];    /* Use a temp variable for find_next_token */
-  char *p = 0;
-  char *t;
+  const char *words = argv[0];    /* Use a temp variable for find_next_token */
+  const char *p = NULL;
+  const char *t;
 
   while ((t = find_next_token (&words, &i)))
     p = t;
@@ -703,7 +703,7 @@ static char *
 func_words (char *o, char **argv, const char *funcname UNUSED)
 {
   int i = 0;
-  char *word_iterator = argv[0];
+  const char *word_iterator = argv[0];
   char buf[20];
 
   while (find_next_token (&word_iterator, (unsigned int *) 0) != 0)
@@ -712,7 +712,6 @@ func_words (char *o, char **argv, const char *funcname UNUSED)
   sprintf (buf, "%d", i);
   o = variable_buffer_output (o, buf, strlen (buf));
 
-
   return o;
 }
 
@@ -732,7 +731,7 @@ strip_whitespace (const char **begpp, const char **endpp)
 }
 
 static void
-check_numeric (const char *s, const char *message)
+check_numeric (const char *s, const char *msg)
 {
   const char *end = s + strlen (s) - 1;
   const char *beg = s;
@@ -743,7 +742,7 @@ check_numeric (const char *s, const char *message)
       break;
 
   if (s <= end || end - beg < 0)
-    fatal (*expanding_var, "%s: '%s'", message, beg);
+    fatal (*expanding_var, "%s: '%s'", msg, beg);
 }
 
 
@@ -751,19 +750,18 @@ check_numeric (const char *s, const char *message)
 static char *
 func_word (char *o, char **argv, const char *funcname UNUSED)
 {
-  char *end_p=0;
-  int i=0;
-  char *p=0;
+  const char *end_p;
+  const char *p;
+  int i;
 
   /* Check the first argument.  */
   check_numeric (argv[0], _("non-numeric first argument to `word' function"));
-  i =  atoi (argv[0]);
+  i = atoi (argv[0]);
 
   if (i == 0)
     fatal (*expanding_var,
            _("first argument to `word' function must be greater than 0"));
 
-
   end_p = argv[1];
   while ((p = find_next_token (&end_p, 0)) != 0)
     if (--i == 0)
@@ -795,8 +793,8 @@ func_wordlist (char *o, char **argv, const char *funcname UNUSED)
 
   if (count > 0)
     {
-      char *p;
-      char *end_p = argv[2];
+      const char *p;
+      const char *end_p = argv[2];
 
       /* Find the beginning of the "start"th word.  */
       while (((p = find_next_token (&end_p, 0)) != 0) && --start)
@@ -816,7 +814,7 @@ func_wordlist (char *o, char **argv, const char *funcname UNUSED)
   return o;
 }
 
-static char*
+static char *
 func_findstring (char *o, char **argv, const char *funcname UNUSED)
 {
   /* Find the first occurrence of the first string in the second.  */
@@ -832,13 +830,13 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED)
   /* expand only the first two.  */
   char *varname = expand_argument (argv[0], NULL);
   char *list = expand_argument (argv[1], NULL);
-  char *body = argv[2];
+  const char *body = argv[2];
 
   int doneany = 0;
-  char *list_iterator = list;
-  char *p;
+  const char *list_iterator = list;
+  const char *p;
   unsigned int len;
-  register struct variable *var;
+  struct variable *var;
 
   push_new_variable_scope ();
   var = define_variable (varname, strlen (varname), "", o_automatic, 0);
@@ -848,14 +846,8 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED)
     {
       char *result = 0;
 
-      {
-       char save = p[len];
-
-       p[len] = '\0';
-       free (var->value);
-       var->value = (char *) xstrdup ((char*) p);
-       p[len] = save;
-      }
+      free (var->value);
+      var->value = xstrndup (p, len);
 
       result = allocated_variable_expand (body);
 
@@ -928,8 +920,8 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
 
   struct hash_table a_word_table;
   int is_filter = streq (funcname, "filter");
-  char *pat_iterator = argv[0];
-  char *word_iterator = argv[1];
+  const char *pat_iterator = argv[0];
+  const char *word_iterator = argv[1];
   int literals = 0;
   int words = 0;
   int hashing = 0;
@@ -941,7 +933,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
   pattail = &pathead;
   while ((p = find_next_token (&pat_iterator, &len)) != 0)
     {
-      struct a_pattern *pat = (struct a_pattern *) alloca (sizeof (struct a_pattern));
+      struct a_pattern *pat = alloca (sizeof (struct a_pattern));
 
       *pattail = pat;
       pattail = &pat->next;
@@ -964,7 +956,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
   wordtail = &wordhead;
   while ((p = find_next_token (&word_iterator, &len)) != 0)
     {
-      struct a_word *word = (struct a_word *) alloca (sizeof (struct a_word));
+      struct a_word *word = alloca (sizeof (struct a_word));
 
       *wordtail = word;
       wordtail = &word->next;
@@ -985,7 +977,8 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
   hashing = (literals >= 2 && (literals * words) >= 10);
   if (hashing)
     {
-      hash_init (&a_word_table, words, a_word_hash_1, a_word_hash_2, a_word_hash_cmp);
+      hash_init (&a_word_table, words, a_word_hash_1, a_word_hash_2,
+                 a_word_hash_cmp);
       for (wp = wordhead; wp != 0; wp = wp->next)
        {
          struct a_word *owp = hash_insert (&a_word_table, wp);
@@ -1009,7 +1002,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
              struct a_word a_word_key;
              a_word_key.str = pp->str;
              a_word_key.length = pp->length;
-             wp = (struct a_word *) hash_find_item (&a_word_table, &a_word_key);
+             wp = hash_find_item (&a_word_table, &a_word_key);
              while (wp)
                {
                  wp->matched |= 1;
@@ -1049,13 +1042,13 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
 static char *
 func_strip (char *o, char **argv, const char *funcname UNUSED)
 {
-  char *p = argv[0];
-  int doneany =0;
+  const char *p = argv[0];
+  int doneany = 0;
 
   while (*p != '\0')
     {
       int i=0;
-      char *word_start=0;
+      const char *word_start;
 
       while (isspace ((unsigned char)*p))
        ++p;
@@ -1072,6 +1065,7 @@ func_strip (char *o, char **argv, const char *funcname UNUSED)
   if (doneany)
     /* Kill the last space.  */
     --o;
+
   return o;
 }
 
@@ -1091,7 +1085,7 @@ func_error (char *o, char **argv, const char *funcname)
   for (len=0, argvp=argv; *argvp != 0; ++argvp)
     len += strlen (*argvp) + 2;
 
-  p = msg = (char *) alloca (len + 1);
+  p = msg = alloca (len + 1);
 
   for (argvp=argv; argvp[1] != 0; ++argvp)
     {
@@ -1130,47 +1124,61 @@ func_error (char *o, char **argv, const char *funcname)
 static char *
 func_sort (char *o, char **argv, const char *funcname UNUSED)
 {
-  char **words = 0;
-  int nwords = 0;
-  register int wordi = 0;
-
-  /* Chop ARGV[0] into words and put them in WORDS.  */
-  char *t = argv[0];
+  const char *t;
+  char **words;
+  int wordi;
   char *p;
   unsigned int len;
   int i;
 
-  while ((p = find_next_token (&t, &len)) != 0)
+  /* Find the maximum number of words we'll have.  */
+  t = argv[0];
+  wordi = 1;
+  while (*t != '\0')
     {
-      if (wordi >= nwords - 1)
-       {
-         nwords = (2 * nwords) + 5;
-         words = (char **) xrealloc ((char *) words,
-                                     nwords * sizeof (char *));
-       }
-      words[wordi++] = savestring (p, len);
+      char c = *(t++);
+
+      if (! isspace ((unsigned char)c))
+        continue;
+
+      ++wordi;
+
+      while (isspace ((unsigned char)*t))
+        ++t;
     }
 
-  if (!wordi)
-    return o;
+  words = xmalloc (wordi * sizeof (char *));
 
-  /* Now sort the list of words.  */
-  qsort ((char *) words, wordi, sizeof (char *), alpha_compare);
+  /* Now assign pointers to each string in the array.  */
+  t = argv[0];
+  wordi = 0;
+  while ((p = find_next_token (&t, &len)) != 0)
+    {
+      ++t;
+      p[len] = '\0';
+      words[wordi++] = p;
+    }
 
-  /* Now write the sorted list.  */
-  for (i = 0; i < wordi; ++i)
+  if (wordi)
     {
-      len = strlen (words[i]);
-      if (i == wordi - 1 || strlen (words[i + 1]) != len
-          || strcmp (words[i], words[i + 1]))
+      /* Now sort the list of words.  */
+      qsort (words, wordi, sizeof (char *), alpha_compare);
+
+      /* Now write the sorted list, uniquified.  */
+      for (i = 0; i < wordi; ++i)
         {
-          o = variable_buffer_output (o, words[i], len);
-          o = variable_buffer_output (o, " ", 1);
+          len = strlen (words[i]);
+          if (i == wordi - 1 || strlen (words[i + 1]) != len
+              || strcmp (words[i], words[i + 1]))
+            {
+              o = variable_buffer_output (o, words[i], len);
+              o = variable_buffer_output (o, " ", 1);
+            }
         }
-      free (words[i]);
+
+      /* Kill the last space.  */
+      --o;
     }
-  /* Kill the last space.  */
-  --o;
 
   free (words);
 
@@ -1216,11 +1224,9 @@ func_if (char *o, char **argv, const char *funcname UNUSED)
 
   argv += 1 + !result;
 
-  if (argv[0])
+  if (*argv)
     {
-      char *expansion;
-
-      expansion = expand_argument (argv[0], NULL);
+      char *expansion = expand_argument (*argv, NULL);
 
       o = variable_buffer_output (o, expansion, strlen (expansion));
 
@@ -1337,7 +1343,6 @@ func_and (char *o, char **argv, const char *funcname UNUSED)
 static char *
 func_wildcard (char *o, char **argv, const char *funcname UNUSED)
 {
-
 #ifdef _AMIGA
    o = wildcard_expansion (argv[0], o);
 #else
@@ -1429,7 +1434,7 @@ int shell_function_pid = 0, shell_function_completed;
 
 
 void
-windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp)
+windows32_openpipe (int *pipedes, pid_t *pid_p, char **command_argv, char **envp)
 {
   SECURITY_ATTRIBUTES saAttr;
   HANDLE hIn;
@@ -1450,7 +1455,7 @@ windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp)
                      0,
                      TRUE,
                      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("create_child_process: DuplicateHandle(In) failed (e=%ld)\n"),
+    fatal (NILF, _("windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"),
           GetLastError());
 
   }
@@ -1461,7 +1466,7 @@ windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp)
                      0,
                      TRUE,
                      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"),
+    fatal (NILF, _("windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"),
           GetLastError());
   }
 
@@ -1471,23 +1476,26 @@ windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp)
   hProcess = process_init_fd(hIn, hChildOutWr, hErr);
 
   if (!hProcess)
-    fatal (NILF, _("windows32_openpipe (): process_init_fd() failed\n"));
+    fatal (NILF, _("windows32_openpipe(): process_init_fd() failed\n"));
 
   /* make sure that CreateProcess() has Path it needs */
   sync_Path_environment();
+  /* `sync_Path_environment' may realloc `environ', so take note of
+     the new value.  */
+  envp = environ;
 
   if (!process_begin(hProcess, command_argv, envp, command_argv[0], NULL)) {
     /* register process for wait */
     process_register(hProcess);
 
     /* set the pid for returning to caller */
-    *pid_p = (int) hProcess;
+    *pid_p = (pid_t) hProcess;
 
   /* set up to read data from child */
-  pipedes[0] = _open_osfhandle((long) hChildOutRd, O_RDONLY);
+  pipedes[0] = _open_osfhandle((intptr_t) hChildOutRd, O_RDONLY);
 
   /* this will be closed almost right away */
-  pipedes[1] = _open_osfhandle((long) hChildOutWr, O_APPEND);
+  pipedes[1] = _open_osfhandle((intptr_t) hChildOutWr, O_APPEND);
   } else {
     /* reap/cleanup the failed process */
        process_cleanup(hProcess);
@@ -1502,7 +1510,7 @@ windows32_openpipe (int *pipedes, int *pid_p, char **command_argv, char **envp)
 
     /* set status for return */
     pipedes[0] = pipedes[1] = -1;
-    *pid_p = -1;
+    *pid_p = (pid_t)-1;
   }
 }
 #endif
@@ -1577,21 +1585,20 @@ msdos_openpipe (int* pipedes, int *pidp, char *text)
 static char *
 func_shell (char *o, char **argv, const char *funcname UNUSED)
 {
-  charbatch_filename = NULL;
+  char *batch_filename = NULL;
 
 #ifdef __MSDOS__
   FILE *fpipe;
 #endif
   char **command_argv;
-  char *error_prefix;
+  const char *error_prefix;
   char **envp;
   int pipedes[2];
-  int pid;
+  pid_t pid;
 
 #ifndef __MSDOS__
   /* Construct the argument list.  */
-  command_argv = construct_command_argv (argv[0],
-                                        (char **) NULL, (struct file *) 0,
+  command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
                                          &batch_filename);
   if (command_argv == 0)
     return o;
@@ -1604,6 +1611,8 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
      var was not explicitly exported, but just appeared in the
      calling environment.
 
+     See Savannah bug #10593.
+
   envp = target_environment (NILF);
   */
 
@@ -1612,35 +1621,31 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   /* For error messages.  */
   if (reading_file && reading_file->filenm)
     {
-      error_prefix = (char *) alloca (strlen (reading_file->filenm)+11+4);
-      sprintf (error_prefix,
-              "%s:%lu: ", reading_file->filenm, reading_file->lineno);
+      char *p = alloca (strlen (reading_file->filenm)+11+4);
+      sprintf (p, "%s:%lu: ", reading_file->filenm, reading_file->lineno);
+      error_prefix = p;
     }
   else
     error_prefix = "";
 
-#ifdef WINDOWS32
-
-  windows32_openpipe (pipedes, &pid, command_argv, envp);
-
-  if (pipedes[0] < 0) {
-       /* open of the pipe failed, mark as failed execution */
-    shell_function_completed = -1;
-
-       return o;
-  } else
-
-#elif defined(__MSDOS__)
-
+#if defined(__MSDOS__)
   fpipe = msdos_openpipe (pipedes, &pid, argv[0]);
   if (pipedes[0] < 0)
     {
       perror_with_name (error_prefix, "pipe");
       return o;
     }
+#elif defined(WINDOWS32)
+  windows32_openpipe (pipedes, &pid, command_argv, envp);
+  if (pipedes[0] < 0)
+    {
+      /* open of the pipe failed, mark as failed execution */
+      shell_function_completed = -1;
 
+      return o;
+    }
+  else
 #else
-
   if (pipe (pipedes) < 0)
     {
       perror_with_name (error_prefix, "pipe");
@@ -1648,7 +1653,6 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
     }
 
 # ifdef __EMX__
-
   /* close some handles that are unnecessary for the child process */
   CLOSE_ON_EXEC(pipedes[1]);
   CLOSE_ON_EXEC(pipedes[0]);
@@ -1656,18 +1660,14 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   pid = child_execute_job (0, pipedes[1], command_argv, envp);
   if (pid < 0)
     perror_with_name (error_prefix, "spawn");
-
 # else /* ! __EMX__ */
-
   pid = vfork ();
   if (pid < 0)
     perror_with_name (error_prefix, "fork");
   else if (pid == 0)
     child_execute_job (0, pipedes[1], command_argv, envp);
   else
-
 # endif
-
 #endif
     {
       /* We are the parent.  */
@@ -1682,16 +1682,19 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
 
       /* Free the storage only the child needed.  */
       free (command_argv[0]);
-      free ((char *) command_argv);
+      free (command_argv);
 
-      /* Close the write side of the pipe.  */
-      (void) close (pipedes[1]);
+      /* Close the write side of the pipe.  We test for -1, since
+        pipedes[1] is -1 on MS-Windows, and some versions of MS
+        libraries barf when `close' is called with -1.  */
+      if (pipedes[1] >= 0)
+       close (pipedes[1]);
 #endif
 
       /* Set up and read from the pipe.  */
 
       maxlen = 200;
-      buffer = (char *) xmalloc (maxlen + 1);
+      buffer = xmalloc (maxlen + 1);
 
       /* Read from the pipe until it gets EOF.  */
       for (i = 0; ; i += cc)
@@ -1699,7 +1702,7 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
          if (i == maxlen)
            {
              maxlen += 512;
-             buffer = (char *) xrealloc (buffer, maxlen + 1);
+             buffer = xrealloc (buffer, maxlen + 1);
            }
 
          EINTRLOOP (cc, read (pipedes[0], &buffer[i], maxlen - i));
@@ -1783,8 +1786,8 @@ func_shell (char *o, char **argv, const char *funcname)
   char* batch_filename = NULL;
 
   /* Construct the argument list.  */
-  command_argv = construct_command_argv (argv[0], (char **) NULL,
-                                         (struct file *) 0, &batch_filename);
+  command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
+                                         &batch_filename);
   if (command_argv == 0)
     return o;
 
@@ -1826,7 +1829,7 @@ func_shell (char *o, char **argv, const char *funcname)
       if (i == maxlen)
        {
          maxlen += 512;
-         buffer = (char *) xrealloc (buffer, maxlen + 1);
+         buffer = xrealloc (buffer, maxlen + 1);
        }
 
       cc = Read (child_stdout, &buffer[i], maxlen - i);
@@ -1864,7 +1867,7 @@ func_eq (char *o, char **argv, char *funcname)
 static char *
 func_not (char *o, char **argv, char *funcname)
 {
-  char *s = argv[0];
+  const char *s = argv[0];
   int result = 0;
   while (isspace ((unsigned char)*s))
     s++;
@@ -1875,6 +1878,14 @@ func_not (char *o, char **argv, char *funcname)
 #endif
 \f
 
+#ifdef HAVE_DOS_PATHS
+#define IS_ABSOLUTE(n) (n[0] && n[1] == ':')
+#define ROOT_LEN 3
+#else
+#define IS_ABSOLUTE(n) (n[0] == '/')
+#define ROOT_LEN 1
+#endif
+
 /* Return the absolute name of file NAME which does not contain any `.',
    `..' components nor any repeated path separators ('/').   */
 
@@ -1883,13 +1894,14 @@ abspath (const char *name, char *apath)
 {
   char *dest;
   const char *start, *end, *apath_limit;
+  unsigned long root_len = ROOT_LEN;
 
   if (name[0] == '\0' || apath == NULL)
     return NULL;
 
   apath_limit = apath + GET_PATH_MAX;
 
-  if (name[0] != '/')
+  if (!IS_ABSOLUTE(name))
     {
       /* It is unlikely we would make it until here but just to make sure. */
       if (!starting_directory)
@@ -1897,12 +1909,47 @@ abspath (const char *name, char *apath)
 
       strcpy (apath, starting_directory);
 
+#ifdef HAVE_DOS_PATHS
+      if (IS_PATHSEP(name[0]))
+       {
+         if (IS_PATHSEP(name[1]))
+           {
+             /* A UNC.  Don't prepend a drive letter.  */
+             apath[0] = name[0];
+             apath[1] = name[1];
+             root_len = 2;
+           }
+         /* We have /foo, an absolute file name except for the drive
+            letter.  Assume the missing drive letter is the current
+            drive, which we can get if we remove from starting_directory
+            everything past the root directory.  */
+         apath[root_len] = '\0';
+       }
+#endif
+
       dest = strchr (apath, '\0');
     }
   else
     {
-      apath[0] = '/';
-      dest = apath + 1;
+      strncpy (apath, name, root_len);
+      apath[root_len] = '\0';
+      dest = apath + root_len;
+      /* Get past the root, since we already copied it.  */
+      name += root_len;
+#ifdef HAVE_DOS_PATHS
+      if (!IS_PATHSEP(apath[2]))
+       {
+         /* Convert d:foo into d:./foo and increase root_len.  */
+         apath[2] = '.';
+         apath[3] = '/';
+         dest++;
+         root_len++;
+         /* strncpy above copied one character too many.  */
+         name--;
+       }
+      else
+       apath[2] = '/'; /* make sure it's a forward slash */
+#endif
     }
 
   for (start = end = name; *start != '\0'; start = end)
@@ -1910,11 +1957,11 @@ abspath (const char *name, char *apath)
       unsigned long len;
 
       /* Skip sequence of multiple path-separators.  */
-      while (*start == '/')
+      while (IS_PATHSEP(*start))
        ++start;
 
       /* Find end of path component.  */
-      for (end = start; *end != '\0' && *end != '/'; ++end)
+      for (end = start; *end != '\0' && !IS_PATHSEP(*end); ++end)
         ;
 
       len = end - start;
@@ -1926,12 +1973,12 @@ abspath (const char *name, char *apath)
       else if (len == 2 && start[0] == '.' && start[1] == '.')
        {
          /* Back up to previous component, ignore if at root already.  */
-         if (dest > apath + 1)
-           while ((--dest)[-1] != '/');
+         if (dest > apath + root_len)
+           for (--dest; !IS_PATHSEP(dest[-1]); --dest);
        }
       else
        {
-         if (dest[-1] != '/')
+         if (!IS_PATHSEP(dest[-1]))
             *dest++ = '/';
 
          if (dest + len >= apath_limit)
@@ -1944,7 +1991,7 @@ abspath (const char *name, char *apath)
     }
 
   /* Unless it is root strip trailing separator.  */
-  if (dest > apath + 1 && dest[-1] == '/')
+  if (dest > apath + root_len && IS_PATHSEP(dest[-1]))
     --dest;
 
   *dest = '\0';
@@ -1957,10 +2004,13 @@ static char *
 func_realpath (char *o, char **argv, const char *funcname UNUSED)
 {
   /* Expand the argument.  */
-  char *p = argv[0];
-  char *path = 0;
+  const char *p = argv[0];
+  const char *path = 0;
   int doneany = 0;
   unsigned int len = 0;
+#ifndef HAVE_REALPATH
+  struct stat st;
+#endif
   PATH_VAR (in);
   PATH_VAR (out);
 
@@ -1971,14 +2021,13 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
           strncpy (in, path, len);
           in[len] = '\0';
 
-          if
-          (
+          if (
 #ifdef HAVE_REALPATH
-            realpath (in, out)
+              realpath (in, out)
 #else
-            abspath (in, out)
+              abspath (in, out) && stat (out, &st) == 0
 #endif
-          )
+             )
             {
               o = variable_buffer_output (o, out, strlen (out));
               o = variable_buffer_output (o, " ", 1);
@@ -1991,15 +2040,15 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
   if (doneany)
     --o;
 
- return o;
 return o;
 }
 
 static char *
 func_abspath (char *o, char **argv, const char *funcname UNUSED)
 {
   /* Expand the argument.  */
-  char *p = argv[0];
-  char *path = 0;
+  const char *p = argv[0];
+  const char *path = 0;
   int doneany = 0;
   unsigned int len = 0;
   PATH_VAR (in);
@@ -2025,7 +2074,7 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
   if (doneany)
     --o;
 
- return o;
 return o;
 }
 
 /* Lookup table for builtin functions.
@@ -2040,7 +2089,7 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
    EXPAND_ARGS means that all arguments should be expanded before invocation.
    Functions that do namespace tricks (foreach) don't automatically expand.  */
 
-static char *func_call PARAMS ((char *o, char **argv, const char *funcname));
+static char *func_call (char *o, char **argv, const char *funcname);
 
 
 static struct function_table_entry function_table_init[] =
@@ -2121,15 +2170,15 @@ expand_builtin_function (char *o, int argc, char **argv,
    *STRINGP past the reference and returning nonzero.  If not, return zero.  */
 
 int
-handle_function (char **op, char **stringp)
+handle_function (char **op, const char **stringp)
 {
   const struct function_table_entry *entry_p;
   char openparen = (*stringp)[0];
   char closeparen = openparen == '(' ? ')' : '}';
-  char *beg;
-  char *end;
+  const char *beg;
+  const char *end;
   int count = 0;
-  register char *p;
+  char *abeg = NULL;
   char **argv, **argvp;
   int nargs;
 
@@ -2166,7 +2215,7 @@ handle_function (char **op, char **stringp)
   *stringp = end;
 
   /* Get some memory to store the arg pointers.  */
-  argvp = argv = (char **) alloca (sizeof (char *) * (nargs + 2));
+  argvp = argv = alloca (sizeof (char *) * (nargs + 2));
 
   /* Chop the string into arguments, then a nul.  As soon as we hit
      MAXIMUM_ARGS (if it's >0) assume the rest of the string is part of the
@@ -2176,36 +2225,47 @@ handle_function (char **op, char **stringp)
      not, make a duplicate of the string and point into that, nul-terminating
      each argument.  */
 
-  if (!entry_p->expand_args)
+  if (entry_p->expand_args)
+    {
+      const char *p;
+      for (p=beg, nargs=0; p <= end; ++argvp)
+        {
+          const char *next;
+
+          ++nargs;
+
+          if (nargs == entry_p->maximum_args
+              || (! (next = find_next_argument (openparen, closeparen, p, end))))
+            next = end;
+
+          *argvp = expand_argument (p, next);
+          p = next + 1;
+        }
+    }
+  else
     {
       int len = end - beg;
+      char *p, *aend;
 
-      p = xmalloc (len+1);
-      memcpy (p, beg, len);
-      p[len] = '\0';
-      beg = p;
-      end = beg + len;
-    }
+      abeg = xmalloc (len+1);
+      memcpy (abeg, beg, len);
+      abeg[len] = '\0';
+      aend = abeg + len;
 
-  for (p=beg, nargs=0; p <= end; ++argvp)
-    {
-      char *next;
+      for (p=abeg, nargs=0; p <= aend; ++argvp)
+        {
+          char *next;
 
-      ++nargs;
+          ++nargs;
 
-      if (nargs == entry_p->maximum_args
-          || (! (next = find_next_argument (openparen, closeparen, p, end))))
-        next = end;
+          if (nargs == entry_p->maximum_args
+              || (! (next = find_next_argument (openparen, closeparen, p, aend))))
+            next = aend;
 
-      if (entry_p->expand_args)
-        *argvp = expand_argument (p, next);
-      else
-        {
           *argvp = p;
           *next = '\0';
+          p = next + 1;
         }
-
-      p = next + 1;
     }
   *argvp = NULL;
 
@@ -2216,8 +2276,8 @@ handle_function (char **op, char **stringp)
   if (entry_p->expand_args)
     for (argvp=argv; *argvp != 0; ++argvp)
       free (*argvp);
-  else
-    free (beg);
+  if (abeg)
+    free (abeg);
 
   return 1;
 }
@@ -2258,13 +2318,11 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
   /* Are we invoking a builtin function?  */
 
   entry_p = lookup_function (fname);
-
   if (entry_p)
     {
       /* How many arguments do we have?  */
       for (i=0; argv[i+1]; ++i)
-       ;
-
+        ;
       return expand_builtin_function (o, i, argv+1, entry_p);
     }
 
@@ -2280,7 +2338,7 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
   if (v == 0 || *v->value == '\0')
     return o;
 
-  body = (char *) alloca (flen + 4);
+  body = alloca (flen + 4);
   body[0] = '$';
   body[1] = '(';
   memcpy (body + 2, fname, flen);
index 9367e47..f9d7964 100644 (file)
@@ -1,21 +1,19 @@
 /* Get the system load averages.
 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.
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Compile-time symbols that this file uses:
 
@@ -704,7 +702,7 @@ getloadavg (double loadavg[], int nelem)
       for (i = 0; i < conf.config_maxclass; ++i)
        {
          struct class_stats stats;
-         bzero ((char *) &stats, sizeof stats);
+         memset (&stats, '\0', sizeof stats);
 
          desc.sd_type = CPUTYPE_CLASS;
          desc.sd_objid = i;
index f0fac4f..e992da5 100644 (file)
--- a/getopt.c
+++ b/getopt.c
@@ -4,25 +4,23 @@ NOTE: getopt is now part of the C library, so if you don't know what
 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.
+1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
    Ditto for AIX 3.2 and <stdlib.h>.  */
index 80efe96..dff9998 100644 (file)
--- a/getopt.h
+++ b/getopt.h
@@ -1,23 +1,22 @@
 /* Declarations for getopt.
 Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _GETOPT_H
 #define _GETOPT_H 1
index 9ad5127..429ad4a 100644 (file)
--- a/getopt1.c
+++ b/getopt1.c
@@ -1,24 +1,22 @@
 /* getopt_long and getopt_long_only entry points for GNU getopt.
 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 \f
 #ifdef HAVE_CONFIG_H
 #include <config.h>
index 17e9991..e8b8b3a 100644 (file)
--- a/gettext.h
+++ b/gettext.h
@@ -1,19 +1,19 @@
 /* Convenience header for conditional use of GNU <libintl.h>.
 Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _LIBGETTEXT_H
 #define _LIBGETTEXT_H 1
index 68727be..8f0739c 100644 (file)
@@ -1,7 +1,18 @@
+2008-09-28  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       * glob.c (my_realloc) [__DJGPP__]: Don't define, and don't
+       redefine realloc to call it, since the DJGPP's realloc handles
+       NULL pointers correctly.
+
+2007-12-22  Juan Manuel Guerrero  <juan.guerrero@gmx.de>  (tiny change)
+
+       * glob.c [__GNU_LIBRARY__ && __DJGPP__]: Add a realloc
+       declaration that matches the one in the DJGPP libc.
+
 2006-02-24  Eli Zaretskii  <eliz@gnu.org>
 
        * glob.c (my_malloc) [WINDOWS32]: Provide a full ISO C prototype,
-        to avoid compiler warnings.
+       to avoid compiler warnings.
 
 2005-06-25  Paul D. Smith  <psmith@gnu.org>
 
@@ -153,22 +164,22 @@ Sat Jun 22 10:44:09 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 Fri Jun 21 00:27:51 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
        * posix/fnmatch.c (fnmatch): Fix \*[*?]+ case to increment name ptr
-       only for ?s, not for *s.  Fix from Chet Ramey.
+       only for ?s, not for *s.  Fix from Chet Ramey.
 \f
 
 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index d5e3924..93fd60a 100644 (file)
@@ -1,19 +1,20 @@
 # -*-Makefile-*-, or close enough
 # Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AUTOMAKE_OPTIONS =     foreign
 
index 97b3953..3fbf7e5 100644 (file)
@@ -1,19 +1,20 @@
 # 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.
+# 2005, 2006, 2007 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
 VPATH = /glob/
index a6f1384..44be58d 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
 
 # -*-Makefile-*-, or close enough
 # Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -59,6 +58,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING.LIB \
 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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -69,15 +69,17 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
 libglob_a_AR = $(AR) $(ARFLAGS)
 libglob_a_LIBADD =
 am_libglob_a_OBJECTS = glob.$(OBJEXT) fnmatch.$(OBJEXT)
 libglob_a_OBJECTS = $(am_libglob_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -89,8 +91,6 @@ 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@
@@ -114,6 +114,8 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -130,6 +132,7 @@ LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
 MSGMERGE = @MSGMERGE@
@@ -140,6 +143,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
@@ -149,21 +153,14 @@ 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@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 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@
@@ -175,28 +172,40 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 
 # Only build the library when the system doesn't already have GNU glob.
@@ -213,14 +222,14 @@ $(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; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  glob/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  glob/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glob/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign glob/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -238,6 +247,7 @@ $(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
+$(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -256,92 +266,98 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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) '$<'`
-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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        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 \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        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" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__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; \
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -369,6 +385,7 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -389,18 +406,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -420,18 +457,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .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 \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am 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
+       uninstall-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.
index 22b00ef..0476a15 100644 (file)
@@ -1,19 +1,20 @@
 # Makefile for standalone distribution of libglob.a (fnmatch, glob).
 # Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006 Free Software Foundation, Inc.
+# 2005, 2006, 2007 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
 VPATH = /glob/
index e5007aa..672d733 100644 (file)
@@ -1,21 +1,20 @@
 @echo off\r
 rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,\r
-rem 2004, 2005, 2006 Free Software Foundation, Inc.\r
+rem 2004, 2005, 2006, 2007 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
-\r
+rem\r
 rem GNU Make is free software; you can redistribute it and/or modify it under\r
 rem the terms of the GNU General Public License as published by the Free\r
-rem Software Foundation; either version 2, or (at your option) any later\r
-rem version.\r
-\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
 rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
 rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
 rem more details.\r
-\r
+rem\r
 rem You should have received a copy of the GNU General Public License along\r
-rem with GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
 echo Configuring glob for DJGPP\r
 rem This batch file assumes a unix-type "sed" program\r
index 49dd2f5..4da8c5f 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 92, 93, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software
+Foundation, Inc.
 This file is part of the GNU C Library.
 
 This library is free software; you can redistribute it and/or
index 27a75f0..a788c8e 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 92, 93, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software
+Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
index a5e6a19..1a19205 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 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
@@ -181,7 +182,7 @@ extern void bcopy ();
 # define mempcpy(Dest, Src, Len) __mempcpy (Dest, Src, Len)
 #endif
 
-#ifndef        __GNU_LIBRARY__
+#if !defined __GNU_LIBRARY__ && !defined __DJGPP__
 # ifdef        __GNUC__
 __inline
 # endif
@@ -194,7 +195,7 @@ static char *
 my_realloc (p, n)
      char *p;
      unsigned int n;
-# endif
+#  endif
 {
   /* These casts are the for sake of the broken Ultrix compiler,
      which warns of illegal pointer combinations otherwise.  */
@@ -204,7 +205,7 @@ my_realloc (p, n)
 }
 # define       realloc my_realloc
 # endif /* __SASC */
-#endif /* __GNU_LIBRARY__ */
+#endif /* __GNU_LIBRARY__ || __DJGPP__ */
 
 
 #if !defined __alloca && !defined __GNU_LIBRARY__
index c3ab64a..a613aff 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998 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
diff --git a/hash.c b/hash.c
index f11a74f..b91447c 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -1,20 +1,18 @@
 /* hash.c -- hash table maintenance
-   Copyright (C) 1995, 1999, 2002 Free Software Foundation, Inc.
-   Written by Greg McGary <gkm@gnu.org> <greg@mcgary.org>
+Copyright (C) 1995, 1999, 2002, 2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "hash.h"
@@ -48,8 +46,8 @@ hash_init (struct hash_table *ht, unsigned long size,
   ht->ht_vec = (void**) CALLOC (struct token *, ht->ht_size);
   if (ht->ht_vec == 0)
     {
-      fprintf (stderr, _("can't allocate %ld bytes for hash table: memory exhausted"),
-              ht->ht_size * sizeof(struct token *));
+      fprintf (stderr, _("can't allocate %lu bytes for hash table: memory exhausted"),
+              ht->ht_size * (unsigned long) sizeof (struct token *));
       exit (1);
     }
 
@@ -128,7 +126,7 @@ void *
 hash_insert (struct hash_table *ht, const void *item)
 {
   void **slot = hash_find_slot (ht, item);
-  const void *old_item = slot ? *slot : 0;
+  const void *old_item = *slot;
   hash_insert_at (ht, item, slot);
   return (void *)((HASH_VACANT (old_item)) ? 0 : old_item);
 }
diff --git a/hash.h b/hash.h
index d0ba835..2c78e63 100644 (file)
--- a/hash.h
+++ b/hash.h
@@ -1,20 +1,18 @@
 /* hash.h -- decls for hash table
-Copyright (C) 1995, 1999, 2002 Free Software Foundation, Inc.
+Copyright (C) 1995, 1999, 2002, 2010 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.
+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 3 of the License, 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.
+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
-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 program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _hash_h_
 #define _hash_h_
@@ -81,6 +79,9 @@ extern void *hash_deleted_item;
 \f
 /* hash and comparison macros for case-sensitive string keys. */
 
+/* Due to the strcache, it's not uncommon for the string pointers to
+   be identical.  Take advantage of that to short-circuit string compares.  */
+
 #define STRING_HASH_1(KEY, RESULT) do { \
   unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \
   while (*++_key_) \
@@ -104,10 +105,10 @@ extern void *hash_deleted_item;
 } while (0)
 
 #define STRING_COMPARE(X, Y, RESULT) do { \
-  RESULT = strcmp ((X), (Y)); \
+    RESULT = (X) == (Y) ? 0 : strcmp ((X), (Y)); \
 } while (0)
 #define return_STRING_COMPARE(X, Y) do { \
-  return strcmp ((X), (Y)); \
+  return (X) == (Y) ? 0 : strcmp ((X), (Y)); \
 } while (0)
 
 
@@ -140,10 +141,10 @@ extern void *hash_deleted_item;
 } while (0)
 
 #define STRING_N_COMPARE(X, Y, N, RESULT) do { \
-  RESULT = strncmp ((X), (Y), (N)); \
+  RESULT = (X) == (Y) ? 0 : strncmp ((X), (Y), (N)); \
 } while (0)
 #define return_STRING_N_COMPARE(X, Y, N) do { \
-  return strncmp ((X), (Y), (N)); \
+  return (X) == (Y) ? 0 : strncmp ((X), (Y), (N)); \
 } while (0)
 
 #ifdef HAVE_CASE_INSENSITIVE_FS
@@ -173,10 +174,10 @@ extern void *hash_deleted_item;
 } while (0)
 
 #define ISTRING_COMPARE(X, Y, RESULT) do { \
-  RESULT = strcmpi ((X), (Y)); \
+  RESULT = (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \
 } while (0)
 #define return_ISTRING_COMPARE(X, Y) do { \
-  return strcmpi ((X), (Y)); \
+  return (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \
 } while (0)
 
 #else
index 014828f..5f98108 100644 (file)
@@ -1,20 +1,20 @@
 /* Implicit rule searching 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
@@ -25,9 +25,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #include "job.h"      /* struct child, used inside commands.h */
 #include "commands.h" /* set_file_variables */
 
-static int
-pattern_search PARAMS ((struct file *file, int archive,
-                        unsigned int depth, unsigned int recursions));
+static int pattern_search (struct file *file, int archive,
+                           unsigned int depth, unsigned int recursions);
 \f
 /* For a FILE which has no commands specified, try to figure out some
    from the implicit pattern rules.
@@ -48,7 +47,7 @@ try_implicit_rule (struct file *file, unsigned int depth)
   if (pattern_search (file, 0, depth, 0))
     return 1;
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
   /* If this is an archive member reference, use just the
      archive member name to search for implicit rules.  */
   if (ar_name (file->name))
@@ -56,7 +55,7 @@ try_implicit_rule (struct file *file, unsigned int depth)
       DBF (DB_IMPLICIT,
            _("Looking for archive-member implicit rule for `%s'.\n"));
       if (pattern_search (file, 1, depth, 0))
-       return 1;
+        return 1;
     }
 #endif
 
@@ -64,51 +63,14 @@ try_implicit_rule (struct file *file, unsigned int depth)
 }
 \f
 
-/* Struct idep captures information about implicit prerequisites
-   that come from implicit rules. */
-struct idep
-{
-  struct idep *next;              /* struct dep -compatible interface */
-  char *name;                     /* name of the prerequisite */
-  struct file *intermediate_file; /* intermediate file, 0 otherwise */
-  char *intermediate_pattern;     /* pattern for intermediate file */
-  unsigned char had_stem;         /* had % substituted with stem */
-  unsigned char ignore_mtime;     /* ignore_mtime flag */
-};
-
-static void
-free_idep_chain (struct idep *p)
-{
-  struct idep *n;
-
-  for (; p != 0; p = n)
-    {
-      n = p->next;
-
-      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);
-        }
-
-      free (p);
-    }
-}
-
-
 /* Scans the BUFFER for the next word with whitespace as a separator.
    Returns the pointer to the beginning of the word. LENGTH hold the
    length of the word.  */
 
-static char *
-get_next_word (char *buffer, unsigned int *length)
+static const char *
+get_next_word (const char *buffer, unsigned int *length)
 {
-  char *p = buffer, *beg;
+  const char *p = buffer, *beg;
   char c;
 
   /* Skip any leading whitespace.  */
@@ -182,6 +144,48 @@ get_next_word (char *buffer, unsigned int *length)
   return beg;
 }
 
+/* This structure stores information about the expanded prerequisites for a
+   pattern rule.  NAME is always set to the strcache'd name of the prereq.
+   FILE and PATTERN will be set for intermediate files only.  IGNORE_MTIME is
+   copied from the prerequisite we expanded.
+ */
+struct patdeps
+  {
+    const char *name;
+    const char *pattern;
+    struct file *file;
+    unsigned int ignore_mtime : 1;
+  };
+
+/* This structure stores information about pattern rules that we need
+   to try.
+*/
+struct tryrule
+  {
+    struct rule *rule;
+
+    /* Index of the target in this rule that matched the file. */
+    unsigned int matches;
+
+    /* Stem length for this match. */
+    unsigned int stemlen;
+
+    /* Definition order of this rule. Used to implement stable sort.*/
+    unsigned int order;
+
+    /* Nonzero if the LASTSLASH logic was used in matching this rule. */
+    char checked_lastslash;
+  };
+
+int
+stemlen_compare (const void *v1, const void *v2)
+{
+  const struct tryrule *r1 = v1;
+  const struct tryrule *r2 = v2;
+  int r = r1->stemlen - r2->stemlen;
+  return r != 0 ? r : (int)(r1->order - r2->order);
+}
+
 /* Search the pattern rules for a rule with an existing dependency to make
    FILE.  If a rule is found, the appropriate commands and deps are put in FILE
    and 1 is returned.  If not, 0 is returned.
@@ -201,148 +205,142 @@ pattern_search (struct file *file, int archive,
                 unsigned int depth, unsigned int recursions)
 {
   /* Filename we are searching for a rule for.  */
-  char *filename = archive ? strchr (file->name, '(') : file->name;
+  const char *filename = archive ? strchr (file->name, '(') : file->name;
 
   /* Length of FILENAME.  */
   unsigned int namelen = strlen (filename);
 
   /* The last slash in FILENAME (or nil if there is none).  */
-  char *lastslash;
+  const char *lastslash;
 
   /* This is a file-object used as an argument in
      recursive calls.  It never contains any data
      except during a recursive call.  */
-  struct file *intermediate_file = 0;
+  struct file *int_file = 0;
 
-  /* This linked list records all the prerequisites actually
-     found for a rule along with some other useful information
-     (see struct idep for details). */
-  struct idep* deps = 0;
+  /* List of dependencies found recursively.  */
+  struct patdeps *deplist
+    = xmalloc (max_pattern_deps * sizeof (struct patdeps));
+  struct patdeps *pat = deplist;
 
-  /* 1 if we need to remove explicit prerequisites, 0 otherwise. */
-  unsigned int remove_explicit_deps = 0;
+  /* All the prerequisites actually found for a rule, after expansion.  */
+  struct dep *deps;
 
   /* Names of possible dependencies are constructed in this buffer.  */
-  register char *depname = (char *) alloca (namelen + max_pattern_dep_length);
+  char *depname = alloca (namelen + max_pattern_dep_length);
 
   /* The start and length of the stem of FILENAME for the current rule.  */
-  register char *stem = 0;
-  register unsigned int stemlen = 0;
-  register unsigned int fullstemlen = 0;
+  const char *stem = 0;
+  unsigned int stemlen = 0;
+  unsigned int fullstemlen = 0;
 
   /* Buffer in which we store all the rules that are possibly applicable.  */
-  struct rule **tryrules
-    = (struct rule **) xmalloc (num_pattern_rules * max_pattern_targets
-                                * sizeof (struct rule *));
+  struct tryrule *tryrules = xmalloc (num_pattern_rules * max_pattern_targets
+                                      * sizeof (struct tryrule));
 
   /* Number of valid elements in TRYRULES.  */
   unsigned int nrules;
 
-  /* The numbers of the rule targets of each rule
-     in TRYRULES that matched the target file.  */
-  unsigned int *matches
-    = (unsigned int *) alloca (num_pattern_rules * sizeof (unsigned int));
-
-  /* Each element is nonzero if LASTSLASH was used in
-     matching the corresponding element of TRYRULES.  */
-  char *checked_lastslash
-    = (char *) alloca (num_pattern_rules * sizeof (char));
-
   /* The index in TRYRULES of the rule we found.  */
   unsigned int foundrule;
 
   /* Nonzero if should consider intermediate files as dependencies.  */
   int intermed_ok;
 
+  /* Nonzero if we have initialized file variables for this target.  */
+  int file_vars_initialized = 0;
+
   /* Nonzero if we have matched a pattern-rule target
      that is not just `%'.  */
   int specific_rule_matched = 0;
 
-  unsigned int i = 0;  /* uninit checks OK */
-  struct rule *rule;
-  struct dep *dep, *expl_d;
+  struct dep dep_simple;
 
-  char *p, *vname;
+  unsigned int ri;  /* uninit checks OK */
+  struct rule *rule;
 
-  struct idep *d;
-  struct idep **id_ptr;
-  struct dep **d_ptr;
+  char *pathdir = NULL;
+  unsigned long pathlen;
 
   PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
   if (archive || ar_name (filename))
     lastslash = 0;
   else
 #endif
     {
       /* Set LASTSLASH to point at the last slash in FILENAME
-        but not counting any slash at the end.  (foo/bar/ counts as
-        bar/ in directory foo/, not empty in directory foo/bar/.)  */
+         but not counting any slash at the end.  (foo/bar/ counts as
+         bar/ in directory foo/, not empty in directory foo/bar/.)  */
 #ifdef VMS
       lastslash = strrchr (filename, ']');
       if (lastslash == 0)
-       lastslash = strrchr (filename, ':');
+        lastslash = strrchr (filename, ':');
 #else
       lastslash = strrchr (filename, '/');
 #ifdef HAVE_DOS_PATHS
       /* Handle backslashes (possibly mixed with forward slashes)
-        and the case of "d:file".  */
+         and the case of "d:file".  */
       {
-       char *bslash = strrchr (filename, '\\');
-       if (lastslash == 0 || bslash > lastslash)
-         lastslash = bslash;
-       if (lastslash == 0 && filename[0] && filename[1] == ':')
-         lastslash = filename + 1;
+        char *bslash = strrchr (filename, '\\');
+        if (lastslash == 0 || bslash > lastslash)
+          lastslash = bslash;
+        if (lastslash == 0 && filename[0] && filename[1] == ':')
+          lastslash = filename + 1;
       }
 #endif
 #endif
       if (lastslash != 0 && lastslash[1] == '\0')
-       lastslash = 0;
+        lastslash = 0;
     }
 
-  /* First see which pattern rules match this target
-     and may be considered.  Put them in TRYRULES.  */
+  pathlen = lastslash - filename + 1;
+
+  /* First see which pattern rules match this target and may be considered.
+     Put them in TRYRULES.  */
 
   nrules = 0;
   for (rule = pattern_rules; rule != 0; rule = rule->next)
     {
+      unsigned int ti;
+
       /* If the pattern rule has deps but no commands, ignore it.
-        Users cancel built-in rules by redefining them without commands.  */
+         Users cancel built-in rules by redefining them without commands.  */
       if (rule->deps != 0 && rule->cmds == 0)
-       continue;
+        continue;
 
       /* If this rule is in use by a parent pattern_search,
-        don't use it here.  */
+         don't use it here.  */
       if (rule->in_use)
-       {
-         DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n")));
-         continue;
-       }
-
-      for (i = 0; rule->targets[i] != 0; ++i)
-       {
-         char *target = rule->targets[i];
-         char *suffix = rule->suffixes[i];
-         int check_lastslash;
-
-         /* Rules that can match any filename and are not terminal
-            are ignored if we're recursing, so that they cannot be
-            intermediate files.  */
-         if (recursions > 0 && target[1] == '\0' && !rule->terminal)
-           continue;
-
-         if (rule->lens[i] > namelen)
-           /* It can't possibly match.  */
-           continue;
-
-         /* From the lengths of the filename and the pattern parts,
-            find the stem: the part of the filename that matches the %.  */
-         stem = filename + (suffix - target - 1);
-         stemlen = namelen - rule->lens[i] + 1;
-
-         /* Set CHECK_LASTSLASH if FILENAME contains a directory
-            prefix and the target pattern does not contain a slash.  */
+        {
+          DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n")));
+          continue;
+        }
+
+      for (ti = 0; ti < rule->num; ++ti)
+        {
+          const char *target = rule->targets[ti];
+          const char *suffix = rule->suffixes[ti];
+          int check_lastslash;
+
+          /* Rules that can match any filename and are not terminal
+             are ignored if we're recursing, so that they cannot be
+             intermediate files.  */
+          if (recursions > 0 && target[1] == '\0' && !rule->terminal)
+            continue;
+
+          if (rule->lens[ti] > namelen)
+            /* It can't possibly match.  */
+            continue;
+
+          /* From the lengths of the filename and the pattern parts,
+             find the stem: the part of the filename that matches the %.  */
+          stem = filename + (suffix - target - 1);
+          stemlen = namelen - rule->lens[ti] + 1;
+
+          /* Set CHECK_LASTSLASH if FILENAME contains a directory
+             prefix and the target pattern does not contain a slash.  */
 
           check_lastslash = 0;
           if (lastslash)
@@ -362,479 +360,487 @@ pattern_search (struct file *file, int archive,
 #endif
 #endif
             }
-         if (check_lastslash)
-           {
-             /* If so, don't include the directory prefix in STEM here.  */
-             unsigned int difference = lastslash - filename + 1;
-             if (difference > stemlen)
-               continue;
-             stemlen -= difference;
-             stem += difference;
-           }
-
-         /* Check that the rule pattern matches the text before the stem.  */
-         if (check_lastslash)
-           {
-             if (stem > (lastslash + 1)
-                 && !strneq (target, lastslash + 1, stem - lastslash - 1))
-               continue;
-           }
-         else if (stem > filename
-                  && !strneq (target, filename, stem - filename))
-           continue;
-
-         /* Check that the rule pattern matches the text after the stem.
-            We could test simply use streq, but this way we compare the
-            first two characters immediately.  This saves time in the very
-            common case where the first character matches because it is a
-            period.  */
-         if (*suffix != stem[stemlen]
-             || (*suffix != '\0' && !streq (&suffix[1], &stem[stemlen + 1])))
-           continue;
-
-         /* Record if we match a rule that not all filenames will match.  */
-         if (target[1] != '\0')
-           specific_rule_matched = 1;
-
-         /* A rule with no dependencies and no commands exists solely to set
-            specific_rule_matched when it matches.  Don't try to use it.  */
-         if (rule->deps == 0 && rule->cmds == 0)
-           continue;
-
-         /* Record this rule in TRYRULES and the index of the matching
-            target in MATCHES.  If several targets of the same rule match,
-            that rule will be in TRYRULES more than once.  */
-         tryrules[nrules] = rule;
-         matches[nrules] = i;
-         checked_lastslash[nrules] = check_lastslash;
-         ++nrules;
-       }
+          if (check_lastslash)
+            {
+              /* If so, don't include the directory prefix in STEM here.  */
+              if (pathlen > stemlen)
+                continue;
+              stemlen -= pathlen;
+              stem += pathlen;
+            }
+
+          /* Check that the rule pattern matches the text before the stem.  */
+          if (check_lastslash)
+            {
+              if (stem > (lastslash + 1)
+                  && !strneq (target, lastslash + 1, stem - lastslash - 1))
+                continue;
+            }
+          else if (stem > filename
+                   && !strneq (target, filename, stem - filename))
+            continue;
+
+          /* Check that the rule pattern matches the text after the stem.
+             We could test simply use streq, but this way we compare the
+             first two characters immediately.  This saves time in the very
+             common case where the first character matches because it is a
+             period.  */
+          if (*suffix != stem[stemlen]
+              || (*suffix != '\0' && !streq (&suffix[1], &stem[stemlen + 1])))
+            continue;
+
+          /* Record if we match a rule that not all filenames will match.  */
+          if (target[1] != '\0')
+            specific_rule_matched = 1;
+
+          /* A rule with no dependencies and no commands exists solely to set
+             specific_rule_matched when it matches.  Don't try to use it.  */
+          if (rule->deps == 0 && rule->cmds == 0)
+            continue;
+
+          /* Record this rule in TRYRULES and the index of the matching
+             target in MATCHES.  If several targets of the same rule match,
+             that rule will be in TRYRULES more than once.  */
+          tryrules[nrules].rule = rule;
+         tryrules[nrules].matches = ti;
+          tryrules[nrules].stemlen = stemlen + (check_lastslash ? pathlen : 0);
+          tryrules[nrules].order = nrules;
+         tryrules[nrules].checked_lastslash = check_lastslash;
+          ++nrules;
+        }
     }
 
+  /* Bail out early if we haven't found any rules. */
+  if (nrules == 0)
+    goto done;
+
+  /* Sort the rules to place matches with the shortest stem first. This
+     way the most specific rules will be tried first. */
+  if (nrules > 1)
+    qsort (tryrules, nrules, sizeof (struct tryrule), stemlen_compare);
+
   /* If we have found a matching rule that won't match all filenames,
      retroactively reject any non-"terminal" rules that do always match.  */
   if (specific_rule_matched)
-    for (i = 0; i < nrules; ++i)
-      if (!tryrules[i]->terminal)
-       {
-         register unsigned int j;
-         for (j = 0; tryrules[i]->targets[j] != 0; ++j)
-           if (tryrules[i]->targets[j][1] == '\0')
-             break;
-         if (tryrules[i]->targets[j] != 0)
-           tryrules[i] = 0;
-       }
-
-  /* We are going to do second expansion so initialize file variables
-     for the rule. */
-  initialize_file_variables (file, 0);
+    for (ri = 0; ri < nrules; ++ri)
+      if (!tryrules[ri].rule->terminal)
+        {
+          unsigned int j;
+          for (j = 0; j < tryrules[ri].rule->num; ++j)
+            if (tryrules[ri].rule->targets[j][1] == '\0')
+              {
+                tryrules[ri].rule = 0;
+                break;
+              }
+        }
 
   /* Try each rule once without intermediate files, then once with them.  */
-  for (intermed_ok = 0; intermed_ok == !!intermed_ok; ++intermed_ok)
+  for (intermed_ok = 0; intermed_ok < 2; ++intermed_ok)
     {
-      /* Try each pattern rule till we find one that applies.
-        If it does, expand its dependencies (as substituted)
-        and chain them in DEPS.  */
+      pat = deplist;
 
-      for (i = 0; i < nrules; i++)
-       {
-          struct file *f;
+      /* Try each pattern rule till we find one that applies.  If it does,
+         expand its dependencies (as substituted) and chain them in DEPS.  */
+      for (ri = 0; ri < nrules; ri++)
+        {
+          struct dep *dep;
+          int check_lastslash;
           unsigned int failed = 0;
-         int check_lastslash;
           int file_variables_set = 0;
+          unsigned int deps_found = 0;
+          /* NPTR points to the part of the prereq we haven't processed.  */
+          const char *nptr = 0;
+          const char *dir = NULL;
+          int order_only = 0;
+          unsigned int matches;
+
+          rule = tryrules[ri].rule;
+
+          /* RULE is nil when we discover that a rule, already placed in
+             TRYRULES, should not be applied.  */
+          if (rule == 0)
+            continue;
+
+          /* Reject any terminal rules if we're looking to make intermediate
+             files.  */
+          if (intermed_ok && rule->terminal)
+            continue;
+
+          /* From the lengths of the filename and the matching pattern parts,
+             find the stem: the part of the filename that matches the %.  */
+          matches = tryrules[ri].matches;
+          stem = filename + (rule->suffixes[matches]
+                             - rule->targets[matches]) - 1;
+          stemlen = (namelen - rule->lens[matches]) + 1;
+          check_lastslash = tryrules[ri].checked_lastslash;
+          if (check_lastslash)
+            {
+              stem += pathlen;
+              stemlen -= pathlen;
+
+              /* We need to add the directory prefix, so set it up.  */
+              if (! pathdir)
+                {
+                  pathdir = alloca (pathlen + 1);
+                  memcpy (pathdir, filename, pathlen);
+                  pathdir[pathlen] = '\0';
+                }
+              dir = pathdir;
+            }
 
-         rule = tryrules[i];
-
-          remove_explicit_deps = 0;
-
-         /* RULE is nil when we discover that a rule,
-            already placed in TRYRULES, should not be applied.  */
-         if (rule == 0)
-           continue;
-
-         /* Reject any terminal rules if we're
-            looking to make intermediate files.  */
-         if (intermed_ok && rule->terminal)
-           continue;
-
-         /* Mark this rule as in use so a recursive
-            pattern_search won't try to use it.  */
-         rule->in_use = 1;
-
-         /* From the lengths of the filename and the matching pattern parts,
-            find the stem: the part of the filename that matches the %.  */
-         stem = filename
-           + (rule->suffixes[matches[i]] - rule->targets[matches[i]]) - 1;
-         stemlen = namelen - rule->lens[matches[i]] + 1;
-         check_lastslash = checked_lastslash[i];
-         if (check_lastslash)
-           {
-             stem += lastslash - filename + 1;
-             stemlen -= (lastslash - filename) + 1;
-           }
-
-         DBS (DB_IMPLICIT, (_("Trying pattern rule with stem `%.*s'.\n"),
+          DBS (DB_IMPLICIT, (_("Trying pattern rule with stem `%.*s'.\n"),
                              (int) stemlen, stem));
 
           strncpy (stem_str, stem, stemlen);
           stem_str[stemlen] = '\0';
 
+          /* If there are no prerequisites, then this rule matches.  */
+          if (rule->deps == 0)
+            break;
+
           /* Temporary assign STEM to file->stem (needed to set file
              variables below).   */
           file->stem = stem_str;
 
-         /* Try each dependency; see if it "exists".  */
-
-         for (dep = rule->deps; dep != 0; dep = dep->next)
-           {
-              unsigned int len;
-              char *p2;
-              unsigned int order_only = 0; /* Set if '|' was seen. */
-
-              /* 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.  */
+          /* Mark this rule as in use so a recursive pattern_search won't try
+             to use it.  */
+          rule->in_use = 1;
+
+          /* Try each prerequisite; see if it exists or can be created.  We'll
+             build a list of prereq info in DEPLIST.  Due to 2nd expansion we
+             may have to process multiple prereqs for a single dep entry.  */
 
-              p = get_next_word (dep->name, &len);
+          pat = deplist;
+          dep = rule->deps;
+          nptr = dep_name (dep);
+          while (1)
+            {
+              struct dep *dl, *d;
+              char *p;
 
-              while (1)
+              /* If we're out of name to parse, start the next prereq.  */
+              if (! nptr)
                 {
-                  int add_dir = 0;
-                  int had_stem = 0;
+                  dep = dep->next;
+                  if (dep == 0)
+                    break;
+                  nptr = dep_name (dep);
+                }
 
+              /* If we don't need a second expansion, just replace the %.  */
+              if (! dep->need_2nd_expansion)
+                {
+                  dep_simple = *dep;
+                  dep_simple.next = 0;
+                  p = strchr (nptr, '%');
                   if (p == 0)
-                    break; /* No more words */
-
-                  /* Is there a pattern in this prerequisite?  */
-
-                  for (p2 = p; p2 < p + len && *p2 != '%'; ++p2)
-                    ;
-
-                  if (dep->need_2nd_expansion)
+                    dep_simple.name = nptr;
+                  else
                     {
-                      /* If the dependency name has %, substitute the stem.
+                      char *o = depname;
+                      if (check_lastslash)
+                        {
+                          memcpy (o, filename, pathlen);
+                          o += pathlen;
+                        }
+                      memcpy (o, nptr, p - nptr);
+                      o += p - nptr;
+                      memcpy (o, stem_str, stemlen);
+                      o += stemlen;
+                      strcpy (o, p + 1);
+                      dep_simple.name = strcache_add (depname);
+                    }
+                  dl = &dep_simple;
 
-                         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 $).
+                  /* We've used up this dep, so next time get a new one.  */
+                  nptr = 0;
+                  ++deps_found;
+                }
 
-                         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.  */
+              /* We have to perform second expansion on this prereq.  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.  */
+              else
+                {
+                  int add_dir = 0;
+                  unsigned int len;
 
-                      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';
+                  nptr = get_next_word (nptr, &len);
+                  if (nptr == 0)
+                    continue;
 
-                          if (check_lastslash)
-                            add_dir = 1;
+                  /* See this is a transition to order-only prereqs.  */
+                  if (! order_only && len == 1 && nptr[0] == '|')
+                    {
+                      order_only = 1;
+                      nptr += len;
+                      continue;
+                    }
 
-                          had_stem = 1;
-                        }
-                      else
-                        {
-                          bcopy (p, depname, len);
-                          depname[len] = '\0';
-                        }
+                  /* If the dependency name has %, substitute the stem.  If we
+                     just replace % with the stem value then later, when we do
+                     the 2nd expansion, we will re-expand this stem value
+                     again.  This is not good if you have certain characters
+                     in your stem (like $).
 
-                      /* 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;
-                        }
+                     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.  */
 
-                      p2 = variable_expand_for_file (depname, file);
+                  p = lindex (nptr, nptr + len, '%');
+                  if (p == 0)
+                    {
+                      memcpy (depname, nptr, len);
+                      depname[len] = '\0';
                     }
                   else
                     {
-                       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;
+                      unsigned int i = p - nptr;
+                      memcpy (depname, nptr, i);
+                      memcpy (depname + i, "$*", 2);
+                      memcpy (depname + i + 2, p + 1, len - i - 1);
+                      depname[len + 2 - 1] = '\0';
+
+                      if (check_lastslash)
+                        add_dir = 1;
                     }
 
-                  /* Parse the dependencies. */
-
-                  while (1)
+                  /* Initialize and set file variables if we haven't already
+                     done so. */
+                  if (!file_vars_initialized)
                     {
-                      id_ptr = &deps;
-
-                      for (; *id_ptr; id_ptr = &(*id_ptr)->next)
-                        ;
-
-                      *id_ptr = (struct idep *)
-                        multi_glob (
-                          parse_file_seq (&p2,
-                                          order_only ? '\0' : '|',
-                                          sizeof (struct idep),
-                                          1), sizeof (struct idep));
-
-                      /* @@ It would be nice to teach parse_file_seq or
-                         multi_glob to add prefix. This would save us some
-                         reallocations. */
-
-                      if (order_only || add_dir || had_stem)
-                        {
-                          unsigned long l = lastslash - filename + 1;
-
-                          for (d = *id_ptr; d != 0; d = d->next)
-                            {
-                              if (order_only)
-                                d->ignore_mtime = 1;
-
-                              if (add_dir)
-                                {
-                                  char *p = d->name;
-
-                                  d->name = xmalloc (strlen (p) + l + 1);
-
-                                  bcopy (filename, d->name, l);
-                                  bcopy (p, d->name + l, strlen (p) + 1);
-
-                                  free (p);
-                                }
+                      initialize_file_variables (file, 0);
+                      set_file_variables (file);
+                      file_vars_initialized = 1;
+                    }
+                  /* Update the stem value in $* for this rule.  */
+                  else if (!file_variables_set)
+                    {
+                      define_variable_for_file (
+                        "*", 1, file->stem, o_automatic, 0, file);
+                      file_variables_set = 1;
+                    }
 
-                              if (had_stem)
-                                d->had_stem = 1;
-                            }
-                        }
+                  /* Perform the 2nd expansion.  */
+                  p = variable_expand_for_file (depname, file);
 
-                      if (!order_only && *p2)
-                      {
-                        ++p2;
-                        order_only = 1;
-                        continue;
-                      }
+                  /* Parse the expanded string. */
+                  dl = PARSE_FILE_SEQ (&p, struct dep, order_only ? '\0' : '|',
+                                       add_dir ? dir : NULL, 0);
 
-                      break;
+                  for (d = dl; d != NULL; d = d->next)
+                    {
+                      ++deps_found;
+                      if (order_only)
+                        d->ignore_mtime = 1;
                     }
 
-                  p += len;
-                  p = get_next_word (p, &len);
+                  /* Set up for the next word.  */
+                  nptr += len;
                 }
-           }
 
-          /* Reset the stem in FILE. */
-
-          file->stem = 0;
-
-          /* @@ This loop can be combined with the previous one. I do
-             it separately for now for transparency.*/
-
-          for (d = deps; d != 0; d = d->next)
-            {
-              char *name = d->name;
+              /* If there are more than max_pattern_deps prerequisites (due to
+                 2nd expansion), reset it and realloc the arrays.  */
 
-              if (file_impossible_p (name))
+              if (deps_found > max_pattern_deps)
                 {
-                  /* 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
-                        ? _("Rejecting impossible implicit prerequisite `%s'.\n")
-                        : _("Rejecting impossible rule prerequisite `%s'.\n"),
-                        name));
-                  tryrules[i] = 0;
-
-                  failed = 1;
-                  break;
+                  unsigned int l = pat - deplist;
+                  deplist = xrealloc (deplist,
+                                      deps_found * sizeof (struct patdeps));
+                  pat = deplist + l;
+                  max_pattern_deps = deps_found;
                 }
 
-              DBS (DB_IMPLICIT,
-                   (d->had_stem
-                    ? _("Trying implicit prerequisite `%s'.\n")
-                    : _("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. */
+              /* Go through the nameseq and handle each as a prereq name.  */
+              for (d = dl; d != 0; d = d->next)
+                {
+                  struct dep *expl_d;
+                  int is_rule = d->name == dep_name (dep);
 
-              for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next)
-                if (streq (dep_name (expl_d), name))
-                  break;
-              if (expl_d != 0)
-                continue;
+                  if (file_impossible_p (d->name))
+                    {
+                      /* If this prereq has already been ruled "impossible",
+                         then the rule fails.  Don't bother trying it on the
+                         second pass either since we know that will fail.  */
+                      DBS (DB_IMPLICIT,
+                           (is_rule
+                            ? _("Rejecting impossible rule prerequisite `%s'.\n")
+                            : _("Rejecting impossible implicit prerequisite `%s'.\n"),
+                            d->name));
+                      tryrules[ri].rule = 0;
+
+                      failed = 1;
+                      break;
+                    }
 
-              /* The DEP->changed flag says that this dependency resides in a
-                 nonexistent directory.  So we normally can skip looking for
-                 the file.  However, if CHECK_LASTSLASH is set, then the
-                 dependency file we are actually looking for is in a different
-                 directory (the one gotten by prepending FILENAME's directory),
-                 so it might actually exist.  */
-
-              /* @@ dep->changed check is disabled. */
-              if (((f = lookup_file (name)) != 0 && f->is_target)
-                  /*|| ((!dep->changed || check_lastslash) && */
-                  || file_exists_p (name))
-                continue;
+                  memset (pat, '\0', sizeof (struct patdeps));
+                  pat->ignore_mtime = d->ignore_mtime;
 
-              /* This code, given FILENAME = "lib/foo.o", dependency name
-                 "lib/foo.c", and VPATH=src, searches for "src/lib/foo.c".  */
-              vname = name;
-              if (vpath_search (&vname, (FILE_TIMESTAMP *) 0))
-                {
                   DBS (DB_IMPLICIT,
-                       (_("Found prerequisite `%s' as VPATH `%s'\n"),
-                        name,
-                        vname));
+                       (is_rule
+                        ? _("Trying rule prerequisite `%s'.\n")
+                        : _("Trying implicit prerequisite `%s'.\n"), d->name));
 
-                  free (vname);
-                  continue;
-                }
+                  /* If this prereq is also explicitly mentioned for FILE,
+                     skip all tests below since it must be built no matter
+                     which implicit rule we choose. */
+
+                  for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next)
+                    if (streq (dep_name (expl_d), d->name))
+                      break;
+                  if (expl_d != 0)
+                    {
+                      (pat++)->name = d->name;
+                      continue;
+                    }
 
+                  /* The DEP->changed flag says that this dependency resides
+                     in a nonexistent directory.  So we normally can skip
+                     looking for the file.  However, if CHECK_LASTSLASH is
+                     set, then the dependency file we are actually looking for
+                     is in a different directory (the one gotten by prepending
+                     FILENAME's directory), so it might actually exist.  */
+
+                  /* @@ dep->changed check is disabled. */
+                  if (lookup_file (d->name) != 0
+                      /*|| ((!dep->changed || check_lastslash) && */
+                      || file_exists_p (d->name))
+                    {
+                      (pat++)->name = d->name;
+                      continue;
+                    }
 
-              /* 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.  */
+                  /* This code, given FILENAME = "lib/foo.o", dependency name
+                     "lib/foo.c", and VPATH=src, searches for
+                     "src/lib/foo.c".  */
+                  {
+                    const char *vname = vpath_search (d->name, 0, NULL, NULL);
+                    if (vname)
+                      {
+                        DBS (DB_IMPLICIT,
+                             (_("Found prerequisite `%s' as VPATH `%s'\n"),
+                              d->name, vname));
+                        (pat++)->name = d->name;
+                        continue;
+                      }
+                  }
 
-              if (intermed_ok)
-                {
-                  if (intermediate_file == 0)
-                    intermediate_file
-                      = (struct file *) alloca (sizeof (struct file));
+                  /* 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.  */
 
-                  DBS (DB_IMPLICIT,
-                       (_("Looking for a rule with intermediate file `%s'.\n"),
-                        name));
-
-                  bzero ((char *) intermediate_file, sizeof (struct file));
-                  intermediate_file->name = name;
-                  if (pattern_search (intermediate_file,
-                                      0,
-                                      depth + 1,
-                                      recursions + 1))
+                  if (intermed_ok)
                     {
-                      d->intermediate_file = intermediate_file;
-                      d->intermediate_pattern = intermediate_file->name;
-
-                      intermediate_file->name = xstrdup (name);
-                      intermediate_file = 0;
+                      DBS (DB_IMPLICIT,
+                           (_("Looking for a rule with intermediate file `%s'.\n"),
+                            d->name));
+
+                      if (int_file == 0)
+                        int_file = alloca (sizeof (struct file));
+                      memset (int_file, '\0', sizeof (struct file));
+                      int_file->name = d->name;
+
+                      if (pattern_search (int_file,
+                                          0,
+                                          depth + 1,
+                                          recursions + 1))
+                        {
+                          pat->pattern = int_file->name;
+                          int_file->name = d->name;
+                          pat->file = int_file;
+                          (pat++)->name = d->name;
+                          int_file = 0;
+                          continue;
+                        }
 
-                      continue;
+                      /* If we have tried to find P as an intermediate file
+                         and failed, mark that name as impossible so we won't
+                         go through the search again later.  */
+                      if (int_file->variables)
+                        free_variable_set (int_file->variables);
+                      if (int_file->pat_variables)
+                        free_variable_set (int_file->pat_variables);
+                      file_impossible (d->name);
                     }
 
-                  /* If we have tried to find P as an intermediate
-                     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);
+                  /* A dependency of this rule does not exist. Therefore, this
+                     rule fails.  */
+                  failed = 1;
+                  break;
                 }
 
-              /* A dependency of this rule does not exist. Therefore,
-                 this rule fails.  */
-              failed = 1;
-              break;
+              /* Free the ns chain.  */
+              if (dl != &dep_simple)
+                free_dep_chain (dl);
+
+              if (failed)
+                break;
             }
 
+          /* Reset the stem in FILE. */
+
+          file->stem = 0;
+
           /* This rule is no longer `in use' for recursive searches.  */
-         rule->in_use = 0;
+          rule->in_use = 0;
 
-          if (failed)
-            {
-              /* This pattern rule does not apply. If some of its
-                 dependencies succeeded, free the data structure
-                 describing them.  */
-              free_idep_chain (deps);
-              deps = 0;
-            }
-         else
-           /* This pattern rule does apply.  Stop looking for one.  */
-           break;
-       }
+          if (! failed)
+            /* This pattern rule does apply.  Stop looking for one.  */
+            break;
 
-      /* If we found an applicable rule without
-        intermediate files, don't try with them.  */
-      if (i < nrules)
-       break;
+          /* This pattern rule does not apply. If some of its dependencies
+             succeeded, free the data structure describing them.  */
+          /* free_idep_chain (deps); */
+          deps = 0;
+        }
+
+      /* If we found an applicable rule without intermediate files, don't try
+         with them.  */
+      if (ri < nrules)
+        break;
 
       rule = 0;
     }
 
-  /* RULE is nil if the loop went all the way
-     through the list and everything failed.  */
+  /* RULE is nil if the loop went through the list but everything failed.  */
   if (rule == 0)
     goto done;
 
-  foundrule = i;
+  foundrule = ri;
 
-  /* If we are recursing, store the pattern that matched
-     FILENAME in FILE->name for use in upper levels.  */
+  /* If we are recursing, store the pattern that matched FILENAME in
+     FILE->name for use in upper levels.  */
 
   if (recursions > 0)
     /* Kludge-o-matic */
-    file->name = rule->targets[matches[foundrule]];
+    file->name = rule->targets[tryrules[foundrule].matches];
 
-  /* FOUND_FILES lists the dependencies for the rule we found.
-     This includes the intermediate files, if any.
-     Convert them into entries on the deps-chain of FILE.  */
+  /* DEPLIST lists the prerequisites for the rule we found.  This includes the
+     intermediate files, if any.  Convert them into entries on the deps-chain
+     of FILE.  */
 
-  if (remove_explicit_deps)
+  while (pat-- > deplist)
     {
-      /* Remove all the dependencies that didn't come from
-         this implicit rule. */
+      struct dep *dep;
+      const char *s;
 
-      dep = file->deps;
-      while (dep != 0)
+      if (pat->file != 0)
         {
-          struct dep *next = dep->next;
-          free_dep (dep);
-          dep = next;
-        }
-      file->deps = 0;
-  }
-
-  expl_d = file->deps; /* We will add them at the end. */
-  d_ptr = &file->deps;
-
-  for (d = deps; d != 0; d = d->next)
-    {
-      register char *s;
-
-      if (d->intermediate_file != 0)
-       {
-         /* If we need to use an intermediate file,
-            make sure it is entered as a target, with the info that was
-            found for it in the recursive pattern_search call.
-            We know that the intermediate file did not already exist as
-            a target; therefore we can assume that the deps and cmds
-            of F below are null before we change them.  */
+          /* If we need to use an intermediate file, make sure it is entered
+             as a target, with the info that was found for it in the recursive
+             pattern_search call.  We know that the intermediate file did not
+             already exist as a target; therefore we can assume that the deps
+             and cmds of F below are null before we change them.  */
 
-         struct file *imf = d->intermediate_file;
-         register struct file *f = lookup_file (imf->name);
+          struct file *imf = pat->file;
+          struct file *f = lookup_file (imf->name);
 
           /* We don't want to delete an intermediate file that happened
              to be a prerequisite of some (other) target. Mark it as
@@ -844,89 +850,78 @@ pattern_search (struct file *file, int archive,
           else
             f = enter_file (imf->name);
 
-         f->deps = imf->deps;
-         f->cmds = imf->cmds;
-         f->stem = imf->stem;
+          f->deps = imf->deps;
+          f->cmds = imf->cmds;
+          f->stem = imf->stem;
+          f->variables = imf->variables;
+          f->pat_variables = imf->pat_variables;
+          f->pat_searched = imf->pat_searched;
           f->also_make = imf->also_make;
           f->is_target = 1;
+          f->intermediate = 1;
+          f->tried_implicit = 1;
+
+          imf = lookup_file (pat->pattern);
+          if (imf != 0 && imf->precious)
+            f->precious = 1;
 
-          if (!f->precious)
+          for (dep = f->deps; dep != 0; dep = dep->next)
             {
-              imf = lookup_file (d->intermediate_pattern);
-              if (imf != 0 && imf->precious)
-                f->precious = 1;
+              dep->file = enter_file (dep->name);
+              dep->name = 0;
+              dep->file->tried_implicit |= dep->changed;
             }
-
-         f->intermediate = 1;
-         f->tried_implicit = 1;
-         for (dep = f->deps; dep != 0; dep = dep->next)
-           {
-             dep->file = enter_file (dep->name);
-              /* enter_file uses dep->name _if_ we created a new file.  */
-              if (dep->name != dep->file->name)
-                free (dep->name);
-             dep->name = 0;
-             dep->file->tried_implicit |= dep->changed;
-           }
-       }
+        }
 
       dep = alloc_dep ();
-      dep->ignore_mtime = d->ignore_mtime;
-      s = d->name; /* Hijacking the name. */
-      d->name = 0;
-      if (recursions == 0)
-       {
-         dep->file = lookup_file (s);
-         if (dep->file == 0)
-           /* enter_file consumes S's storage.  */
-           dep->file = enter_file (s);
-         else
-           /* A copy of S is already allocated in DEP->file->name.
-              So we can free S.  */
-           free (s);
-       }
+      dep->ignore_mtime = pat->ignore_mtime;
+      s = strcache_add (pat->name);
+      if (recursions)
+        dep->name = s;
       else
-       {
-         dep->name = s;
-       }
-
-      if (d->intermediate_file == 0 && tryrules[foundrule]->terminal)
-       {
-         /* If the file actually existed (was not an intermediate file),
-            and the rule that found it was a terminal one, then we want
-            to mark the found file so that it will not have implicit rule
-            search done for it.  If we are not entering a `struct file' for
-            it now, we indicate this with the `changed' flag.  */
-         if (dep->file == 0)
-           dep->changed = 1;
-         else
-           dep->file->tried_implicit = 1;
-       }
-
-      *d_ptr = dep;
-      d_ptr = &dep->next;
-    }
+        {
+          dep->file = lookup_file (s);
+          if (dep->file == 0)
+            dep->file = enter_file (s);
+        }
 
-  *d_ptr = expl_d;
+      if (pat->file == 0 && tryrules[foundrule].rule->terminal)
+        {
+          /* If the file actually existed (was not an intermediate file), and
+             the rule that found it was a terminal one, then we want to mark
+             the found file so that it will not have implicit rule search done
+             for it.  If we are not entering a `struct file' for it now, we
+             indicate this with the `changed' flag.  */
+          if (dep->file == 0)
+            dep->changed = 1;
+          else
+            dep->file->tried_implicit = 1;
+        }
 
-  if (!checked_lastslash[foundrule])
+      dep->next = file->deps;
+      file->deps = dep;
+    }
+
+  if (!tryrules[foundrule].checked_lastslash)
     {
-      /* Always allocate new storage, since STEM might be
-         on the stack for an intermediate file.  */
-      file->stem = savestring (stem, stemlen);
+      /* Always allocate new storage, since STEM might be on the stack for an
+         intermediate file.  */
+      file->stem = strcache_add_len (stem, stemlen);
       fullstemlen = stemlen;
     }
   else
     {
       int dirlen = (lastslash + 1) - filename;
+      char *sp;
 
       /* We want to prepend the directory from
-        the original FILENAME onto the stem.  */
+         the original FILENAME onto the stem.  */
       fullstemlen = dirlen + stemlen;
-      file->stem = (char *) xmalloc (fullstemlen + 1);
-      bcopy (filename, file->stem, dirlen);
-      bcopy (stem, file->stem + dirlen, stemlen);
-      file->stem[fullstemlen] = '\0';
+      sp = alloca (fullstemlen + 1);
+      memcpy (sp, filename, dirlen);
+      memcpy (sp + dirlen, stem, stemlen);
+      sp[fullstemlen] = '\0';
+      file->stem = strcache_add (sp);
     }
 
   file->cmds = rule->cmds;
@@ -934,7 +929,7 @@ pattern_search (struct file *file, int archive,
 
   /* Set precious flag. */
   {
-    struct file *f = lookup_file (rule->targets[matches[foundrule]]);
+    struct file *f = lookup_file (rule->targets[tryrules[foundrule].matches]);
     if (f && f->precious)
       file->precious = 1;
   }
@@ -942,41 +937,43 @@ pattern_search (struct file *file, int archive,
   /* If this rule builds other targets, too, put the others into FILE's
      `also_make' member.  */
 
-  if (rule->targets[1] != 0)
-    for (i = 0; rule->targets[i] != 0; ++i)
-      if (i != matches[foundrule])
-       {
-         struct file *f;
-         struct dep *new = alloc_dep ();
-
-         /* GKM FIMXE: handle '|' here too */
-         new->name = p = (char *) xmalloc (rule->lens[i] + fullstemlen + 1);
-         bcopy (rule->targets[i], p,
-                rule->suffixes[i] - rule->targets[i] - 1);
-         p += rule->suffixes[i] - rule->targets[i] - 1;
-         bcopy (file->stem, p, fullstemlen);
-         p += fullstemlen;
-         bcopy (rule->suffixes[i], p,
-                rule->lens[i] - (rule->suffixes[i] - rule->targets[i]) + 1);
-         new->file = enter_file (new->name);
-         new->next = file->also_make;
-
-         /* Set precious flag. */
-         f = lookup_file (rule->targets[i]);
-         if (f && f->precious)
+  if (rule->num > 1)
+    for (ri = 0; ri < rule->num; ++ri)
+      if (ri != tryrules[foundrule].matches)
+        {
+          char *nm = alloca (rule->lens[ri] + fullstemlen + 1);
+          char *p = nm;
+          struct file *f;
+          struct dep *new = alloc_dep ();
+
+          /* GKM FIMXE: handle '|' here too */
+          memcpy (p, rule->targets[ri],
+                  rule->suffixes[ri] - rule->targets[ri] - 1);
+          p += rule->suffixes[ri] - rule->targets[ri] - 1;
+          memcpy (p, file->stem, fullstemlen);
+          p += fullstemlen;
+          memcpy (p, rule->suffixes[ri],
+                  rule->lens[ri] - (rule->suffixes[ri] - rule->targets[ri])+1);
+          new->name = strcache_add (nm);
+          new->file = enter_file (new->name);
+          new->next = file->also_make;
+
+          /* Set precious flag. */
+          f = lookup_file (rule->targets[ri]);
+          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
+          /* 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;
-       }
+          file->also_make = new;
+        }
 
  done:
-  free_idep_chain (deps);
   free (tryrules);
+  free (deplist);
 
   return rule != 0;
 }
diff --git a/job.c b/job.c
index a81cd81..aacfb84 100644 (file)
--- a/job.c
+++ b/job.c
@@ -1,20 +1,20 @@
 /* Job execution and handling 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -98,7 +98,7 @@ static int amiga_batch_file;
 # endif
 # include <starlet.h>
 # include <lib$routines.h>
-static void vmsWaitForChildren PARAMS ((int *));
+static void vmsWaitForChildren (int *);
 #endif
 
 #ifdef WINDOWS32
@@ -130,7 +130,7 @@ extern int wait3 ();
 #endif /* Have waitpid.  */
 
 #if !defined (wait) && !defined (POSIX)
-extern int wait ();
+int wait ();
 #endif
 
 #ifndef        HAVE_UNION_WAIT
@@ -174,33 +174,47 @@ extern int wait ();
 
 #endif /* Don't have `union wait'.  */
 
-#ifndef        HAVE_UNISTD_H
-extern int dup2 ();
-extern int execve ();
-extern void _exit ();
+#if !defined(HAVE_UNISTD_H) && !defined(WINDOWS32)
+int dup2 ();
+int execve ();
+void _exit ();
 # ifndef VMS
-extern int geteuid ();
-extern int getegid ();
-extern int setgid ();
-extern int getgid ();
+int geteuid ();
+int getegid ();
+int setgid ();
+int getgid ();
 # endif
 #endif
 
-extern char *allocated_variable_expand_for_file PARAMS ((char *line, struct file *file));
-
-extern int getloadavg PARAMS ((double loadavg[], int nelem));
-extern int start_remote_job PARAMS ((char **argv, char **envp, int stdin_fd,
-               int *is_remote, int *id_ptr, int *used_stdin));
-extern int start_remote_job_p PARAMS ((int));
-extern int remote_status PARAMS ((int *exit_code_ptr, int *signal_ptr,
-               int *coredump_ptr, int block));
-
-RETSIGTYPE child_handler PARAMS ((int));
-static void free_child PARAMS ((struct child *));
-static void start_job_command PARAMS ((struct child *child));
-static int load_too_high PARAMS ((void));
-static int job_next_command PARAMS ((struct child *));
-static int start_waiting_job PARAMS ((struct child *));
+/* Different systems have different requirements for pid_t.
+   Plus we have to support gettext string translation... Argh.  */
+static const char *
+pid2str (pid_t pid)
+{
+  static char pidstring[100];
+#if defined(WINDOWS32) && (__GNUC__ > 3 || _MSC_VER > 1300)
+  /* %Id is only needed for 64-builds, which were not supported by
+      older versions of Windows compilers.  */
+  sprintf (pidstring, "%Id", pid);
+#else
+  sprintf (pidstring, "%lu", (unsigned long) pid);
+#endif
+  return pidstring;
+}
+
+int getloadavg (double loadavg[], int nelem);
+int start_remote_job (char **argv, char **envp, int stdin_fd, int *is_remote,
+                      int *id_ptr, int *used_stdin);
+int start_remote_job_p (int);
+int remote_status (int *exit_code_ptr, int *signal_ptr, int *coredump_ptr,
+                   int block);
+
+RETSIGTYPE child_handler (int);
+static void free_child (struct child *);
+static void start_job_command (struct child *child);
+static int load_too_high (void);
+static int job_next_command (struct child *);
+static int start_waiting_job (struct child *);
 \f
 /* Chain of all live (or recently deceased) children.  */
 
@@ -235,7 +249,7 @@ unsigned int jobserver_tokens = 0;
  * The macro which references this function is defined in make.h.
  */
 int
-w32_kill(int pid, int sig)
+w32_kill(pid_t pid, int sig)
 {
   return ((process_kill((HANDLE)pid, sig) == TRUE) ? 0 : -1);
 }
@@ -248,7 +262,7 @@ static char *
 create_batch_file (char const *base, int unixy, int *fd)
 {
   const char *const ext = unixy ? "sh" : "bat";
-  const char *error = NULL;
+  const char *error_string = NULL;
   char temp_path[MAXPATHLEN]; /* need to know its length */
   unsigned path_size = GetTempPath(sizeof temp_path, temp_path);
   int path_is_dot = 0;
@@ -294,16 +308,16 @@ create_batch_file (char const *base, int unixy, int *fd)
 
           else
             {
-              error = map_windows32_error_to_string (er);
+              error_string = map_windows32_error_to_string (er);
               break;
             }
         }
       else
         {
           const unsigned final_size = path_size + size + 1;
-          char *const path = (char *) xmalloc (final_size);
+          char *const path = xmalloc (final_size);
           memcpy (path, temp_path, final_size);
-          *fd = _open_osfhandle ((long)h, 0);
+          *fd = _open_osfhandle ((intptr_t)h, 0);
           if (unixy)
             {
               char *p;
@@ -317,9 +331,9 @@ create_batch_file (char const *base, int unixy, int *fd)
     }
 
   *fd = -1;
-  if (error == NULL)
-    error = _("Cannot create a temporary file\n");
-  fatal (NILF, error);
+  if (error_string == NULL)
+    error_string = _("Cannot create a temporary file\n");
+  fatal (NILF, error_string);
 
   /* not reached */
   return NULL;
@@ -360,7 +374,7 @@ _is_unixy_shell (const char *path)
 
   i = 0;
   while (known_os2shells[i] != NULL) {
-    if (stricmp (name, known_os2shells[i]) == 0) /* strcasecmp() */
+    if (strcasecmp (name, known_os2shells[i]) == 0)
       return 0; /* not a unix shell */
     i++;
   }
@@ -370,14 +384,61 @@ _is_unixy_shell (const char *path)
 }
 #endif /* __EMX__ */
 
+/* determines whether path looks to be a Bourne-like shell. */
+int
+is_bourne_compatible_shell (const char *path)
+{
+  /* list of known unix (Bourne-like) shells */
+  const char *unix_shells[] = {
+    "sh",
+    "bash",
+    "ksh",
+    "rksh",
+    "zsh",
+    "ash",
+    "dash",
+    NULL
+  };
+  unsigned i, len;
+
+  /* find the rightmost '/' or '\\' */
+  const char *name = strrchr (path, '/');
+  char *p = strrchr (path, '\\');
+
+  if (name && p)    /* take the max */
+    name = (name > p) ? name : p;
+  else if (p)       /* name must be 0 */
+    name = p;
+  else if (!name)   /* name and p must be 0 */
+    name = path;
+
+  if (*name == '/' || *name == '\\') name++;
+
+  /* this should be able to deal with extensions on Windows-like systems */
+  for (i = 0; unix_shells[i] != NULL; i++) {
+    len = strlen(unix_shells[i]);
+#if defined(WINDOWS32) || defined(__MSDOS__)
+    if ((strncasecmp (name, unix_shells[i], len) == 0) &&
+      (strlen(name) >= len && (name[len] == '\0' || name[len] == '.')))
+#else
+    if ((strncmp (name, unix_shells[i], len) == 0) &&
+      (strlen(name) >= len && name[len] == '\0'))
+#endif
+       return 1; /* a known unix-style shell */
+  }
+
+  /* if not on the list, assume it's not a Bourne-like shell */
+  return 0;
+}
+
 \f
 /* Write an error message describing the exit status given in
    EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME.
    Append "(ignored)" if IGNORED is nonzero.  */
 
 static void
-child_error (char *target_name, int exit_code, int exit_sig, int coredump,
-             int ignored)
+child_error (const char *target_name,
+             int exit_code, int exit_sig, int coredump, int ignored)
 {
   if (ignored && silent_flag)
     return;
@@ -496,7 +557,7 @@ reap_children (int block, int err)
         pre-POSIX systems.  We keep the count only because... it's there...
 
         The test and decrement are not atomic; if it is compiled into:
-               register = dead_children - 1;
+               register = dead_children - 1;
                dead_children = register;
         a SIGCHLD could come between the two instructions.
         child_handler increments dead_children.
@@ -515,9 +576,9 @@ reap_children (int block, int err)
        {
          any_remote |= c->remote;
          any_local |= ! c->remote;
-         DB (DB_JOBS, (_("Live child 0x%08lx (%s) PID %ld %s\n"),
-                        (unsigned long int) c, c->file->name,
-                        (long) c->pid, c->remote ? _(" (remote)") : ""));
+         DB (DB_JOBS, (_("Live child %p (%s) PID %s %s\n"),
+                        c, c->file->name, pid2str (c->pid),
+                        c->remote ? _(" (remote)") : ""));
 #ifdef VMS
          break;
 #endif
@@ -553,7 +614,7 @@ reap_children (int block, int err)
                pid = WAIT_NOHANG (&status);
              else
 #endif
-               pid = wait (&status);
+               EINTRLOOP(pid, wait (&status));
 #endif /* !VMS */
            }
          else
@@ -638,8 +699,7 @@ reap_children (int block, int err)
                              e, map_windows32_error_to_string(e));
                   }
                 else
-                  DB (DB_VERBOSE, ("Main thread handle = 0x%08lx\n",
-                                   (unsigned long)main_thread));
+                  DB (DB_VERBOSE, ("Main thread handle = %p\n", main_thread));
               }
 
             /* wait for anything to finish */
@@ -695,10 +755,9 @@ reap_children (int block, int err)
         continue;
 
       DB (DB_JOBS, (child_failed
-                    ? _("Reaping losing child 0x%08lx PID %ld %s\n")
-                    : _("Reaping winning child 0x%08lx PID %ld %s\n"),
-                    (unsigned long int) c, (long) c->pid,
-                    c->remote ? _(" (remote)") : ""));
+                    ? _("Reaping losing child %p PID %s %s\n")
+                    : _("Reaping winning child %p PID %s %s\n"),
+                    c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
 
       if (c->sh_batch_file) {
         DB (DB_JOBS, (_("Cleaning up temp batch file %s\n"),
@@ -799,9 +858,8 @@ reap_children (int block, int err)
            update_status to its also_make files.  */
         notice_finished_file (c->file);
 
-      DB (DB_JOBS, (_("Removing child 0x%08lx PID %ld%s from chain.\n"),
-                    (unsigned long int) c, (long) c->pid,
-                    c->remote ? _(" (remote)") : ""));
+      DB (DB_JOBS, (_("Removing child %p PID %s%s from chain.\n"),
+                    c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
 
       /* Block fatal signals while frobnicating the list, so that
          children and job_slots_used are always consistent.  Otherwise
@@ -844,8 +902,8 @@ static void
 free_child (struct child *child)
 {
   if (!jobserver_tokens)
-    fatal (NILF, "INTERNAL: Freeing child 0x%08lx (%s) but no tokens left!\n",
-           (unsigned long int) child, child->file->name);
+    fatal (NILF, "INTERNAL: Freeing child %p (%s) but no tokens left!\n",
+           child, child->file->name);
 
   /* If we're using the jobserver and this child is not the only outstanding
      job, put a token back into the pipe for it.  */
@@ -861,8 +919,8 @@ free_child (struct child *child)
       if (r != 1)
        pfatal_with_name (_("write jobserver"));
 
-      DB (DB_JOBS, (_("Released token for child 0x%08lx (%s).\n"),
-                    (unsigned long int) child, child->file->name));
+      DB (DB_JOBS, (_("Released token for child %p (%s).\n"),
+                    child, child->file->name));
     }
 
   --jobserver_tokens;
@@ -875,7 +933,7 @@ free_child (struct child *child)
       register unsigned int i;
       for (i = 0; i < child->file->cmds->ncommand_lines; ++i)
        free (child->command_lines[i]);
-      free ((char *) child->command_lines);
+      free (child->command_lines);
     }
 
   if (child->environment != 0)
@@ -883,10 +941,10 @@ free_child (struct child *child)
       register char **ep = child->environment;
       while (*ep != 0)
        free (*ep++);
-      free ((char *) child->environment);
+      free (child->environment);
     }
 
-  free ((char *) child);
+  free (child);
 }
 \f
 #ifdef POSIX
@@ -931,7 +989,7 @@ set_child_handler_action_flags (int set_handler, int set_alarm)
   signal (SIGCHLD, SIG_DFL);
 #endif
 
-  bzero ((char *) &sa, sizeof sa);
+  memset (&sa, '\0', sizeof sa);
   sa.sa_handler = child_handler;
   sa.sa_flags = set_handler ? 0 : SA_RESTART;
 #if defined SIGCHLD
@@ -969,8 +1027,9 @@ start_job_command (struct child *child)
 #if !defined(_AMIGA) && !defined(WINDOWS32)
   static int bad_stdin = -1;
 #endif
-  register char *p;
-  int flags;
+  char *p;
+  /* Must be volatile to silence bogus GCC warning about longjmp/vfork.  */
+  volatile int flags;
 #ifdef VMS
   char *argv;
 #else
@@ -1018,7 +1077,9 @@ start_job_command (struct child *child)
 #ifdef VMS
     argv = p;
 #else
-    argv = construct_command_argv (p, &end, child->file, &child->sh_batch_file);
+    argv = construct_command_argv (p, &end, child->file,
+                                  child->file->cmds->lines_flags[child->command_line - 1],
+                                  &child->sh_batch_file);
 #endif
     if (end == NULL)
       child->command_ptr = NULL;
@@ -1037,7 +1098,7 @@ start_job_command (struct child *child)
     {
 #ifndef VMS
       free (argv[0]);
-      free ((char *) argv);
+      free (argv);
 #endif
       child->file->update_status = 1;
       notice_finished_file (child->file);
@@ -1052,7 +1113,7 @@ start_job_command (struct child *child)
       if (argv)
         {
           free (argv[0]);
-          free ((char *) argv);
+          free (argv);
         }
 #endif
       argv = 0;
@@ -1105,15 +1166,18 @@ start_job_command (struct child *child)
 #if defined __MSDOS__ || defined (__EMX__)
       unixy_shell      /* the test is complicated and we already did it */
 #else
-      (argv[0] && !strcmp (argv[0], "/bin/sh"))
+      (argv[0] && is_bourne_compatible_shell(argv[0]))
 #endif
-      && (argv[1]
-          && argv[1][0] == '-' && argv[1][1] == 'c' && argv[1][2] == '\0')
+      && (argv[1] && argv[1][0] == '-'
+       &&
+           ((argv[1][1] == 'c' && argv[1][2] == '\0')
+         ||
+            (argv[1][1] == 'e' && argv[1][2] == 'c' && argv[1][3] == '\0')))
       && (argv[2] && argv[2][0] == ':' && argv[2][1] == '\0')
       && argv[3] == NULL)
     {
       free (argv[0]);
-      free ((char *) argv);
+      free (argv);
       goto next_command;
     }
 #endif  /* !VMS && !_AMIGA */
@@ -1124,7 +1188,7 @@ start_job_command (struct child *child)
     {
 #ifndef VMS
       free (argv[0]);
-      free ((char *) argv);
+      free (argv);
 #endif
       goto next_command;
     }
@@ -1275,6 +1339,12 @@ start_job_command (struct child *child)
           if (job_rfd >= 0)
             close (job_rfd);
 
+#ifdef SET_STACK_SIZE
+          /* Reset limits, if necessary.  */
+          if (stack_limit.rlim_cur)
+            setrlimit (RLIMIT_STACK, &stack_limit);
+#endif
+
          child_execute_job (child->good_stdin ? 0 : bad_stdin, 1,
                              argv, child->environment);
        }
@@ -1375,7 +1445,7 @@ start_job_command (struct child *child)
       hPID = process_easy(argv, child->environment);
 
       if (hPID != INVALID_HANDLE_VALUE)
-        child->pid = (int) hPID;
+        child->pid = (pid_t) hPID;
       else {
         int i;
         unblock_sigs();
@@ -1402,7 +1472,7 @@ start_job_command (struct child *child)
   /* Free the storage used by the child's argument list.  */
 #ifndef VMS
   free (argv[0]);
-  free ((char *) argv);
+  free (argv);
 #endif
 
   return;
@@ -1452,9 +1522,9 @@ start_waiting_job (struct child *c)
     {
     case cs_running:
       c->next = children;
-      DB (DB_JOBS, (_("Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"),
-                    (unsigned long int) c, c->file->name,
-                    (long) c->pid, c->remote ? _(" (remote)") : ""));
+      DB (DB_JOBS, (_("Putting child %p (%s) PID %s%s on the chain.\n"),
+                    c, c->file->name, pid2str (c->pid),
+                    c->remote ? _(" (remote)") : ""));
       children = c;
       /* One more job slot is in use.  */
       ++job_slots_used;
@@ -1484,10 +1554,10 @@ start_waiting_job (struct child *c)
 void
 new_job (struct file *file)
 {
-  register struct commands *cmds = file->cmds;
-  register struct child *c;
+  struct commands *cmds = file->cmds;
+  struct child *c;
   char **lines;
-  register unsigned int i;
+  unsigned int i;
 
   /* Let any previously decided-upon jobs that are waiting
      for the load to go down start before this new one.  */
@@ -1500,7 +1570,7 @@ new_job (struct file *file)
   chop_commands (cmds);
 
   /* Expand the command lines and store the results in LINES.  */
-  lines = (char **) xmalloc (cmds->ncommand_lines * sizeof (char *));
+  lines = xmalloc (cmds->ncommand_lines * sizeof (char *));
   for (i = 0; i < cmds->ncommand_lines; ++i)
     {
       /* Collapse backslash-newline combinations that are inside variable
@@ -1526,7 +1596,7 @@ new_job (struct file *file)
            /* Copy the text between the end of the last chunk
               we processed (where IN points) and the new chunk
               we are about to process (where REF points).  */
-           bcopy (in, out, ref - in);
+           memmove (out, in, ref - in);
 
          /* Move both pointers past the boring stuff.  */
          out += ref - in;
@@ -1594,7 +1664,7 @@ new_job (struct file *file)
       /* There are no more references in this line to worry about.
         Copy the remaining uninteresting text to the output.  */
       if (out != in)
-       strcpy (out, in);
+       memmove (out, in, strlen (in) + 1);
 
       /* Finally, expand the line.  */
       lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i],
@@ -1604,8 +1674,7 @@ new_job (struct file *file)
   /* Start the command sequence, record it in a new
      `struct child', and add that to the chain.  */
 
-  c = (struct child *) xmalloc (sizeof (struct child));
-  bzero ((char *)c, sizeof (struct child));
+  c = xcalloc (sizeof (struct child));
   c->file = file;
   c->command_lines = lines;
   c->sh_batch_file = NULL;
@@ -1706,8 +1775,8 @@ new_job (struct file *file)
         /* If we got one, we're done here.  */
        if (got_token == 1)
           {
-            DB (DB_JOBS, (_("Obtained token for child 0x%08lx (%s).\n"),
-                          (unsigned long int) c, c->file->name));
+            DB (DB_JOBS, (_("Obtained token for child %p (%s).\n"),
+                          c, c->file->name));
             break;
           }
 
@@ -1724,8 +1793,17 @@ new_job (struct file *file)
   ++jobserver_tokens;
 
   /* The job is now primed.  Start it running.
-     (This will notice if there are in fact no commands.)  */
-  (void) start_waiting_job (c);
+     (This will notice if there is in fact no recipe.)  */
+  if (cmds->fileinfo.filenm)
+    DB (DB_BASIC, (_("Invoking recipe from %s:%lu to update target `%s'.\n"),
+                   cmds->fileinfo.filenm, cmds->fileinfo.lineno,
+                   c->file->name));
+  else
+    DB (DB_BASIC, (_("Invoking builtin recipe to update target `%s'.\n"),
+                   c->file->name));
+
+
+  start_waiting_job (c);
 
   if (job_slots == 1 || not_parallel)
     /* Since there is only one job slot, make things run linearly.
@@ -1892,7 +1970,7 @@ start_waiting_jobs (void)
 #ifndef WINDOWS32
 
 /* EMX: Start a child process. This function returns the new pid.  */
-# if defined __MSDOS__ || defined __EMX__
+# if defined __EMX__
 int
 child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
 {
@@ -2013,7 +2091,7 @@ exec_command (char **argv, char **envp)
     {
       int i;
       fprintf(stderr,
-              _("process_easy() failed failed to launch process (e=%ld)\n"),
+              _("process_easy() failed to launch process (e=%ld)\n"),
               process_last_err(hPID));
       for (i = 0; argv[i]; i++)
           fprintf(stderr, "%s ", argv[i]);
@@ -2042,9 +2120,14 @@ exec_command (char **argv, char **envp)
       if (hWaitPID == hPID)
           break;
       else
+       {
+         char *pidstr = xstrdup (pid2str ((pid_t)hWaitPID));
+
           fprintf(stderr,
-                  _("make reaped child pid %ld, still waiting for pid %ld\n"),
-                  (DWORD)hWaitPID, (DWORD)hPID);
+                  _("make reaped child pid %s, still waiting for pid %s\n"),
+                 pidstr, pid2str ((pid_t)hPID));
+         free (pidstr);
+       }
     }
 
   /* return child's exit code as our exit code */
@@ -2115,7 +2198,7 @@ exec_command (char **argv, char **envp)
           ++argc;
 # endif
 
-       new_argv = (char **) alloca ((1 + argc + 1) * sizeof (char *));
+       new_argv = alloca ((1 + argc + 1) * sizeof (char *));
        new_argv[0] = shell;
 
 # ifdef __EMX__
@@ -2193,11 +2276,17 @@ void clean_tmp (void)
    If *RESTP is NULL, newlines will be ignored.
 
    SHELL is the shell to use, or nil to use the default shell.
-   IFS is the value of $IFS, or nil (meaning the default).  */
+   IFS is the value of $IFS, or nil (meaning the default).
+
+   FLAGS is the value of lines_flags for this command line.  It is
+   used in the WINDOWS32 port to check whether + or $(MAKE) were found
+   in this command line, in which case the effect of just_print_flag
+   is overridden.  */
 
 static char **
 construct_command_argv_internal (char *line, char **restp, char *shell,
-                                 char *ifs, char **batch_filename_ptr)
+                                 char *shellflags, char *ifs, int flags,
+                                char **batch_filename_ptr)
 {
 #ifdef __MSDOS__
   /* MSDOS supports both the stock DOS shell and ports of Unixy shells.
@@ -2237,7 +2326,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                                 "for", "case", "if", ":", ".", "break",
                                 "continue", "export", "read", "readonly",
                                 "shift", "times", "trap", "switch", "unset",
-                                 0 };
+                                 "ulimit", 0 };
 
   char *sh_chars;
   char **sh_cmds;
@@ -2279,12 +2368,15 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                             0 };
 #elif defined (WINDOWS32)
   static char sh_chars_dos[] = "\"|&<>";
-  static char *sh_cmds_dos[] = { "break", "call", "cd", "chcp", "chdir", "cls",
-                            "copy", "ctty", "date", "del", "dir", "echo",
-                            "erase", "exit", "for", "goto", "if", "if", "md",
-                            "mkdir", "path", "pause", "prompt", "rd", "rem",
-                             "ren", "rename", "rmdir", "set", "shift", "time",
-                             "type", "ver", "verify", "vol", ":", 0 };
+  static char *sh_cmds_dos[] = { "assoc", "break", "call", "cd", "chcp",
+                                "chdir", "cls", "color", "copy", "ctty",
+                                "date", "del", "dir", "echo", "echo.",
+                                "endlocal", "erase", "exit", "for", "ftype",
+                                "goto", "if", "if", "md", "mkdir", "path",
+                                "pause", "prompt", "rd", "rem", "ren",
+                                "rename", "rmdir", "set", "setlocal",
+                                "shift", "time", "title", "type", "ver",
+                                "verify", "vol", ":", 0 };
   static char sh_chars_sh[] = "#;\"*?[]&|<>(){}$`^";
   static char *sh_cmds_sh[] = { "cd", "eval", "exec", "exit", "login",
                             "logout", "set", "umask", "wait", "while", "for",
@@ -2306,11 +2398,17 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                              "eval", "exec", "exit", "export", "for", "if",
                              "login", "logout", "read", "readonly", "set",
                              "shift", "switch", "test", "times", "trap",
-                             "umask", "wait", "while", 0 };
+                             "ulimit", "umask", "unset", "wait", "while", 0 };
+# ifdef HAVE_DOS_PATHS
+  /* This is required if the MSYS/Cygwin ports (which do not define
+     WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
+     sh_chars_sh[] directly (see below).  */
+  static char *sh_chars_sh = sh_chars;
+# endif         /* HAVE_DOS_PATHS */
 #endif
-  register int i;
-  register char *p;
-  register char *ap;
+  int i;
+  char *p;
+  char *ap;
   char *end;
   int instring, word_has_equals, seen_nonequals, last_argument_was_empty;
   char **new_argv = 0;
@@ -2342,10 +2440,10 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #ifdef WINDOWS32
   else if (strcmp (shell, default_shell))
   {
-    char *s1 = _fullpath(NULL, shell, 0);
-    char *s2 = _fullpath(NULL, default_shell, 0);
+    char *s1 = _fullpath (NULL, shell, 0);
+    char *s2 = _fullpath (NULL, default_shell, 0);
 
-    slow_flag = strcmp((s1 ? s1 : ""), (s2 ? s2 : ""));
+    slow_flag = strcmp ((s1 ? s1 : ""), (s2 ? s2 : ""));
 
     if (s1)
       free (s1);
@@ -2356,7 +2454,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     goto slow;
 #else  /* not WINDOWS32 */
 #if defined (__MSDOS__) || defined (__EMX__)
-  else if (stricmp (shell, default_shell))
+  else if (strcasecmp (shell, default_shell))
     {
       extern int _is_unixy_shell (const char *_path);
 
@@ -2395,13 +2493,19 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       if (*ap != ' ' && *ap != '\t' && *ap != '\n')
        goto slow;
 
+  if (shellflags != 0)
+    if (shellflags[0] != '-'
+        || ((shellflags[1] != 'c' || shellflags[2] != '\0')
+            && (shellflags[1] != 'e' || shellflags[2] != 'c' || shellflags[3] != '\0')))
+      goto slow;
+
   i = strlen (line) + 1;
 
   /* More than 1 arg per character is impossible.  */
-  new_argv = (char **) xmalloc (i * sizeof (char *));
+  new_argv = xmalloc (i * sizeof (char *));
 
   /* All the args can fit in a buffer as big as LINE is.   */
-  ap = new_argv[0] = argstr = (char *) xmalloc (i);
+  ap = new_argv[0] = argstr = xmalloc (i);
   end = ap + i;
 
   /* I is how many complete arguments have been found.  */
@@ -2440,9 +2544,6 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                   *(ap++) = *(p++);
                   *(ap++) = *p;
                 }
-              /* If there's a TAB here, skip it.  */
-              if (p[1] == '\t')
-                ++p;
             }
          else if (*p == '\n' && restp != NULL)
            {
@@ -2462,6 +2563,9 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       else if (strchr (sh_chars, *p) != 0)
        /* Not inside a string, but it's a special char.  */
        goto slow;
+      else if (one_shell && *p == '\n')
+       /* In .ONESHELL mode \n is a separator like ; or && */
+       goto slow;
 #ifdef  __MSDOS__
       else if (*p == '.' && p[1] == '.' && p[2] == '.' && p[3] != '.')
        /* `...' is a wildcard in DJGPP.  */
@@ -2490,10 +2594,6 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                /* 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])
@@ -2618,7 +2718,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     {
       /* Line was empty.  */
       free (argstr);
-      free ((char *)new_argv);
+      free (new_argv);
       return 0;
     }
 
@@ -2631,7 +2731,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     {
       /* Free the old argument list we were working on.  */
       free (argstr);
-      free ((char *)new_argv);
+      free (new_argv);
     }
 
 #ifdef __MSDOS__
@@ -2644,7 +2744,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     char *buffer;
     char *dptr;
 
-    buffer = (char *)xmalloc (strlen (line)+1);
+    buffer = xmalloc (strlen (line)+1);
 
     ptr = line;
     for (dptr=buffer; *ptr; )
@@ -2661,7 +2761,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     }
     *dptr = 0;
 
-    new_argv = (char **) xmalloc (2 * sizeof (char *));
+    new_argv = xmalloc (2 * sizeof (char *));
     new_argv[0] = buffer;
     new_argv[1] = 0;
   }
@@ -2683,34 +2783,97 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
   if (*line == '\0')
     return 0;
 #endif /* WINDOWS32 */
+
   {
     /* SHELL may be a multi-word command.  Construct a command line
-       "SHELL -c LINE", with all special chars in LINE escaped.
+       "$(SHELL) $(.SHELLFLAGS) LINE", with all special chars in LINE escaped.
        Then recurse, expanding this command line to get the final
        argument list.  */
 
     unsigned int shell_len = strlen (shell);
-#ifndef VMS
-    static char minus_c[] = " -c ";
-#else
-    static char minus_c[] = "";
-#endif
     unsigned int line_len = strlen (line);
-
-    char *new_line = (char *) alloca (shell_len + (sizeof (minus_c) - 1)
-                                     + (line_len * 2) + 1);
+    unsigned int sflags_len = strlen (shellflags);
     char *command_ptr = NULL; /* used for batch_mode_shell mode */
+    char *new_line;
 
 # ifdef __EMX__ /* is this necessary? */
     if (!unixy_shell)
-      minus_c[1] = '/'; /* " /c " */
+      shellflags[0] = '/'; /* "/c" */
 # endif
 
+    /* In .ONESHELL mode we are allowed to throw the entire current
+       recipe string at a single shell and trust that the user
+       has configured the shell and shell flags, and formatted
+       the string, appropriately. */
+    if (one_shell)
+      {
+       /* If the shell is Bourne compatible, we must remove and ignore
+          interior special chars [@+-] because they're meaningless to
+          the shell itself. If, however, we're in .ONESHELL mode and
+          have changed SHELL to something non-standard, we should
+          leave those alone because they could be part of the
+          script. In this case we must also leave in place
+          any leading [@+-] for the same reason.  */
+
+       /* Remove and ignore interior prefix chars [@+-] because they're
+            meaningless given a single shell. */
+#if defined __MSDOS__ || defined (__EMX__)
+       if (unixy_shell)     /* the test is complicated and we already did it */
+#else
+       if (is_bourne_compatible_shell(shell))
+#endif
+          {
+            const char *f = line;
+            char *t = line;
+
+            /* Copy the recipe, removing and ignoring interior prefix chars
+               [@+-]: they're meaningless in .ONESHELL mode.  */
+            while (f[0] != '\0')
+              {
+                int esc = 0;
+
+                /* This is the start of a new recipe line.
+                   Skip whitespace and prefix characters.  */
+                while (isblank (*f) || *f == '-' || *f == '@' || *f == '+')
+                  ++f;
+
+                /* Copy until we get to the next logical recipe line.  */
+                while (*f != '\0')
+                  {
+                    *(t++) = *(f++);
+                    if (f[-1] == '\\')
+                      esc = !esc;
+                    else
+                      {
+                        /* On unescaped newline, we're done with this line.  */
+                        if (f[-1] == '\n' && ! esc)
+                          break;
+
+                        /* Something else: reset the escape sequence.  */
+                        esc = 0;
+                      }
+                  }
+              }
+            *t = '\0';
+          }
+
+       new_argv = xmalloc (4 * sizeof (char *));
+       new_argv[0] = xstrdup(shell);
+       new_argv[1] = xstrdup(shellflags);
+       new_argv[2] = line;
+       new_argv[3] = NULL;
+       return new_argv;
+      }
+
+    new_line = alloca (shell_len + 1 + sflags_len + 1
+                             + (line_len*2) + 1);
     ap = new_line;
-    bcopy (shell, ap, shell_len);
+    memcpy (ap, shell, shell_len);
     ap += shell_len;
-    bcopy (minus_c, ap, sizeof (minus_c) - 1);
-    ap += sizeof (minus_c) - 1;
+    *(ap++) = ' ';
+    memcpy (ap, shellflags, sflags_len);
+    ap += sflags_len;
+    *(ap++) = ' ';
     command_ptr = ap;
     for (p = line; *p != '\0'; ++p)
       {
@@ -2721,9 +2884,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
          }
        else if (*p == '\\' && p[1] == '\n')
          {
-           /* 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
+           /* POSIX says we keep the backslash-newline.  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
@@ -2733,14 +2895,14 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
            if (PRESERVE_BSNL)
              {
                *(ap++) = '\\';
-               *(ap++) = '\\';
+               /* Only non-batch execution needs another backslash,
+                  because it will be passed through a recursive
+                  invocation of this function.  */
+               if (!batch_mode_shell)
+                 *(ap++) = '\\';
                *(ap++) = '\n';
              }
-
            ++p;
-           if (p[1] == '\t')
-             ++p;
-
            continue;
          }
 
@@ -2761,7 +2923,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #endif
        *ap++ = *p;
       }
-    if (ap == new_line + shell_len + sizeof (minus_c) - 1)
+    if (ap == new_line + shell_len + sflags_len + 2)
       /* Line was empty.  */
       return 0;
     *ap = '\0';
@@ -2770,10 +2932,10 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     /* Some shells do not work well when invoked as 'sh -c xxx' to run a
        command line (e.g. Cygnus GNUWIN32 sh.exe on WIN32 systems).  In these
        cases, run commands via a script file.  */
-    if (just_print_flag) {
+    if (just_print_flag && !(flags & COMMANDS_RECURSE)) {
       /* 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 = xmalloc(2 * sizeof (char *));
       new_argv[0] = xstrdup ("");
       new_argv[1] = NULL;
     } else if ((no_default_sh_exe || batch_mode_shell) && batch_filename_ptr) {
@@ -2798,9 +2960,11 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       fputs (command_ptr, batch);
       fputc ('\n', batch);
       fclose (batch);
+      DB (DB_JOBS, (_("Batch file contents:%s\n\t%s\n"),
+                   !unixy_shell ? "\n\t@echo off" : "", command_ptr));
 
       /* create argv */
-      new_argv = (char **) xmalloc(3 * sizeof (char *));
+      new_argv = xmalloc(3 * sizeof (char *));
       if (unixy_shell) {
         new_argv[0] = xstrdup (shell);
         new_argv[1] = *batch_filename_ptr; /* only argv[0] gets freed later */
@@ -2811,10 +2975,10 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       new_argv[2] = NULL;
     } else
 #endif /* WINDOWS32 */
+
     if (unixy_shell)
-      new_argv = construct_command_argv_internal (new_line, (char **) NULL,
-                                                  (char *) 0, (char *) 0,
-                                                  (char **) 0);
+      new_argv = construct_command_argv_internal (new_line, 0, 0, 0, 0, flags, 0);
+
 #ifdef __EMX__
     else if (!unixy_shell)
       {
@@ -2825,15 +2989,14 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
         char *p = new_line;
         char *q = new_line;
         memcpy (new_line, line, line_len + 1);
-        /* replace all backslash-newline combination and also following tabs */
-        while (*q != '\0')
+        /* Replace all backslash-newline combination and also following tabs.
+           Important: stop at the first '\n' because that's what the loop above
+           did. The next line starting at restp[0] will be executed during the
+           next call of this function. */
+        while (*q != '\0' && *q != '\n')
           {
             if (q[0] == '\\' && q[1] == '\n')
-              {
-                q += 2; /* remove '\\' and '\n' */
-                if (q[0] == '\t')
-                  q++; /* remove 1st tab in the next line */
-              }
+              q += 2; /* remove '\\' and '\n' */
             else
               *p++ = *q++;
           }
@@ -2872,10 +3035,10 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
           size_t sh_len = strlen (shell);
 
           /* exactly 3 arguments + NULL */
-          new_argv = (char **) xmalloc (4 * sizeof (char *));
+          new_argv = xmalloc (4 * sizeof (char *));
           /* Exactly strlen(shell) + strlen("/c") + strlen(line) + 3 times
              the trailing '\0' */
-          new_argv[0] = (char *) malloc (sh_len + line_len + 5);
+          new_argv[0] = xmalloc (sh_len + line_len + 5);
           memcpy (new_argv[0], shell, sh_len + 1);
           new_argv[1] = new_argv[0] + sh_len + 1;
           memcpy (new_argv[1], "/c", 3);
@@ -2890,11 +3053,11 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
         /* With MSDOS shells, we must construct the command line here
            instead of recursively calling ourselves, because we
            cannot backslash-escape the special characters (see above).  */
-        new_argv = (char **) xmalloc (sizeof (char *));
-        line_len = strlen (new_line) - shell_len - sizeof (minus_c) + 1;
+        new_argv = xmalloc (sizeof (char *));
+        line_len = strlen (new_line) - shell_len - sflags_len - 2;
         new_argv[0] = xmalloc (line_len + 1);
         strncpy (new_argv[0],
-                 new_line + shell_len + sizeof (minus_c) - 1, line_len);
+                 new_line + shell_len + sflags_len + 2, line_len);
         new_argv[0][line_len] = '\0';
       }
 #else
@@ -2924,9 +3087,9 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 
 char **
 construct_command_argv (char *line, char **restp, struct file *file,
-                        char **batch_filename_ptr)
+                        int cmd_flags, char **batch_filename_ptr)
 {
-  char *shell, *ifs;
+  char *shell, *ifs, *shellflags;
   char **argv;
 
 #ifdef VMS
@@ -2948,7 +3111,7 @@ construct_command_argv (char *line, char **restp, struct file *file,
       argc++;
     }
 
-  argv = (char **)malloc (argc * sizeof (char *));
+  argv = xmalloc (argc * sizeof (char *));
   if (argv == 0)
     abort ();
 
@@ -3031,14 +3194,17 @@ construct_command_argv (char *line, char **restp, struct file *file,
     }
 #endif /* __EMX__ */
 
+    shellflags = allocated_variable_expand_for_file ("$(.SHELLFLAGS)", file);
     ifs = allocated_variable_expand_for_file ("$(IFS)", file);
 
     warn_undefined_variables_flag = save;
   }
 
-  argv = construct_command_argv_internal (line, restp, shell, ifs, batch_filename_ptr);
+  argv = construct_command_argv_internal (line, restp, shell, shellflags, ifs,
+                                          cmd_flags, batch_filename_ptr);
 
   free (shell);
+  free (shellflags);
   free (ifs);
 #endif /* !VMS */
   return argv;
@@ -3061,7 +3227,7 @@ dup2 (int old, int new)
 
   return fd;
 }
-#endif /* !HAPE_DUP2 && !_AMIGA */
+#endif /* !HAVE_DUP2 && !_AMIGA */
 
 /* On VMS systems, include special VMS functions.  */
 
diff --git a/job.h b/job.h
index 436b979..d346b5e 100644 (file)
--- a/job.h
+++ b/job.h
@@ -1,19 +1,20 @@
 /* Definitions for managing subprocesses in GNU Make.
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef SEEN_JOB_H
 #define SEEN_JOB_H
@@ -53,6 +54,7 @@ struct child
 #ifdef VMS
     int efn;                   /* Completion event flag number */
     int cstatus;               /* Completion status */
+    char *comname;              /* Temporary command file name */
 #endif
     char *sh_batch_file;        /* Script file for shell commands */
     unsigned int remote:1;     /* Nonzero if executing remotely.  */
@@ -66,31 +68,33 @@ struct child
 
 extern struct child *children;
 
-extern void new_job PARAMS ((struct file *file));
-extern void reap_children PARAMS ((int block, int err));
-extern void start_waiting_jobs PARAMS ((void));
+int is_bourne_compatible_shell(const char *path);
+void new_job (struct file *file);
+void reap_children (int block, int err);
+void start_waiting_jobs (void);
 
-extern char **construct_command_argv PARAMS ((char *line, char **restp, struct file *file, char** batch_file));
+char **construct_command_argv (char *line, char **restp, struct file *file,
+                               int cmd_flags, char** batch_file);
 #ifdef VMS
-extern int child_execute_job PARAMS ((char *argv, struct child *child));
+int child_execute_job (char *argv, struct child *child);
 #elif defined(__EMX__)
-extern int child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp));
+int child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
 #else
-extern void child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp));
+void child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
 #endif
 #ifdef _AMIGA
-extern void exec_command PARAMS ((char **argv));
+void exec_command (char **argv);
 #elif defined(__EMX__)
-extern int exec_command PARAMS ((char **argv, char **envp));
+int exec_command (char **argv, char **envp);
 #else
-extern void exec_command PARAMS ((char **argv, char **envp));
+void exec_command (char **argv, char **envp);
 #endif
 
 extern unsigned int job_slots_used;
 
-extern void block_sigs PARAMS ((void));
+void block_sigs (void);
 #ifdef POSIX
-extern void unblock_sigs PARAMS ((void));
+void unblock_sigs (void);
 #else
 #ifdef HAVE_SIGSETMASK
 extern int fatal_signal_mask;
diff --git a/main.c b/main.c
index 483babf..c6989e3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,20 +1,20 @@
 /* Argument parsing and main program of 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "dep.h"
@@ -44,51 +44,44 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 # include <fcntl.h>
 #endif
 
-#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
-# define SET_STACK_SIZE
-#endif
-
-#ifdef SET_STACK_SIZE
-# include <sys/resource.h>
-#endif
-
 #ifdef _AMIGA
 int __stack = 20000; /* Make sure we have 20K of stack space */
 #endif
 
-extern void init_dir PARAMS ((void));
-extern void remote_setup PARAMS ((void));
-extern void remote_cleanup PARAMS ((void));
-extern RETSIGTYPE fatal_error_signal PARAMS ((int sig));
+void init_dir (void);
+void remote_setup (void);
+void remote_cleanup (void);
+RETSIGTYPE fatal_error_signal (int sig);
+
+void print_variable_data_base (void);
+void print_dir_data_base (void);
+void print_rule_data_base (void);
+void print_vpath_data_base (void);
 
-extern void print_variable_data_base PARAMS ((void));
-extern void print_dir_data_base PARAMS ((void));
-extern void print_rule_data_base PARAMS ((void));
-extern void print_file_data_base PARAMS ((void));
-extern void print_vpath_data_base PARAMS ((void));
+void verify_file_data_base (void);
 
 #if defined HAVE_WAITPID || defined HAVE_WAIT3
 # define HAVE_WAIT_NOHANG
 #endif
 
 #ifndef        HAVE_UNISTD_H
-extern int chdir ();
+int chdir ();
 #endif
 #ifndef        STDC_HEADERS
 # ifndef sun                   /* Sun has an incorrect decl in a header.  */
-extern void exit PARAMS ((int)) __attribute__ ((noreturn));
+void exit (int) __attribute__ ((noreturn));
 # endif
-extern double atof ();
+double atof ();
 #endif
 
-static void clean_jobserver PARAMS ((int status));
-static void print_data_base PARAMS ((void));
-static void print_version PARAMS ((void));
-static void decode_switches PARAMS ((int argc, char **argv, int env));
-static void decode_env_switches PARAMS ((char *envar, unsigned int len));
-static void define_makeflags PARAMS ((int all, int makefile));
-static char *quote_for_env PARAMS ((char *out, char *in));
-static void initialize_global_hash_tables PARAMS ((void));
+static void clean_jobserver (int status);
+static void print_data_base (void);
+static void print_version (void);
+static void decode_switches (int argc, char **argv, int env);
+static void decode_env_switches (char *envar, unsigned int len);
+static const char *define_makeflags (int all, int makefile);
+static char *quote_for_env (char *out, const char *in);
+static void initialize_global_hash_tables (void);
 
 \f
 /* The structure that describes an accepted command switch.  */
@@ -102,19 +95,20 @@ struct command_switch
        flag,                   /* Turn int flag on.  */
        flag_off,               /* Turn int flag off.  */
        string,                 /* One string per switch.  */
+       filename,               /* A string containing a file name.  */
        positive_int,           /* A positive integer.  */
        floating,               /* A floating-point number (double).  */
        ignore                  /* Ignored.  */
       } type;
 
-    char *value_ptr;   /* Pointer to the value-holding variable.  */
+    void *value_ptr;   /* Pointer to the value-holding variable.  */
 
     unsigned int env:1;                /* Can come from MAKEFLAGS.  */
     unsigned int toenv:1;      /* Should be put in MAKEFLAGS.  */
     unsigned int no_makefile:1;        /* Don't propagate when remaking makefiles.  */
 
-    char *noarg_value; /* Pointer to value used if no argument is given.  */
-    char *default_value;/* Pointer to default value.  */
+    const void *noarg_value;   /* Pointer to value used if no arg given.  */
+    const void *default_value; /* Pointer to default value.  */
 
     char *long_name;           /* Long option name.  */
   };
@@ -128,7 +122,7 @@ struct command_switch
 
 struct stringlist
   {
-    char **list;       /* Nil-terminated list of strings.  */
+    const char **list; /* Nil-terminated list of strings.  */
     unsigned int idx;  /* Index into above.  */
     unsigned int max;  /* Number of pointers allocated.  */
   };
@@ -157,6 +151,10 @@ static int debug_flag = 0;
 
 int db_level = 0;
 
+/* Output level (--verbosity).  */
+
+static struct stringlist *verbosity_flags;
+
 #ifdef WINDOWS32
 /* Suspend make in main for a short time to allow debugger to attach */
 
@@ -213,6 +211,13 @@ int print_version_flag = 0;
 
 static struct stringlist *makefiles = 0;
 
+/* Size of the stack when we started.  */
+
+#ifdef SET_STACK_SIZE
+struct rlimit stack_limit;
+#endif
+
+
 /* Number of job slots (commands that can be run at once).  */
 
 unsigned int job_slots = 1;
@@ -258,6 +263,9 @@ static struct stringlist *old_files = 0;
 
 static struct stringlist *new_files = 0;
 
+/* List of strings to be eval'd.  */
+static struct stringlist *eval_strings = 0;
+
 /* If nonzero, we should just print usage and exit.  */
 
 static int print_usage_flag = 0;
@@ -281,6 +289,10 @@ int rebuilding_makefiles = 0;
 
 struct variable shell_var;
 
+/* This character introduces a command: it's the first char on the line.  */
+
+char cmd_prefix = '\t';
+
 \f
 /* The usage output.  We write it this way to make life easier for the
    translators, especially those trying to translate to right-to-left
@@ -304,12 +316,14 @@ static const char *const usage[] =
   -e, --environment-overrides\n\
                               Environment variables override makefiles.\n"),
     N_("\
+  --eval=STRING               Evaluate STRING as a makefile statement.\n"),
+    N_("\
   -f FILE, --file=FILE, --makefile=FILE\n\
                               Read FILE as a makefile.\n"),
     N_("\
   -h, --help                  Print this message and exit.\n"),
     N_("\
-  -i, --ignore-errors         Ignore errors from commands.\n"),
+  -i, --ignore-errors         Ignore errors from recipes.\n"),
     N_("\
   -I DIRECTORY, --include-dir=DIRECTORY\n\
                               Search DIRECTORY for included makefiles.\n"),
@@ -324,20 +338,20 @@ static const char *const usage[] =
   -L, --check-symlink-times   Use the latest mtime between symlinks and target.\n"),
     N_("\
   -n, --just-print, --dry-run, --recon\n\
-                              Don't actually run any commands; just print them.\n"),
+                              Don't actually run any recipe; just print them.\n"),
     N_("\
   -o FILE, --old-file=FILE, --assume-old=FILE\n\
                               Consider FILE to be very old and don't remake it.\n"),
     N_("\
   -p, --print-data-base       Print make's internal database.\n"),
     N_("\
-  -q, --question              Run no commands; exit status says if up to date.\n"),
+  -q, --question              Run no recipe; exit status says if up to date.\n"),
     N_("\
   -r, --no-builtin-rules      Disable the built-in implicit rules.\n"),
     N_("\
   -R, --no-builtin-variables  Disable the built-in variable settings.\n"),
     N_("\
-  -s, --silent, --quiet       Don't echo commands.\n"),
+  -s, --silent, --quiet       Don't echo recipes.\n"),
     N_("\
   -S, --no-keep-going, --stop\n\
                               Turns off -k.\n"),
@@ -362,60 +376,54 @@ static const char *const usage[] =
 static const struct command_switch switches[] =
   {
     { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 },
-    { '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 },
-    { CHAR_MAX+1, string, (char *) &db_flags, 1, 1, 0, "basic", 0, "debug" },
+    { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, "always-make" },
+    { 'C', filename, &directories, 0, 0, 0, 0, 0, "directory" },
+    { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 },
+    { CHAR_MAX+1, string, &db_flags, 1, 1, 0, "basic", 0, "debug" },
 #ifdef WINDOWS32
-    { 'D', flag, (char *) &suspend_flag, 1, 1, 0, 0, 0, "suspend-for-debug" },
-#endif
-    { 'e', flag, (char *) &env_overrides, 1, 1, 0, 0, 0,
-      "environment-overrides", },
-    { 'f', string, (char *) &makefiles, 0, 0, 0, 0, 0, "file" },
-    { 'h', flag, (char *) &print_usage_flag, 0, 0, 0, 0, 0, "help" },
-    { 'i', flag, (char *) &ignore_errors_flag, 1, 1, 0, 0, 0,
-      "ignore-errors" },
-    { 'I', string, (char *) &include_directories, 1, 1, 0, 0, 0,
+    { 'D', flag, &suspend_flag, 1, 1, 0, 0, 0, "suspend-for-debug" },
+#endif
+    { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", },
+    { 'f', filename, &makefiles, 0, 0, 0, 0, 0, "file" },
+    { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" },
+    { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" },
+    { 'I', filename, &include_directories, 1, 1, 0, 0, 0,
       "include-dir" },
-    { 'j', positive_int, (char *) &job_slots, 1, 1, 0, (char *) &inf_jobs,
-      (char *) &default_job_slots, "jobs" },
-    { CHAR_MAX+2, string, (char *) &jobserver_fds, 1, 1, 0, 0, 0,
-      "jobserver-fds" },
-    { 'k', flag, (char *) &keep_going_flag, 1, 1, 0, 0,
-      (char *) &default_keep_going_flag, "keep-going" },
+    { 'j', positive_int, &job_slots, 1, 1, 0, &inf_jobs, &default_job_slots,
+      "jobs" },
+    { CHAR_MAX+2, string, &jobserver_fds, 1, 1, 0, 0, 0, "jobserver-fds" },
+    { 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag,
+      "keep-going" },
 #ifndef NO_FLOAT
-    { 'l', floating, (char *) &max_load_average, 1, 1, 0,
-      (char *) &default_load_average, (char *) &default_load_average,
-      "load-average" },
+    { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average,
+      &default_load_average, "load-average" },
 #else
-    { 'l', positive_int, (char *) &max_load_average, 1, 1, 0,
-      (char *) &default_load_average, (char *) &default_load_average,
-      "load-average" },
+    { 'l', positive_int, &max_load_average, 1, 1, 0, &default_load_average,
+      &default_load_average, "load-average" },
 #endif
-    { 'L', flag, (char *) &check_symlink_flag, 1, 1, 0, 0, 0,
-      "check-symlink-times" },
+    { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, "check-symlink-times" },
     { 'm', ignore, 0, 0, 0, 0, 0, 0, 0 },
-    { 'n', flag, (char *) &just_print_flag, 1, 1, 1, 0, 0, "just-print" },
-    { 'o', string, (char *) &old_files, 0, 0, 0, 0, 0, "old-file" },
-    { 'p', flag, (char *) &print_data_base_flag, 1, 1, 0, 0, 0,
-      "print-data-base" },
-    { 'q', flag, (char *) &question_flag, 1, 1, 1, 0, 0, "question" },
-    { 'r', flag, (char *) &no_builtin_rules_flag, 1, 1, 0, 0, 0,
-      "no-builtin-rules" },
-    { 'R', flag, (char *) &no_builtin_variables_flag, 1, 1, 0, 0, 0,
+    { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, "just-print" },
+    { 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" },
+    { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" },
+    { 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" },
+    { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" },
+    { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0,
       "no-builtin-variables" },
-    { 's', flag, (char *) &silent_flag, 1, 1, 0, 0, 0, "silent" },
-    { 'S', flag_off, (char *) &keep_going_flag, 1, 1, 0, 0,
-      (char *) &default_keep_going_flag, "no-keep-going" },
-    { 't', flag, (char *) &touch_flag, 1, 1, 1, 0, 0, "touch" },
-    { 'v', flag, (char *) &print_version_flag, 1, 1, 0, 0, 0, "version" },
-    { 'w', flag, (char *) &print_directory_flag, 1, 1, 0, 0, 0,
-      "print-directory" },
-    { CHAR_MAX+3, flag, (char *) &inhibit_print_directory_flag, 1, 1, 0, 0, 0,
+    { 's', flag, &silent_flag, 1, 1, 0, 0, 0, "silent" },
+    { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag,
+      "no-keep-going" },
+    { 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" },
+    { 'v', flag, &print_version_flag, 1, 1, 0, 0, 0, "version" },
+    { CHAR_MAX+3, string, &verbosity_flags, 1, 1, 0, 0, 0,
+      "verbosity" },
+    { 'w', flag, &print_directory_flag, 1, 1, 0, 0, 0, "print-directory" },
+    { CHAR_MAX+4, flag, &inhibit_print_directory_flag, 1, 1, 0, 0, 0,
       "no-print-directory" },
-    { 'W', string, (char *) &new_files, 0, 0, 0, 0, 0, "what-if" },
-    { CHAR_MAX+4, flag, (char *) &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
+    { 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" },
+    { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
       "warn-undefined-variables" },
+    { CHAR_MAX+6, string, &eval_strings, 1, 0, 0, 0, 0, "eval" },
     { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
   };
 
@@ -464,15 +472,13 @@ char *starting_directory;
 
 unsigned int makelevel;
 
-/* First file defined in the makefile whose name does not
-   start with `.'.  This is the default to remake if the
-   command line does not specify.  */
-
-struct file *default_goal_file;
+/* Pointer to the value of the .DEFAULT_GOAL special variable.
+   The value will be the name of the goal to remake if the command line
+   does not override it.  It can be set by the makefile, or else it's
+   the first target defined in the makefile whose name does not start
+   with '.'.  */
 
-/* Pointer to the value of the .DEFAULT_GOAL special
-   variable.  */
-char ** default_goal_name;
+struct variable * default_goal_var;
 
 /* Pointer to structure for the file .DEFAULT
    whose commands are used for any file that has none of its own.
@@ -490,6 +496,12 @@ int posix_pedantic;
 
 int second_expansion;
 
+/* Nonzero if we have seen the '.ONESHELL' target.
+   This causes the entire recipe to be handed to SHELL
+   as a single string, potentially containing newlines.  */
+
+int one_shell;
+
 /* Nonzero if we have seen the `.NOTPARALLEL' target.
    This turns off parallel builds for this invocation of make.  */
 
@@ -511,11 +523,11 @@ int fatal_signal_mask;
 # endif
 #endif
 
-#if !defined HAVE_BSD_SIGNAL && !defined bsd_signal
+#if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal
 # if !defined HAVE_SIGACTION
 #  define bsd_signal signal
 # else
-typedef RETSIGTYPE (*bsd_signal_ret_t) ();
+typedef RETSIGTYPE (*bsd_signal_ret_t) (int);
 
 static bsd_signal_ret_t
 bsd_signal (int sig, bsd_signal_ret_t func)
@@ -542,17 +554,20 @@ initialize_global_hash_tables (void)
   hash_init_function_table ();
 }
 
-static struct file *
-enter_command_line_file (char *name)
+static const char *
+expand_command_line_file (char *name)
 {
+  const char *cp;
+  char *expanded = 0;
+
   if (name[0] == '\0')
     fatal (NILF, _("empty string invalid as file name"));
 
   if (name[0] == '~')
     {
-      char *expanded = tilde_expand (name);
+      expanded = tilde_expand (name);
       if (expanded != 0)
-       name = expanded;        /* Memory leak; I don't care.  */
+       name = expanded;
     }
 
   /* This is also done in parse_file_seq, so this is redundant
@@ -576,7 +591,12 @@ enter_command_line_file (char *name)
       name[2] = '\0';
     }
 
-  return enter_file (xstrdup (name));
+  cp = strcache_add (name);
+
+  if (expanded)
+    free (expanded);
+
+  return cp;
 }
 
 /* Toggle -d on receipt of SIGUSR1.  */
@@ -592,7 +612,7 @@ debug_signal_handler (int sig UNUSED)
 static void
 decode_debug_flags (void)
 {
-  char **pp;
+  const char **pp;
 
   if (debug_flag)
     db_level = DB_ALL;
@@ -667,24 +687,24 @@ handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
   if (! ISDB (DB_VERBOSE))
     {
       sprintf(errmsg,
-              _("%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"),
-              prg, exrec->ExceptionCode, (DWORD)exrec->ExceptionAddress);
+              _("%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"),
+              prg, exrec->ExceptionCode, exrec->ExceptionAddress);
       fprintf(stderr, errmsg);
       exit(255);
     }
 
   sprintf(errmsg,
-          _("\nUnhandled exception filter called from program %s\nExceptionCode = %lx\nExceptionFlags = %lx\nExceptionAddress = %lx\n"),
+          _("\nUnhandled exception filter called from program %s\nExceptionCode = %lx\nExceptionFlags = %lx\nExceptionAddress = 0x%p\n"),
           prg, exrec->ExceptionCode, exrec->ExceptionFlags,
-          (DWORD)exrec->ExceptionAddress);
+          exrec->ExceptionAddress);
 
   if (exrec->ExceptionCode == EXCEPTION_ACCESS_VIOLATION
       && exrec->NumberParameters >= 2)
     sprintf(&errmsg[strlen(errmsg)],
             (exrec->ExceptionInformation[0]
-             ? _("Access violation: write operation at address %lx\n")
-             : _("Access violation: read operation at address %lx\n")),
-            exrec->ExceptionInformation[1]);
+             ? _("Access violation: write operation at address 0x%p\n")
+             : _("Access violation: read operation at address 0x%p\n")),
+            (PVOID)exrec->ExceptionInformation[1]);
 
   /* turn this on if we want to put stuff in the event log too */
 #ifdef USE_EVENT_LOG
@@ -727,9 +747,10 @@ handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
  */
 
 int
-find_and_set_default_shell (char *token)
+find_and_set_default_shell (const char *token)
 {
   int sh_found = 0;
+  char *atoken = 0;
   char *search_token;
   char *tokend;
   PATH_VAR(sh_path);
@@ -738,8 +759,7 @@ find_and_set_default_shell (char *token)
   if (!token)
     search_token = default_shell;
   else
-    search_token = token;
-
+    atoken = search_token = xstrdup (token);
 
   /* If the user explicitly requests the DOS cmd shell, obey that request.
      However, make sure that's what they really want by requiring the value
@@ -749,28 +769,28 @@ find_and_set_default_shell (char *token)
   if (((tokend == search_token
         || (tokend > search_token
             && (tokend[-1] == '/' || tokend[-1] == '\\')))
-       && !strcmpi (tokend, "cmd"))
+       && !strcasecmp (tokend, "cmd"))
       || ((tokend - 4 == search_token
            || (tokend - 4 > search_token
                && (tokend[-5] == '/' || tokend[-5] == '\\')))
-          && !strcmpi (tokend - 4, "cmd.exe"))) {
+          && !strcasecmp (tokend - 4, "cmd.exe"))) {
     batch_mode_shell = 1;
     unixy_shell = 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));
+    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))) {
     /* no new information, path already set or known */
     sh_found = 1;
-  } else if (file_exists_p(search_token)) {
+  } else if (file_exists_p (search_token)) {
     /* search token path was found */
-    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));
+    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 {
     char *p;
@@ -781,44 +801,44 @@ find_and_set_default_shell (char *token)
       char *ep;
 
       p  = v->value;
-      ep = strchr(p, PATH_SEPARATOR_CHAR);
+      ep = strchr (p, PATH_SEPARATOR_CHAR);
 
       while (ep && *ep) {
         *ep = '\0';
 
-        if (dir_file_exists_p(p, search_token)) {
-          sprintf(sh_path, "%s/%s", p, search_token);
-          default_shell = xstrdup(w32ify(sh_path,0));
+        if (dir_file_exists_p (p, search_token)) {
+          sprintf (sh_path, "%s/%s", p, search_token);
+          default_shell = xstrdup (w32ify (sh_path, 0));
           sh_found = 1;
           *ep = PATH_SEPARATOR_CHAR;
 
           /* terminate loop */
-          p += strlen(p);
+          p += strlen (p);
         } else {
           *ep = PATH_SEPARATOR_CHAR;
            p = ++ep;
         }
 
-        ep = strchr(p, PATH_SEPARATOR_CHAR);
+        ep = strchr (p, PATH_SEPARATOR_CHAR);
       }
 
       /* be sure to check last element of Path */
-      if (p && *p && dir_file_exists_p(p, search_token)) {
-          sprintf(sh_path, "%s/%s", p, search_token);
-          default_shell = xstrdup(w32ify(sh_path,0));
+      if (p && *p && dir_file_exists_p (p, search_token)) {
+          sprintf (sh_path, "%s/%s", p, search_token);
+          default_shell = xstrdup (w32ify (sh_path, 0));
           sh_found = 1;
       }
 
       if (sh_found)
         DB (DB_VERBOSE,
-            (_("find_and_set_shell path search set default_shell = %s\n"),
+            (_("find_and_set_shell() path search set default_shell = %s\n"),
              default_shell));
     }
   }
 
   /* naive test */
   if (!unixy_shell && sh_found &&
-      (strstr(default_shell, "sh") || strstr(default_shell, "SH"))) {
+      (strstr (default_shell, "sh") || strstr (default_shell, "SH"))) {
     unixy_shell = 1;
     batch_mode_shell = 0;
   }
@@ -827,22 +847,24 @@ find_and_set_default_shell (char *token)
   batch_mode_shell = 1;
 #endif
 
+  if (atoken)
+    free (atoken);
+
   return (sh_found);
 }
 #endif  /* WINDOWS32 */
 
-#ifdef  __MSDOS__
-
+#ifdef __MSDOS__
 static void
 msdos_return_to_initial_directory (void)
 {
   if (directory_before_chdir)
     chdir (directory_before_chdir);
 }
-#endif
+#endif  /* __MSDOS__ */
 
-extern char *mktemp PARAMS ((char *template));
-extern int mkstemp PARAMS ((char *template));
+char *mktemp (char *template);
+int mkstemp (char *template);
 
 FILE *
 open_tmpfile(char **name, const char *template)
@@ -895,10 +917,7 @@ main (int argc, char **argv, char **envp)
 #endif
 {
   static char *stdin_nm = 0;
-  struct file *f;
-  int i;
   int makefile_status = MAKE_SUCCESS;
-  char **p;
   struct dep *read_makefiles;
   PATH_VAR (current_directory);
   unsigned int restarts = 0;
@@ -919,11 +938,15 @@ main (int argc, char **argv, char **envp)
     struct rlimit rlim;
 
     /* Set the stack limit huge so that alloca does not fail.  */
-    if (getrlimit (RLIMIT_STACK, &rlim) == 0)
+    if (getrlimit (RLIMIT_STACK, &rlim) == 0
+        && rlim.rlim_cur > 0 && rlim.rlim_cur < rlim.rlim_max)
       {
+        stack_limit = rlim;
         rlim.rlim_cur = rlim.rlim_max;
         setrlimit (RLIMIT_STACK, &rlim);
       }
+    else
+      stack_limit.rlim_cur = 0;
   }
 #endif
 
@@ -934,7 +957,6 @@ main (int argc, char **argv, char **envp)
   /* Needed for OS/2 */
   initialize_main(&argc, &argv);
 
-  default_goal_file = 0;
   reading_file = 0;
 
 #if defined (__MSDOS__) && !defined (_POSIX_SOURCE)
@@ -951,8 +973,10 @@ main (int argc, char **argv, char **envp)
 
   /* Set up gettext/internationalization support.  */
   setlocale (LC_ALL, "");
-  bindtextdomain (PACKAGE, LOCALEDIR);
-  textdomain (PACKAGE);
+  /* The cast to void shuts up compiler warnings on systems that
+     disable NLS.  */
+  (void)bindtextdomain (PACKAGE, LOCALEDIR);
+  (void)textdomain (PACKAGE);
 
 #ifdef POSIX
   sigemptyset (&fatal_signal_set);
@@ -962,7 +986,7 @@ main (int argc, char **argv, char **envp)
   fatal_signal_mask = 0;
 #define        ADD_SIG(sig)    fatal_signal_mask |= sigmask (sig)
 #else
-#define        ADD_SIG(sig)
+#define        ADD_SIG(sig)    (void)sig      /* Needed to avoid warnings in MSVC.  */
 #endif
 #endif
 
@@ -1021,7 +1045,7 @@ main (int argc, char **argv, char **envp)
   setvbuf (stdout, _IOLBF, xmalloc (BUFSIZ), BUFSIZ);
 # else /* setvbuf not reversed.  */
   /* Some buggy systems lose if we pass 0 instead of allocating ourselves.  */
-  setvbuf (stdout, (char *) 0, _IOLBF, BUFSIZ);
+  setvbuf (stdout, 0, _IOLBF, BUFSIZ);
 # endif        /* setvbuf reversed.  */
 #elif HAVE_SETLINEBUF
   setlinebuf (stdout);
@@ -1104,90 +1128,101 @@ main (int argc, char **argv, char **envp)
 #endif
 
   /* Initialize the special variables.  */
-  define_variable (".VARIABLES", 10, "", o_default, 0)->special = 1;
-  /* define_variable (".TARGETS", 8, "", o_default, 0)->special = 1; */
-
-  /* Set up .FEATURES */
-  define_variable (".FEATURES", 9,
-                   "target-specific order-only second-expansion else-if",
-                   o_default, 0);
+  define_variable_cname (".VARIABLES", "", o_default, 0)->special = 1;
+  /* define_variable_cname (".TARGETS", "", o_default, 0)->special = 1; */
+  define_variable_cname (".RECIPEPREFIX", "", o_default, 0)->special = 1;
+  define_variable_cname (".SHELLFLAGS", "-c", o_default, 0);
+
+  /* Set up .FEATURES
+     We must do this in multiple calls because define_variable_cname() is
+     a macro and some compilers (MSVC) don't like conditionals in macros.  */
+  {
+    const char *features = "target-specific order-only second-expansion"
+                           " else-if shortest-stem undefine"
 #ifndef NO_ARCHIVES
-  do_variable_definition (NILF, ".FEATURES", "archives",
-                          o_default, f_append, 0);
+                           " archives"
 #endif
 #ifdef MAKE_JOBSERVER
-  do_variable_definition (NILF, ".FEATURES", "jobserver",
-                          o_default, f_append, 0);
+                           " jobserver"
 #endif
 #ifdef MAKE_SYMLINKS
-  do_variable_definition (NILF, ".FEATURES", "check-symlink",
-                          o_default, f_append, 0);
+                           " check-symlink"
 #endif
+                           ;
+
+    define_variable_cname (".FEATURES", features, o_default, 0);
+  }
 
   /* Read in variables from the environment.  It is important that this be
      done before $(MAKE) is figured out so its definitions will not be
      from the environment.  */
 
 #ifndef _AMIGA
-  for (i = 0; envp[i] != 0; ++i)
-    {
-      int do_not_define = 0;
-      char *ep = envp[i];
+  {
+    unsigned int i;
 
-      while (*ep != '\0' && *ep != '=')
-        ++ep;
+    for (i = 0; envp[i] != 0; ++i)
+      {
+        int do_not_define = 0;
+        char *ep = envp[i];
+
+        while (*ep != '\0' && *ep != '=')
+          ++ep;
 #ifdef WINDOWS32
-      if (!unix_path && strneq(envp[i], "PATH=", 5))
-        unix_path = ep+1;
-      else if (!strnicmp(envp[i], "Path=", 5)) {
-        do_not_define = 1; /* it gets defined after loop exits */
-        if (!windows32_path)
-          windows32_path = ep+1;
-      }
+        if (!unix_path && strneq(envp[i], "PATH=", 5))
+          unix_path = ep+1;
+        else if (!strnicmp(envp[i], "Path=", 5)) {
+          do_not_define = 1; /* it gets defined after loop exits */
+          if (!windows32_path)
+            windows32_path = ep+1;
+        }
 #endif
-      /* The result of pointer arithmetic is cast to unsigned int for
-        machines where ptrdiff_t is a different size that doesn't widen
-        the same.  */
-      if (!do_not_define)
-        {
-          struct variable *v;
-
-          v = define_variable (envp[i], (unsigned int) (ep - envp[i]),
-                               ep + 1, o_env, 1);
-          /* Force exportation of every variable culled from the environment.
-             We used to rely on target_environment's v_default code to do this.
-             But that does not work for the case where an environment variable
-             is redefined in a makefile with `override'; it should then still
-             be exported, because it was originally in the environment.  */
-          v->export = v_export;
-
-          /* Another wrinkle is that POSIX says the value of SHELL set in the
-             makefile won't change the value of SHELL given to subprocesses  */
-          if (streq (v->name, "SHELL"))
-            {
+        /* The result of pointer arithmetic is cast to unsigned int for
+           machines where ptrdiff_t is a different size that doesn't widen
+           the same.  */
+        if (!do_not_define)
+          {
+            struct variable *v;
+
+            v = define_variable (envp[i], (unsigned int) (ep - envp[i]),
+                                 ep + 1, o_env, 1);
+            /* Force exportation of every variable culled from the
+               environment.  We used to rely on target_environment's
+               v_default code to do this.  But that does not work for the
+               case where an environment variable is redefined in a makefile
+               with `override'; it should then still be exported, because it
+               was originally in the environment.  */
+            v->export = v_export;
+
+            /* Another wrinkle is that POSIX says the value of SHELL set in
+               the makefile won't change the value of SHELL given to
+               subprocesses.  */
+            if (streq (v->name, "SHELL"))
+              {
 #ifndef __MSDOS__
-              v->export = v_noexport;
+                v->export = v_noexport;
 #endif
-              shell_var.name = "SHELL";
-              shell_var.value = xstrdup (ep + 1);
-            }
+                shell_var.name = "SHELL";
+                shell_var.length = 5;
+                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);
-            }
-        }
-    }
+            /* 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);
+              }
+          }
+      }
+  }
 #ifdef WINDOWS32
     /* If we didn't find a correctly spelled PATH we define PATH as
      * either the first mispelled value or an empty string
      */
     if (!unix_path)
-      define_variable("PATH", 4,
-                      windows32_path ? windows32_path : "",
-                      o_env, 1)->export = v_export;
+      define_variable_cname ("PATH", windows32_path ? windows32_path : "",
+                             o_env, 1)->export = v_export;
 #endif
 #else /* For Amiga, read the ENV: device, ignoring all dirs */
     {
@@ -1225,11 +1260,13 @@ main (int argc, char **argv, char **envp)
   decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
 #if 0
   /* People write things like:
-       MFLAGS="CC=gcc -pipe" "CFLAGS=-g"
+        MFLAGS="CC=gcc -pipe" "CFLAGS=-g"
      and we set the -p, -i and -e switches.  Doesn't seem quite right.  */
   decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
 #endif
+
   decode_switches (argc, argv, 0);
+
 #ifdef WINDOWS32
   if (suspend_flag) {
         fprintf(stderr, "%s (pid = %ld)\n", argv[0], GetCurrentProcessId());
@@ -1288,24 +1325,29 @@ main (int argc, char **argv, char **envp)
   if (current_directory[0] != '\0'
       && argv[0] != 0
       && (argv[0][0] != '/' && (argv[0][0] == '\0' || argv[0][1] != ':'))
-#ifdef __EMX__
+# ifdef __EMX__
       /* do not prepend cwd if argv[0] contains no '/', e.g. "make" */
       && (strchr (argv[0], '/') != 0 || strchr (argv[0], '\\') != 0)
 # endif
       )
-    argv[0] = concat (current_directory, "/", argv[0]);
+    argv[0] = xstrdup (concat (3, current_directory, "/", argv[0]));
 #else  /* !__MSDOS__ */
   if (current_directory[0] != '\0'
-      && argv[0] != 0 && argv[0][0] != '/' && strchr (argv[0], '/') != 0)
-    argv[0] = concat (current_directory, "/", argv[0]);
+      && argv[0] != 0 && argv[0][0] != '/' && strchr (argv[0], '/') != 0
+#ifdef HAVE_DOS_PATHS
+      && (argv[0][0] != '\\' && (!argv[0][0] || argv[0][1] != ':'))
+      && strchr (argv[0], '\\') != 0
+#endif
+      )
+    argv[0] = xstrdup (concat (3, current_directory, "/", argv[0]));
 #endif /* !__MSDOS__ */
 #endif /* WINDOWS32 */
 #endif
 
   /* The extra indirection through $(MAKE_COMMAND) is done
      for hysterical raisins.  */
-  (void) define_variable ("MAKE_COMMAND", 12, argv[0], o_default, 0);
-  (void) define_variable ("MAKE", 4, "$(MAKE_COMMAND)", o_default, 1);
+  define_variable_cname ("MAKE_COMMAND", argv[0], o_default, 0);
+  define_variable_cname ("MAKE", "$(MAKE_COMMAND)", o_default, 1);
 
   if (command_variables != 0)
     {
@@ -1328,7 +1370,7 @@ main (int argc, char **argv, char **envp)
        }
 
       /* Now allocate a buffer big enough and fill it.  */
-      p = value = (char *) alloca (len);
+      p = value = alloca (len);
       for (cv = command_variables; cv != 0; cv = cv->next)
        {
          v = cv->variable;
@@ -1343,8 +1385,7 @@ main (int argc, char **argv, char **envp)
 
       /* Define an unchangeable variable with a name that no POSIX.2
         makefile could validly use for its own variable.  */
-      (void) define_variable ("-*-command-variables-*-", 23,
-                             value, o_automatic, 0);
+      define_variable_cname ("-*-command-variables-*-", value, o_automatic, 0);
 
       /* Define the variable; this will not override any user definition.
          Normally a reference to this variable is written into the value of
@@ -1352,37 +1393,31 @@ main (int argc, char **argv, char **envp)
          exported value of MAKEFLAGS.  In POSIX-pedantic mode, we cannot
          allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so
          a reference to this hidden variable is written instead. */
-      (void) define_variable ("MAKEOVERRIDES", 13,
-                             "${-*-command-variables-*-}", o_env, 1);
+      define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}",
+                             o_env, 1);
     }
 
   /* If there were -C flags, move ourselves about.  */
   if (directories != 0)
-    for (i = 0; directories->list[i] != 0; ++i)
-      {
-       char *dir = directories->list[i];
-        char *expanded = 0;
-       if (dir[0] == '~')
-         {
-            expanded = tilde_expand (dir);
-           if (expanded != 0)
-             dir = expanded;
-         }
-#ifdef WINDOWS32
-        /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/'
-           But allow -C/ just in case someone wants that.  */
+    {
+      unsigned int i;
+      for (i = 0; directories->list[i] != 0; ++i)
         {
-          char *p = dir + strlen (dir) - 1;
-          while (p > dir && (p[0] == '/' || p[0] == '\\'))
-            --p;
-          p[1] = '\0';
-        }
+          const char *dir = directories->list[i];
+#ifdef WINDOWS32
+          /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/'
+             But allow -C/ just in case someone wants that.  */
+          {
+            char *p = (char *)dir + strlen (dir) - 1;
+            while (p > dir && (p[0] == '/' || p[0] == '\\'))
+              --p;
+            p[1] = '\0';
+          }
 #endif
-       if (chdir (dir) < 0)
-         pfatal_with_name (dir);
-       if (expanded)
-         free (expanded);
-      }
+          if (chdir (dir) < 0)
+            pfatal_with_name (dir);
+        }
+    }
 
 #ifdef WINDOWS32
   /*
@@ -1420,8 +1455,8 @@ main (int argc, char **argv, char **envp)
 
   /* Construct the list of include directories to search.  */
 
-  construct_include_path (include_directories == 0 ? (char **) 0
-                         : include_directories->list);
+  construct_include_path (include_directories == 0
+                          ? 0 : include_directories->list);
 
   /* Figure out where we are now, after chdir'ing.  */
   if (directories == 0)
@@ -1446,13 +1481,13 @@ main (int argc, char **argv, char **envp)
        starting_directory = current_directory;
     }
 
-  (void) define_variable ("CURDIR", 6, current_directory, o_file, 0);
+  define_variable_cname ("CURDIR", current_directory, o_file, 0);
 
   /* Read any stdin makefiles into temporary files.  */
 
   if (makefiles != 0)
     {
-      register unsigned int i;
+      unsigned int i;
       for (i = 0; i < makefiles->idx; ++i)
        if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0')
          {
@@ -1485,8 +1520,7 @@ main (int argc, char **argv, char **envp)
                )
              tmpdir = DEFAULT_TMPDIR;
 
-            template = (char *) alloca (strlen (tmpdir)
-                                        + sizeof (DEFAULT_TMPFILE) + 1);
+            template = alloca (strlen (tmpdir) + sizeof (DEFAULT_TMPFILE) + 1);
            strcpy (template, tmpdir);
 
 #ifdef HAVE_DOS_PATHS
@@ -1510,21 +1544,23 @@ main (int argc, char **argv, char **envp)
                if (n > 0 && fwrite (buf, 1, n, outfile) != n)
                  pfatal_with_name (_("fwrite (temporary file)"));
              }
-           (void) fclose (outfile);
+           fclose (outfile);
 
            /* Replace the name that read_all_makefiles will
               see with the name of the temporary file.  */
-            makefiles->list[i] = xstrdup (stdin_nm);
+            makefiles->list[i] = strcache_add (stdin_nm);
 
            /* Make sure the temporary file will not be remade.  */
-           f = enter_file (stdin_nm);
-           f->updated = 1;
-           f->update_status = 0;
-           f->command_state = cs_finished;
-           /* Can't be intermediate, or it'll be removed too early for
-               make re-exec.  */
-           f->intermediate = 0;
-           f->dontcare = 0;
+            {
+              struct file *f = enter_file (strcache_add (stdin_nm));
+              f->updated = 1;
+              f->update_status = 0;
+              f->command_state = cs_finished;
+              /* Can't be intermediate, or it'll be removed too early for
+                 make re-exec.  */
+              f->intermediate = 0;
+              f->dontcare = 0;
+            }
          }
     }
 
@@ -1543,7 +1579,7 @@ main (int argc, char **argv, char **envp)
 
      If none of these are true, we don't need a signal handler at all.  */
   {
-    extern RETSIGTYPE child_handler PARAMS ((int sig));
+    RETSIGTYPE child_handler (int sig);
 # if defined SIGCHLD
     bsd_signal (SIGCHLD, child_handler);
 # endif
@@ -1583,17 +1619,44 @@ main (int argc, char **argv, char **envp)
   /* Define the default variables.  */
   define_default_variables ();
 
-  default_file = enter_file (".DEFAULT");
+  default_file = enter_file (strcache_add (".DEFAULT"));
 
-  {
-    struct variable *v = define_variable (".DEFAULT_GOAL", 13, "", o_file, 0);
-    default_goal_name = &v->value;
-  }
+  default_goal_var = define_variable_cname (".DEFAULT_GOAL", "", o_file, 0);
+
+  /* Evaluate all strings provided with --eval.
+     Also set up the $(-*-eval-flags-*-) variable.  */
+
+  if (eval_strings)
+    {
+      char *p, *value;
+      unsigned int i;
+      unsigned int len = sizeof ("--eval=") * eval_strings->idx;
+
+      for (i = 0; i < eval_strings->idx; ++i)
+        {
+          p = xstrdup (eval_strings->list[i]);
+          len += 2 * strlen (p);
+          eval_buffer (p);
+          free (p);
+        }
+
+      p = value = alloca (len);
+      for (i = 0; i < eval_strings->idx; ++i)
+        {
+          strcpy (p, "--eval=");
+          p += strlen (p);
+          p = quote_for_env (p, eval_strings->list[i]);
+          *(p++) = ' ';
+        }
+      p[-1] = '\0';
+
+      define_variable_cname ("-*-eval-flags-*-", value, o_automatic, 0);
+    }
 
   /* Read all the makefiles.  */
 
   read_makefiles
-    = read_all_makefiles (makefiles == 0 ? (char **) 0 : makefiles->list);
+    = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list);
 
 #ifdef WINDOWS32
   /* look one last time after reading all Makefiles */
@@ -1647,63 +1710,67 @@ main (int argc, char **argv, char **envp)
   /* If the jobserver-fds option is seen, make sure that -j is reasonable.  */
 
   if (jobserver_fds)
-  {
-    char *cp;
-    unsigned int ui;
+    {
+      const char *cp;
+      unsigned int ui;
 
-    for (ui=1; ui < jobserver_fds->idx; ++ui)
-      if (!streq (jobserver_fds->list[0], jobserver_fds->list[ui]))
-        fatal (NILF, _("internal error: multiple --jobserver-fds options"));
+      for (ui=1; ui < jobserver_fds->idx; ++ui)
+        if (!streq (jobserver_fds->list[0], jobserver_fds->list[ui]))
+          fatal (NILF, _("internal error: multiple --jobserver-fds options"));
 
-    /* Now parse the fds string and make sure it has the proper format.  */
+      /* Now parse the fds string and make sure it has the proper format.  */
 
-    cp = jobserver_fds->list[0];
+      cp = jobserver_fds->list[0];
 
-    if (sscanf (cp, "%d,%d", &job_fds[0], &job_fds[1]) != 2)
-      fatal (NILF,
-             _("internal error: invalid --jobserver-fds string `%s'"), cp);
+      if (sscanf (cp, "%d,%d", &job_fds[0], &job_fds[1]) != 2)
+        fatal (NILF,
+               _("internal error: invalid --jobserver-fds string `%s'"), cp);
 
-    /* The combination of a pipe + !job_slots means we're using the
-       jobserver.  If !job_slots and we don't have a pipe, we can start
-       infinite jobs.  If we see both a pipe and job_slots >0 that means the
-       user set -j explicitly.  This is broken; in this case obey the user
-       (ignore the jobserver pipe for this make) but print a message.  */
+      DB (DB_JOBS,
+          (_("Jobserver client (fds %d,%d)\n"), job_fds[0], job_fds[1]));
 
-    if (job_slots > 0)
-      error (NILF,
-             _("warning: -jN forced in submake: disabling jobserver mode."));
+      /* The combination of a pipe + !job_slots means we're using the
+         jobserver.  If !job_slots and we don't have a pipe, we can start
+         infinite jobs.  If we see both a pipe and job_slots >0 that means the
+         user set -j explicitly.  This is broken; in this case obey the user
+         (ignore the jobserver pipe for this make) but print a message.  */
 
-    /* Create a duplicate pipe, that will be closed in the SIGCHLD
-       handler.  If this fails with EBADF, the parent has closed the pipe
-       on us because it didn't think we were a submake.  If so, print a
-       warning then default to -j1.  */
+      if (job_slots > 0)
+        error (NILF,
+               _("warning: -jN forced in submake: disabling jobserver mode."));
 
-    else if ((job_rfd = dup (job_fds[0])) < 0)
-      {
-        if (errno != EBADF)
-          pfatal_with_name (_("dup jobserver"));
+      /* Create a duplicate pipe, that will be closed in the SIGCHLD
+         handler.  If this fails with EBADF, the parent has closed the pipe
+         on us because it didn't think we were a submake.  If so, print a
+         warning then default to -j1.  */
 
-        error (NILF,
-               _("warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."));
-        job_slots = 1;
-      }
+      else if ((job_rfd = dup (job_fds[0])) < 0)
+        {
+          if (errno != EBADF)
+            pfatal_with_name (_("dup jobserver"));
 
-    if (job_slots > 0)
-      {
-        close (job_fds[0]);
-        close (job_fds[1]);
-        job_fds[0] = job_fds[1] = -1;
-        free (jobserver_fds->list);
-        free (jobserver_fds);
-        jobserver_fds = 0;
-      }
-  }
+          error (NILF,
+                 _("warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."));
+          job_slots = 1;
+        }
+
+      if (job_slots > 0)
+        {
+          close (job_fds[0]);
+          close (job_fds[1]);
+          job_fds[0] = job_fds[1] = -1;
+          free (jobserver_fds->list);
+          free (jobserver_fds);
+          jobserver_fds = 0;
+        }
+    }
 
   /* If we have >1 slot but no jobserver-fds, then we're a top-level make.
      Set up the pipe and install the fds option for our children.  */
 
   if (job_slots > 1)
     {
+      char *cp;
       char c = '+';
 
       if (pipe (job_fds) < 0 || (job_rfd = dup (job_fds[0])) < 0)
@@ -1727,12 +1794,13 @@ main (int argc, char **argv, char **envp)
 
       /* Fill in the jobserver_fds struct for our children.  */
 
+      cp = xmalloc ((sizeof ("1024")*2)+1);
+      sprintf (cp, "%d,%d", job_fds[0], job_fds[1]);
+
       jobserver_fds = (struct stringlist *)
                         xmalloc (sizeof (struct stringlist));
-      jobserver_fds->list = (char **) xmalloc (sizeof (char *));
-      jobserver_fds->list[0] = xmalloc ((sizeof ("1024")*2)+1);
-
-      sprintf (jobserver_fds->list[0], "%d,%d", job_fds[0], job_fds[1]);
+      jobserver_fds->list = xmalloc (sizeof (char *));
+      jobserver_fds->list[0] = cp;
       jobserver_fds->idx = 1;
       jobserver_fds->max = 1;
     }
@@ -1782,20 +1850,24 @@ main (int argc, char **argv, char **envp)
      as possible into the future).  If restarts is set we'll do -W later.  */
 
   if (old_files != 0)
-    for (p = old_files->list; *p != 0; ++p)
-      {
-       f = enter_command_line_file (*p);
-       f->last_mtime = f->mtime_before_update = OLD_MTIME;
-       f->updated = 1;
-       f->update_status = 0;
-       f->command_state = cs_finished;
-      }
+    {
+      const char **p;
+      for (p = old_files->list; *p != 0; ++p)
+        {
+          struct file *f = enter_file (*p);
+          f->last_mtime = f->mtime_before_update = OLD_MTIME;
+          f->updated = 1;
+          f->update_status = 0;
+          f->command_state = cs_finished;
+        }
+    }
 
   if (!restarts && new_files != 0)
     {
+      const char **p;
       for (p = new_files->list; *p != 0; ++p)
        {
-         f = enter_command_line_file (*p);
+         struct file *f = enter_file (*p);
          f->last_mtime = f->mtime_before_update = NEW_MTIME;
        }
     }
@@ -1809,8 +1881,8 @@ main (int argc, char **argv, char **envp)
 
       FILE_TIMESTAMP *makefile_mtimes = 0;
       unsigned int mm_idx = 0;
-      char **nargv = argv;
-      int nargc = argc;
+      char **nargv;
+      int nargc;
       int orig_db_level = db_level;
       int status;
 
@@ -1827,7 +1899,7 @@ main (int argc, char **argv, char **envp)
        d = read_makefiles;
        while (d != 0)
          {
-           register struct file *f = d->file;
+           struct file *f = d->file;
            if (f->double_colon)
              for (f = f->double_colon; f != NULL; f = f->prev)
                {
@@ -1860,9 +1932,9 @@ main (int argc, char **argv, char **envp)
                }
            if (f == NULL || !f->double_colon)
              {
-                makefile_mtimes = (FILE_TIMESTAMP *)
-                  xrealloc ((char *) makefile_mtimes,
-                            (mm_idx + 1) * sizeof (FILE_TIMESTAMP));
+                makefile_mtimes = xrealloc (makefile_mtimes,
+                                            (mm_idx+1)
+                                            * sizeof (FILE_TIMESTAMP));
                makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file);
                last = d;
                d = d->next;
@@ -1979,45 +2051,51 @@ main (int argc, char **argv, char **envp)
              for (i = 1; i < argc; ++i)
                if (strneq (argv[i], "-f", 2)) /* XXX */
                  {
-                   char *p = &argv[i][2];
-                   if (*p == '\0')
-                     argv[++i] = makefiles->list[j];
+                   if (argv[i][2] == '\0')
+                      /* This cast is OK since we never modify argv.  */
+                     argv[++i] = (char *) makefiles->list[j];
                    else
-                     argv[i] = concat ("-f", makefiles->list[j], "");
+                     argv[i] = xstrdup (concat (2, "-f", makefiles->list[j]));
                    ++j;
                  }
            }
 
           /* Add -o option for the stdin temporary file, if necessary.  */
+          nargc = argc;
           if (stdin_nm)
             {
-              nargv = (char **) xmalloc ((nargc + 2) * sizeof (char *));
-              bcopy ((char *) argv, (char *) nargv, argc * sizeof (char *));
-              nargv[nargc++] = concat ("-o", stdin_nm, "");
+              nargv = xmalloc ((nargc + 2) * sizeof (char *));
+              memcpy (nargv, argv, argc * sizeof (char *));
+              nargv[nargc++] = xstrdup (concat (2, "-o", stdin_nm));
               nargv[nargc] = 0;
             }
+          else
+            nargv = argv;
 
          if (directories != 0 && directories->idx > 0)
            {
-             char bad;
+             int bad = 1;
              if (directory_before_chdir != 0)
                {
                  if (chdir (directory_before_chdir) < 0)
-                   {
                      perror_with_name ("chdir", "");
-                     bad = 1;
-                   }
                  else
                    bad = 0;
                }
-             else
-               bad = 1;
              if (bad)
                fatal (NILF, _("Couldn't change back to original directory."));
            }
 
           ++restarts;
 
+          /* Reset makeflags in case they were changed.  */
+          {
+            const char *pv = define_makeflags (1, 1);
+            char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1);
+            sprintf (p, "MAKEFLAGS=%s", pv);
+            putenv (p);
+          }
+
          if (ISDB (DB_BASIC))
            {
              char **p;
@@ -2028,28 +2106,24 @@ main (int argc, char **argv, char **envp)
            }
 
 #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;
-                }
-            }
+          {
+            char **p;
+            for (p = environ; *p != 0; ++p)
+              {
+                if (strneq (*p, MAKELEVEL_NAME, MAKELEVEL_LENGTH)
+                    && (*p)[MAKELEVEL_LENGTH] == '=')
+                  {
+                    *p = alloca (40);
+                    sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel);
+                  }
+                if (strneq (*p, "MAKE_RESTARTS=", 14))
+                  {
+                    *p = alloca (40);
+                    sprintf (*p, "MAKE_RESTARTS=%u", restarts);
+                    restarts = 0;
+                  }
+              }
+          }
 #else /* AMIGA */
          {
            char buffer[256];
@@ -2115,7 +2189,7 @@ main (int argc, char **argv, char **envp)
 
       /* Free the makefile mtimes (if we allocated any).  */
       if (makefile_mtimes)
-        free ((char *) makefile_mtimes);
+        free (makefile_mtimes);
     }
 
   /* Set up `MAKEFLAGS' again for the normal targets.  */
@@ -2127,9 +2201,10 @@ main (int argc, char **argv, char **envp)
   /* If restarts is set we haven't set up -W files yet, so do that now.  */
   if (restarts && new_files != 0)
     {
+      const char **p;
       for (p = new_files->list; *p != 0; ++p)
        {
-         f = enter_command_line_file (*p);
+         struct file *f = enter_file (*p);
          f->last_mtime = f->mtime_before_update = NEW_MTIME;
        }
     }
@@ -2139,61 +2214,70 @@ main (int argc, char **argv, char **envp)
   if (stdin_nm && unlink (stdin_nm) < 0 && errno != ENOENT)
     perror_with_name (_("unlink (temporary file): "), stdin_nm);
 
-  {
-    int status;
+  /* If there were no command-line goals, use the default.  */
+  if (goals == 0)
+    {
+      char *p;
 
-    /* If there were no command-line goals, use the default.  */
-    if (goals == 0)
-      {
-        if (**default_goal_name != '\0')
-          {
-            if (default_goal_file == 0 ||
-                strcmp (*default_goal_name, default_goal_file->name) != 0)
-              {
-                default_goal_file = lookup_file (*default_goal_name);
+      if (default_goal_var->recursive)
+        p = variable_expand (default_goal_var->value);
+      else
+        {
+          p = variable_buffer_output (variable_buffer, default_goal_var->value,
+                                      strlen (default_goal_var->value));
+          *p = '\0';
+          p = variable_buffer;
+        }
 
-                /* In case user set .DEFAULT_GOAL to a non-existent target
-                   name let's just enter this name into the table and let
-                   the standard logic sort it out. */
-                if (default_goal_file == 0)
-                  {
-                    struct nameseq *ns;
-                    char *p = *default_goal_name;
+      if (*p != '\0')
+        {
+          struct file *f = lookup_file (p);
 
-                    ns = multi_glob (
-                      parse_file_seq (&p, '\0', sizeof (struct nameseq), 1),
-                      sizeof (struct nameseq));
+          /* If .DEFAULT_GOAL is a non-existent target, enter it into the
+             table and let the standard logic sort it out. */
+          if (f == 0)
+            {
+              struct nameseq *ns;
 
-                    /* .DEFAULT_GOAL should contain one target. */
-                    if (ns->next != 0)
-                      fatal (NILF, _(".DEFAULT_GOAL contains more than one target"));
+              ns = PARSE_FILE_SEQ (&p, struct nameseq, '\0', NULL, 0);
+              if (ns)
+                {
+                  /* .DEFAULT_GOAL should contain one target. */
+                  if (ns->next != 0)
+                    fatal (NILF, _(".DEFAULT_GOAL contains more than one target"));
 
-                    default_goal_file = enter_file (ns->name);
+                  f = enter_file (strcache_add (ns->name));
 
-                    ns->name = 0; /* It was reused by enter_file(). */
-                    free_ns_chain (ns);
-                  }
-              }
+                  ns->name = 0; /* It was reused by enter_file(). */
+                  free_ns_chain (ns);
+                }
+            }
 
-            goals = alloc_dep ();
-            goals->file = default_goal_file;
-          }
-      }
-    else
-      lastgoal->next = 0;
+          if (f)
+            {
+              goals = alloc_dep ();
+              goals->file = f;
+            }
+        }
+    }
+  else
+    lastgoal->next = 0;
 
 
-    if (!goals)
-      {
-        if (read_makefiles == 0)
-          fatal (NILF, _("No targets specified and no makefile found"));
+  if (!goals)
+    {
+      if (read_makefiles == 0)
+        fatal (NILF, _("No targets specified and no makefile found"));
 
-        fatal (NILF, _("No targets"));
-      }
+      fatal (NILF, _("No targets"));
+    }
+
+  /* Update the goals.  */
 
-    /* Update the goals.  */
+  DB (DB_BASIC, (_("Updating goal targets....\n")));
 
-    DB (DB_BASIC, (_("Updating goal targets....\n")));
+  {
+    int status;
 
     switch (update_goal_chain (goals))
     {
@@ -2271,6 +2355,7 @@ init_switches (void)
          break;
 
        case string:
+        case filename:
        case positive_int:
        case floating:
          if (short_option (switches[i].c))
@@ -2315,7 +2400,7 @@ handle_non_switch_argument (char *arg, int env)
           break;
 
       if (! cv) {
-        cv = (struct command_variable *) xmalloc (sizeof (*cv));
+        cv = xmalloc (sizeof (*cv));
         cv->variable = v;
         cv->next = command_variables;
         command_variables = cv;
@@ -2326,7 +2411,7 @@ handle_non_switch_argument (char *arg, int env)
       /* Not an option or variable definition; it must be a goal
         target!  Enter it as a file and add it to the dep chain of
         goals.  */
-      struct file *f = enter_command_line_file (arg);
+      struct file *f = enter_file (strcache_add (expand_command_line_file (arg)));
       f->cmd_target = 1;
 
       if (goals == 0)
@@ -2344,25 +2429,27 @@ handle_non_switch_argument (char *arg, int env)
 
       {
         /* Add this target name to the MAKECMDGOALS variable. */
-        struct variable *v;
-        char *value;
+        struct variable *gv;
+        const char *value;
 
-        v = lookup_variable (STRING_SIZE_TUPLE ("MAKECMDGOALS"));
-        if (v == 0)
+        gv = lookup_variable (STRING_SIZE_TUPLE ("MAKECMDGOALS"));
+        if (gv == 0)
           value = f->name;
         else
           {
             /* Paste the old and new values together */
             unsigned int oldlen, newlen;
+            char *vp;
 
-            oldlen = strlen (v->value);
+            oldlen = strlen (gv->value);
             newlen = strlen (f->name);
-            value = (char *) alloca (oldlen + 1 + newlen + 1);
-            bcopy (v->value, value, oldlen);
-            value[oldlen] = ' ';
-            bcopy (f->name, &value[oldlen + 1], newlen + 1);
+            vp = alloca (oldlen + 1 + newlen + 1);
+            memcpy (vp, gv->value, oldlen);
+            vp[oldlen] = ' ';
+            memcpy (&vp[oldlen + 1], f->name, newlen + 1);
+            value = vp;
           }
-        define_variable ("MAKECMDGOALS", 12, value, o_default, 0);
+        define_variable_cname ("MAKECMDGOALS", value, o_default, 0);
       }
     }
 }
@@ -2456,15 +2543,24 @@ decode_switches (int argc, char **argv, int env)
                  break;
 
                case string:
+               case filename:
                  if (!doit)
                    break;
 
                  if (optarg == 0)
-                   optarg = cs->noarg_value;
+                   optarg = xstrdup (cs->noarg_value);
                   else if (*optarg == '\0')
                     {
-                      error (NILF, _("the `-%c' option requires a non-empty string argument"),
-                             cs->c);
+                      char opt[2] = "c";
+                      const char *op = opt;
+
+                      if (short_option (cs->c))
+                        opt[0] = cs->c;
+                      else
+                        op = cs->long_name;
+
+                      error (NILF, _("the `%s%s' option requires a non-empty string argument"),
+                             short_option (cs->c) ? "-" : "--", op);
                       bad = 1;
                     }
 
@@ -2475,17 +2571,20 @@ decode_switches (int argc, char **argv, int env)
                        xmalloc (sizeof (struct stringlist));
                      sl->max = 5;
                      sl->idx = 0;
-                     sl->list = (char **) xmalloc (5 * sizeof (char *));
+                     sl->list = xmalloc (5 * sizeof (char *));
                      *(struct stringlist **) cs->value_ptr = sl;
                    }
                  else if (sl->idx == sl->max - 1)
                    {
                      sl->max += 5;
-                     sl->list = (char **)
-                       xrealloc ((char *) sl->list,
-                                 sl->max * sizeof (char *));
+                      /* MSVC erroneously warns without a cast here.  */
+                     sl->list = xrealloc ((void *)sl->list,
+                                           sl->max * sizeof (char *));
                    }
-                 sl->list[sl->idx++] = optarg;
+                  if (cs->type == filename)
+                    sl->list[sl->idx++] = expand_command_line_file (optarg);
+                  else
+                    sl->list[sl->idx++] = optarg;
                  sl->list[sl->idx] = 0;
                  break;
 
@@ -2570,7 +2669,7 @@ decode_switches (int argc, char **argv, int env)
 static void
 decode_env_switches (char *envar, unsigned int len)
 {
-  char *varref = (char *) alloca (2 + len + 2);
+  char *varref = alloca (2 + len + 2);
   char *value, *p;
   int argc;
   char **argv;
@@ -2578,7 +2677,7 @@ decode_env_switches (char *envar, unsigned int len)
   /* Get the variable's value.  */
   varref[0] = '$';
   varref[1] = '(';
-  bcopy (envar, &varref[2], len);
+  memcpy (&varref[2], envar, len);
   varref[2 + len] = ')';
   varref[2 + len + 1] = '\0';
   value = variable_expand (varref);
@@ -2590,12 +2689,12 @@ decode_env_switches (char *envar, unsigned int len)
     return;
 
   /* Allocate a vector that is definitely big enough.  */
-  argv = (char **) alloca ((1 + len + 1) * sizeof (char *));
+  argv = alloca ((1 + len + 1) * sizeof (char *));
 
   /* Allocate a buffer to copy the value into while we split it into words
      and unquote it.  We must use permanent storage for this because
      decode_switches may store pointers into the passed argument words.  */
-  p = (char *) xmalloc (2 * len);
+  p = xmalloc (2 * len);
 
   /* getopt will look at the arguments starting at ARGV[1].
      Prepend a spacer word.  */
@@ -2626,7 +2725,7 @@ decode_env_switches (char *envar, unsigned int len)
        definition.  Add a dash and pass it along to decode_switches.  We
        need permanent storage for this in case decode_switches saves
        pointers into the value.  */
-    argv[1] = concat ("-", argv[1], "");
+    argv[1] = xstrdup (concat (2, "-", argv[1]));
 
   /* Parse those words.  */
   decode_switches (argc, argv, 1);
@@ -2639,7 +2738,7 @@ decode_env_switches (char *envar, unsigned int len)
    Allocating space for OUT twice the length of IN is always sufficient.  */
 
 static char *
-quote_for_env (char *out, char *in)
+quote_for_env (char *out, const char *in)
 {
   while (*in != '\0')
     {
@@ -2657,12 +2756,13 @@ quote_for_env (char *out, char *in)
    command switches.  Include options with args if ALL is nonzero.
    Don't include options with the `no_makefile' flag set if MAKEFILE.  */
 
-static void
+static const char *
 define_makeflags (int all, int makefile)
 {
-  static const char ref[] = "$(MAKEOVERRIDES)";
-  static const char posixref[] = "$(-*-command-variables-*-)";
-  register const struct command_switch *cs;
+  const char ref[] = "$(MAKEOVERRIDES)";
+  const char posixref[] = "$(-*-command-variables-*-)";
+  const char evalref[] = "$(-*-eval-flags-*-)";
+  const struct command_switch *cs;
   char *flagstring;
   register char *p;
   unsigned int words;
@@ -2677,13 +2777,13 @@ define_makeflags (int all, int makefile)
     {
       struct flag *next;
       const struct command_switch *cs;
-      char *arg;
+      const char *arg;
     };
   struct flag *flags = 0;
   unsigned int flagslen = 0;
 #define        ADD_FLAG(ARG, LEN) \
   do {                                                                       \
-    struct flag *new = (struct flag *) alloca (sizeof (struct flag));        \
+    struct flag *new = alloca (sizeof (struct flag));                        \
     new->cs = cs;                                                            \
     new->arg = (ARG);                                                        \
     new->next = flags;                                                       \
@@ -2691,7 +2791,8 @@ define_makeflags (int all, int makefile)
     if (new->arg == 0)                                                       \
       ++flagslen;              /* Just a single flag letter.  */             \
     else                                                                     \
-      flagslen += 1 + 1 + 1 + 1 + 3 * (LEN); /* " -x foo" */                 \
+      /* " -x foo", plus space to expand "foo".  */                          \
+      flagslen += 1 + 1 + 1 + 1 + (3 * (LEN));                               \
     if (!short_option (cs->c))                                               \
       /* This switch has no single-letter version, so we use the long.  */    \
       flagslen += 2 + strlen (cs->long_name);                                \
@@ -2701,9 +2802,6 @@ define_makeflags (int all, int makefile)
     if (cs->toenv && (!makefile || !cs->no_makefile))
       switch (cs->type)
        {
-       default:
-         abort ();
-
        case ignore:
          break;
 
@@ -2731,7 +2829,7 @@ define_makeflags (int all, int makefile)
                ADD_FLAG ("1", 1);
              else
                {
-                 char *buf = (char *) alloca (30);
+                 char *buf = alloca (30);
                  sprintf (buf, "%u", *(unsigned int *) cs->value_ptr);
                  ADD_FLAG (buf, strlen (buf));
                }
@@ -2752,7 +2850,7 @@ define_makeflags (int all, int makefile)
                ADD_FLAG ("", 0); /* Optional value omitted; see below.  */
              else
                {
-                 char *buf = (char *) alloca (100);
+                 char *buf = alloca (100);
                  sprintf (buf, "%g", *(double *) cs->value_ptr);
                  ADD_FLAG (buf, strlen (buf));
                }
@@ -2760,31 +2858,36 @@ define_makeflags (int all, int makefile)
          break;
 #endif
 
+       case filename:
        case string:
          if (all)
            {
              struct stringlist *sl = *(struct stringlist **) cs->value_ptr;
              if (sl != 0)
                {
-                 /* Add the elements in reverse order, because
-                    all the flags get reversed below; and the order
-                    matters for some switches (like -I).  */
-                 register unsigned int i = sl->idx;
+                 /* Add the elements in reverse order, because all the flags
+                    get reversed below; and the order matters for some
+                    switches (like -I).  */
+                 unsigned int i = sl->idx;
                  while (i-- > 0)
                    ADD_FLAG (sl->list[i], strlen (sl->list[i]));
                }
            }
          break;
+
+       default:
+         abort ();
        }
 
-  flagslen += 4 + sizeof posixref; /* Four more for the possible " -- ".  */
+  /* Four more for the possible " -- ".  */
+  flagslen += 4 + sizeof (posixref) + sizeof (evalref);
 
 #undef ADD_FLAG
 
   /* Construct the value in FLAGSTRING.
      We allocate enough space for a preceding dash and trailing null.  */
-  flagstring = (char *) alloca (1 + flagslen + 1);
-  bzero (flagstring, 1 + flagslen + 1);
+  flagstring = alloca (1 + flagslen + 1);
+  memset (flagstring, '\0', 1 + flagslen + 1);
   p = flagstring;
   words = 1;
   *p++ = '-';
@@ -2849,7 +2952,20 @@ define_makeflags (int all, int makefile)
 
   /* Since MFLAGS is not parsed for flags, there is no reason to
      override any makefile redefinition.  */
-  (void) define_variable ("MFLAGS", 6, flagstring, o_env, 1);
+  define_variable_cname ("MFLAGS", flagstring, o_env, 1);
+
+  /* Write a reference to -*-eval-flags-*-, which contains all the --eval
+     flag options.  */
+  if (eval_strings)
+    {
+      if (p == &flagstring[1])
+       /* No flags written, so elide the leading dash already written.  */
+       p = flagstring;
+      else
+        *p++ = ' ';
+      memcpy (p, evalref, sizeof (evalref) - 1);
+      p += sizeof (evalref) - 1;
+    }
 
   if (all && command_variables != 0)
     {
@@ -2876,13 +2992,13 @@ define_makeflags (int all, int makefile)
       /* Copy in the string.  */
       if (posix_pedantic)
        {
-         bcopy (posixref, p, sizeof posixref - 1);
-         p += sizeof posixref - 1;
+         memcpy (p, posixref, sizeof (posixref) - 1);
+         p += sizeof (posixref) - 1;
        }
       else
        {
-         bcopy (ref, p, sizeof ref - 1);
-         p += sizeof ref - 1;
+         memcpy (p, ref, sizeof (ref) - 1);
+         p += sizeof (ref) - 1;
        }
     }
   else if (p == &flagstring[1])
@@ -2896,25 +3012,27 @@ define_makeflags (int all, int makefile)
   /* Terminate the string.  */
   *p = '\0';
 
-  v = define_variable ("MAKEFLAGS", 9,
-                      /* If there are switches, omit the leading dash
-                         unless it is a single long option with two
-                         leading dashes.  */
-                      &flagstring[(flagstring[0] == '-'
-                                   && flagstring[1] != '-')
-                                  ? 1 : 0],
-                      /* This used to use o_env, but that lost when a
-                         makefile defined MAKEFLAGS.  Makefiles set
-                         MAKEFLAGS to add switches, but we still want
-                         to redefine its value with the full set of
-                         switches.  Of course, an override or command
-                         definition will still take precedence.  */
-                      o_file, 1);
+  /* If there are switches, omit the leading dash unless it is a single long
+     option with two leading dashes.  */
+  if (flagstring[0] == '-' && flagstring[1] != '-')
+    ++flagstring;
+
+  v = define_variable_cname ("MAKEFLAGS", flagstring,
+                             /* This used to use o_env, but that lost when a
+                                makefile defined MAKEFLAGS.  Makefiles set
+                                MAKEFLAGS to add switches, but we still want
+                                to redefine its value with the full set of
+                                switches.  Of course, an override or command
+                                definition will still take precedence.  */
+                             o_file, 1);
+
   if (! all)
     /* The first time we are called, set MAKEFLAGS to always be exported.
        We should not do this again on the second call, because that is
        after reading makefiles which might have done `unexport MAKEFLAGS'. */
     v->export = v_export;
+
+  return v->value;
 }
 \f
 /* Print version information.  */
@@ -2930,26 +3048,26 @@ print_version (void)
     /* Do it only once.  */
     return;
 
+  printf ("%sGNU Make %s\n", precede, version_string);
+
+  if (!remote_description || *remote_description == '\0')
+    printf (_("%sBuilt for %s\n"), precede, make_host);
+  else
+    printf (_("%sBuilt for %s (%s)\n"),
+            precede, make_host, remote_description);
+
   /* Print this untranslated.  The coding standards recommend translating the
      (C) to the copyright symbol, but this string is going to change every
      year, and none of the rest of it should be translated (including the
      word "Copyright", so it hardly seems worth it.  */
 
-  printf ("%sGNU Make %s\n\
-%sCopyright (C) 2006  Free Software Foundation, Inc.\n",
-          precede, version_string, precede);
+  printf ("%sCopyright (C) 2010  Free Software Foundation, Inc.\n", precede);
 
-  printf (_("%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"),
+  printf (_("%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
+%sThis is free software: you are free to change and redistribute it.\n\
+%sThere is NO WARRANTY, to the extent permitted by law.\n"),
             precede, precede, precede);
 
-  if (!remote_description || *remote_description == '\0')
-    printf (_("\n%sThis program built for %s\n"), precede, make_host);
-  else
-    printf (_("\n%sThis program built for %s (%s)\n"),
-            precede, make_host, remote_description);
-
   printed_version = 1;
 
   /* Flush stdout so the user doesn't have to wait to see the
@@ -3025,6 +3143,18 @@ clean_jobserver (int status)
                tcnt, master_job_slots);
 
       close (job_fds[0]);
+
+      /* Clean out jobserver_fds so we don't pass this information to any
+         sub-makes.  Also reset job_slots since it will be put on the command
+         line, not in MAKEFLAGS.  */
+      job_slots = default_job_slots;
+      if (jobserver_fds)
+        {
+          /* MSVC erroneously warns without a cast here.  */
+          free ((void *)jobserver_fds->list);
+          free (jobserver_fds);
+          jobserver_fds = 0;
+        }
     }
 }
 \f
@@ -3058,6 +3188,8 @@ die (int status)
       if (print_data_base_flag)
        print_data_base ();
 
+      verify_file_data_base ();
+
       clean_jobserver (status);
 
       /* Try to move back to the original directory.  This is essential on
@@ -3066,7 +3198,11 @@ die (int status)
         directory.  Must wait until after remove_intermediates(), or unlinks
          of relative pathnames fail.  */
       if (directory_before_chdir != 0)
-       chdir (directory_before_chdir);
+        {
+          /* If it fails we don't care: shut up GCC.  */
+          int _x;
+          _x = chdir (directory_before_chdir);
+        }
 
       log_working_directory (0);
     }
diff --git a/make.1 b/make.1
index d11c4e6..c76ce25 100644 (file)
--- a/make.1
+++ b/make.1
@@ -164,7 +164,7 @@ for debugging while remaking makefiles.
 Give variables taken from the environment precedence
 over variables from makefiles.
 .TP 0.5i
-+\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
+\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
 Use
 .I file
 as a makefile.
@@ -223,7 +223,8 @@ With no argument, removes a previous load limit.
 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.
+Print the commands that would be executed, but do not execute them (except in
+certain circumstances).
 .TP 0.5i
 \fB\-o\fR \fIfile\fR, \fB\-\-old\-file\fR=\fIfile\fR, \fB\-\-assume\-old\fR=\fIfile\fR
 Do not remake the file
@@ -340,26 +341,19 @@ This manual page contributed by Dennis Morse of Stanford University.
 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.
+Copyright (C) 1992, 1993, 1996, 1999, 2007 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
+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 3 of the License, 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.
+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.
 .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.
+You should have received a copy of the GNU General Public License along with
+this program.  If not, see
+.IR http://www.gnu.org/licenses/ .
diff --git a/make.h b/make.h
index 994f4f2..60ade4c 100644 (file)
--- a/make.h
+++ b/make.h
@@ -1,20 +1,20 @@
 /* Miscellaneous global declarations and portability cruft 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* 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
@@ -23,14 +23,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #undef  HAVE_CONFIG_H
 #define HAVE_CONFIG_H 1
 
+/* Specify we want GNU source code.  This must be defined before any
+   system headers are included.  */
+
+#define _GNU_SOURCE 1
+
 /* AIX requires this to be the first thing in the file.  */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
+#if HAVE_ALLOCA_H
+# include <alloca.h>
+#else
+# ifdef _AIX
  #pragma alloca
-#  else
+# else
+#  if !defined(__GNUC__) && !defined(WINDOWS32)
 #   ifndef alloca /* predefined by HP cc +Olibcalls */
 char *alloca ();
 #   endif
@@ -39,21 +44,6 @@ char *alloca ();
 #endif
 
 
-/* Use prototypes if available.  */
-#if defined (__cplusplus) || defined (__STDC__)
-# undef  PARAMS
-# define PARAMS(protos)  protos
-#else /* Not C++ or ANSI C.  */
-# undef  PARAMS
-# define PARAMS(protos)  ()
-#endif /* C++ or ANSI C.  */
-
-/* Specify we want GNU source code.  This must be defined before any
-   system headers are included.  */
-
-#define _GNU_SOURCE 1
-
-
 #ifdef  CRAY
 /* This must happen before #include <signal.h> so
    that the declaration therein is changed.  */
@@ -150,8 +140,8 @@ extern int errno;
 #else
 # define NEED_GET_PATH_MAX 1
 # define GET_PATH_MAX   (get_path_max ())
-# define PATH_VAR(var)  char *var = (char *) alloca (GET_PATH_MAX)
-extern unsigned int get_path_max PARAMS ((void));
+# define PATH_VAR(var)  char *var = alloca (GET_PATH_MAX)
+unsigned int get_path_max (void);
 #endif
 
 #ifndef CHAR_BIT
@@ -227,12 +217,12 @@ extern unsigned int get_path_max PARAMS ((void));
 # ifdef HAVE_STDLIB_H
 #  include <stdlib.h>
 # else
-extern char *malloc PARAMS ((int));
-extern char *realloc PARAMS ((char *, int));
-extern void free PARAMS ((char *));
+void *malloc (int);
+void *realloc (void *, int);
+void free (void *);
 
-extern void abort PARAMS ((void)) __attribute__ ((noreturn));
-extern void exit PARAMS ((int)) __attribute__ ((noreturn));
+void abort (void) __attribute__ ((noreturn));
+void exit (int) __attribute__ ((noreturn));
 # endif /* HAVE_STDLIB_H.  */
 
 #endif /* Standard headers.  */
@@ -242,42 +232,15 @@ extern void exit PARAMS ((int)) __attribute__ ((noreturn));
 # define EXIT_SUCCESS 0
 #endif
 #ifndef EXIT_FAILURE
-# define EXIT_FAILURE 0
+# define EXIT_FAILURE 1
 #endif
 
-#ifdef  ANSI_STRING
-
-# ifndef bcmp
-#  define bcmp(s1, s2, n)   memcmp ((s1), (s2), (n))
-# endif
-# ifndef bzero
-#  define bzero(s, n)       memset ((s), 0, (n))
-# endif
-# if defined(HAVE_MEMMOVE) && !defined(bcopy)
-#  define bcopy(s, d, n)    memmove ((d), (s), (n))
-# endif
-
-#else   /* Not ANSI_STRING.  */
-
-# ifndef HAVE_STRCHR
-#  define strchr(s, c)      index((s), (c))
-#  define strrchr(s, c)     rindex((s), (c))
-# endif
-
-# ifndef bcmp
-extern int bcmp PARAMS ((const char *, const char *, int));
-# endif
-# ifndef bzero
-extern void bzero PARAMS ((char *, int));
-#endif
-# ifndef bcopy
-extern void bcopy PARAMS ((const char *b1, char *b2, int));
-# endif
+#ifndef  ANSI_STRING
 
 /* SCO Xenix has a buggy macro definition in <string.h>.  */
 #undef  strerror
 #if !defined(__DECC)
-extern char *strerror PARAMS ((int errnum));
+char *strerror (int errnum);
 #endif
 
 #endif  /* !ANSI_STRING.  */
@@ -289,7 +252,7 @@ extern char *strerror PARAMS ((int errnum));
 #define FILE_TIMESTAMP uintmax_t
 
 #if !defined(HAVE_STRSIGNAL)
-extern char *strsignal PARAMS ((int signum));
+char *strsignal (int signum);
 #endif
 
 /* ISDIGIT offers the following features:
@@ -303,28 +266,24 @@ extern char *strsignal PARAMS ((int signum));
    host does not conform to POSIX.  */
 #define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
 
-#ifndef iAPX286
-# define streq(a, b) \
+/* Test if two strings are equal. Is this worthwhile?  Should be profiled.  */
+#define streq(a, b) \
    ((a) == (b) || \
     (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1))))
-# ifdef HAVE_CASE_INSENSITIVE_FS
-/* This is only used on Windows/DOS platforms, so we assume strcmpi().  */
-#  define strieq(a, b) \
+
+/* Test if two strings are equal, but match case-insensitively on systems
+   which have case-insensitive filesystems.  Should only be used for
+   filenames!  */
+#ifdef HAVE_CASE_INSENSITIVE_FS
+# define patheq(a, b) \
     ((a) == (b) \
      || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \
-         && (*(a) == '\0' || !strcmpi ((a) + 1, (b) + 1))))
-# else
-#  define strieq(a, b) streq(a, b)
-# endif
+         && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1))))
 #else
-/* Buggy compiler can't handle this.  */
-# define streq(a, b) (strcmp ((a), (b)) == 0)
-# define strieq(a, b) (strcmp ((a), (b)) == 0)
+# define patheq(a, b) streq(a, b)
 #endif
+
 #define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
-#ifdef  VMS
-extern int strcmpi (const char *,const char *);
-#endif
 
 #if defined(__GNUC__) || defined(ENUM_BITFIELDS)
 # define ENUM_BITFIELD(bits)    :bits
@@ -347,29 +306,31 @@ extern int strcmpi (const char *,const char *);
 #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
 
 /* Handle other OSs.  */
-#if defined(HAVE_DOS_PATHS)
-# define PATH_SEPARATOR_CHAR ';'
-#elif defined(VMS)
-# define PATH_SEPARATOR_CHAR ','
-#else
-# define PATH_SEPARATOR_CHAR ':'
+#ifndef PATH_SEPARATOR_CHAR
+# if defined(HAVE_DOS_PATHS)
+#  define PATH_SEPARATOR_CHAR ';'
+# elif defined(VMS)
+#  define PATH_SEPARATOR_CHAR ','
+# else
+#  define PATH_SEPARATOR_CHAR ':'
+# endif
 #endif
 
-/* This is needed for getcwd() and chdir().  */
-#if defined(_MSC_VER) || defined(__BORLANDC__)
+/* This is needed for getcwd() and chdir(), on some W32 systems.  */
+#if defined(HAVE_DIRECT_H)
 # include <direct.h>
 #endif
 
 #ifdef WINDOWS32
 # include <fcntl.h>
 # include <malloc.h>
-# define pipe(p) _pipe(p, 512, O_BINARY)
-# define kill(pid,sig) w32_kill(pid,sig)
+# define pipe(_p)        _pipe((_p), 512, O_BINARY)
+# define kill(_pid,_sig) w32_kill((_pid),(_sig))
 
-extern void sync_Path_environment(void);
-extern int kill(int pid, int sig);
-extern char *end_of_token_w32(char *s, char stopchar);
-extern int find_and_set_default_shell(char *token);
+void sync_Path_environment (void);
+int w32_kill (pid_t pid, int sig);
+char *end_of_token_w32 (const char *s, char stopchar);
+int find_and_set_default_shell (const char *token);
 
 /* indicates whether or not we have Bourne shell */
 extern int no_default_sh_exe;
@@ -378,6 +339,14 @@ extern int no_default_sh_exe;
 extern int unixy_shell;
 #endif  /* WINDOWS32 */
 
+#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
+# define SET_STACK_SIZE
+#endif
+#ifdef SET_STACK_SIZE
+# include <sys/resource.h>
+struct rlimit stack_limit;
+#endif
+
 struct floc
   {
     const char *filenm;
@@ -398,78 +367,93 @@ struct floc
 #endif
 
 #if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
-extern void message (int prefix, const char *fmt, ...)
-                     __attribute__ ((__format__ (__printf__, 2, 3)));
-extern void error (const struct floc *flocp, const char *fmt, ...)
-                   __attribute__ ((__format__ (__printf__, 2, 3)));
-extern void fatal (const struct floc *flocp, const char *fmt, ...)
+const char *concat (unsigned int, ...);
+void message (int prefix, const char *fmt, ...)
+              __attribute__ ((__format__ (__printf__, 2, 3)));
+void error (const struct floc *flocp, const char *fmt, ...)
+            __attribute__ ((__format__ (__printf__, 2, 3)));
+void fatal (const struct floc *flocp, const char *fmt, ...)
                    __attribute__ ((noreturn, __format__ (__printf__, 2, 3)));
 #else
-extern void message ();
-extern void error ();
-extern void fatal ();
-#endif
-
-extern void die PARAMS ((int)) __attribute__ ((noreturn));
-extern void log_working_directory PARAMS ((int));
-extern void pfatal_with_name PARAMS ((const char *)) __attribute__ ((noreturn));
-extern void perror_with_name PARAMS ((const char *, const char *));
-extern char *savestring PARAMS ((const char *, unsigned int));
-extern char *concat PARAMS ((const char *, const char *, const char *));
-extern char *xmalloc PARAMS ((unsigned int));
-extern char *xrealloc PARAMS ((char *, unsigned int));
-extern char *xstrdup PARAMS ((const char *));
-extern char *find_next_token PARAMS ((char **, unsigned int *));
-extern char *next_token PARAMS ((const char *));
-extern char *end_of_token PARAMS ((const char *));
-extern void collapse_continuations PARAMS ((char *));
-extern char *lindex PARAMS ((const char *, const char *, int));
-extern int alpha_compare PARAMS ((const void *, const void *));
-extern void print_spaces PARAMS ((unsigned int));
-extern char *find_percent PARAMS ((char *));
-extern FILE *open_tmpfile PARAMS ((char **, const char *));
+const char *concat ();
+void message ();
+void error ();
+void fatal ();
+#endif
+
+void die (int) __attribute__ ((noreturn));
+void log_working_directory (int);
+void pfatal_with_name (const char *) __attribute__ ((noreturn));
+void perror_with_name (const char *, const char *);
+void *xmalloc (unsigned int);
+void *xcalloc (unsigned int);
+void *xrealloc (void *, unsigned int);
+char *xstrdup (const char *);
+char *xstrndup (const char *, unsigned int);
+char *find_next_token (const char **, unsigned int *);
+char *next_token (const char *);
+char *end_of_token (const char *);
+void collapse_continuations (char *);
+char *lindex (const char *, const char *, int);
+int alpha_compare (const void *, const void *);
+void print_spaces (unsigned int);
+char *find_percent (char *);
+const char *find_percent_cached (const char **);
+FILE *open_tmpfile (char **, const char *);
 
 #ifndef NO_ARCHIVES
-extern int ar_name PARAMS ((char *));
-extern void ar_parse_name PARAMS ((char *, char **, char **));
-extern int ar_touch PARAMS ((char *));
-extern time_t ar_member_date PARAMS ((char *));
+int ar_name (const char *);
+void ar_parse_name (const char *, char **, char **);
+int ar_touch (const char *);
+time_t ar_member_date (const char *);
+
+typedef long int (*ar_member_func_t) (int desc, const char *mem, int truncated,
+                                     long int hdrpos, long int datapos,
+                                     long int size, long int date, int uid,
+                                     int gid, int mode, const void *arg);
+
+long int ar_scan (const char *archive, ar_member_func_t function, const void *arg);
+int ar_name_equal (const char *name, const char *mem, int truncated);
+#ifndef VMS
+int ar_member_touch (const char *arname, const char *memname);
+#endif
 #endif
 
-extern int dir_file_exists_p PARAMS ((char *, char *));
-extern int file_exists_p PARAMS ((char *));
-extern int file_impossible_p PARAMS ((char *));
-extern void file_impossible PARAMS ((char *));
-extern char *dir_name PARAMS ((char *));
-extern void hash_init_directories PARAMS ((void));
+int dir_file_exists_p (const char *, const char *);
+int file_exists_p (const char *);
+int file_impossible_p (const char *);
+void file_impossible (const char *);
+const char *dir_name (const char *);
+void hash_init_directories (void);
 
-extern void define_default_variables PARAMS ((void));
-extern void set_default_suffixes PARAMS ((void));
-extern void install_default_suffix_rules PARAMS ((void));
-extern void install_default_implicit_rules PARAMS ((void));
+void define_default_variables (void);
+void set_default_suffixes (void);
+void install_default_suffix_rules (void);
+void install_default_implicit_rules (void);
 
-extern void build_vpath_lists PARAMS ((void));
-extern void construct_vpath_list PARAMS ((char *pattern, char *dirpath));
-extern int vpath_search PARAMS ((char **file, FILE_TIMESTAMP *mtime_ptr));
-extern int gpath_search PARAMS ((char *file, unsigned int len));
+void build_vpath_lists (void);
+void construct_vpath_list (char *pattern, char *dirpath);
+const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
+                          unsigned int* vpath_index, unsigned int* path_index);
+int gpath_search (const char *file, unsigned int len);
 
-extern void construct_include_path PARAMS ((char **arg_dirs));
+void construct_include_path (const char **arg_dirs);
 
-extern void user_access PARAMS ((void));
-extern void make_access PARAMS ((void));
-extern void child_access PARAMS ((void));
+void user_access (void);
+void make_access (void);
+void child_access (void);
 
-extern void close_stdout PARAMS ((void));
+void close_stdout (void);
 
-extern char *strip_whitespace PARAMS ((const char **begpp, const char **endpp));
+char *strip_whitespace (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));
+void strcache_init (void);
+void strcache_print_stats (const char *prefix);
+int strcache_iscached (const char *str);
+const char *strcache_add (const char *str);
+const char *strcache_add_len (const char *str, int len);
+int strcache_setbufsize (int size);
 
 #ifdef  HAVE_VFORK_H
 # include <vfork.h>
@@ -480,22 +464,44 @@ extern int strcache_setbufsize PARAMS ((int size));
 
 #if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
 
-extern long int atol ();
+long int atol ();
 # ifndef VMS
-extern long int lseek ();
+long int lseek ();
 # endif
 
 #endif  /* Not GNU C library or POSIX.  */
 
 #ifdef  HAVE_GETCWD
 # if !defined(VMS) && !defined(__DECC)
-extern char *getcwd ();
+char *getcwd ();
 # endif
 #else
-extern char *getwd ();
+char *getwd ();
 # define getcwd(buf, len)       getwd (buf)
 #endif
 
+#if !HAVE_STRCASECMP
+# if HAVE_STRICMP
+#  define strcasecmp stricmp
+# elif HAVE_STRCMPI
+#  define strcasecmp strcmpi
+# else
+/* Create our own, in misc.c */
+int strcasecmp (const char *s1, const char *s2);
+# endif
+#endif
+
+#if !HAVE_STRNCASECMP
+# if HAVE_STRNICMP
+#  define strncasecmp strnicmp
+# elif HAVE_STRNCMPI
+#  define strncasecmp strncmpi
+# else
+/* Create our own, in misc.c */
+int strncasecmp (const char *s1, const char *s2, int n);
+# endif
+#endif
+
 extern const struct floc *reading_file;
 extern const struct floc **expanding_var;
 
@@ -507,10 +513,16 @@ extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag;
 extern int print_version_flag, print_directory_flag, check_symlink_flag;
 extern int warn_undefined_variables_flag, posix_pedantic, not_parallel;
 extern int second_expansion, clock_skew_detected, rebuilding_makefiles;
+extern int one_shell;
 
 /* can we run commands via 'sh -c xxx' or must we use batch files? */
 extern int batch_mode_shell;
 
+/* Resetting the command script introduction prefix character.  */
+#define RECIPEPREFIX_NAME          ".RECIPEPREFIX"
+#define RECIPEPREFIX_DEFAULT       '\t'
+extern char cmd_prefix;
+
 extern unsigned int job_slots;
 extern int job_fds[2];
 extern int job_rfd;
@@ -562,12 +574,7 @@ extern int handling_fatal_signal;
 # endif
 #endif
 
-
 #ifdef __EMX__
-# if !HAVE_STRCASECMP
-#  define strcasecmp stricmp
-# endif
-
 # if !defined chdir
 #  define chdir _chdir2
 # endif
@@ -606,6 +613,5 @@ extern int handling_fatal_signal;
    NULL at the end of the directory--and _doesn't_ reset errno.  So, we have
    to do it ourselves here.  */
 
-#define ENULLLOOP(_v,_c)   do{ errno = 0; \
-                               while (((_v)=_c)==0 && errno==EINTR); }while(0)
-
+#define ENULLLOOP(_v,_c)   do { errno = 0; (_v) = _c; } \
+                           while((_v)==0 && errno==EINTR)
index eaa564e..d2d05d1 100644 (file)
@@ -139,17 +139,18 @@ $ endsubroutine : compileit
 $!
 $!-----------------------------------------------------------------------------
 $!Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-$!2006 Free Software Foundation, Inc.
+$!2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+$!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.
+$!this program.  If not, see <http://www.gnu.org/licenses/>.
index 3b956a4..1e6a88e 100644 (file)
@@ -1,20 +1,21 @@
 # -*-Makefile-*- to build GNU make on VMS
 #
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+# 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # VMS extensions from GNU Make 3.60 imported by
 #  Klaus Kämpf (kkaempf@rmi.de)
diff --git a/misc.c b/misc.c
index 07f3c01..7a6f773 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1,20 +1,20 @@
 /* Miscellaneous generic support functions 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "dep.h"
@@ -112,11 +112,13 @@ collapse_continuations (char *line)
       /* Skip the newline.  */
       ++in;
 
-      /* If the newline is quoted, discard following whitespace
-        and any preceding whitespace; leave just one space.  */
+      /* If the newline is escaped, discard following whitespace leaving just
+        one space.  POSIX requires that each backslash/newline/following
+        whitespace sequence be reduced to a single space.  */
       if (backslash)
        {
          in = next_token (in);
+          /* Removing this loop will fix Savannah bug #16670: do we want to? */
          while (out > line && isblank ((unsigned char)out[-1]))
            --out;
          *out++ = ' ';
@@ -158,28 +160,57 @@ print_spaces (unsigned int n)
 }
 
 \f
-/* Return a newly-allocated string whose contents
-   concatenate those of s1, s2, s3.  */
+/* Return a string whose contents concatenate the NUM strings provided
+   This string lives in static, re-used memory.  */
 
-char *
-concat (const char *s1, const char *s2, const char *s3)
+const char *
+#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
+concat (unsigned int num, ...)
+#else
+concat (num, va_alist)
+     unsigned int num;
+     va_dcl
+#endif
 {
-  unsigned int len1, len2, len3;
-  char *result;
+  static unsigned int rlen = 0;
+  static char *result = NULL;
+  int ri = 0;
+
+#if USE_VARIADIC
+  va_list args;
+#endif
 
-  len1 = *s1 != '\0' ? strlen (s1) : 0;
-  len2 = *s2 != '\0' ? strlen (s2) : 0;
-  len3 = *s3 != '\0' ? strlen (s3) : 0;
+  VA_START (args, num);
+
+  while (num-- > 0)
+    {
+      const char *s = va_arg (args, const char *);
+      unsigned int l = s ? strlen (s) : 0;
+
+      if (l == 0)
+        continue;
+
+      if (ri + l > rlen)
+        {
+          rlen = ((rlen ? rlen : 60) + l) * 2;
+          result = xrealloc (result, rlen);
+        }
+
+      memcpy (result + ri, s, l);
+      ri += l;
+    }
+
+  VA_END (args);
 
-  result = (char *) xmalloc (len1 + len2 + len3 + 1);
+  /* Get some more memory if we don't have enough space for the
+     terminating '\0'.   */
+  if (ri == rlen)
+    {
+      rlen = (rlen ? rlen : 60) * 2;
+      result = xrealloc (result, rlen);
+    }
 
-  if (*s1 != '\0')
-    bcopy (s1, result, len1);
-  if (*s2 != '\0')
-    bcopy (s2, result + len1, len2);
-  if (*s3 != '\0')
-    bcopy (s3, result + len1 + len2, len3);
-  *(result + len1 + len2 + len3) = '\0';
+  result[ri] = '\0';
 
   return result;
 }
@@ -332,26 +363,38 @@ pfatal_with_name (const char *name)
 #ifndef HAVE_DMALLOC_H
 
 #undef xmalloc
+#undef xcalloc
 #undef xrealloc
 #undef xstrdup
 
-char *
+void *
 xmalloc (unsigned int size)
 {
-  /* Make sure we don't allocate 0, for pre-ANSI libraries.  */
-  char *result = (char *) malloc (size ? size : 1);
+  /* Make sure we don't allocate 0, for pre-ISO implementations.  */
+  void *result = malloc (size ? size : 1);
   if (result == 0)
     fatal (NILF, _("virtual memory exhausted"));
   return result;
 }
 
 
-char *
-xrealloc (char *ptr, unsigned int size)
+void *
+xcalloc (unsigned int size)
 {
-  char *result;
+  /* Make sure we don't allocate 0, for pre-ISO implementations.  */
+  void *result = calloc (size ? size : 1, 1);
+  if (result == 0)
+    fatal (NILF, _("virtual memory exhausted"));
+  return result;
+}
+
 
-  /* Some older implementations of realloc() don't conform to ANSI.  */
+void *
+xrealloc (void *ptr, unsigned int size)
+{
+  void *result;
+
+  /* Some older implementations of realloc() don't conform to ISO.  */
   if (! size)
     size = 1;
   result = ptr ? realloc (ptr, size) : malloc (size);
@@ -369,7 +412,7 @@ xstrdup (const char *ptr)
 #ifdef HAVE_STRDUP
   result = strdup (ptr);
 #else
-  result = (char *) malloc (strlen (ptr) + 1);
+  result = malloc (strlen (ptr) + 1);
 #endif
 
   if (result == 0)
@@ -378,20 +421,29 @@ xstrdup (const char *ptr)
 #ifdef HAVE_STRDUP
   return result;
 #else
-  return strcpy(result, ptr);
+  return strcpy (result, ptr);
 #endif
 }
 
 #endif  /* HAVE_DMALLOC_H */
 
 char *
-savestring (const char *str, unsigned int length)
+xstrndup (const char *str, unsigned int length)
 {
-  register char *out = (char *) xmalloc (length + 1);
+  char *result;
+
+#ifdef HAVE_STRNDUP
+  result = strndup (str, length);
+  if (result == 0)
+    fatal (NILF, _("virtual memory exhausted"));
+#else
+  result = xmalloc (length + 1);
   if (length > 0)
-    bcopy (str, out, length);
-  out[length] = '\0';
-  return out;
+    strncpy (result, str, length);
+  result[length] = '\0';
+#endif
+
+  return result;
 }
 \f
 
@@ -426,10 +478,10 @@ end_of_token (const char *s)
  * Same as end_of_token, but take into account a stop character
  */
 char *
-end_of_token_w32 (char *s, char stopchar)
+end_of_token_w32 (const char *s, char stopchar)
 {
-  register char *p = s;
-  register int backslash = 0;
+  const char *p = s;
+  int backslash = 0;
 
   while (*p != '\0' && *p != stopchar
         && (backslash || !isblank ((unsigned char)*p)))
@@ -447,7 +499,7 @@ end_of_token_w32 (char *s, char stopchar)
         backslash = 0;
     }
 
-  return p;
+  return (char *)p;
 }
 #endif
 
@@ -461,69 +513,41 @@ next_token (const char *s)
   return (char *)s;
 }
 
-/* Find the next token in PTR; return the address of it, and store the
-   length of the token into *LENGTHPTR if LENGTHPTR is not nil.  */
+/* Find the next token in PTR; return the address of it, and store the length
+   of the token into *LENGTHPTR if LENGTHPTR is not nil.  Set *PTR to the end
+   of the token, so this function can be called repeatedly in a loop.  */
 
 char *
-find_next_token (char **ptr, unsigned int *lengthptr)
+find_next_token (const char **ptr, unsigned int *lengthptr)
 {
-  char *p = next_token (*ptr);
-  char *end;
+  const char *p = next_token (*ptr);
 
   if (*p == '\0')
     return 0;
 
-  *ptr = end = end_of_token (p);
+  *ptr = end_of_token (p);
   if (lengthptr != 0)
-    *lengthptr = end - p;
-  return p;
-}
-\f
-
-/* 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);
+    *lengthptr = *ptr - p;
 
-  free ((char *)d);
+  return (char *)p;
 }
+\f
 
-/* Copy a chain of `struct dep', making a new chain
-   with the same contents as the old one.  */
+/* Copy a chain of `struct dep'.  For 2nd expansion deps, dup the name.  */
 
 struct dep *
 copy_dep_chain (const struct dep *d)
 {
-  register struct dep *c;
   struct dep *firstnew = 0;
   struct dep *lastnew = 0;
 
   while (d != 0)
     {
-      c = (struct dep *) xmalloc (sizeof (struct dep));
-      bcopy ((char *) d, (char *) c, sizeof (struct dep));
+      struct dep *c = xmalloc (sizeof (struct dep));
+      memcpy (c, d, sizeof (struct dep));
 
-      if (c->name != 0)
-       c->name = xstrdup (c->name);
-      if (c->stem != 0)
-       c->stem = xstrdup (c->stem);
+      if (c->need_2nd_expansion)
+        c->name = xstrdup (c->name);
 
       c->next = 0;
       if (firstnew == 0)
@@ -549,35 +573,73 @@ free_dep_chain (struct dep *d)
       free_dep (df);
     }
 }
-\f
-/* Free a chain of `struct nameseq'. Each nameseq->name is freed
-   as well.  For `struct dep' chains use free_dep_chain.  */
+
+/* Free a chain of struct nameseq.
+   For struct dep chains use free_dep_chain.  */
 
 void
-free_ns_chain (struct nameseq *n)
+free_ns_chain (struct nameseq *ns)
 {
-  register struct nameseq *tmp;
+  while (ns != 0)
+    {
+      struct nameseq *t = ns;
+      ns = ns->next;
+      free (t);
+    }
+}
+\f
 
-  while (n != 0)
-  {
-    if (n->name != 0)
-      free (n->name);
+#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI
 
-    tmp = n;
+/* If we don't have strcasecmp() (from POSIX), or anything that can substitute
+   for it, define our own version.  */
 
-    n = n->next;
+int
+strcasecmp (const char *s1, const char *s2)
+{
+  while (1)
+    {
+      int c1 = (int) *(s1++);
+      int c2 = (int) *(s2++);
 
-    free (tmp);
-  }
+      if (isalpha (c1))
+        c1 = tolower (c1);
+      if (isalpha (c2))
+        c2 = tolower (c2);
 
-}\f
-#ifdef iAPX286
-/* The losing compiler on this machine can't handle this macro.  */
+      if (c1 != '\0' && c1 == c2)
+        continue;
 
-char *
-dep_name (struct dep *dep)
+      return (c1 - c2);
+    }
+}
+#endif
+
+#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI
+
+/* If we don't have strncasecmp() (from POSIX), or anything that can
+   substitute for it, define our own version.  */
+
+int
+strncasecmp (const char *s1, const char *s2, int n)
 {
-  return dep->name == 0 ? dep->file->name : dep->name;
+  while (n-- > 0)
+    {
+      int c1 = (int) *(s1++);
+      int c2 = (int) *(s2++);
+
+      if (isalpha (c1))
+        c1 = tolower (c1);
+      if (isalpha (c2))
+        c2 = tolower (c2);
+
+      if (c1 != '\0' && c1 == c2)
+        continue;
+
+      return (c1 - c2);
+    }
+
+  return 0;
 }
 #endif
 \f
diff --git a/packaging/Makefile b/packaging/Makefile
deleted file mode 100644 (file)
index 5c52a2e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PKG_NAME := make
-SPECFILE = $(addsuffix .spec, $(PKG_NAME))
-YAMLFILE = $(addsuffix .yaml, $(PKG_NAME))
-
-include /usr/share/packaging-tools/Makefile.common
-
diff --git a/packaging/make-3.79.1-noclock_gettime.patch b/packaging/make-3.79.1-noclock_gettime.patch
deleted file mode 100644 (file)
index 5c94aac..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- make-3.80/configure
-+++ make-3.80/configure
-@@ -6794,7 +6794,7 @@
- fi
- rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- if test "$ac_cv_search_clock_gettime" = no; then
--  for ac_lib in rt posix4; do
-+  for ac_lib in posix4; do
-     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-     cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
diff --git a/packaging/make-3.80-getcwd.patch b/packaging/make-3.80-getcwd.patch
deleted file mode 100644 (file)
index e284f42..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- make-3.80/make.h.jj        2002-09-11 12:55:44.000000000 -0400
-+++ make-3.80/make.h   2005-03-07 09:24:53.000000000 -0500
-@@ -474,7 +474,7 @@ extern long int lseek ();
- #endif  /* Not GNU C library or POSIX.  */
- #ifdef  HAVE_GETCWD
--# if !defined(VMS) && !defined(__DECC)
-+# if !defined(VMS) && !defined(__DECC) && !defined(getcwd)
- extern char *getcwd ();
- #endif
- #else
diff --git a/packaging/make-3.80-j8k.patch b/packaging/make-3.80-j8k.patch
deleted file mode 100644 (file)
index 1acd4f9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- make-3.80/main.c.jj        2002-08-09 21:27:17.000000000 -0400
-+++ make-3.80/main.c   2004-12-13 12:48:25.000000000 -0500
-@@ -1549,6 +1549,20 @@ int main (int argc, char ** argv)
-       }
-   }
-+#ifdef PIPE_BUF
-+  if (job_slots > PIPE_BUF)
-+#elif defined _POSIX_PIPE_BUF
-+  if (job_slots > _POSIX_PIPE_BUF)
-+#else
-+  if (job_slots > 512)
-+#endif
-+    {
-+      error (NILF,
-+           _("More parallel jobs (-jN) than this platform can handle requested."));
-+      error (NILF, _("Resetting to single job (-j1) mode."));
-+      job_slots = 1;
-+    }
-+
-   /* If we have >1 slot but no jobserver-fds, then we're a top-level make.
-      Set up the pipe and install the fds option for our children.  */
diff --git a/packaging/make-3.81-err-reporting.patch b/packaging/make-3.81-err-reporting.patch
deleted file mode 100644 (file)
index bbab96d..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
---- make-3.80/misc.c.jj        2002-09-12 18:15:58.000000000 -0400
-+++ make-3.80/misc.c   2005-08-22 05:46:05.000000000 -0400
-@@ -311,17 +311,31 @@ strerror (errnum)
- /* Print an error message from errno.  */
-+void
-+perror_with_name_err (const char *str, const char *name, int errnum)
-+{
-+  error (NILF, _("%s%s: %s"), str, name, strerror (errnum));
-+}
-+
- void
- perror_with_name (const char *str, const char *name)
- {
--  error (NILF, _("%s%s: %s"), str, name, strerror (errno));
-+  perror_with_name_err (str, name, errno);
- }
- /* Print an error message from errno and exit.  */
-+void
-+pfatal_with_name_err (const char *name, int errnum)
-+{
-+  fatal (NILF, _("%s: %s"), name, strerror (errnum));
-+
-+  /* NOTREACHED */
-+}
-+
- void
- pfatal_with_name (const char *name)
- {
--  fatal (NILF, _("%s: %s"), name, strerror (errno));
-+  pfatal_with_name_err (name, errno);
-   /* NOTREACHED */
- }
-
---- make-3.81/main.c.jj        2006-05-23 12:51:25.000000000 +0200
-+++ make-3.81/main.c   2006-05-23 12:50:48.000000000 +0200
-@@ -1502,13 +1502,13 @@
-           strcat (template, DEFAULT_TMPFILE);
-           outfile = open_tmpfile (&stdin_nm, template);
-           if (outfile == 0)
--            pfatal_with_name (_("fopen (temporary file)"));
-+            pfatal_with_name_err (_("fopen (temporary file)"), errno);
-           while (!feof (stdin) && ! ferror (stdin))
-             {
-               char buf[2048];
-               unsigned int n = fread (buf, 1, sizeof (buf), stdin);
-               if (n > 0 && fwrite (buf, 1, n, outfile) != n)
--                pfatal_with_name (_("fwrite (temporary file)"));
-+                pfatal_with_name_err (_("fwrite (temporary file)"), errno);
-             }
-           (void) fclose (outfile);
-@@ -1681,7 +1681,7 @@
-     else if ((job_rfd = dup (job_fds[0])) < 0)
-       {
-         if (errno != EBADF)
--          pfatal_with_name (_("dup jobserver"));
-+          pfatal_with_name_err (_("dup jobserver"), errno);
-         error (NILF,
-                _("warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."));
-@@ -1721,7 +1721,7 @@
-       char c = '+';
-       if (pipe (job_fds) < 0 || (job_rfd = dup (job_fds[0])) < 0)
--      pfatal_with_name (_("creating jobs pipe"));
-+      pfatal_with_name_err (_("creating jobs pipe"), errno);
-       /* Every make assumes that it always has one job it can run.  For the
-          submakes it's the token they were given by their parent.  For the
-@@ -1736,7 +1736,7 @@
-           EINTRLOOP (r, write (job_fds[1], &c, 1));
-           if (r != 1)
--            pfatal_with_name (_("init jobserver pipe"));
-+            pfatal_with_name_err (_("init jobserver pipe"), errno);
-         }
-       /* Fill in the jobserver_fds struct for our children.  */
-@@ -2151,8 +2151,8 @@
-   /* If there is a temp file from reading a makefile from stdin, get rid of
-      it now.  */
-   if (stdin_nm && unlink (stdin_nm) < 0 && errno != ENOENT)
--    perror_with_name (_("unlink (temporary file): "), stdin_nm);
-+    perror_with_name_err (_("unlink (temporary file): "), stdin_nm, errno);
-   {
-     int status;
-
---- make-3.81/make.h.jj        2006-05-23 12:54:45.000000000 +0200
-+++ make-3.81/make.h   2006-05-23 12:55:00.000000000 +0200
-@@ -414,6 +414,8 @@
- extern void log_working_directory PARAMS ((int));
- extern void pfatal_with_name PARAMS ((const char *)) __attribute__ ((noreturn));
- extern void perror_with_name PARAMS ((const char *, const char *));
-+extern void pfatal_with_name_err PARAMS ((const char *, int errnum)) __attribute__ ((noreturn));
-+extern void perror_with_name_err PARAMS ((const char *, const char *, int errnum));
- extern char *savestring PARAMS ((const char *, unsigned int));
- extern char *concat PARAMS ((const char *, const char *, const char *));
- extern char *xmalloc PARAMS ((unsigned int));
-
---- make-3.81/job.c.jj 2006-05-23 13:01:35.000000000 +0200
-+++ make-3.81/job.c    2006-05-23 13:50:44.000000000 +0200
-@@ -859,7 +859,7 @@
-       EINTRLOOP (r, write (job_fds[1], &token, 1));
-       if (r != 1)
--      pfatal_with_name (_("write jobserver"));
-+      pfatal_with_name_err (_("write jobserver"), errno);
-       DB (DB_JOBS, (_("Released token for child 0x%08lx (%s).\n"),
-                     (unsigned long int) child, child->file->name));
-@@ -1699,6 +1699,7 @@
-         /* Set interruptible system calls, and read() for a job token.  */
-       set_child_handler_action_flags (1, waiting_jobs != NULL);
-+      errno = 0;
-       got_token = read (job_rfd, &token, 1);
-       saved_errno = errno;
-       set_child_handler_action_flags (0, waiting_jobs != NULL);
-@@ -1713,10 +1714,14 @@
-         /* If the error _wasn't_ expected (EINTR or EBADF), punt.  Otherwise,
-            go back and reap_children(), and try again.  */
--      errno = saved_errno;
--        if (errno != EINTR && errno != EBADF)
--          pfatal_with_name (_("read jobs pipe"));
--        if (errno == EBADF)
-+        if (saved_errno != EINTR && saved_errno != EBADF)
-+        {
-+          if (got_token == 0)
-+            fatal (NILF, _("read jobs pipe EOF"));
-+          else
-+            pfatal_with_name_err (_("read jobs pipe"), saved_errno);
-+        }
-+        if (saved_errno == EBADF)
-           DB (DB_JOBS, ("Read returned EBADF.\n"));
-       }
- #endif
-@@ -1831,7 +1836,7 @@
-           error (NILF,
-                    _("cannot enforce load limits on this operating system"));
-         else
--          perror_with_name (_("cannot enforce load limit: "), "getloadavg");
-+          perror_with_name_err (_("cannot enforce load limit: "), "getloadavg", errno);
-       }
-       lossage = errno;
-       load = 0;
diff --git a/packaging/make-3.81-jobserver.patch b/packaging/make-3.81-jobserver.patch
deleted file mode 100644 (file)
index df65107..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -urp make-3.81/main.c make-3.81-pm/main.c
---- make-3.81/main.c   2007-09-24 15:28:34.000000000 +0200
-+++ make-3.81-pm/main.c        2007-09-24 15:32:50.000000000 +0200
-@@ -1669,8 +1669,12 @@ main (int argc, char **argv, char **envp
-     if (job_slots > 0)
-       {
--        close (job_fds[0]);
--        close (job_fds[1]);
-+      if (restarts == 0)
-+        {
-+          close (job_fds[0]);
-+          close (job_fds[1]);
-+        }
-+
-         job_fds[0] = job_fds[1] = -1;
-         free (jobserver_fds->list);
-         free (jobserver_fds);
diff --git a/packaging/make-3.81-memory.patch b/packaging/make-3.81-memory.patch
deleted file mode 100644 (file)
index 7a7bf9f..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-diff -Bburpd make-3.81_orig/file.c make-3.81/file.c
---- make-3.81_orig/file.c      2006-05-23 13:59:11.000000000 +0200
-+++ make-3.81/file.c   2006-05-23 14:39:34.000000000 +0200
-@@ -490,7 +490,7 @@ expand_deps (struct file *f)
-               o = subst_expand (buffer, d->name, "%", "$*", 1, 2, 0);
--              free (d->name);
-+              hash_strfree (d->name);
-               d->name = savestring (buffer, o - buffer);
-               d->staticpattern = 0; /* Clear staticpattern so that we don't
-                                        re-expand %s below. */
-@@ -549,7 +549,7 @@ expand_deps (struct file *f)
-                         dp->name[0] = '\0';
-                       else
-                         {
--                          free (dp->name);
-+                          hash_strfree (dp->name);
-                           dp->name = savestring (buffer, o - buffer);
-                         }
-                     }
-@@ -580,7 +580,7 @@ expand_deps (struct file *f)
-           if (d1->file == 0)
-             d1->file = enter_file (d1->name);
-           else
--            free (d1->name);
-+            hash_strfree (d1->name);
-           d1->name = 0;
-           d1->staticpattern = 0;
-           d1->need_2nd_expansion = 0;
-Only in make-3.81: file.c~
-diff -Bburpd make-3.81_orig/implicit.c make-3.81/implicit.c
---- make-3.81_orig/implicit.c  2006-05-23 13:59:11.000000000 +0200
-+++ make-3.81/implicit.c       2006-05-23 14:40:01.000000000 +0200
-@@ -864,7 +864,7 @@ pattern_search (struct file *file, int a
-             dep->file = enter_file (dep->name);
-               /* enter_file uses dep->name _if_ we created a new file.  */
-               if (dep->name != dep->file->name)
--                free (dep->name);
-+                hash_strfree (dep->name);
-             dep->name = 0;
-             dep->file->tried_implicit |= dep->changed;
-           }
-Only in make-3.81: implicit.c~
-diff -Bburpd make-3.81_orig/main.c make-3.81/main.c
---- make-3.81_orig/main.c      2006-05-23 13:59:11.000000000 +0200
-+++ make-3.81/main.c   2006-05-23 14:40:49.000000000 +0200
-@@ -540,6 +540,7 @@ initialize_global_hash_tables (void)
-   init_hash_files ();
-   hash_init_directories ();
-   hash_init_function_table ();
-+  init_hash_strings ();
- }
- static struct file *
-Only in make-3.81: main.c~
-diff -Bburpd make-3.81_orig/make.h make-3.81/make.h
---- make-3.81_orig/make.h      2006-05-23 13:59:11.000000000 +0200
-+++ make-3.81/make.h   2006-05-23 14:41:21.000000000 +0200
-@@ -431,6 +431,11 @@ extern void print_spaces PARAMS ((unsign
- extern char *find_percent PARAMS ((char *));
- extern FILE *open_tmpfile PARAMS ((char **, const char *));
-+extern void init_hash_strings PARAMS ((void));
-+extern char *hash_strdup PARAMS ((const char *));
-+extern char *hash_savestring PARAMS ((const char *, unsigned int));
-+extern void hash_strfree PARAMS ((char *));
-+
- #ifndef NO_ARCHIVES
- extern int ar_name PARAMS ((char *));
- extern void ar_parse_name PARAMS ((char *, char **, char **));
-Only in make-3.81: make.h~
-diff -Bburpd make-3.81_orig/misc.c make-3.81/misc.c
---- make-3.81_orig/misc.c      2006-05-23 13:59:11.000000000 +0200
-+++ make-3.81/misc.c   2006-05-23 14:42:59.000000000 +0200
-@@ -16,8 +16,10 @@ You should have received a copy of the G
- 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 <assert.h>
- #include "make.h"
- #include "dep.h"
-+#include "hash.h"
- #include "debug.h"
- /* Variadic functions.  We go through contortions to allow proper function
-@@ -511,7 +513,7 @@ void
- free_dep (struct dep *d)
- {
-   if (d->name != 0)
--    free (d->name);
-+    hash_strfree (d->name);
-   if (d->stem != 0)
-     free (d->stem);
-@@ -535,7 +537,7 @@ copy_dep_chain (const struct dep *d)
-       bcopy ((char *) d, (char *) c, sizeof (struct dep));
-       if (c->name != 0)
--      c->name = xstrdup (c->name);
-+      c->name = hash_strdup (c->name);
-       if (c->stem != 0)
-       c->stem = xstrdup (c->stem);
-@@ -909,3 +911,154 @@ close_stdout (void)
-       exit (EXIT_FAILURE);
-     }
- }
-+
-+/* Hash table of duplicated strings.  */
-+
-+struct hash_string
-+{
-+  char *string;
-+  unsigned int count;
-+};
-+
-+static unsigned long
-+string_hash_1 (key)
-+    const void *key;
-+{
-+  return_ISTRING_HASH_1 (((const struct hash_string *) key)->string);
-+}
-+
-+static unsigned long
-+string_hash_2 (key)
-+    const void *key;
-+{
-+  return_ISTRING_HASH_2 (((const struct hash_string *) key)->string);
-+}
-+
-+static int
-+string_hash_cmp (x, y)
-+    const void *x;
-+    const void *y;
-+{
-+  return_ISTRING_COMPARE (((const struct hash_string *) x)->string,
-+                        ((const struct hash_string *) y)->string);
-+}
-+
-+static struct hash_table strings;
-+
-+void
-+init_hash_strings ()
-+{
-+  hash_init (&strings, 1000, string_hash_1, string_hash_2,
-+           string_hash_cmp);
-+}
-+
-+/* Keep track duplicated string and return the old one if exists.  */
-+
-+char *
-+hash_strdup (ptr)
-+     const char *ptr;
-+{
-+  struct hash_string *h, key;
-+
-+  if (*ptr == '\0')
-+    return "";
-+
-+  key.string = (char *) ptr;
-+  key.count = 0;
-+  h = (struct hash_string *) hash_find_item (&strings, &key);
-+  if (h == NULL)
-+    {
-+      char *result = (char *) malloc (strlen (ptr) + 1);
-+
-+      if (result == NULL)
-+      fatal (NILF, _("virtual memory exhausted"));
-+
-+      strcpy (result, ptr);
-+
-+      h = (struct hash_string *) malloc (sizeof (struct hash_string));
-+      if (h == NULL)
-+      fatal (NILF, _("virtual memory exhausted"));
-+
-+      h->string = result;
-+      h->count = 1;
-+      hash_insert (&strings, h);
-+    }
-+  else
-+    {
-+      h->count++;
-+      assert (h->count != 0);
-+    }
-+
-+  return h->string;
-+}
-+
-+char *
-+hash_savestring (str, length)
-+     const char *str;
-+     unsigned int length;
-+{
-+  struct hash_string *h, key;
-+
-+  if (length == 0 || *str == '\0')
-+    return "";
-+
-+  key.string = alloca (length + 1);
-+  key.count = 0;
-+  bcopy (str, key.string, length);
-+  key.string [length] = '\0';
-+
-+  h = (struct hash_string *) hash_find_item (&strings, &key);
-+  if (h == NULL)
-+    {
-+      char *out = (char *) xmalloc (length + 1);
-+      bcopy (str, out, length);
-+      out[length] = '\0';
-+
-+      h = (struct hash_string *) malloc (sizeof (struct hash_string));
-+      if (h == NULL)
-+      fatal (NILF, _("virtual memory exhausted"));
-+
-+      h->string = out;
-+      h->count = 1;
-+      hash_insert (&strings, h);
-+    }
-+  else
-+    {
-+      h->count++;
-+      assert (h->count != 0);
-+    }
-+
-+  return h->string;
-+}
-+
-+void
-+hash_strfree (ptr)
-+     char *ptr;
-+{
-+  struct hash_string *h, key;
-+
-+  if (*ptr == '\0')
-+    return;
-+
-+  key.string = ptr;
-+  key.count = 0;
-+  h = (struct hash_string *) hash_find_item (&strings, &key);
-+
-+  /* Check if string comes from hash_strdup or hash_savestring.  */
-+  if (h == NULL || h->string != ptr)
-+    {
-+      free (ptr);
-+      return;
-+    }
-+
-+  h->count--;
-+  if (h->count == 0)
-+    {
-+      struct hash_string *d;
-+
-+      d = hash_delete (&strings, h);
-+      assert (d == h);
-+      free (h->string);
-+      free (h);
-+    }
-+}
-Only in make-3.81: misc.c~
-Only in make-3.81: read.c~
diff --git a/packaging/make-3.81-newlines.patch b/packaging/make-3.81-newlines.patch
deleted file mode 100644 (file)
index d9bb313..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- make-3.81-orig/job.c       2007-02-21 19:10:54.000000000 +0100
-+++ make-3.81-pm/job.c 2007-02-22 18:13:59.000000000 +0100
-@@ -2706,7 +2706,7 @@
-     unsigned int line_len = strlen (line);
-     char *new_line = (char *) alloca (shell_len + (sizeof (minus_c) - 1)
--                                    + (line_len * 2) + 1);
-+                                    + (line_len * 4) + 1);
-     char *command_ptr = NULL; /* used for batch_mode_shell mode */
- # ifdef __EMX__ /* is this necessary? */
-@@ -2740,9 +2740,10 @@
- #endif
-           if (PRESERVE_BSNL)
-             {
--              *(ap++) = '\\';
-+              *(ap++) = '\'';
-               *(ap++) = '\\';
-               *(ap++) = '\n';
-+              *(ap++) = '\'';
-             }
-           ++p;
diff --git a/packaging/make-3.81-rlimit.patch b/packaging/make-3.81-rlimit.patch
deleted file mode 100644 (file)
index f88f0fe..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-diff -urp make-3.81/job.c make-3.81-pm/job.c
---- make-3.81/job.c    2008-03-25 18:15:38.000000000 +0100
-+++ make-3.81-pm/job.c 2008-03-25 17:51:11.000000000 +0100
-@@ -2079,6 +2079,9 @@ exec_command (char **argv, char **envp)
- # else
-   /* Run the program.  */
-+#ifdef SET_STACK_SIZE
-+  restore_original_stack_rlimit ();
-+#endif
-   environ = envp;
-   execvp (argv[0], argv);
-diff -urp make-3.81/main.c make-3.81-pm/main.c
---- make-3.81/main.c   2008-03-25 18:15:38.000000000 +0100
-+++ make-3.81-pm/main.c        2008-03-25 18:14:04.000000000 +0100
-@@ -44,12 +44,53 @@ Foundation, Inc., 51 Franklin St, Fifth 
- # include <fcntl.h>
- #endif
--#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
--# define SET_STACK_SIZE
--#endif
--
- #ifdef SET_STACK_SIZE
- # include <sys/resource.h>
-+/* Whether the rlimit was set successfuly */
-+static int setrlimit_succeeded = 0;
-+/* Original rlim_cur */
-+static rlim_t setrlimit_orig_cur = 0;
-+
-+/* Get rid of any avoidable limit on stack size so that alloca does
-+   not fail. */
-+void
-+set_max_stack_rlimit (void)
-+{
-+  struct rlimit rlim;
-+
-+  /* Back off if the limit is still set, probably due to failure in
-+     restore_original_stack_rlimit. */
-+  if (setrlimit_succeeded)
-+    return;
-+
-+  if (getrlimit (RLIMIT_STACK, &rlim) == 0)
-+    {
-+      setrlimit_orig_cur = rlim.rlim_cur;
-+      rlim.rlim_cur = rlim.rlim_max;
-+      if (setrlimit (RLIMIT_STACK, &rlim) != -1)
-+      setrlimit_succeeded = 1;
-+    }
-+}
-+
-+/* Set the rlimit back to its original value.  To be called before
-+   process spawn. */
-+void
-+restore_original_stack_rlimit (void)
-+{
-+  struct rlimit rlim;
-+
-+  if (!setrlimit_succeeded)
-+    return;
-+
-+  if (getrlimit (RLIMIT_STACK, &rlim) == 0)
-+    {
-+      rlim.rlim_cur = setrlimit_orig_cur;
-+      setrlimit (RLIMIT_STACK, &rlim);
-+      /* Don't reset the setrlimit_succeeded flag.  This can be called
-+       after vfork, in which case the flag is in memory shared with
-+       the parent. */
-+    }
-+}
- #endif
- #ifdef _AMIGA
-@@ -915,17 +956,7 @@ main (int argc, char **argv, char **envp
- #endif
- #ifdef SET_STACK_SIZE
-- /* Get rid of any avoidable limit on stack size.  */
--  {
--    struct rlimit rlim;
--
--    /* Set the stack limit huge so that alloca does not fail.  */
--    if (getrlimit (RLIMIT_STACK, &rlim) == 0)
--      {
--        rlim.rlim_cur = rlim.rlim_max;
--        setrlimit (RLIMIT_STACK, &rlim);
--      }
--  }
-+  set_max_stack_rlimit ();
- #endif
- #ifdef HAVE_ATEXIT
-diff -urp make-3.81/make.h make-3.81-pm/make.h
---- make-3.81/make.h   2008-03-25 18:15:38.000000000 +0100
-+++ make-3.81-pm/make.h        2008-03-25 17:51:10.000000000 +0100
-@@ -346,6 +346,13 @@ extern int strcmpi (const char *,const c
- #define N_(msgid)           gettext_noop (msgid)
- #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
-+/* Handle rlimit */
-+#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
-+# define SET_STACK_SIZE
-+void set_max_stack_rlimit (void);
-+void restore_original_stack_rlimit (void);
-+#endif
-+
- /* Handle other OSs.  */
- #if defined(HAVE_DOS_PATHS)
- # define PATH_SEPARATOR_CHAR ';'
-diff -urp make-3.81/w32/Makefile make-3.81-pm/w32/Makefile
diff --git a/packaging/make-Force-intermediate-targets-to-be-considered-if-their.patch b/packaging/make-Force-intermediate-targets-to-be-considered-if-their.patch
new file mode 100644 (file)
index 0000000..06a920b
--- /dev/null
@@ -0,0 +1,53 @@
+From fbe5b2c9cd612b962836b9391fa2b58c8baed6fc Mon Sep 17 00:00:00 2001
+From: Paul Smith <psmith@gnu.org>
+Date: Mon, 10 Sep 2012 02:36:05 +0000
+Subject: [PATCH] Force intermediate targets to be considered if their
+ non-intermediate parent needs to be remade.  Fixes Savannah
+ bug #30653.
+
+diff --git a/remake.c b/remake.c
+index c0bf709..b1ddd23 100644
+--- a/remake.c
++++ b/remake.c
+@@ -612,6 +612,10 @@ update_file_1 (struct file *file, unsigned int depth)
+                 d->file->dontcare = file->dontcare;
+               }
++            /* We may have already considered this file, when we didn't know
++               we'd need to update it.  Force update_file() to consider it and
++               not prune it.  */
++            d->file->considered = !considered;
+           dep_status |= update_file (d->file, depth);
+diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
+index d4250f0..76d24a7 100644
+--- a/tests/scripts/features/parallelism
++++ b/tests/scripts/features/parallelism
+@@ -214,6 +214,23 @@ rm main.x");
+     rmfiles(qw(foo.y foo.y.in main.bar));
+ }
++# Ensure intermediate/secondary files are not pruned incorrectly.
++# See Savannah bug #30653
++
++utouch(-15, 'file2');
++utouch(-10, 'file4');
++utouch(-5,  'file1');
++
++run_make_test(q!
++.INTERMEDIATE: file3
++file4: file3 ; @mv -f $< $@
++file3: file2 ; touch $@
++file2: file1 ; @touch $@
++!,
++              '--no-print-directory -j2', "touch file3");
++
++#rmfiles('file1', 'file2', 'file3', 'file4');
++
+ if ($all_tests) {
+     # Jobserver FD handling is messed up in some way.
+     # Savannah bug #28189
+-- 
+1.7.9.5
+
diff --git a/packaging/make-disable-broken-tests.diff b/packaging/make-disable-broken-tests.diff
new file mode 100644 (file)
index 0000000..6b6ad56
--- /dev/null
@@ -0,0 +1,141 @@
+Index: make-3.82/tests/scripts/targets/SECONDARY
+===================================================================
+--- make-3.82.orig/tests/scripts/targets/SECONDARY
++++ make-3.82/tests/scripts/targets/SECONDARY
+@@ -121,69 +121,73 @@ all: version2',
+ unlink('version2');
+-# TEST #9 -- Savannah bug #15919
+-# The original fix for this bug caused a new bug, shown here.
+-
+-touch(qw(1.a 2.a));
+-
+-run_make_test('
+-%.c : %.b ; cp $< $@
+-%.b : %.a ; cp $< $@
+-all : 1.c 2.c', '-rR -j',
+-'cp 1.a 1.b
+-cp 2.a 2.b
+-cp 1.b 1.c
+-cp 2.b 2.c
+-rm 1.b 2.b');
+-
+-unlink(qw(1.a 2.a 1.c 2.c));
+-
+-# TEST #10 -- Savannah bug #15919
+-touch('test.0');
+-run_make_test('
+-.SECONDARY : test.1 test.2 test.3
+-
+-test : test.4
+-
+-%.4 : %.int %.3 ; touch $@
+-
+-%.int : %.3 %.2 ; touch $@
+-
+-%.3 : | %.2 ; touch $@
+-
+-%.2 : %.1 ; touch $@
+-
+-%.1 : %.0 ; touch $@', '-rR -j 2',
+-'touch test.1
+-touch test.2
+-touch test.3
+-touch test.int
+-touch test.4
+-rm test.int');
+-
+-# After a touch of test.0 it should give the same output, except we don't need
+-# to rebuild test.3 (order-only)
+-sleep(1);
+-touch('test.0');
+-run_make_test(undef, '-rR -j 2',
+-'touch test.1
+-touch test.2
+-touch test.int
+-touch test.4
+-rm test.int');
+-
+-# With both test.0 and test.3 updated it should still build everything except
+-# test.3
+-sleep(1);
+-touch('test.0', 'test.3');
+-run_make_test(undef, '-rR -j 2',
+-'touch test.1
+-touch test.2
+-touch test.int
+-touch test.4
+-rm test.int');
+-
+-unlink(qw(test.0 test.1 test.2 test.3 test.4));
++# All these tests don't reliably work under high load conditions.
++# Heck, I had two different failures on my workstation, and it's
++# perfectly clear that ordering can differ. - mhopf
++
++# # TEST #9 -- Savannah bug #15919
++# # The original fix for this bug caused a new bug, shown here.
++# 
++# touch(qw(1.a 2.a));
++# 
++# run_make_test('
++# %.c : %.b ; cp $< $@
++# %.b : %.a ; cp $< $@
++# all : 1.c 2.c', '-rR -j',
++# 'cp 1.a 1.b
++# cp 2.a 2.b
++# cp 1.b 1.c
++# cp 2.b 2.c
++# rm 1.b 2.b');
++# 
++# unlink(qw(1.a 2.a 1.c 2.c));
++# 
++# # TEST #10 -- Savannah bug #15919
++# touch('test.0');
++# run_make_test('
++# .SECONDARY : test.1 test.2 test.3
++# 
++# test : test.4
++# 
++# %.4 : %.int %.3 ; touch $@
++# 
++# %.int : %.3 %.2 ; touch $@
++# 
++# %.3 : | %.2 ; touch $@
++# 
++# %.2 : %.1 ; touch $@
++# 
++# %.1 : %.0 ; touch $@', '-rR -j 2',
++# 'touch test.1
++# touch test.2
++# touch test.3
++# touch test.int
++# touch test.4
++# rm test.int');
++# 
++# # After a touch of test.0 it should give the same output, except we don't need
++# # to rebuild test.3 (order-only)
++# sleep(1);
++# touch('test.0');
++# run_make_test(undef, '-rR -j 2',
++# 'touch test.1
++# touch test.2
++# touch test.int
++# touch test.4
++# rm test.int');
++# 
++# # With both test.0 and test.3 updated it should still build everything except
++# # test.3
++# sleep(1);
++# touch('test.0', 'test.3');
++# run_make_test(undef, '-rR -j 2',
++# 'touch test.1
++# touch test.2
++# touch test.int
++# touch test.4
++# rm test.int');
++# 
++# unlink(qw(test.0 test.1 test.2 test.3 test.4));
+ # This tells the test driver that the perl test script executed properly.
+ 1;
diff --git a/packaging/make-fix_whitespace_tokenization.diff b/packaging/make-fix_whitespace_tokenization.diff
new file mode 100644 (file)
index 0000000..135e3be
--- /dev/null
@@ -0,0 +1,30 @@
+Index: make-3.82/function.c
+===================================================================
+--- make-3.82.orig/function.c
++++ make-3.82/function.c
+@@ -1133,19 +1133,14 @@ func_sort (char *o, char **argv, const c
+   /* Find the maximum number of words we'll have.  */
+   t = argv[0];
+-  wordi = 1;
+-  while (*t != '\0')
++  wordi = 0;
++  while ((p = find_next_token (&t, &len)) != 0)
+     {
+-      char c = *(t++);
+-
+-      if (! isspace ((unsigned char)c))
+-        continue;
+-
+-      ++wordi;
+-
+-      while (isspace ((unsigned char)*t))
+-        ++t;
++      ++t;
++      wordi++;
+     }
++  if (! wordi)
++    wordi = 1;
+   words = xmalloc (wordi * sizeof (char *));
diff --git a/packaging/make-glob-faster.patch b/packaging/make-glob-faster.patch
new file mode 100644 (file)
index 0000000..07bbb7e
--- /dev/null
@@ -0,0 +1,116 @@
+Index: read.c
+===================================================================
+RCS file: /sources/make/make/read.c,v
+retrieving revision 1.198
+retrieving revision 1.200
+diff -u -p -u -r1.198 -r1.200
+--- read.c     29 Apr 2011 15:27:39 -0000      1.198
++++ read.c     7 May 2011 14:36:12 -0000       1.200
+@@ -2901,6 +2901,7 @@ parse_file_seq (char **stringp, unsigned
+       const char *name;
+       const char **nlist = 0;
+       char *tildep = 0;
++      int globme = 1;
+ #ifndef NO_ARCHIVES
+       char *arname = 0;
+       char *memname = 0;
+@@ -3109,32 +3110,40 @@ parse_file_seq (char **stringp, unsigned
+       }
+ #endif /* !NO_ARCHIVES */
+-      switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
+-      {
+-      case GLOB_NOSPACE:
+-        fatal (NILF, _("virtual memory exhausted"));
+-
+-      case 0:
+-          /* Success.  */
+-          i = gl.gl_pathc;
+-          nlist = (const char **)gl.gl_pathv;
+-          break;
+-
+-        case GLOB_NOMATCH:
+-          /* If we want only existing items, skip this one.  */
+-          if (flags & PARSEFS_EXISTS)
+-            {
+-              i = 0;
+-              break;
+-            }
+-          /* FALLTHROUGH */
+-
+-      default:
+-          /* By default keep this name.  */
++      /* glob() is expensive: don't call it unless we need to.  */
++      if (!(flags & PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL)
++        {
++          globme = 0;
+           i = 1;
+           nlist = &name;
+-          break;
+-      }
++        }
++      else
++        switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
++          {
++          case GLOB_NOSPACE:
++            fatal (NILF, _("virtual memory exhausted"));
++
++          case 0:
++            /* Success.  */
++            i = gl.gl_pathc;
++            nlist = (const char **)gl.gl_pathv;
++            break;
++
++          case GLOB_NOMATCH:
++            /* If we want only existing items, skip this one.  */
++            if (flags & PARSEFS_EXISTS)
++              {
++                i = 0;
++                break;
++              }
++            /* FALLTHROUGH */
++
++          default:
++            /* By default keep this name.  */
++            i = 1;
++            nlist = &name;
++            break;
++          }
+       /* For each matched element, add it to the list.  */
+       while (i-- > 0)
+@@ -3174,7 +3183,8 @@ parse_file_seq (char **stringp, unsigned
+ #endif /* !NO_ARCHIVES */
+           NEWELT (concat (2, prefix, nlist[i]));
+-      globfree (&gl);
++      if (globme)
++        globfree (&gl);
+ #ifndef NO_ARCHIVES
+       if (arname)
+Index: tests/scripts/functions/wildcard
+===================================================================
+RCS file: /sources/make/make/tests/scripts/functions/wildcard,v
+retrieving revision 1.6
+retrieving revision 1.7
+diff -u -p -u -r1.6 -r1.7
+--- tests/scripts/functions/wildcard   13 Jun 2009 21:21:49 -0000      1.6
++++ tests/scripts/functions/wildcard   7 May 2011 14:36:11 -0000       1.7
+@@ -88,4 +88,16 @@ all: ; @echo $(wildcard xz--y*.7)
+ !,
+               '', "\n");
++# TEST #5: wildcard used to verify file existence
++
++touch('xxx.yyy');
++
++run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
++              '', "file=xxx.yyy\n");
++
++unlink('xxx.yyy');
++
++run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
++              '', "file=\n");
++
+ 1;
diff --git a/packaging/make-library-search-path.diff b/packaging/make-library-search-path.diff
new file mode 100644 (file)
index 0000000..38d6861
--- /dev/null
@@ -0,0 +1,16 @@
+make searches for -lmoo targets in /lib and /usr/lib after mangling
+them with .LIBPATTERNS into libmoo.so
+
+This patch extends to teh search path to /lib64/ and /usr/lib64
+
+--- remake.c   2001/12/11 15:59:03     1.1
++++ remake.c   2001/12/11 16:01:01
+@@ -1252,6 +1252,8 @@
+   static char *dirs[] =
+     {
+ #ifndef _AMIGA
++      "/lib64",
++      "/usr/lib64",
+       "/lib",
+       "/usr/lib",
+ #endif
diff --git a/packaging/make-savannah-bug30612-handling_of_archives.diff b/packaging/make-savannah-bug30612-handling_of_archives.diff
new file mode 100644 (file)
index 0000000..0455a9c
--- /dev/null
@@ -0,0 +1,235 @@
+Index: ChangeLog
+===================================================================
+RCS file: /sources/make/make/ChangeLog,v
+retrieving revision 2.419
+retrieving revision 2.420
+diff -u -p -u -p -r2.419 -r2.420
+--- ChangeLog  10 Aug 2010 07:35:34 -0000      2.419
++++ ChangeLog  14 Aug 2010 02:50:14 -0000      2.420
+@@ -1,3 +1,17 @@
++2010-08-13  Paul Smith  <psmith@gnu.org>
++
++      * NEWS: Accidentally forgot to back out the sorted wildcard
++      enhancement in 3.82, so update NEWS.
++      Also add NEWS about the error check for explicit and pattern
++      targets in the same rule, added to 3.82.
++
++      * main.c (main): Add "oneshell" to $(.FEATURES) (forgot to add
++      this in 3.82!)
++
++      * read.c (parse_file_seq): Fix various errors parsing archives
++      with multiple objects in the parenthesis, as well as wildcards.
++      Fixes Savannah bug #30612.
++
+ 2010-08-10  Paul Smith  <psmith@gnu.org>
+       * main.c (main): Expand MAKEFLAGS before adding it to the
+Index: NEWS
+===================================================================
+RCS file: /sources/make/make/NEWS,v
+retrieving revision 2.109
+retrieving revision 2.110
+diff -u -p -u -p -r2.109 -r2.110
+--- NEWS       28 Jul 2010 05:39:50 -0000      2.109
++++ NEWS       14 Aug 2010 02:50:14 -0000      2.110
+@@ -18,14 +18,6 @@ http://sv.gnu.org/bugs/index.php?group=m
+ * Compiling GNU make now requires a conforming ISO C 1989 compiler and
+   standard runtime library.
+-* WARNING: Future backward-incompatibility!
+-  Wildcards are not documented as returning sorted values, but up to and
+-  including this release the results have been sorted and some makefiles are
+-  apparently depending on that.  In the next release of GNU make, for
+-  performance reasons, we may remove that sorting.  If your makefiles
+-  require sorted results from wildcard expansions, use the $(sort ...)
+-  function to request it explicitly.
+-
+ * WARNING: Backward-incompatibility!
+   The POSIX standard for make was changed in the 2008 version in a
+   fundamentally incompatible way: make is required to invoke the shell as if
+@@ -42,6 +34,21 @@ http://sv.gnu.org/bugs/index.php?group=m
+   existing targets were provided in $?).
+ * WARNING: Backward-incompatibility!
++  Wildcards were not documented as returning sorted values, but the results
++  have been sorted up until this release..  If your makefiles require sorted
++  results from wildcard expansions, use the $(sort ...)  function to request
++  it explicitly.
++
++* WARNING: Backward-incompatibility!
++  In previous versions of make it was acceptable to list one or more explicit
++  targets followed by one or more pattern targets in the same rule and it
++  worked "as expected".  However, this was not documented as acceptable and if
++  you listed any explicit targets AFTER the pattern targets, the entire rule
++  would be mis-parsed.  This release removes this ability completely: make
++  will generate an error message if you mix explicit and pattern targets in
++  the same rule.
++
++* WARNING: Backward-incompatibility!
+   As a result of parser enhancements, three backward-compatibility issues
+   exist: first, a prerequisite containing an "=" cannot be escaped with a
+   backslash any longer.  You must create a variable containing an "=" and
+Index: main.c
+===================================================================
+RCS file: /sources/make/make/main.c,v
+retrieving revision 1.244
+retrieving revision 1.245
+diff -u -p -u -p -r1.244 -r1.245
+--- main.c     10 Aug 2010 07:35:34 -0000      1.244
++++ main.c     14 Aug 2010 02:50:14 -0000      1.245
+@@ -1138,7 +1138,7 @@ main (int argc, char **argv, char **envp
+      a macro and some compilers (MSVC) don't like conditionals in macros.  */
+   {
+     const char *features = "target-specific order-only second-expansion"
+-                           " else-if shortest-stem undefine"
++                           " else-if shortest-stem undefine oneshell"
+ #ifndef NO_ARCHIVES
+                            " archives"
+ #endif
+Index: read.c
+===================================================================
+RCS file: /sources/make/make/read.c,v
+retrieving revision 1.193
+retrieving revision 1.194
+diff -u -p -u -p -r1.193 -r1.194
+--- read.c     13 Jul 2010 01:20:42 -0000      1.193
++++ read.c     14 Aug 2010 02:50:14 -0000      1.194
+@@ -3028,7 +3028,7 @@ parse_file_seq (char **stringp, unsigned
+             {
+               /* This looks like the first element in an open archive group.
+                  A valid group MUST have ')' as the last character.  */
+-              const char *e = p + nlen;
++              const char *e = p;
+               do
+                 {
+                   e = next_token (e);
+@@ -3084,19 +3084,19 @@ parse_file_seq (char **stringp, unsigned
+          Go to the next item in the string.  */
+       if (flags & PARSEFS_NOGLOB)
+         {
+-          NEWELT (concat (2, prefix, tp));
++          NEWELT (concat (2, prefix, tmpbuf));
+           continue;
+         }
+       /* If we get here we know we're doing glob expansion.
+          TP is a string in tmpbuf.  NLEN is no longer used.
+          We may need to do more work: after this NAME will be set.  */
+-      name = tp;
++      name = tmpbuf;
+       /* Expand tilde if applicable.  */
+-      if (tp[0] == '~')
++      if (tmpbuf[0] == '~')
+       {
+-        tildep = tilde_expand (tp);
++        tildep = tilde_expand (tmpbuf);
+         if (tildep != 0)
+             name = tildep;
+       }
+@@ -3152,7 +3152,10 @@ parse_file_seq (char **stringp, unsigned
+             else
+               {
+                 /* We got a chain of items.  Attach them.  */
+-                (*newp)->next = found;
++                if (*newp)
++                  (*newp)->next = found;
++                else
++                  *newp = found;
+                 /* Find and set the new end.  Massage names if necessary.  */
+                 while (1)
+Index: tests/ChangeLog
+===================================================================
+RCS file: /sources/make/make/tests/ChangeLog,v
+retrieving revision 1.150
+retrieving revision 1.151
+diff -u -p -u -p -r1.150 -r1.151
+--- tests/ChangeLog    10 Aug 2010 07:35:34 -0000      1.150
++++ tests/ChangeLog    14 Aug 2010 02:50:14 -0000      1.151
+@@ -1,3 +1,11 @@
++2010-08-13  Paul Smith  <psmith@gnu.org>
++
++      * scripts/features/archives: New regression tests for archive
++      support.  Test for fix to Savannah bug #30612.
++
++      * run_make_tests.pl (set_more_defaults): Set a %FEATURES hash to
++      the features available in $(.FEATURES).
++
+ 2010-08-10  Paul Smith  <psmith@gnu.org>
+       * scripts/features/reinvoke: Ensure command line variable settings
+Index: tests/run_make_tests.pl
+===================================================================
+RCS file: /sources/make/make/tests/run_make_tests.pl,v
+retrieving revision 1.32
+retrieving revision 1.33
+diff -u -p -u -p -r1.32 -r1.33
+--- tests/run_make_tests.pl    13 Jul 2010 01:20:43 -0000      1.32
++++ tests/run_make_tests.pl    14 Aug 2010 02:50:14 -0000      1.33
+@@ -29,6 +29,7 @@
+ # You should have received a copy of the GNU General Public License along with
+ # this program.  If not, see <http://www.gnu.org/licenses/>.
++%FEATURES = ();
+ $valgrind = 0;              # invoke make with valgrind
+ $valgrind_args = '';
+@@ -367,6 +368,8 @@ sub set_more_defaults
+      $parallel_jobs = 1;
+    }
++   %FEATURES = map { $_ => 1 } split /\s+/, `sh -c "echo '\\\$(info \\\$(.FEATURES))' | $make_path -f- 2>/dev/null"`;
++
+    # Set up for valgrind, if requested.
+    if ($valgrind) {
+Index: tests/scripts/features/archives
+===================================================================
+RCS file: tests/scripts/features/archives
+diff -N tests/scripts/features/archives
+--- /dev/null  1 Jan 1970 00:00:00 -0000
++++ tests/scripts/features/archives    14 Aug 2010 02:50:14 -0000      1.1
+@@ -0,0 +1,42 @@
++#                                                              -*-mode: perl-*-
++
++$description = "Test GNU make's archive management features.";
++
++$details = "\
++This only works on systems that support it.";
++
++# If this instance of make doesn't support archives, skip it
++exists $FEATURES{archives} or return -1;
++
++# Create some .o files to work with
++utouch(-60, qw(a1.o a2.o a3.o));
++
++# Very simple
++run_make_test('all: libxx.a(a1.o)',
++              '', "ar rv libxx.a a1.o\nar: creating libxx.a\na - a1.o\n");
++
++# Multiple .o's.  Add a new one to the existing library
++run_make_test('all: libxx.a(a1.o a2.o)',
++              '', "ar rv libxx.a a2.o\na - a2.o\n");
++
++# Touch one of the .o's so it's rebuilt
++utouch(-40, 'a1.o');
++run_make_test(undef, '', "ar rv libxx.a a1.o\nr - a1.o\n");
++
++# Use wildcards
++run_make_test('all: libxx.a(*.o)',
++              '', "#MAKE#: Nothing to be done for `all'.\n");
++
++# Touch one of the .o's so it's rebuilt
++utouch(-30, 'a1.o');
++run_make_test(undef, '', "ar rv libxx.a a1.o\nr - a1.o\n");
++
++# Use both wildcards and simple names
++utouch(-50, 'a2.o');
++run_make_test('all: libxx.a(a3.o *.o)', '',
++              "ar rv libxx.a a3.o\na - a3.o\nar rv libxx.a a2.o\nr - a2.o\n");
++
++rmfiles(qw(a1.o a2.o a3.o libxx.a));
++
++# This tells the test driver that the perl test script executed properly.
++1;
diff --git a/packaging/make-savannah-bug30723-expand_makeflags_before_reexec.diff b/packaging/make-savannah-bug30723-expand_makeflags_before_reexec.diff
new file mode 100644 (file)
index 0000000..b513205
--- /dev/null
@@ -0,0 +1,85 @@
+Index: ChangeLog
+===================================================================
+RCS file: /sources/make/make/ChangeLog,v
+retrieving revision 2.418
+retrieving revision 2.419
+diff -u -p -u -p -r2.418 -r2.419
+--- ChangeLog  7 Aug 2010 08:55:17 -0000       2.418
++++ ChangeLog  10 Aug 2010 07:35:34 -0000      2.419
+@@ -1,3 +1,8 @@
++2010-08-10  Paul Smith  <psmith@gnu.org>
++
++      * main.c (main): Expand MAKEFLAGS before adding it to the
++      environment when re-exec'ing.  Fixes Savannah bug #30723.
++
+ 2010-07-28  Paul Smith  <psmith@gnu.org>
+       Version 3.82 released.
+Index: main.c
+===================================================================
+RCS file: /sources/make/make/main.c,v
+retrieving revision 1.243
+retrieving revision 1.244
+diff -u -p -u -p -r1.243 -r1.244
+--- main.c     19 Jul 2010 07:10:53 -0000      1.243
++++ main.c     10 Aug 2010 07:35:34 -0000      1.244
+@@ -2093,7 +2093,7 @@ main (int argc, char **argv, char **envp
+             const char *pv = define_makeflags (1, 1);
+             char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1);
+             sprintf (p, "MAKEFLAGS=%s", pv);
+-            putenv (p);
++            putenv (allocated_variable_expand (p));
+           }
+         if (ISDB (DB_BASIC))
+Index: tests/ChangeLog
+===================================================================
+RCS file: /sources/make/make/tests/ChangeLog,v
+retrieving revision 1.149
+retrieving revision 1.150
+diff -u -p -u -p -r1.149 -r1.150
+--- tests/ChangeLog    28 Jul 2010 05:39:50 -0000      1.149
++++ tests/ChangeLog    10 Aug 2010 07:35:34 -0000      1.150
+@@ -1,3 +1,8 @@
++2010-08-10  Paul Smith  <psmith@gnu.org>
++
++      * scripts/features/reinvoke: Ensure command line variable settings
++      are preserved across make re-exec.  Tests Savannah bug #30723.
++
+ 2010-07-28  Paul Smith  <psmith@gnu.org>
+       * scripts/targets/POSIX: Compatibility issues with Solaris (and
+Index: tests/scripts/features/reinvoke
+===================================================================
+RCS file: /sources/make/make/tests/scripts/features/reinvoke,v
+retrieving revision 1.7
+retrieving revision 1.8
+diff -u -p -u -p -r1.7 -r1.8
+--- tests/scripts/features/reinvoke    27 Jun 2005 22:18:47 -0000      1.7
++++ tests/scripts/features/reinvoke    10 Aug 2010 07:35:34 -0000      1.8
+@@ -57,9 +57,24 @@ include $(F)',
+ # 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_test(undef, "F=b", "[ -f b ] || echo >> b\nhello\n")
++run_make_test(undef, 'F=b', "[ -f b ] || echo >> b\nhello\n")
+ &rmfiles('a','b','c');
++# Ensure command line variables are preserved properly across re-exec
++# Tests for Savannah bug #30723
++
++run_make_test('
++ifdef RECURSE
++-include foo30723
++endif
++recurse: ; @$(MAKE) -f $(MAKEFILE_LIST) RECURSE=1 test
++test: ; @echo F.O=$(F.O)
++foo30723: ; @touch $@
++',
++              '--no-print-directory F.O=bar', "F.O=bar\n");
++
++unlink('foo30723');
++
+ # This tells the test driver that the perl test script executed properly.
+ 1;
diff --git a/packaging/make-slowdown-parallelism.diff b/packaging/make-slowdown-parallelism.diff
new file mode 100644 (file)
index 0000000..929196a
--- /dev/null
@@ -0,0 +1,135 @@
+Index: tests/scripts/features/double_colon
+===================================================================
+--- tests/scripts/features/double_colon.orig
++++ tests/scripts/features/double_colon
+@@ -23,7 +23,7 @@ all: baz
+ foo:: f1.h ; @echo foo FIRST
+ foo:: f2.h ; @echo foo SECOND
+-bar:: ; @echo aaa; sleep 1; echo aaa done
++bar:: ; @echo aaa; sleep 4; echo aaa done
+ bar:: ; @echo bbb
+ baz:: ; @echo aaa
+Index: tests/scripts/features/parallelism
+===================================================================
+--- tests/scripts/features/parallelism.orig
++++ tests/scripts/features/parallelism
+@@ -27,9 +27,9 @@ else {
+ run_make_test("
+ all : def_1 def_2 def_3
+-def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
+-def_2 : ; \@$sleep_command 2 ; echo THREE
+-def_3 : ; \@$sleep_command 1 ; echo FOUR",
++def_1 : ; \@echo ONE; $sleep_command 12 ; echo TWO
++def_2 : ; \@$sleep_command 8 ; echo THREE
++def_3 : ; \@$sleep_command 4 ; echo FOUR",
+               '-j4', "ONE\nFOUR\nTHREE\nTWO");
+ # Test parallelism with included files.  Here we sleep/echo while
+@@ -38,8 +38,8 @@ def_3 : ; \@$sleep_command 1 ; echo FOUR
+ run_make_test("
+ all: 1 2; \@echo success
+ -include 1.inc 2.inc
+-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
+-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
++1.inc: ; \@echo ONE.inc; $sleep_command 8; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 8; echo TWO' > \$\@
++2.inc: ; \@$sleep_command 4; echo THREE.inc; echo '2: ; \@$sleep_command 4; echo THREE' > \$\@",
+               "-j4",
+               "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
+@@ -57,8 +57,8 @@ ifeq (\$(INC),yes)
+ -include 1.inc 2.inc
+ endif
+-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
+-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
++1.inc: ; \@echo ONE.inc; $sleep_command 8; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 8; echo TWO' > \$\@
++2.inc: ; \@$sleep_command 4; echo THREE.inc; echo '2: ; \@$sleep_command 4; echo THREE' > \$\@",
+               "-j4",
+               "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
+@@ -74,37 +74,37 @@ rmfiles(qw(1.inc 2.inc));
+ run_make_test("
+ export HI = \$(shell \$(\$\@.CMD))
+ first.CMD = echo hi
+-second.CMD = $sleep_command 4; echo hi
++second.CMD = $sleep_command 16; echo hi
+ .PHONY: all first second
+ all: first second
+-first second: ; \@echo \$\@; $sleep_command 1; echo \$\@",
+-              '-j2', "first\nfirst\nsecond\nsecond", 0, 7);
++first second: ; \@echo \$\@; $sleep_command 4; echo \$\@",
++              '-j2', "first\nfirst\nsecond\nsecond", 0, 28);
+ # 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
++.PHONY: all fail.3 fail.6 fail.9 ok
++all: fail.3 ok fail.6 fail.9
+-fail.1 fail.2 fail.3:
++fail.3 fail.6 fail.9:
+       \@sleep \$(patsubst fail.%,%,\$\@)
+       \@echo Fail
+       \@exit 1
+ ok:
+-      \@sleep 4
++      \@sleep 12
+       \@echo Ok done",
+               '-rR -j5', 'Fail
+-#MAKE#: *** [fail.1] Error 1
++#MAKE#: *** [fail.3] Error 1
+ #MAKE#: *** Waiting for unfinished jobs....
+ Fail
+-#MAKE#: *** [fail.2] Error 1
++#MAKE#: *** [fail.6] Error 1
+ Fail
+-#MAKE#: *** [fail.3] Error 1
++#MAKE#: *** [fail.9] Error 1
+ Ok done',
+              512);
+Index: tests/scripts/options/dash-l
+===================================================================
+--- tests/scripts/options/dash-l.orig
++++ tests/scripts/options/dash-l
+@@ -25,7 +25,7 @@ SHELL = /bin/sh
+ define test
+ if [ ! -f test-file ]; then \
+-  echo >> test-file; sleep 2; rm -f test-file; \
++  echo >> test-file; sleep 8; rm -f test-file; \
+ else \
+   echo $@ FAILED; \
+ fi
+@@ -46,7 +46,7 @@ $mkoptions = "-l 0.0001";
+ $mkoptions .= " -j 4" if ($parallel_jobs);
+ # We have to wait longer than the default (5s).
+-&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8);
++&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 32);
+ $slurp = &read_file_into_string (&get_logfile(1));
+ if ($slurp !~ /cannot enforce load limit/) {
+Index: tests/test_driver.pl
+===================================================================
+--- tests/test_driver.pl.orig
++++ tests/test_driver.pl
+@@ -52,7 +52,7 @@ $test_passed = 1;
+ # Timeout in seconds.  If the test takes longer than this we'll fail it.
+-$test_timeout = 5;
++$test_timeout = 20;
+ # Path to Perl
+ $perl_name = $^X;
diff --git a/packaging/make.changes b/packaging/make.changes
deleted file mode 100644 (file)
index 3c34fc6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-* Sun Apr 12 2009 Anas Nashif <anas.nashif@intel.com> 3.81
-- add a link to gmake
-
-* Thu Dec 18 2008 Arjan van de Ven <arjan@linux.intel.com> 3.81
-- Use standard specfile
-
-* Thu Sep 18 2008 Austin Zhang <austin.zhang@intel.com> 3.81
-- add check for the info file before installation
-
-* Wed Jul 23 2008 Xu Li <xu.li@intel.com>
-- add %doc to man/info in %files
diff --git a/packaging/make.manifest b/packaging/make.manifest
deleted file mode 100644 (file)
index 017d22d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
- <request>
-    <domain name="_"/>
- </request>
-</manifest>
index c522f6d..2541c8d 100644 (file)
-# 
-# Do NOT Edit the Auto-generated Part!
-# Generated by: spectacle version 0.22
-# 
-# >> macros
-# << macros
-
-Name:       make
-Summary:    A GNU tool which simplifies the build process for users
-Version:    3.81
-Release:    1
-Group:      Development/Tools
-License:    GPLv2+
-URL:        http://www.gnu.org/software/make/
-Source0:    ftp://ftp.gnu.org/gnu/make/make-%{version}.tar.bz2
-Source100:  make.yaml
-Source1001: packaging/make.manifest 
-Patch0:     make-3.79.1-noclock_gettime.patch
-Patch1:     make-3.80-j8k.patch
-Patch2:     make-3.80-getcwd.patch
-Patch3:     make-3.81-err-reporting.patch
-Patch4:     make-3.81-memory.patch
-Patch5:     make-3.81-rlimit.patch
-Patch6:     make-3.81-newlines.patch
-Patch7:     make-3.81-jobserver.patch
-
+%define release_prefix 154
+
+#
+# spec file for package make
+#
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+Name:           make
+Url:            http://www.gnu.org/software/make/make.html
+Provides:       gmake
+Version:        3.82
+Release:        %{release_prefix}
+Summary:        GNU make
+License:        GPL-2.0+
+Group:          Development/Tools/Building
+Source:         make-%version.tar.bz2
+Patch2:         make-slowdown-parallelism.diff
+Patch3:         make-disable-broken-tests.diff
+Patch4:         make-savannah-bug30723-expand_makeflags_before_reexec.diff
+Patch5:         make-savannah-bug30612-handling_of_archives.diff
+Patch6:         make-fix_whitespace_tokenization.diff
+Patch7:         make-glob-faster.patch
+Patch64:        make-library-search-path.diff
+Patch100:       make-Force-intermediate-targets-to-be-considered-if-their.patch
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
-A GNU tool for controlling the generation of executables and other
-non-source files of a program from the program's source files. Make
-allows users to build and install packages without any significant
-knowledge about the details of the build process. The details about
-how the program should be built are provided for make in the program's
-makefile.
-
-
-
+The GNU make command with extensive documentation.
 
 %prep
-%setup -q -n %{name}-%{version}
-
-# make-3.79.1-noclock_gettime.patch
-%patch0 -p1
-# make-3.80-j8k.patch
-%patch1 -p1
-# make-3.80-getcwd.patch
-%patch2 -p1
-# make-3.81-err-reporting.patch
+%setup -q
+%patch2
 %patch3 -p1
-# make-3.81-memory.patch
-%patch4 -p1
-# make-3.81-rlimit.patch
-%patch5 -p1
-# make-3.81-newlines.patch
+%patch4
+%patch5
 %patch6 -p1
-# make-3.81-jobserver.patch
-%patch7 -p1
-# >> setup
-# << setup
+%patch7 -p0
+if [ %_lib == lib64 ]; then
+%patch64
+fi
+%patch100 -p1
 
 %build
-cp %{SOURCE1001} .
-# >> build pre
-# << build pre
+CFLAGS=$RPM_OPT_FLAGS \
+./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
+make %{?_smp_mflags}
 
-%configure --disable-static \
-    --disable-nls
+%check
+%ifarch %{ix86}
+make check
+%endif
 
-make %{?jobs:-j%jobs}
-
-# >> build post
-# << build post
 %install
-rm -rf %{buildroot}
-# >> install pre
-# << install pre
-%make_install
-
-# >> install post
-ln -sf make %{buildroot}%{_bindir}/gmake
-ln -sf make.1 %{buildroot}%{_mandir}/man1/gmake.1
-rm -rf %{buildroot}%{_infodir}
-# << install post
-
-
-
-
-
-
-%files
-%manifest make.manifest
-%defattr(-,root,root,-)
-# >> files
-%doc NEWS README COPYING AUTHORS
-%{_bindir}/*
-%doc %{_mandir}/man*/*
-# << files
-
-
+make DESTDIR=$RPM_BUILD_ROOT install
+ln -s make $RPM_BUILD_ROOT/usr/bin/gmake
+%find_lang %name
+
+%files -f %name.lang
+%defattr(-,root,root)
+/usr/bin/make
+/usr/bin/gmake
+%doc /usr/share/info/make.info-*.gz
+%doc /usr/share/info/make.info.gz
+%doc /usr/share/man/man1/make.1.gz
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+
+%postun
+%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+
+%changelog
+* Tue Apr 10 2012 meissner@suse.de
+- Faster globbing support from upstream to speed up
+  some large make projects like libreoffice. bnc#753323
+* Tue Oct 11 2011 mhrusecky@suse.cz
+- reverting previous change (qemu binfmt was fixed)
+* Fri Sep 30 2011 mhrusecky@suse.cz
+- using full ar path in tests on arm (fixes build)
+* Tue Apr 19 2011 mhopf@novell.com
+- make-fix_whitespace_tokenization.diff
+  Fix Savannah bug #33125 (bnc #681108):
+  Memory corruption during build of android build system.
+* Tue Sep  7 2010 mhopf@novell.com
+- make-savannah-bug30612-handling_of_archives.diff
+  Fix Savannah bug #30612: handling of archive references with >1 object..
+  Add oneshell to $(.FEATURES).
+  Fix the NEWS file to be accurate.
+- make-savannah-bug30723-expand_makeflags_before_reexec.diff
+  Fix Savannah bug #30723: expand MAKEFLAGS before we re-exec after rebuilding
+  makefiles.
+* Mon Aug 30 2010 mhopf@novell.com
+- Disable some inherrently broken test cases.
+* Mon Aug 23 2010 mhopf@novell.com
+- Update to 3.82
+  - Bug fixes
+  - Backwards Incompatibilities:
+  - Makefiles with .POSIX target: shells called with -e
+  - $? contains prerequisites even if not existent
+  - Prerequisite with '=' cannot be backslash escaped any more
+    (use variable with '=' instead)
+  - Variable names may not contain whitespaces any more
+  - Mixture of explicit and pattern targets didn't always fail
+  - Pattern specific rules application order changed
+  - Library search behavior now compatible with standard linker
+  - New features
+  - --eval=STRING: Evaluate makefile syntax string before makefile
+  - Variable .RECIPEPREFIX: Exchange TAB character
+  - Variable .SHELLFLAGS:   Options passed to shells
+  - Target   .ONESHELL:     Single instance of shell for recipe
+  - Modifier  private:      Suppresses inheritance of variables
+  - Directive undefine:     Undefine variable
+  - Changed features
+  - Multiple modifiers for variables allowed now.
+  - Directive define:       Allow variable assignment operator.
+- Nuke memory-hog-2.diff which didn't apply since 3.81
+- Addapt make-slowdown-parallelism.diff to new parallelization tests
+- Separate make checks into %%checks section
+* Mon Jun 28 2010 jengelh@medozas.de
+- use %%_smp_mflags
+* Mon May 24 2010 coolo@novell.com
+- fix test case
+* Fri Jan  8 2010 ro@suse.de
+- enable parallel build
+* Mon May 14 2007 coolo@suse.de
+- use %%find_lang
+* Tue Oct 31 2006 mhopf@suse.de
+- Reducing race probability in test case features/parallelism even more.
+* Wed Jun  7 2006 mhopf@suse.de
+- Improving occasional build failures due to races in test cases.
+* Mon May 29 2006 mhopf@suse.de
+- Update to 3.81
+  - Bug fixes
+  - New functions: lastword, abspath, realpath, info, flavor, or, and
+  - New variables: .INCLUDE_DIRS, .FEATURES, .DEFAULT_GOAL, MAKE_RESTARTS, $|
+  - Some new features
+  - More POSIX compatibility
+- memory-hog-2.diff doesn't apply any longer
+* Wed Feb  1 2006 kssingvo@suse.de
+- fix for memory-hog.diff (bugzilla#147229)
+* Wed Feb  1 2006 kssingvo@suse.de
+- disabled memory-hog.diff due to crashes (bugzilla#147229)
+* Wed Jan 25 2006 mls@suse.de
+- converted neededforbuild to BuildRequires
+* Thu Jan 19 2006 aj@suse.de
+- Reduce memory usage.
+* Fri Jan  9 2004 adrian@suse.de
+- do not strip binaries during install
+* Tue Sep 30 2003 stepan@suse.de
+- fix "virtual memory exhausted" bug (backport from mainline)
+* Thu Apr 24 2003 ro@suse.de
+- fix install_info --delete call and move from preun to postun
+* Wed Apr 16 2003 coolo@suse.de
+- use BuildRoot
+* Fri Feb  7 2003 ro@suse.de
+- added install_info macros
+* Mon Dec 30 2002 aj@suse.de
+- Update to version 3.80:
+  - number of bug fixes
+  - new features as mentioned in the NEWS file:
+  * New functions $(value ...), $(eval ...)
+  * New feature: order-only prerequesites.
+  * Argument to ifdef can now be a variable.
+  * new option --always-make
+* Tue Sep 17 2002 ro@suse.de
+- removed bogus self-provides
+* Thu May 23 2002 meissner@suse.de
+- Made %%_lib fix generic, do not use ifarch.
+* Mon Apr 22 2002 meissner@suse.de
+- x86_64 needs /*/lib64 as search path too.
+* Fri Apr 19 2002 ke@suse.de
+- Update German translation from
+  http://www.iro.umontreal.ca/contrib/po/teams/PO/de/ [# 15851].
+* Tue Dec 11 2001 froh@suse.de
+- s390x, sparc64 and ia64: extended the 'Dynamic Library Search'
+  default path to search /lib64 and /usr/lib64 as well.
+* Wed Nov 28 2001 fehr@suse.de
+- add mo-files for translations of messages
+* Wed May  9 2001 cstein@suse.de
+- repacked source files with bzip2
+* Fri Nov 17 2000 fehr@suse.de
+- set group tag
+* Mon Jun 26 2000 fehr@suse.de
+- change to new version 3.79.1
+* Wed Apr 19 2000 fehr@suse.de
+- change to new version 3.79
+* Mon Feb 14 2000 fehr@suse.de
+- add compatibility link gmake -> make, needed for oracle install
+* Thu Jan 20 2000 fehr@suse.de
+- security fix for files created in /tmp when using -j
+* Mon Jan 17 2000 schwab@suse.de
+- Update to 3.78.1.
+- Get rid of Makefile.Linux.
+- Run testsuite.
+* Fri Jan 14 2000 schwab@suse.de
+- Fix glob problem.
+* Wed Oct 13 1999 schwab@suse.de
+- Fix file list.
+- Add autoconf to needforbuild
+* Mon Sep 13 1999 bs@suse.de
+- ran old prepare_spec on spec file to switch to new prepare_spec.
+* Tue Feb 23 1999 ro@suse.de
+- updated to 3.77 using fixes by c. gafton
+* Wed Sep 23 1998 ro@suse.de
+- downgrade to 3.76.1 (works at least)
+* Tue Sep 22 1998 ro@suse.de
+- update to 3.77
+* Thu Oct  9 1997 florian@suse.de
+- prepare for autobuild
+  Mon Sep  2 02:48:35 MET DST 1996
+  update to version 3.75
diff --git a/packaging/make.yaml b/packaging/make.yaml
deleted file mode 100644 (file)
index 2fba71e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Name: make
-Summary: A GNU tool which simplifies the build process for users
-Version: 3.81
-Release: 1
-Group: Development/Tools
-License: GPLv2+
-URL: http://www.gnu.org/software/make/
-Sources:
-    - ftp://ftp.gnu.org/gnu/make/make-%{version}.tar.bz2
-Patches:
-    - make-3.79.1-noclock_gettime.patch
-    - make-3.80-j8k.patch
-    - make-3.80-getcwd.patch
-    - make-3.81-err-reporting.patch
-    - make-3.81-memory.patch
-    - make-3.81-rlimit.patch
-    - make-3.81-newlines.patch
-    - make-3.81-jobserver.patch
-Description: |
-    A GNU tool for controlling the generation of executables and other
-    non-source files of a program from the program's source files. Make
-    allows users to build and install packages without any significant
-    knowledge about the details of the build process. The details about
-    how the program should be built are provided for make in the program's
-    makefile.
-
-Configure: configure
-ConfigOptions: 
-    - --disable-nls
index 4d53cce..dbc21b4 100644 (file)
@@ -1,3 +1,16 @@
+2009-09-16  Paul Smith  <psmith@gnu.org>
+
+       * LINGUAS: Added new translation for Italian (it).
+
+2008-05-17  Paul Smith  <psmith@gnu.org>
+
+       * LINGUAS: Added new translation for Lithuanian (lt).
+
+2007-08-15  Paul Smith  <psmith@gnu.org>
+
+       * LINGUAS: The Kinyarwanda (rw) translation has disappeared from
+       the translation site, so remove it.
+
 2006-01-28  Paul D. Smith  <psmith@gnu.org>
 
        * LINGUAS: Added new translation for Vietnamese (vi).
 
        * POTFILES.in, LINGUAS, Makevars: Created.
 \f
-Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 3f0c531..6774713 100644 (file)
@@ -1,5 +1,5 @@
-# Set of available languages: 23 languages
+# Set of available languages: 24 languages
 
-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
+be da de es fi fr ga gl he hr id it ja ko lt nl pl pt_BR ru sv tr uk vi zh_CN
 
 # Can't seem to get en@quot and en@boldquot to build properly?
index 8ad316d..2103ce8 100644 (file)
@@ -1,18 +1,20 @@
 # This is a -*-Makefile-*-
-# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 # Makefile variables for PO directory in any package using GNU gettext.
index 9ac244b..05208bb 100644 (file)
@@ -1,19 +1,20 @@
 # List of source files containing translatable strings.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+# 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ar.c
 arscan.c
index daf42ad..f5a4512 100644 (file)
Binary files a/po/be.gmo and b/po/be.gmo differ
index fd0a4cd..3b94b02 100644 (file)
--- a/po/be.po
+++ b/po/be.po
@@ -6,7 +6,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2003-10-21 11:50+0300\n"
 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
 "Language-Team: Belarusian <i18n@mova.org>\n"
@@ -15,107 +15,108 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 0.9.6\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "спроба выкарыстаць непадтрымліваемую мажлівасьць: \"%s\""
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "дакрананьне да ўдзельніку архіва недаступна на VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: архіў \"%s\" ня йснуе"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: \"%s\" - гэта не рэчаісны архіў"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: удзельнік \"%s\" ня йснуе ў \"%s\""
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
+msgid "lbr$ini_control() failed with status = %d"
 msgstr ""
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr ""
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (назва мусіла быць абрэзана)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Дата %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, рэжым = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Выдаляецца файл \"%s\""
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Выдаляецца файл \"%s\""
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  загады для выкананьня"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (убудаваны):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (з\"%s\", радок %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,218 +124,221 @@ msgstr ""
 "\n"
 "# Тэчкі\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr ""
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Не"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " файлаў, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "не"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr ""
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " так далёка."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr ""
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr ""
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr ""
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr ""
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr ""
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Выдаляюцца прамежкавыя файлы...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: адбітак часу па-за дапушчальнымі межамі, падстаўляецца %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Бягучы час"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Ня мэта:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr ""
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr ""
 
-#: file.c:907
-msgid "#  Command-line target."
-msgstr ""
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
+msgstr "загадны радок"
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr ""
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr ""
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr ""
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr ""
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Так сама робяцца:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Час зьмяненьня ніколі не правяраўся."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Файл ня йснуе."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Файл вельмі стары."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Апошняе зьмяненьне %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Файл быў абноўлены."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Файл ня быў абноўлены."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
-msgstr ""
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Пасьпяхова абноўлены."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr ""
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr ""
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr ""
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr ""
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -342,467 +346,486 @@ msgstr ""
 "\n"
 "# Файлы"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr ""
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr ""
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr ""
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr ""
 
-#: 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:1458
+#, fuzzy, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
 
 #: function.c:1469
 #, fuzzy, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
+
+#: function.c:1474
+#, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "памылка ў CreatePipe() (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2101
+#: function.c:2150
 #, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr ""
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Ня зроблена для гэтае плятформы: функцыя \"%s\""
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr ""
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: выбар \"%s\" - неадназначы.\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: выбар \"--%s\" не дазваляе довад.\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: выбар \"%c%s\" не дазваляе довад.\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: выбар \"%s\" патрабуе довад.\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: нераспазнаны выбар \"--%s\".\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: нераспазнаны выбар \"%c%s\".\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: недапушчальны выбар -- %c.\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: нерэчаісны выбар -- %c.\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: выбар патрабуе довад -- %c.\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: выбар \"-W %s\" - неадназначын.\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: выбар \"-W %s\" не дазваляе довад.\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr ""
 
-#: implicit.c:667
+#: implicit.c:674
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:668
+#: implicit.c:675
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:678
+#: implicit.c:688
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:679
+#: implicit.c:689
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Trying implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:710
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr ""
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr ""
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (часовы файл)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr ""
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Памылка 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr ""
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Памылка %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr ""
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Чакаюцца незавершаныя працы...."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr ""
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr ""
 
-#: job.c:802
+#: job.c:861
 #, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr ""
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr ""
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ""
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr ""
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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
+#: job.c:2127
 #, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: загад не адшуканы"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr ""
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Выбары:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 "  -h, --help                  Друкуе гэтае паведамленьне й выходзіць.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base        Друкуе нутраную базу даньняў make.\n"
 
-#: main.c:333
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet        Не адлюстроўваць загады.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -810,208 +833,213 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                               Выключае -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory        Друкуе бягучую тэчку.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "пусты радок нерэчаісны ў якасьці назвы файла"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr ""
 
-#: main.c:670
+#: main.c:690
 #, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:677
+#: main.c:697
 #, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:685
+#: main.c:705
 #, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:686
+#: main.c:706
 #, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s спынена на 30 сэкундаў..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr ""
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile са стандартнага ўводу зададзены двойчы."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (часовы файл)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (часовы файл)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr ""
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr ""
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "ствараецца трубаправод прац"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Абнаўляюцца make-файлы....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr ""
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr ""
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefile \"%s\" ня знойдзен"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr ""
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr ""
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (часовы файл): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr ""
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Няма мэт"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1020,7 +1048,7 @@ msgstr ""
 "\n"
 "Гэта праграма пабудавана для %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1029,495 +1057,487 @@ msgstr ""
 "\n"
 "Гэта праграма падубавана для %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Паведамляйце пра памылкі на <bug-make@gnu.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "выбар \"-%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 ""
-"%s    Гэта вольнае праграмнае забесьпячэньне; глядзіце зыходны код для\n"
-"%sпагадненьня аб распаўсюджваньні. Ня йснуе НІЯКАЕ гарантыі, нават аб\n"
-"%sмагчымасьці выкарыстньня зь якой небудзь мэтай.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Гэта праграма пабудавана для %s\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Гэта праграма падубавана для %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: уваход у невядомую тэчку"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: выхад зь невядомае тэчкі"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: уваход у тэчку \"%s\"\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: выхад з тэчкі \"%s\"\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: уваход у невядомую тэчку"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: выхад зь невядомае тэчкі"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: уваход у тэчку \"%s\"\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: выхад з тэчкі \"%s\"\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ""
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Невядомая памылка %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "віртуальная памяць вычарпана"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: карыстальнік %lu (насамрэч %lu), група %lu (насамрэч %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr ""
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr ""
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr ""
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "Памылка шыны"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Чытаюцца make-файлы...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Чытаецца make-файл \"%s\""
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (няма дапомнае мэты)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (пошук шляху)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr ""
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr ""
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr ""
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr ""
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr ""
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr ""
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "нерэчаісная дырэктыва \"override\""
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+msgid "recipe commences before first target"
 msgstr ""
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "прапушчана правіла перад загадамі"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "прапушчан падзяляльнік %s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (вы маеце на ўвазе TAB замест 8 прагалаў?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr ""
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr ""
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr ""
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "прапушчаны \"endif\""
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr ""
+
+#: read.c:1367
+msgid "extraneous text after `define' directive"
 msgstr ""
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "прапушчаны \"endef\", незавершаны \"define\""
 
-#: read.c:1454
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr ""
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr ""
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "зьнешні \"%s\""
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr ""
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr ""
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr ""
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
+msgid "warning: overriding recipe for target `%s'"
 msgstr ""
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr ""
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Нічога ня было зроблена для \"%s\"."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "\"%s\" - састарэл(а)."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr ""
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr ""
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr ""
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Файл \"%s\" ужо быў разгледжаны.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Усё яшэ абнаўляецца файл \"%s\".\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Скончана абнаўленьне файла \"%s\".\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Файл \"%s\" ня йснуе.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr ""
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr ""
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr ""
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
+msgstr "Нічога ня было зроблена для \"%s\"."
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr ""
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr ""
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr ""
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr ""
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ""
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr ""
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr ""
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr ""
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr ""
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr ""
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
+msgid "Recipe of `%s' is being run.\n"
 msgstr ""
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr ""
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr ""
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr ""
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr ""
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Увага! Файл \"%s\" мае час зьмяненьня, які шчэ не надышоў."
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Увага! Файл \"%s\" мае час зьмяненьня %.2g с, які шчэ не надышоў."
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ""
@@ -1527,250 +1547,257 @@ msgstr ""
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " тэрмінал."
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "невядомы сыгнал"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr ""
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr ""
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Недапушчальная інструкцыя"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr ""
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr ""
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr ""
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Забіты"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Памылка шыны"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr ""
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Дрэнны сыстэмны выклік"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Зламаны трубаправод"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr ""
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Завершаны"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr ""
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr ""
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr ""
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr ""
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Спынен"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Спынен (tty увод)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Спынен (вывад на tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Спынена (сыгнал)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr ""
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr ""
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Акно зьменена"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr ""
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "магчым У/В"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr ""
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr ""
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr ""
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Сыгнал пагрозы"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Запыт аб зьвестках"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+
+#: variable.c:1541
 msgid "default"
 msgstr "дапомны"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "асяродзьдзе"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "make-файл"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "загадны радок"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "дырэктыва \"override\""
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "аўтаматычна"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (з \"%s\", радок %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1778,33 +1805,33 @@ msgstr ""
 "\n"
 "# Пераменныя\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "Увага! Нявызначаная пераменная \"%.*s\""
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
+msgid "sys$search() failed with %d\n"
 msgstr ""
 
 #: vmsjobs.c:71
@@ -1812,95 +1839,100 @@ msgstr ""
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Невядомы ўбудаваны загад \"%s\".\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Памылка! Парожні загад.\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Перанакіраваны ўвод з %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr ""
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Перанакіраваны вывад у %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Перанакіраваны вывад у %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr ""
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr ""
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr ""
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
 "# %u `vpath' search paths.\n"
 msgstr ""
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1910,6 +1942,18 @@ msgstr ""
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Не задавайце -j ці --jobs, калі sh.exe недаступны."
 
+#~ 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 ""
+#~ "%s    Гэта вольнае праграмнае забесьпячэньне; глядзіце зыходны код для\n"
+#~ "%sпагадненьня аб распаўсюджваньні. Ня йснуе НІЯКАЕ гарантыі, нават аб\n"
+#~ "%sмагчымасьці выкарыстньня зь якой небудзь мэтай.\n"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "нерэчаісная дырэктыва \"override\""
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "няма назвы файла для \"%sinclude\""
 
index 1c357cc..7a5badb 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index 1a14e30..de34eb7 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -6,7 +6,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2002-10-05 22:56+0200\n"
 "Last-Translator: Byrial Ole Jensen <byrial@image.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
@@ -14,107 +14,108 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "forsøg på at bruge en ikke understøttet facilitet: '%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "'berør arkivmedlem' er ikke tilgængelig på VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "berør: Arkivet '%s' findes ikke"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "berør: '%s' er ikke et gyldigt arkiv"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "berør: Medlemmet '%s' findes ikke i '%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "berør: Forkert returkode fra ar_member_touch på '%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_module kunne ikke udtrække modulinformation, status = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control fejlede med status = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "kan ikke åbne biblioteket '%s' for at søge medlemmet '%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Medlem '%s'%s: %ld byte ved %ld (/%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (navnet kan være forkortet)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Tidsstempel %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modus = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Afbrydelse.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Arkivmedlemmet '%s' er måske falsk; ikke slettet"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Arkivmedlemmet '%s' er måske falsk; ikke slettet"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Sletter filen '%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Sletter filen '%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  kommandoer at udføre"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (indbyggede):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (fra '%s', linje %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -122,219 +123,222 @@ msgstr ""
 "\n"
 "# Filkataloger\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: kunne ikke undersøges med stat.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (nøgle %s, mtime %d): kunne ikke åbnes.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (enhed %d, inode [%d,%d,%d]): kunne ikke åbnes.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (enhed %ld, inode %ld): kunne ikke åbnes.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (nøgle %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (enhed %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (enhed %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Ingen"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " filer, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "ingen"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " umuligheder"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " indtil videre."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " umuligheder i %lu kataloger.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Rekursiv variabel '%s' refererer (i sidste ende) til sig selv"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "uafsluttet variabelreference"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Kommandoer var angivet for fil '%s' i %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "Kommandoer for fil '%s' blev fundet ved implicit regel-søgning,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "men '%s' bliver nu anset som samme fil som '%s'."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Kommandoer for '%s' vil blive ignoreret til fordel for dem til '%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "kan ikke ændre enkelt-kolon '%s' til dobbelt-kolon '%s'"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "kan ikke ændre dobbelt-kolon '%s' til enkelt-kolon '%s'"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Sletter mellemfil '%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Sletter mellemfiler ...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tidsstempel i forkert område; bruger %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Aktuel tid"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Ikke et mål:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Værdifuld fil (forudsætning for .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Falsk mål (forudsætning for .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Kommandolinjemål."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  En uangivet makefil, evt. en fra MAKEFILES."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Der er udført implicit regelsøgning."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Der er ikke udført implicit regelsøgning."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Implicit/statisk mønsterstamme: '%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Filen er en mellemfil."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Skaber også:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Ændringstid ikke tjekket."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Filen findes ikke."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Filen er meget gammel."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Sidst ændret %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Filen er blevet opdateret."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Filen er ikke blevet opdateret."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Kommandoer udføres nu (DETTE ER EN FEJL)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Kommandoer for afhængigheder udføres nu (DETTE ER EN FEJL)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Opdateret med godt resultat."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Behøver opdatering (-q er sat)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Opdatering mislykkedes."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Ugyldig værdi i 'update_status'-felt!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Ugyldig værdi i 'command_state'-felt!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -342,7 +346,7 @@ msgstr ""
 "\n"
 "# Filer"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -352,262 +356,263 @@ msgstr ""
 "# Statistik for fil-hash-spande:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "ikke-numerisk første argument til 'word'-funktionen"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "første argument til 'word'-functionen skal være større end 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "ikke-numerisk første argument til 'wordlist'-funktionen"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "ikke-numerisk andet argument til 'wordlist'-funktionen"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) mislykkedes (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) mislykkedes (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() mislykkedes (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Afrydder midlertidig batchfil %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Uimplementeret på denne platform: funktion '%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "Uafsluttet kald til funktionen '%s'; manglende '%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: tilvalg '%s' er flertydigt\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: tilvalg '--%s' tillader ikke et argument\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: tilvalg '%c%s' tillader ikke et argument\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s tilvalg '%s' kræver et argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: ikke genkendt tilvalg '--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: ikke genkendt tilvalg '%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ulovligt tilvalg -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ugyldigt tilvalg -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: tilvalg kræver et argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: tilvalg '-W %s' er flertydigt\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: tilvalg '-W %s' tillader ikke et argument\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "kan ikke tildele %ld byte til hash-spande: hukommelsen opbrugt"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Fyldning=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Omgrupperinger=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Sammenstød=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Kigger efter en implicit regel for '%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Kigger efter en implicit arkivmedlemsregel for '%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Undgår rekursion i implicitte regler.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Prøver mønsterregel med stammen '%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Afviser umulig implicit forudsætning '%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Afviser umulig regelforudsætning '%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Prøver implicit forudsætning '%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Afviser umulig implicit forudsætning '%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Prøver regelforudsætning '%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Prøver implicit forudsætning '%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Fandt forudsætning '%s' som VPATH '%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Kigger efter en regel med mellemfil '%s'.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (midlertidig fil)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Fejl 0x%x (ignoreret)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Fejl 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Fejl %d (ignoreret)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Fejl %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (core-fil efterladt)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Venter på uafsluttede job...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Levende barn 0x%08lx (%s), PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (eksternt)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Høster taberbarn 0x%08lx, PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Høster vinderbarn 0x%08lx, PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Afrydder midlertidig jobfil %s\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Fjerner barn 0x%08lx, PID %ld%s fra kæde.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "write jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Frigav symbol for barn 0x%08lx (%s).\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() fejlede ved igangsætning af proces (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -616,96 +621,108 @@ msgstr ""
 "\n"
 "Talte %d argumenter i fejlet igangsætning\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Sætter barn 0x%08lx (%s), PID %ld%s i kæden.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Fik symbol for barn 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "read jobs pipe"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Ingen grund til at genskabe målet '%s'"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "kan ikke gennemtvinge belastningsgrænser på dette styrestystem"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "kan ikke gennemtvinge belastningsgrænse: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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() fejlede ved igangsætning af proces (e=%d)\n"
-
-#: job.c:2046
+#: job.c:2127
 #, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "make høstede børne-pid %d, venter endnu på pid %d\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommando ikke fundet"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s; Skalprogram ikke fundet"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL ændret (var '%s', nu '%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Opretter midlertidig jobfil %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Tilvalg:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignoreret af hensyn til kompabilitet.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Skab alle mål betingelsesløst.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -713,19 +730,19 @@ msgstr ""
 "  -C KATALOG, --directory=KATALOG\n"
 "                              Skift allerførst til KATALOG.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d                          Udskriv en masse fejlsøgningsinformation.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAG]              Udskriv forskellige slags "
 "fejlsøgningsinformation.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -733,7 +750,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              Miljøvariable har forrang for makefiler.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -741,15 +763,16 @@ msgstr ""
 "  -f FIL, --file=FIL, --makefile=FIL\n"
 "                              Læs FIL som en makefil.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Udskriv denne besked og afslut.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Ignorér fejl fra kommandoer.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -757,7 +780,7 @@ msgstr ""
 "  -I KATALOG, --include-dir=KATALOG\n"
 "                              Søg i KATALOG efter inkluderede makefiler.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -765,13 +788,13 @@ msgstr ""
 "  -j [N], --jobs[=N]          Tillad N samtidige job; uendelig mange job "
 "uden argument.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Fortsæt selvom nogen mål ikke kan skabes.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -781,23 +804,24 @@ msgstr ""
 "                              Start ikke flere job medmindre belastningen er "
 "under N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Udfør ikke nogen kommandoer; udskriv dem "
 "bare.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -807,32 +831,34 @@ msgstr ""
 "                              Anse FIL som værende meget gammel og genskab "
 "den ikke.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Udskriv makes interne database.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Udfør ingen kommandoer; afslutningskoden "
 "fortæller status.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Slå de indbyggede implicitte regler fra.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "  -R, --no-builtin-variables  Slå de indbyggede variabelværdier fra.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Udskriv ikke kommander.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -840,21 +866,21 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Slår -k fra.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Berør mål i stedet for at genskabe dem.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               Udskriv makes versionnummer og afslut.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Udskriv det aktuelle katalog.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -862,7 +888,7 @@ msgstr ""
 "  --no-print-directory        Slå -w fra, selv hvis det var slået til "
 "automatisk.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -870,35 +896,35 @@ msgstr ""
 "  -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n"
 "                              Anse FIL som værende nyskabt.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 "  --warn-undefined-variables  Advar når en udefineret variabel bruges.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "en tom streng er ugyldig som filnavn"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "ukendt fejlsøgningsniveau-specifikation '%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: Interrupt/undtagelse fanget (kode = 0x%x, addr = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Uhåndteret undtagelsesfilter kaldt fra program %s\n"
@@ -906,155 +932,160 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Adgangskrænkelse: skriveoperation på adresse %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Adgangskrænkelse: læseoperation på adresse %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell sætter default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell stisøgning sætter default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s er standset i 30 sekunder..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "udført sleep(30). Fortsætter.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefil fra standard-ind er angivet to gange."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (midlertidig fil)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (midlertidig fil)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Parallelle job (-j) er ikke understøttet på denne platform."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Sætter tilbage til enkelt job-tilstand (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "intern fejl: flere '--jobserver-fds'-tilvalg"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "intern fejl: ugyldig '--jobserver-fds'-streng '%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj '+' til "
 "ophavsmakeregel."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "oprettelse af jobledning"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "klargøring af jobserver-ledning"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Opdaterer makefiler....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefilen '%s' får måske make til at gå i ring; genskaber den ikke.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Genskabelse af makefilen '%s' mislykkedes."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Inkluderet makefil '%s' blev ikke fundet."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefil '%s' blev ikke fundet."
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Kunne ikke skifte tilbage til det originale katalog."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Udfører igen:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (midlertidig fil): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Ingen angivne mål og ingen makefil fundet"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Ingen mål"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Opdaterer endemål....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "advarsel: Fejl i urets tid opdaget. Din bygning kan være ukomplet."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Brug: %s [tilvalg] [mål] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1063,7 +1094,7 @@ msgstr ""
 "\n"
 "Dette program er bygget til %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1072,52 +1103,46 @@ msgstr ""
 "\n"
 "Dette program er bygget til %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
 
-#: 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 ""
-"%sDette er frit programmel; se kildeteksten for kopieringsbetingelser.\n"
-"%sDer er INGEN garanti; end ikke for SALGBARHED eller EGNETHED TIL NOGET\n"
-"%sBESTEMT FORMÅL.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Dette program er bygget til %s\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Dette program er bygget til %s (%s)\n"
 
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
 # %s giver dato og klokkeslæt
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1127,7 +1152,7 @@ msgstr ""
 "# Makedatabase, udskrevet %s"
 
 # %s giver dato og klokkeslæt
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1136,307 +1161,303 @@ msgstr ""
 "\n"
 "# Afsluttet makedatabase %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Går til et ukendt katalog"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Forlader et ukendt katalog"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Går til katalog '%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Forlader katalog '%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Går til et ukendt katalog"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Forlader et ukendt katalog"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Går til katalog '%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Forlader katalog '%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Stop.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Ukendt fejl %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "virtuel hukommelse opbrugt"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: bruger %lu (reelt %lu), gruppe %lu (reelt %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Indledende adgang"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Brugeradgang"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Make-adgang"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Barneadgang"
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "Omdirigeret fejl to %s\n"
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "write jobserver"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Læser makefiler...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Læser makefil '%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (ingen standard-endemål)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (søgesti)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (ikke nødvendig)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ingen ~-udfoldning)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "Ugyldig syntaks i betingelse"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "fremmed 'endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "tomt variabelnavn"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "tomt 'override'-direktiv"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "ugyldigt 'override'-direktiv"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "kommandoer begynder før det første mål"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "manglende regel før kommandoer"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "manglende adskiller%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (mente du TAB i stedet for 8 mellemrum?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "manglende målmønster"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "flere målmønstre"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "målmønster indeholder ingen '%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "manglende 'endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "tomt variabelnavn"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Fremmed tekst efter 'endef'-direktiv"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "manglende 'endef', uafsluttet 'define'"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Fremmed tekst efter 'endef'-direktiv"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Fremmed tekst efter '%s'-direktiv"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "fremmed '%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "kun én 'else' per betingelse"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Misdannet per-mål variabeldefinition"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "blandede implicitte og statiske mønsterregler"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "blandede implicitte og normale regler"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "mål '%s' passer ikke til målmønstret"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "målfil '%s' har både :- og ::-angivelser"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "target '%s' optræder mere end én gang i samme regel."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "advarsel: tilsidesætter kommandoer for mål '%s'"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "advarsel: ignorerer gamle kommadoer for mål '%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Ingenting at gøre for '%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "'%s' er tidssvarende."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Beskærer fil '%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sIngen regel til at skabe mål '%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sIngen regel til at skabe mål '%s' som behøves af '%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Overvejer målfil '%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Opdatering af fil '%s' er forgæves prøvet for nylig.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Fil '%s' er allerede overvejet.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Opdaterer stadig fil '%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Opdatering af fil '%s' afsluttet.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Filen '%s' findes ikke.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1444,132 +1465,137 @@ msgstr ""
 "*** Advarsel: .LOW_RESOLUTION_TIME-fil '%s' har et tidsstempel med høj "
 "opløsning"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Fandt en implicit regel for '%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Ingen implicit regel for '%s' fundet.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Bruger standardkommandoer for '%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Cirkulær %s <- %s afhængighed opgivet."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Afsluttet forudsætningerne for målfil '%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Forudsætningerne for '%s' er ved at blive skabt.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Opgiver målfil '%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Målet '%s' ikke genskabt på grund af fejl."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Forudsætningen '%s' angiver kun rækkefølgen ift. målet '%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Forudsætningen '%s' for målet '%s' findes ikke.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Forudsætningen '%s' er nyere end målet '%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Forudsætningen '%s' er ældre end målet '%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Målet '%s' er med dobbelt-kolon og har ingen forudsætninger.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Ingen kommandoer til '%s' og ingen forudsætninger er ændrede.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Skaber '%s' pga. \"always-make\"-flag.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Ingen grund til at genskabe målet '%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; bruger VPATH-navnet '%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Skal genskabe målet '%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr " Ignorerer VPATH-navnet '%s'.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Kommandoer til '%s' er ved at blive udført.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Genskabelse af målfil '%s' mislykkedes.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Målfil '%s' genskabt.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Med -q trænger målfilen '%s' til at blive genskabt.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Bruger standardkommandoer for '%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Advarsel: Ændringstiden for filen '%s' er i fremtiden"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Advarsel: Ændringstiden for filen '%s' er %.2g s i fremtiden"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS-element '%s' er ikke et mønster"
@@ -1582,7 +1608,7 @@ msgstr ".LIBPATTERNS-element '%s' er ikke et m
 msgid "Customs won't export: %s\n"
 msgstr "Customs kan ikke eksporteres: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1590,7 +1616,7 @@ msgstr ""
 "\n"
 "# Implicitte regler."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1598,7 +1624,7 @@ msgstr ""
 "\n"
 "# Ingen implicitte regler."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1607,233 +1633,244 @@ msgstr ""
 "\n"
 "# %u implicitte regler, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminale."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "FEJL: num_pattern_rules forkert! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "ukendt signal"
 
 # De fleste af signalnavnene fra signame.c er kopieret fra libc.da.po,
 # kun ganske enkelte findes ikke der.
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Læg på"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Afbrudt"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Afslut"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Ulovlig instruktion"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Sporings-/stoppunkts-fælde"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Afbrudt"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT_fælde"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Emulatorfælde"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Undtagelsestilfælde ved flydendetals-operation"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Dræbt"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Busfejl"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Lagersegmentfejl"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Ugyldigt systemkald"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Røret blev brudt"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarmen gik"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Termineret"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Brugerdefineret signal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Brugerdefineret signal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Barnet afsluttet"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Strømmen gik"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Stoppet"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Stoppet (ville læse fra tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Stoppet (ville skrive til tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Stoppet (signal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Begrænsning af CPU-tid overskredet"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Grænse for filstørrelse overskredet"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtuel tidsgrænse overskredet"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profileringstiden udløb"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Vinduet blev ændret"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Fortsættes"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Kritisk I/O-tilstand"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O mulig"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Resurse tabt"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Faresignal"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Informationsforespørgsel"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Flydendetalshjælpeprocessor ikke tilgængelig"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# Statistik for fil-hash-spande:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "forvalgt"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "miljø"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefil"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "miljø med -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "kommandolinje"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "'override'-direktiv"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatisk"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (fra '%s', linje %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# Statistik for variabelsæt-hash-spande:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1841,7 +1878,7 @@ msgstr ""
 "\n"
 "# Variabler\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1850,7 +1887,7 @@ msgstr ""
 "\n"
 "# Mønsterspecifikke variabelværdier"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1858,7 +1895,7 @@ msgstr ""
 "\n"
 "# Ingen mønsterspecifikke variabelværdier."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1867,14 +1904,14 @@ msgstr ""
 "\n"
 "# %u mønsterspecifikke variabelværdier"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "advarsel: udefineret vaiabel '%.*s'"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search mislykkedes med %d\n"
 
 #: vmsjobs.c:71
@@ -1882,73 +1919,78 @@ msgstr "sys$search mislykkedes med %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Advarsel: Tom omdirigering\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "intern fejl: '%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-advarsel, CTRL-Y vil efterlade underproces(ser).\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-advarsel, du kan blive nødt til at genetablere CTRL-Y-behandling fra DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Ukendt indbygget kommando '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fejl, tom kommando\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Omdirigeret inddata from %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Omdirigeret fejl to %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Omdirigeret uddata til %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Omdirigeret uddata til %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Udfører i stedet %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fejl ved spawn, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1956,11 +1998,11 @@ msgstr ""
 "\n"
 "# VPATH-søgestier\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Ingen 'vpath'-søgestier"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1969,7 +2011,7 @@ msgstr ""
 "\n"
 "# %u 'vpath'-søgestier.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1977,7 +2019,7 @@ msgstr ""
 "\n"
 "# Ingen generel ('VPATH'-variabel) søgesti."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1993,12 +2035,33 @@ msgstr ""
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr "Fik et SIGCHLD; %u uhøstede børn.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-advarsel, CTRL-Y vil efterlade underproces(ser).\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Angiv ikke -j eller --jobs hvis sh.exe ikke er tilgængelig."
 
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Sætter make tilbage til enkelt job-tilstand."
 
+#~ 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 ""
+#~ "%sDette er frit programmel; se kildeteksten for kopieringsbetingelser.\n"
+#~ "%sDer er INGEN garanti; end ikke for SALGBARHED eller EGNETHED TIL NOGET\n"
+#~ "%sBESTEMT FORMÅL.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "fremmed 'endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "tomt 'override'-direktiv"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "ugyldigt 'override'-direktiv"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "intet filnavn for '%sinclude'"
 
index 98b9f9b..ef209cf 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 41acd95..4e9c506 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -14,7 +14,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2005-10-20 20:55+0200\n"
 "Last-Translator: Karl Eichwalder <ke@suse.de>\n"
 "Language-Team: German <de@li.org>\n"
@@ -22,33 +22,33 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: »%s«"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr ""
 "VMS stellt nicht die Möglichkeit einer Änderung \n"
 "der Zeitmarken von Archiveinträgen zur Verfügung"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Archiv »%s« existiert nicht"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: »%s« ist kein gültiges Archiv"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: Eintrag »%s« existiert nicht in »%s«"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
@@ -56,81 +56,82 @@ msgstr ""
 "von ar_member_touch auf »%s«"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "»lbr$set_module« konnte keine Modulinformation auslesen; Status = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "»lbr$ini_control« schlug mit Status = %d fehl"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr ""
 "Konnte die Bibliothek »%s« auf der Suche \n"
 "nach dem Eintrag »%s« nicht öffnen"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 "Eintrag »%s« %s: \n"
 "%ld Byte an Position %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (der Name ist möglicherweise gekürzt)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  Nutzer-ID = %d, Gruppen-ID = %d, Modus = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Abbruch.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Archiveintrag »%s« ist wohl falsch; nicht gelöscht"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Archiveintrag »%s« ist wohl falsch; nicht gelöscht"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Datei »%s« wird gelöscht"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Datei »%s« wird gelöscht"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  Auszuführende Kommandos"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (eingebaut):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (aus »%s«, Zeile %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -138,238 +139,241 @@ msgstr ""
 "\n"
 "# Verzeichnisse\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: Konnte den Status nicht feststellen.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 "# %s ( Schlüssel (key) %s,  letzte Änderung (mtime) %d): \n"
 "Konnte nicht geöffnet werden.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 "# %s (Gerät %d, I-Knoten (inode) [%d,%d,%d]): \n"
 "Konnte nicht geöffnet werden.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 "# %s (Gerät %ld, I-Knoten (inode) %ld): \n"
 "Konnte nicht geöffnet werden.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (Schlüssel (key) %s,  letzte Änderung (mtime) %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (Gerät %d, I-Knoten (inode) [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (Gerät %ld, I-Knoten (inode) %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Keine"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " Dateien, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "keine"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " Unmöglichkeiten"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " bisher."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Rekursive Variable »%s« referenziert sich (schließlich) selbst"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "Nicht abgeschlossene Variablenreferenz"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr ""
 "Die Kommandos wurden für die Datei »%s« angegeben \n"
 "an der Stelle %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 "Die Kommandos für die Datei »%s« wurden aufgrund \n"
 "der Suche nach impliziten Regeln gefunden,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
 "aber »%s« wird jetzt als dieselbe Datei \n"
 "wie »%s« betrachtet."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 "Die Kommandos für »%s« werden ignoriert, \n"
 "die für »%s« werden bevorzugt."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 "»%s« mit einfachem Doppelpunkt kann nicht in \n"
 "»%s« mit doppeltem Doppelpunkt geändert werden"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 "»%s« mit doppeltem Doppelpunkt kann nicht in \n"
 "»%s« mit einfachem Doppelpunkt geändert werden"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Löschen der Zwischendatei »%s«"
 
-#: file.c:385
+#: file.c:396
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** Löschen der Zwischendatei »%s«"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Zeitstempel außerhalb der Reihenfolge; %s wird ersetzt"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Aktuelle Zeit"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Dies ist kein Ziel:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Wertvolle Datei (Voraussetzung von .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Vorgetäuschtes Ziel (Voraussetzung von .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Kommandozeilen-Ziel (target)."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Ein Standardwert oder MAKEFILES »make«-Steuerdatei."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Suche nach impliziten Regeln wurde durchgeführt."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Suche nach impliziten Regeln wurde nicht durchgeführt."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Ersetzung für implizites/statisches Muster: »%s«\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Datei ist ein Zwischenschritt in den Abhängigkeiten."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Erzeugt außerdem:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Zeit der letzten Änderung wurde nicht überprüft."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Die Datei existiert nicht."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Datei ist sehr alt."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Zuletzt geändert %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Datei wurde aktualisiert."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Datei wurde nicht aktualisiert."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Derzeit laufende Befehle (DAS IST EIN BUG)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Derzeit laufende Befehle für Abhängigkeiten (DAS IST EIN BUG)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Erfolgreich aktualisiert."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Eine Aktualisierung ist notwendig (-q ist angegeben)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Aktualisierung fehlgeschlagen."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Ungültiger Wert in »update_status«-Eintrag!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Ungültiger Wert im »command_state«-Eintrag!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -377,268 +381,269 @@ msgstr ""
 "\n"
 "# Dateien"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "Nicht-numerisches erstes Argument zur  »word«-Funktion"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "Erstes Argument zur  »word«-Funktion muss größer als 0 sein"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "Nicht-numerisches erstes Argument für die »wordlist«-Funktion"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "Nicht-numerisches zweites Argument zur »wordlist«-Funktion"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "»create_child_process«: »DuplicateHandle(In)« schlug fehl (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "»create_child_process«: »DuplicateHandle(Err)« schlug fehl (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "»CreatePipe()« schlug fehl (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() schlug fehl\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Lösche temporäre Stapelverarbeitungsdatei %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Zuwenig Argumente (%d) für die Funktion »%s«"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion »%s«"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "Nicht beendeter Aufruf der Funktion »%s«: »%c« fehlt"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: Option »%s« ist mehrdeutig\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: Option »--%s« erlaubt kein Argument\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: Option »%c%s« erlaubt kein Argument\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: Option »%s« erfordert ein Argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: unerkannte Option »--%s«\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: unerkannte Option »%c%s«\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: unerlaubte Option -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ungültige Option -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: Option erfordert ein Argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: Option »-W %s« ist mehrdeutig\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: Option »-W %s« erlaubt kein Argument\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Suche nach einer impliziten Regel für »%s«.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Suche nach einer impliziten Regel für Archiveinträge für »%s«.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Vermeide Rekursion in den impliziten Regeln.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Versuche Muster-Regel mit Ersetzung »%.*s«.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Unmögliche implizite Voraussetzung »%s« abgelehnt.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Unmögliche Voraussetzung »%s« abgelehnt.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Versuche implizite Voraussetzung »%s«.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Unmögliche implizite Voraussetzung »%s« abgelehnt.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Versuche Voraussetzung »%s«.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Versuche implizite Voraussetzung »%s«.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Fand die Voraussetzung »%s« als VPATH »%s«\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Suche nach einer Regel mit der Zwischendatei »%s«.\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "temporäre Datei kann nicht erzeugt werden\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Fehler 0x%x (ignoriert)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Fehler 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Fehler %d (ignoriert)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Fehler %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (Speicherauszug erstellt)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Warte auf noch nicht beendete Prozesse..."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Aktiver Kindprozess 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (entfernt)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Sammle erfolglosen Kindprozess 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Sammle erfolgreichen Kindprozess 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Lösche temporäre Stapelverarbeitungsdatei »%s«\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Entferne Kindprozess 0x%08lx PID %ld %s aus der Kette.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "Schreibe Job-Server"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Marke des Kindprozesses 0x%08lx PID (%s) freigegeben.\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "»process_easy()« konnte den Prozess nicht starten (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -647,100 +652,112 @@ msgstr ""
 "\n"
 "%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Nehme Kindprozess 0x%08lx (%s) PID %ld%s in die Kette auf.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Marke für den Kindprozess 0x%08lx (%s) erhalten.\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "Lese Pipe für die Jobs"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Es ist nicht notwendig, das Target »%s« neu zu erzeugen"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 "Auf diesem Betriebssystem kann die Einhaltung\n"
 "der Lastbeschränkung nicht erzwungen werden"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "Lasteinschränkung kann nicht erzwungen werden: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "»process_easy()« konnte den Prozess nicht starten (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 "»make« registrierte die Beendigung des Kindprozesses mit ID %d,\n"
 "wartet jedoch noch auf den Prozess mit ID %d.\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommando nicht gefunden"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell-Programm wurde nicht gefunden"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL gewechselt (war »%s«, ist »%s«)\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Erstelle temporäre Stapelverarbeitungsdatei %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Optionen:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Aus Kompatibilitätsgründen ignoriert\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Alle Ziele ohne Bedingungen erstellen\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -749,18 +766,18 @@ msgstr ""
 "                              In VERZEICHNIS wechseln, bevor etwas getan "
 "wird\n"
 
-#: main.c:299
+#: main.c:311
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "Viele Informationen zur Fehlersuche ausgeben"
 
-#: main.c:301
+#: main.c:313
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "Verschiedene Arten von Debug-Information ausgeben"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -769,7 +786,12 @@ msgstr ""
 "                              Umgebungsvariablen überschreiben »make«-"
 "Steuerdateien\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -777,16 +799,16 @@ msgstr ""
 "  -f DATEI, --file=DATEI, --makefile=DATEI\n"
 "                              DATEI als »make«-Steuerdatei lesen\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Diese Meldung ausgeben und beenden\n"
 
-#: main.c:311
+#: main.c:325
 #, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "Fehler in den Befehlen irgnorieren"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -795,7 +817,7 @@ msgstr ""
 "                              VERZEICHNIS nach inkludierten\n"
 "                              »make«-Steuerdateien durchsuchen\n"
 
-#: main.c:316
+#: main.c:330
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
@@ -804,68 +826,69 @@ msgstr ""
 "N Jobs gleichzeitig erlauben; unbegrenzte Anzahl \n"
 "von Jobs ohne Argument"
 
-#: main.c:318
+#: main.c:332
 #, fuzzy
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "Weiterlaufen, auch wenn einige Targets nicht erzeugt werden konnten"
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "Die interne Datenbank von »make« ausgeben"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "Keine Befehle ausführen; der Exit-Status gibt an, ob die Dateien\n"
 "aktuell sind"
 
-#: main.c:335
+#: main.c:349
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "Die eingebauten impliziten Regeln deaktivieren"
 
-#: main.c:337
+#: main.c:351
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "Die eingebauten Variablenbelegungen deaktivieren"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Befehle nicht ausgeben.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -873,38 +896,38 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              -k abschalten.\n"
 
-#: main.c:344
+#: main.c:358
 #, fuzzy
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "Die Targets werden nur als aktualisiert markiert,\n"
 "nicht tatsächlich erneuert"
 
-#: main.c:346
+#: main.c:360
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "Die Versionsnummer von »make« ausgeben und beenden"
 
-#: main.c:348
+#: main.c:362
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "Das aktuelle Verzeichnis ausgeben"
 
-#: main.c:350
+#: main.c:364
 #, fuzzy
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "-w abschalten, selbst wenn es implizit eingeschaltet wurde"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
@@ -912,29 +935,29 @@ msgid ""
 msgstr ""
 "Eine Warnung ausgeben, wenn eine undefinierte Variable referenziert wird"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "Eine leere Zeichenkette ist als Dateiname ungültig"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "Unbekanntes Debug-Level angegeben »%s«"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 "%s: bekam Unterbrechung/Ausnahme signalisiert (Kode = 0x%x, Adr = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Das Programm %s rief einen Ausnahmefilter auf, \n"
@@ -943,226 +966,216 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Zugriffsverletzung: Schreiboperation an Adresse %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Zugriffsverletzung: Leseoperation an Adresse %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell setzt default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell Suchpfad gesetzt; default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s setzt für 30 Sekunden aus..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "»sleep(30)« ist abgeschlossen. Es geht weiter.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (temporäre Datei)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (temporäre Datei)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 "Parallele Abarbeitung (-j) \n"
 "wird auf dieser Plattform nicht unterstützt."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "Interner Fehler: mehrfache --jobserver-fds Optionen"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "Interner Fehler: Falsche --jobserver-fds Angabe »%s«"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "Warnung: -jN in »make«-Verarbeitungszweig erzwungen: \n"
 "Jobserver-Modus nicht verfügbar."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "Jobserver verdoppelt"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. »+« zur Ursprungsregel\n"
 "hinzufügen."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "Öffnen der Pipe für die Jobs"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "Initialisierung der Pipe für den jobserver"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Symbolische Links sind nicht unterstützt: -L wird abgeschaltet."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Aktualisiere »make«-Steuerdateien...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr ""
 "»make«-Steuerdatei »%s« könnte eine Schleife enthalten; \n"
 "es wird nicht neu erzeugt.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Konnte die »make«-Steuerdatei »%s« nicht neu erstellen."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Die eingebundene »make«-Steuerdatei »%s« wurde nicht gefunden."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Die »make«-Steuerdatei »%s« wurde nicht gefunden"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Erneute Ausführung:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (temporäre Datei): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Keine Targets angegeben und keine »make«-Steuerdatei gefunden"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Keine Targets"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Aktualisieren der Ziele...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "Warnung: Mit der Uhr stimmt etwas nicht. \n"
 "Die Bearbeitung könnte unvollständig sein."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Syntax: %s [Optionen] [Target] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Fehlermeldungen (auf Englisch) an <bug-make@gnu.org> senden.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "Die Option »-%c« verlangt eine positive ganze Zahl als Argument"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "Die Option »-%c« verlangt eine positive ganze Zahl als Argument"
 
-#: 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 ""
-", von Richard Stallman und Roland McGrath.\n"
-"%sErstellt für %s\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
-"%s\tFree Software Foundation, Inc.\n"
-"%sDies ist Freie Software; siehe die Programmquellen für "
-"Vervielfältigungsbedingungen.\n"
-"%sEs gibt KEINE Gewährleistung; nicht einmal für VERMARKTUNG oder "
-"NUTZBARKEIT FÜR EINEN\n"
-"%sBESONDEREN ZWECK.\n"
-"\n"
-"%sFehlermeldungen (auf Englisch) an <bug-make@gnu.org>.\n"
-"\n"
+#: main.c:3054
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr ""
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1171,7 +1184,7 @@ msgstr ""
 "\n"
 "# »Make«-Datenbank; erstellt am: %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1180,452 +1193,453 @@ msgstr ""
 "\n"
 "# »Make«-Datenbank; beendet am: %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3106
+#: main.c:3242
 #, fuzzy, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "»%s«\n"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3109
+#: main.c:3245
 #, fuzzy, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "»%s«\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3121
+#: main.c:3257
 #, fuzzy, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "»%s«\n"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3124
+#: main.c:3260
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "»%s«\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Schluss.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Unbekannter Fehler %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "Der virtuelle Speicher ist verbraucht"
 
-#: misc.c:646
+#: misc.c:708
 #, fuzzy, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Initialisierter Zugriff"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr ""
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "Schreibfehler: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "Schreibfehler"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "»make«-Steuerdateien werden gelesen...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "»make«-Steuerdatei »%s« wird gelesen"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (kein Standard-Ziel)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (Suchpfad)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (macht nichts)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (keine ~-Auflösung)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "Ungültige Syntax in der Bedingung"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "Überflüssiges »endef«"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "Leerer Variablenname"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "Leere »override«-Anweisung"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "Ungültige »override«-Anweisung"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "Befehle beginnen vor dem ersten Ziel"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "Es fehlt eine Regel vor den Befehlen"
 
 # Untranslatable because of weird %s usage -ke-
-#: read.c:992
+#: read.c:1027
 #, fuzzy, c-format
 msgid "missing separator%s"
 msgstr "Fehlendes Trennzeichen%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (Meinten Sie TAB anstelle von 8 Leerzeichen?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "Es fehlt ein Target-Muster"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "Mehrfache Target-Muster"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "Target-Muster enthält kein »%%«"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "Fehlendes »endif«"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "Leerer Variablenname"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Überflüssiger Text nach einer »endef«-Anweisung"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "Fehlendes »endef«, nicht abgeschlossenes »define«"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Überflüssiger Text nach einer »endef«-Anweisung"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Überflüssiger Text nach einer »%s«-Anweisung"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "Überflüssiges »%s«"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "Es ist nur ein »else« je Verzweigung erlaubt"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Falsche Ziel-bezogene Variablendefinition"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "Implizite und statische Muster-Regel vermischt"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "Implizite und normale Regel vermischt"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "Target »%s« passt nicht zum Target-Muster"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "Das Ziel »%s« enthält sowohl »:«- als auch »::«-Einträge"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "Das Ziel »%s« steht mehrfach in derselben Regel."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "Warnung: Die Befehle für das Ziel »%s« werden überschrieben"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "Warnung: Alte Befehle für das Ziel »%s« werden ignoriert"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Warnung: NUL-Zeichen gelesen; der Rest der Zeile wird ignoriert"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Für das Ziel »%s« ist nichts zu tun."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "»%s« ist bereits aktualisiert."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Die Datei »%s« wird \"gestutzt\" (der Abhängigkeitsgraph).\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sKeine Regel, um »%s« zu erstellen%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr ""
 "%sKeine Regel vorhanden, um das Target »%s«, \n"
 "  benötigt von »%s«, zu erstellen%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Betrachte Target-Datei »%s«.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr ""
 "Versuchte gerade die Datei »%s« zu aktualisieren, \n"
 "dies schlug aber fehl.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Die Datei »%s« wurde bereits betrachtet.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Die Datei »%s« wird immer noch aktualisiert.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Aktualisierung der Datei »%s« beendet.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Die Datei »%s« existiert nicht.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Eine implizite Regel für »%s« gefunden.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Keine implizite Regel für »%s« gefunden.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Verwende die Standard-Kommandos für »%s«.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Zirkuläre Datei %s <- %s Abhängigkeit wird nicht verwendet."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Fertig mit den Voraussetzungen für die Ziel-Datei »%s«.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Die Voraussetzungen von »%s« werden fertiggestellt.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Die Arbeit an der Target-Datei »%s« wurde aufgegeben.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Das Target »%s« wurde wegen Fehlern nicht aktualisiert."
 
-#: remake.c:677
+#: remake.c:727
 #, fuzzy, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Die Datei »%s« ist älter als das davon abhängige Ziel »%s«.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr ""
 "Die Datei »%s«, Voraussetzung für das Ziel »%s«, \n"
 "existiert nicht.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Die Datei »%s« ist jünger als das davon abhängige Ziel »%s«.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Die Datei »%s« ist älter als das davon abhängige Ziel »%s«.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 "Das Ziel »%s« hat einen doppelten Doppelpunkt \n"
 "und keine Voraussetzungen.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 "Kein Kommando für »%s« und keine Voraussetzung \n"
 "wurde tatsächlich verändert.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Es ist nicht notwendig, das Target »%s« neu zu erzeugen"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; benutze VPATH-Name »%s«"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Das Target »%s« muss neu erzeugt werden.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ignoriere VPATH-Name »%s«.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Die Kommandos von »%s« werden gerade ausgeführt.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Fehler beim Aktualisieren der Target-Datei »%s«.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Die Target-Datei »%s« wurde erfolgreich aktualisiert.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Target »%s« muss bei -q aktualisiert werden.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Verwende die Standard-Kommandos für »%s«.\n"
+
+#: remake.c:1357
 #, fuzzy, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "*** Warnung: Datei »%s« hat zukünftige Änderungszeit (%s > %s)!"
 
-#: remake.c:1313
+#: remake.c:1370
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "*** Warnung: Datei »%s« hat zukünftige Änderungszeit (%s > %s)!"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS Element »%s« ist kein Muster"
@@ -1635,7 +1649,7 @@ msgstr ".LIBPATTERNS Element 
 msgid "Customs won't export: %s\n"
 msgstr "Customs wird nicht exportieren: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 #, fuzzy
 msgid ""
 "\n"
@@ -1644,7 +1658,7 @@ msgstr ""
 "\n"
 "# Keine impliziten Regeln vorhanden."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1652,7 +1666,7 @@ msgstr ""
 "\n"
 "# Keine impliziten Regeln vorhanden."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1661,232 +1675,240 @@ msgstr ""
 "\n"
 "# %u implizite Regeln, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " Terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: »num_pattern_rules« falsch!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "Unbekanntes Signal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Aufgelegt"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Abgebrochen (Interrupt)"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Quit"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Illegaler Befehl"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Abgebrochen (Aborted)"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT abfangen (IOT trap)"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT abfangen (EMT trap)"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Gleitkommafehler"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Abgebrochen (Killed)"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Bus-Fehler"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Adressierungsdefekt"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Falscher Systemaufruf"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Zerstörte Pipe"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Wecksignal"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Abgebrochen (Terminated)"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Nutzersignal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Nutzersignal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Kindprozess beendet"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Stromausfall"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Angehalten"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Angehalten (tty input)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Angehalten (tty output)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Angehalten (signal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU-Zeitschranke überschritten"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Dateigrößenschranke überschritten"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtueller Timer erloschen"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profiling Timer erloschen"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Fenster hat sich verändert"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Fortgesetzt"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Dringende I/O-Bedingung"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O möglich"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Ressource verloren gegangen"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Gefahrensignal"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Informationsanforderung"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Es ist kein Koprozessor für Fließkommaoperationen vorhanden"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr "# %u Variablen für %u hash-Werte.\n"
+
+#: variable.c:1541
 msgid "default"
 msgstr "Standard"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "Umgebung"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "Makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "Umgebung per -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "Kommandozeile"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "»override«-Anweisung"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatisch"
 
-#: variable.c:1396
+#: variable.c:1570
 #, fuzzy, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (aus »%s«, Zeile %lu):\n"
 
-#: variable.c:1438
+#: variable.c:1612
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %u Variablen für %u hash-Werte.\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1894,7 +1916,7 @@ msgstr ""
 "\n"
 "# Variablen\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1903,7 +1925,7 @@ msgstr ""
 "\n"
 "# Musterspezifische Variablenwerte"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1911,7 +1933,7 @@ msgstr ""
 "\n"
 "# Keine musterspezifischen Variablenwerte."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1920,14 +1942,14 @@ msgstr ""
 "\n"
 "# %u musterspezifische Variablenwerte"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "Warnung: undefinierte Variable »%.*s«"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "»sys$search« schlug mit %d fehl\n"
 
 #: vmsjobs.c:71
@@ -1935,72 +1957,77 @@ msgstr "
 msgid "Warning: Empty redirection\n"
 msgstr "Warnung: Umleitung ins Leere!\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "Interner Fehler: »%s« command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-Warnung: STRG-Y wird Unterprozesse übriglassen!\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-Warnung: Vielleicht müssen Sie STRG-Y aus DCL wieder ermöglichen.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Unbekanntes eingebautes Kommando »%s«\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fehler: Leere Anweisung\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Datei %s auf Standardeingabe umgeleitet\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Fehlerausgabe nach %s umgeleitet\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Ausgabe nach %s umgeleitet\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Ausgabe nach %s umgeleitet\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s wird stattdessen ausgeführt\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fehler beim Starten eines Kindprozesses, %d.\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2008,11 +2035,11 @@ msgstr ""
 "\n"
 "# VPATH-Suchpfade\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Keine »vpath«-Suchpfade."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -2021,7 +2048,7 @@ msgstr ""
 "\n"
 "# %u »vpath«-Suchpfade.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -2029,7 +2056,7 @@ msgstr ""
 "\n"
 "# Kein allgemeiner Suchpfad (Variable »VPATH«)."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2047,6 +2074,37 @@ msgstr ""
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "»make« wird so umgestellt, dass nur ein Job laufen kann."
 
+#, fuzzy
+#~ 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 ""
+#~ ", von Richard Stallman und Roland McGrath.\n"
+#~ "%sErstellt für %s\n"
+#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+#~ "%s\tFree Software Foundation, Inc.\n"
+#~ "%sDies ist Freie Software; siehe die Programmquellen für "
+#~ "Vervielfältigungsbedingungen.\n"
+#~ "%sEs gibt KEINE Gewährleistung; nicht einmal für VERMARKTUNG oder "
+#~ "NUTZBARKEIT FÜR EINEN\n"
+#~ "%sBESONDEREN ZWECK.\n"
+#~ "\n"
+#~ "%sFehlermeldungen (auf Englisch) an <bug-make@gnu.org>.\n"
+#~ "\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "Überflüssiges »endef«"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "Leere »override«-Anweisung"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "Ungültige »override«-Anweisung"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-Warnung: STRG-Y wird Unterprozesse übriglassen!\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "# %u files in %u hash buckets.\n"
index 9d9cc07..5afbd6e 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index 73fffd4..b8dcf08 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU make 3.81-b3\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2005-06-28 19:59-0500\n"
 "Last-Translator: Max de Mendizábal <max@upn.mx>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -14,7 +14,7 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "Se intentó utilizar una característica no implementada: `%s'"
@@ -31,77 +31,77 @@ msgstr "Se intent
 # Enrique: touch es un programa del sistema operativo y sirve para
 # cambiar la fecha de un programa o archivo. Es decir lo "toca" y
 # modifica sus atributos. Por eso preferí no traducirlo.
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "El programa para hacer un `touch' no está disponible en VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: El archivo `%s' no existe"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' no es un archivo válido"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: El miembro `%s' no existe en `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: Código de retorno erróneo de ar_member_touch en `%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 "fallo en lbr$set_module para extraer la información del módulo, estado = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "fallo en lbr$ini_control con estado = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "Error al abrir la biblioteca `%s' para buscar al elemento `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Miembro `%s'%s: %ld bytes en %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (el nombre puede estar truncado)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Fecha %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Break.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
 "*** [%s] Miembro de archivo `%s' podría estar incorrecto; aunque no se "
 "elimina"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr ""
@@ -109,32 +109,33 @@ msgstr ""
 
 # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
 # Ok. mm
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Se borra el archivo `%s'"
 
 # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
 # Ok. mm
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Se borra el archivo `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  comandos para ejecutar"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (interconstruido):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (de `%s', linea %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -142,7 +143,7 @@ msgstr ""
 "\n"
 "# Directorios\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: podría no estar establecido.\n"
@@ -150,14 +151,14 @@ msgstr "# %s: podr
 # ¿No sobraría el "posiblemente"?
 # Propongo dejarlo en " no se pudo abrir ". sv
 # Ok. Es consistente con otras traducciones. mm
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (llave %s, mtime %d): no se pudo abrir.\n"
 
 # En el K & R aparece inode traducido como nodo-i. ¿qué te parece? sv
 # Bien. Me gusta con el guioncito. mm
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
@@ -166,49 +167,49 @@ msgstr ""
 # ¿No sobraría el "posiblemente"?
 # Propongo dejarlo en " no se pudo abrir ". sv
 # Ok. Es consistente con otras traducciones. mm
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (dispositivo %ld, nodo-i %ld): no se pudo abrir.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (llave %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, nodo-i %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "No"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " archivos, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "no"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " imposibilidades"
 
 # ¿"So far" no era "hasta ahora"? (no me hagas mucho caso) sv
 # Si tu traducción es mejor. Aceptada. mm
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " hasta ahora."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " imposibilidades en %lu directorios.\n"
@@ -222,7 +223,7 @@ msgstr " imposibilidades en %lu directorios.\n"
 # ejemplo em+
 # Mejor lo eliminamos. Es de alguna forma reiterativo e innecesario.
 # Lo de `al final' puede ser más confuso. mm
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "La variable recursiva `%s' se auto-referencia"
@@ -230,27 +231,27 @@ msgstr "La variable recursiva `%s' se auto-referencia"
 # No me gusta nada ( lo siento )
 # ¿ Qué tal : La referencia a una variable está sin terminar em+
 # Creo que tienes razón la voz pasiva es muy desagradable. mm.
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "la referencia a la variable está sin terminar"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Las instrucciones fueron especificadas para el archivo `%s' en %s:%lu,"
 
 # Buscando en las legras implícitas em+
 # Utilicé por búsqueda en para evitar el gerundio. mm
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 "Las instrucciones para el archivo `%s' se encontraron por búsqueda en reglas "
 "implícitas,"
 
 # "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv
 # inconscientemente. mm
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "pero `%s' se considera ahora como el mismo archivo que `%s'."
@@ -259,9 +260,9 @@ msgstr "pero `%s' se considera ahora como el mismo archivo que `%s'."
 # "To ignore" *no* es ignorar. sv
 # Propongo "no serán tenidas en cuenta" a falta de algo mejor.
 # Ok. Mi necedad sobrepasa el milenio. mm
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 "Las instrucciones para `%s' no serán tenidas en cuenta en favor de las que "
 "están en `%s'."
@@ -269,46 +270,46 @@ msgstr ""
 # Me suena que eso de colon es algo así como punto, dos puntos o punto y coma.
 # ¿Podrías comprobarlo? sv
 # Es un punto sencillo (.). A ver si te gusta mi propuesta. mm
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "no se puede cambiar un punto (.) `%s' por dos puntos (:) `%s'"
 
 # Lo mismo. sv
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "no se pueden cambiar dos puntos (:) `%s' por un punto (.) `%s'"
 
 # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
 # Ok. mm
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Se borra el archivo temporal `%s'"
 
 # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
 # Ok. mm
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "*** Se borran los archivos temporales...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Hora actual"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# No es un objetivo:"
 
 # Pondría: es una dependencia de em+
 # Si, tienes razón. mm
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Archivo valioso (es una dependencia de .PRECIOUS)."
 
@@ -320,7 +321,7 @@ msgstr "#  Archivo valioso (es una dependencia de .PRECIOUS)."
 # No. Incondicional no es una traducción correcta. Que tal si al rato
 # se les ocurre hacer una nueva instrucción .INCONDITIONAL.
 # Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  objetivo falso (dependencia de .PHONY)."
 
@@ -331,8 +332,9 @@ msgstr "#  objetivo falso (dependencia de .PHONY)."
 # Están traduciendo commands como comandos? Son más bien ordenes o
 # instrucciones. Por mi parte no hay problema, incluso me gusta más
 # comandos, pero es un anglicismo. mm
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Objetivo de línea de instrucciones."
 
 # Habría que entender esto
@@ -343,7 +345,7 @@ msgstr "#  Objetivo de l
 # Así pues tu traducción es completamente equivocada, lo siento.
 # Pondría: Fichero por defecto o definido en la variable MAKEFILE em+
 # Cierto, lo has entendido bien. Arreglo acorde. mm
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Por omisión, MAKEFILES, o -include/sinclude makefile."
 
@@ -351,7 +353,7 @@ msgstr "#  Por omisi
 # Ok. Es más literal. mm
 # Atención ! , es la búsqueda 'de'reglas implícitas em+
 # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  La búsqueda de reglas implícitas ha sido efectuada."
 
@@ -359,22 +361,22 @@ msgstr "#  La b
 # Ok. Es más literal. mm
 # Atención ! , es la búsqueda 'de'reglas implícitas em+
 # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  La búsqueda de reglas implícitas ha sido efectuada."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  rama del patrón implícita/estática: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  El archivo es una dependencia intermedia."
 
 # Sugerencia: "crea". sv
 # Ok. Aunque, viendolo bien, que tal "hace"? mm.
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  También hace:"
 
@@ -382,52 +384,54 @@ msgstr "#  Tambi
 # Ok. Mejora. mm
 # No pondría nunca, sino simplemente 'no se comprobó 'em+
 # Si, es lo mismo pero es más español. mm
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  La fecha de modificación no se comprobó."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  El archivo no existe."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  El archivo es muy viejo."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Última modificación %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  El archivo ha sido actualizado."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  El archivo ha sido actualizado."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Las instrucciones siguen ejecutándose (ESTO ES UN BUG)."
 
 # ¿No sería más bien "las instrucciones de las dependencias"? sv
 # Si, que babas soy. Ahora corrijo. mm
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 "#  Las instrucciones de las dependencias siguen ejecutándose (ESTO ES UN "
 "BUG)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Actualizado con éxito."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Necesita ser actualizado (la opción -q está activa)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Fallo al ser actualizado."
 
@@ -435,16 +439,16 @@ msgstr "#  Fallo al ser actualizado."
 # Gracias. No lo puse porque no se como poner ese símbolo con el
 # iso-accents-mode y luego se me olvidó. Por cierto, como se hace?
 # también tengo duda de la interrogación abierta.
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  ¡Valor inválido en el miembro `update_status'!"
 
 # ## Lo mismo.
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  ¡Valor inválido en el miembro `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -452,7 +456,7 @@ msgstr ""
 "\n"
 "# Archivos"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -462,138 +466,139 @@ msgstr ""
 "# estadísticas de la tabla de hash de los archivos:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "el primer argumento de la función `word' no es numérico"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "el primer argumento de la función `word' debe ser mayor a 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "el primer argumento de la función `wordlist' no es numérico"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "el primer argumento de la función `wordlist' no es numérico"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: fallo en DuplicateHandle(In), (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: fallo en DuplicateHandle(Err), (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "Fallo en CreatePipe(), (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): fallo en process_init_fd()\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Limpiando el archivo temporal %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Número de argumentos (%d) insuficientes para la función `%s'"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "No implementado en esta plataforma: función `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "la llamada a la función `%s' no concluyó: falta `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
 # No admite ningún argumento. sv
 # Ok. Y vuelve la burra al trigo. mm
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: la opción `--%s' no admite ningún argumento\n"
 
 # Lo mismo. sv
 # Ok. mm
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción no reconocida `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción no reconocida `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción inválida -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción inválida -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un argumento -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: la opción `-W %s' es ambigua\n"
 
 # No admite ningún argumento. sv
 # Ok. Y vuelve la burra al trigo. mm
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "no se pueden reservar %ld bytes para la tabla de hash: memoria agotada"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Carga=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Colisiones=%ld/%ld=%.0f%%"
@@ -602,7 +607,7 @@ msgstr "Colisiones=%ld/%ld=%.0f%%"
 # Ten en cuenta que este mensaje no parece un mensaje de error, sino más
 # de "debug" o de "verbose". sv
 # Cierto. mm
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Buscando una regla implícita para `%s'.\n"
@@ -610,7 +615,7 @@ msgstr "Buscando una regla impl
 # Lo mismo.
 # Buscando una regla implítita para el miembro del archivo  `%s' em+
 # Se me resbaló. mm
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Buscando una regla implícita para el miembro del archivo `%s'.\n"
@@ -622,7 +627,7 @@ msgstr "Buscando una regla impl
 # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm
 # No me gusta se evita, pondría evitando em+
 # Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando la recursión en la regla implícita.\n"
 
@@ -634,7 +639,7 @@ msgstr "Evitando la recursi
 # De momento cambio la regla patron por una regla de patron , y
 # pondría a toda costa gerundio ( intentando ) em+
 # Ok con el gerundio. Pero también tengo que meditarlo. mm
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Intentando una regla de patrón con la ramificación `%.*s'.\n"
@@ -646,10 +651,10 @@ msgstr "Intentando una regla de patr
 # aparecer tal y como está ahora (Se rechaza la dependencia imposible
 #  `%s' `%s )'em+
 # Ok. mm
-#: implicit.c:667
+#: implicit.c:674
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Se rechaza la dependencia imposible `%s'.\n"
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "Se rechaza la regla de dependencia imposible `%s'.\n"
 
 # ## Corrijo la palabra "dependencia". sv
 # Cuando aparezca este mensaje tendrá poco menos que sentido
@@ -658,22 +663,10 @@ msgstr "Se rechaza la dependencia imposible `%s'.\n"
 # aparecer tal y como está ahora (Se rechaza la dependencia imposible
 #  `%s' `%s )'em+
 # Ok. mm
-#: implicit.c:668
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Se rechaza la regla de dependencia imposible `%s'.\n"
-
-# Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a
-# escaparse de la cárcel... (fuga de alcatraz :-)
-# te voy a dar yo a tí fuga ... em+
-# ¿Qué te parecería "se evita"? sv
-# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm
-# No me gusta se evita, pondría evitando em+
-# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Probando la dependencia implícita `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Se rechaza la dependencia imposible `%s'.\n"
 
 # FUZZY
 # Esto me suena fatal. Se a que se refiere, porque lo
@@ -683,43 +676,55 @@ msgstr "Probando la dependencia impl
 # De momento cambio la regla patron por una regla de patron , y
 # pondría a toda costa gerundio ( intentando ) em+
 # Ok con el gerundio. Pero también tengo que meditarlo. mm
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Intentando la regla de dependencia `%s'.\n"
 
-#: implicit.c:710
+# Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a
+# escaparse de la cárcel... (fuga de alcatraz :-)
+# te voy a dar yo a tí fuga ... em+
+# ¿Qué te parecería "se evita"? sv
+# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm
+# No me gusta se evita, pondría evitando em+
+# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Probando la dependencia implícita `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Se encontró la dependencia `%s' como la VPATH `%s'.\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Se busca una regla con el archivo intermedio `%s'.\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "No se puede crear un archivo temporal\n"
 
 # Lo mismo. sv
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Error 0x%x (no tiene efecto)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Error 0x%x"
 
 # Lo mismo. sv
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Error %d (no tiene efecto)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Error %d"
@@ -728,73 +733,73 @@ msgstr "*** [%s] Error %d"
 # volcado de `core' no significa nada, que te parece si mejor dejamos
 # el core dumped, o bien volcado del núcleo o algo así. Por el momento
 # no cambio nada. mm
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (core dumped) [Núcleo vaciado a un archivo]"
 
 # ¿Y job -> trabajos? sv
 # Si, pero no hablas de una computadora multi-trabajos sino multi-tareas.
 # Por eso elegí tareas. Lo platicamos con más calma? mm
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Se espera a que terminen otras tareas...."
 
 # ¿De verdad se dice "vivo"? Si es un proceso, se me ocurre "activo". sv
 # Me gusta lo de activo. mm
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Hijo activo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (remoto)"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Se pierde al proceso hijo descarriado 0x%08lx PID %ld %s\n"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Se gana al proceso hijo descarriado 0x%08lx PID %ld %s\n"
 
 # Give up no es enfocar, es abandonar, o desistir em+
 # Si, metí la pata. mm
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Se limpia el archivo temporal %s\n"
 
 # Proceso hijo em+
 # Ok.
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Se elimina al proceso hijo 0x%08lx PID %ld%s de la cadena.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "escribir en el servidor de tareas"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Se libera el token para el proceso hijo 0x%08lx (%s).\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "fallo en process_easy() al lanzar el proceso (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -805,57 +810,62 @@ msgstr ""
 
 # Proceso hijo em+
 # Ok.
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Se pone al proceso hijo 0x%08lx (%s) PID %ld%s en la cadena.\n"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Se obtiene el token para el proceso hijo 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "tubería de trabajos leídos"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "No es necesario reconstruir el objetivo `%s'."
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "no se pueden forzar los límites de carga en este sistema operativo"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "no se puede forzar la carga límite: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "no hay más manejadores de archivos: no se puede duplicar stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr "No se puede restaurar stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr "No se puede restaurar stdout\n"
 
-#: job.c:2016
-#, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "fallo en process_easy() al lanzar el proceso (e=%d)\n"
-
-#: job.c:2046
+#: job.c:2127
 #, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "hacer un hijo descarriado %d, aún esperando el pid %d\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: No se encontró el programa"
@@ -866,48 +876,55 @@ msgstr "%s: No se encontr
 # yo pensaria que me falta un programa en mi sistema que se
 # llame shell. No se ha encontrado el 'shell'em+
 # Es bueno contar con una segunda opinión ... mm
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: No se ha encontrado el `shell'"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: el espacio ambiental podría estar agotado"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL ha cambiado (era `%s' y ahora es `%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Se crea el archivo temporal %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 "%s (linea %d) Contexto de shell erróneo (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opciones:\n"
 
 # Lo mismo de arriba con "ignorar". sv
 # Ok. mm.
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 "  -b, -m                      No se tendrá en cuenta por compatibilidad.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Hace incondicionalmente todos los objetivos.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -918,7 +935,7 @@ msgstr ""
 # ¿"depurado" o "depuración"? sv
 # Puse de depurado para evitar la cacofonía información depuración.
 # Sugerencias bienvenidas. mm
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d          Se imprimirán grandes cantidades de información de depurado.\n"
@@ -926,14 +943,14 @@ msgstr ""
 # ¿"depurado" o "depuración"? sv
 # Puse de depurado para evitar la cacofonía información depuración.
 # Sugerencias bienvenidas. mm
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=BANDERAS]    Se imprimirán varios tipos de información de "
 "depurado.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -942,7 +959,12 @@ msgstr ""
 "                Las variables ambientales se imponen a las de los "
 "makefiles.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -950,7 +972,7 @@ msgstr ""
 "  -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n"
 "                                   Lee al ARCHIVO como un makefile.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Muestra este mensaje y finaliza.\n"
 
@@ -960,13 +982,14 @@ msgstr "  -h, --help                  Muestra este mensaje y finaliza.\n"
 # tambien.
 # No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos
 # en la ejecución de las instrucciones  em+
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         No se toman en cuenta los errores provenientes "
 "de las instrucciones.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -977,7 +1000,7 @@ msgstr ""
 # Yo traduciría "infinite" por "infinitos", no por "una infinidad", que
 # parece que son muchos menos... sv
 # Ok. mm
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -988,14 +1011,14 @@ msgstr ""
 
 # No entiendo por qué aquí empleas subjuntivo: "pudieron". sv
 # Es incorrecto. Es una de las opciones `k' que dice... mm
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Sigue avanzando aún cuando no se puedan crear "
 "algunos objetivos.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -1005,7 +1028,7 @@ msgstr ""
 "      No inicia con trabajos múltiples a menos que la carga esté por debajo "
 "de N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -1013,17 +1036,18 @@ msgstr ""
 "  -L, --check-symlink-times   Utiliza el último mtime entre los enlaces "
 "simbólicos y los objetivos.\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              No ejecuta ninguna instrucción; sólo las "
 "muestra.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -1035,15 +1059,16 @@ msgstr ""
 
 # de 'make' em+
 # ok. mm
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 "  -p, --print-data-base       Se imprime la base de datos interna de "
 "`make'.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question                     No se ejecutan las instrucciones; el "
@@ -1055,7 +1080,7 @@ msgstr ""
 # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ?
 # Pon almacenadas internamente, que es exactamente lo que son :) em+
 # Bueno, bajo protesta. mm
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Se deshabilitan las reglas implícitas "
@@ -1066,17 +1091,18 @@ msgstr ""
 # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ?
 # Pon almacenadas internamente, que es exactamente lo que son :) em+
 # Bueno, bajo protesta. mm
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Se deshabilitan los ajustes a las variables "
 "almacenadas internamente.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       No muestra las intrucciones.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -1089,7 +1115,7 @@ msgstr ""
 #
 # Pues entonces cámbialo arriba tambien em+
 # En donde? mm
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Se tocan los objetivos en vez de "
@@ -1097,14 +1123,14 @@ msgstr ""
 
 # Me comería el "Se" inicial. "Muestra la versión..." sv
 # Ok. mm
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               Muestra la versión del make y finaliza.\n"
 
 # Lo mismo. sv
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Muestra el directorio actual.\n"
 
@@ -1113,7 +1139,7 @@ msgstr "  -w, --print-directory       Muestra el directorio actual.\n"
 # apaga luz Mari Luz apaga luz ,que yo no puedo vivir con
 # tanta luz ... ( canción tradicional ) ( no lo pude evitar ) em+
 # Juar, Juar, Juar. Coincido, pero el sentido es el mismo. mm
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -1121,7 +1147,7 @@ msgstr ""
 "  --no-print-directory        Desactiva -w, aún cuando haya sido activado "
 "implícitamente.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -1132,7 +1158,7 @@ msgstr ""
 
 # Lo mismo. sv
 # Todas estas parecen descripciones de opciones.
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -1140,29 +1166,29 @@ msgstr ""
 "  --warn-undefined-variables  Advierte cuando se hace una referencia a una "
 "variable no definida.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "no se permite que una cadena vacía sea el nombre de un archivo"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "se especificó un nivel de depuración desconocido `%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 "%s: Se atrapó una interrupción/excepción (código = 0x%x, dirección = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Se ha llamado un filtro de excepción no manejado desde el programa %s\n"
@@ -1170,100 +1196,105 @@ msgstr ""
 "Banderas de excepción %x\n"
 "Dirección de la excepción %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Violación de acceso: operación de escritura en la dirección %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Violación de acceso: operación de lectura en la dirección %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "la variable find_and_set_shell puesta como default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 "la ruta de búsqueda find_and_set_shell está puesta como default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspendida por 30 segundos..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "se hizo un sleep(30). Continuando.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr ""
 "El archivo Makefile ha sido especificado dos veces desde la entrada estándard"
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (archivo temporal)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (archivo temporal)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 "Los trabajos en paralelo (-j) no están implementados en esta plataforma."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Reajustando al modo monotarea (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "error interno: hay varias opciones --jobserver-fds"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "error interno: cadena --jobserver-fds inválida `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "atención: se fuerza a -jN en el submake: se deshabilita el modo de servidor "
 "de tareas."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "servidor de tareas duplicado"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "atención: el servidor de tareas no está disponible: se utilizará -j1. Añada `"
 "+' a la regla padre del make."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "creando una tubería de trabajos"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "se inicializa la tubería al servidor de tareas"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Los enlaces simbólicos no están implementados: se deshabilitan con -L."
 
 # Antes pusiste "makefiles". Coherencia. sv
 # Cierto. mm
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Actualizando archivos makefiles....\n"
 
@@ -1273,61 +1304,61 @@ msgstr "Actualizando archivos makefiles....\n"
 # Pondría ( como en un mensaje anterior ) se autoreferencia ... em+
 # He puesto makefile con minúsculas , par ser coherentes em+
 # Ok. Es más breve. mm.
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "El makefile `%s' se autoreferencia; por lo cual no se reconstruye.\n"
 
 # Lo mismo. sv
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Fallo al reconstruir el makefile `%s'."
 
 # Lo mismo. sv
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "No se encontró el makefile incluído `%s'."
 
 # Lo mismo. sv
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "No se encontró el Makefile `%s'"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "No se pudo regresar al directorio original."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-ejecutando[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (archivo temporal)"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL contien más de un objetivo"
 
 # Sugerencia: "No se especificó ningún objetivo ... " sv
 # Ok. Me gusta. mm
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "No se especificó ningún objetivo y no se encontró ningún makefile"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "No hay objetivos"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Actualizando los objetivos finales....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "atención: Se ha detectado una desviación en el reloj. La construcción podría "
@@ -1338,12 +1369,12 @@ msgstr ""
 # "target" es "objetivo", no "objetivos". Fíjate que lleva puntos
 # suspensivos, permitiendo así varios objetivos. sv
 # Ok. mm
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1352,7 +1383,7 @@ msgstr ""
 "\n"
 "Este programa fue construido para %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1361,58 +1392,49 @@ msgstr ""
 "\n"
 "Este programa construido para %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Informe sobre los errores a <bug-make@gnu.org>\n"
 
 # Me comería el "de" de "requiere de" sv
 # Ok. mm
-#: main.c:2466
-#, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "la opción `-%c' requiere un argumento no-vacío de tipo cadena"
 
 # Me comería el "de" de "requiere de" sv
 # Ok. mm
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "la opción `-%c' requiere un argumento positivo y entero"
 
-# De esto hablaremos otro día. sv
-# Si. Es bastante complicado. mm
-#: 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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\n"
 msgstr ""
-"%sEste es software libre; consulte en el código fuente las condiciones de "
-"copia.\n"
-"%sNO hay garantía; ni siquiera para MERCANTIBILIDAD o EL CUMPLIMIENTO DE\n"
-"%sALGÚN PROPÓSITO PARTICULAR.\n"
-
-#: main.c:2948
-#, c-format
-msgid ""
 "\n"
-"%sThis program built for %s\n"
+" %sEste programa fue construido para %s\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
-" %sEste programa fue construido para %s\n"
+"%sEste programa fue construido para %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sEste programa fue construido para %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1426,7 +1448,7 @@ msgstr ""
 # Porqué 'del', o pones 'del programa' Make o pones
 # 'de Make' em+
 # Ok. mm
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1435,12 +1457,12 @@ msgstr ""
 "\n"
 "# Se termina la base de datos de Make en %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: se ingresa a un directorio desconocido\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: se sale del directorio desconocido\n"
@@ -1454,7 +1476,7 @@ msgstr "%s: se sale del directorio desconocido\n"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: se ingresa al directorio `%s'\n"
@@ -1468,17 +1490,17 @@ msgstr "%s: se ingresa al directorio `%s'\n"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: se sale del directorio `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: se ingresa a un directorio desconocido\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: se sale del directorio desconocido\n"
@@ -1492,7 +1514,7 @@ msgstr "%s[%u]: se sale del directorio desconocido\n"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: se ingresa al directorio `%s'\n"
@@ -1506,7 +1528,7 @@ msgstr "%s[%u]: se ingresa al directorio `%s'\n"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: se sale del directorio `%s'\n"
@@ -1514,21 +1536,21 @@ msgstr "%s[%u]: se sale del directorio `%s'\n"
 # Interrumpido (?). sv
 # Mmgmh... El mensaje indica que hubo algún error muy grave y que por
 # eso se detiene el make. Probablemente sea mejor dejarlo así. mm
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Alto.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Error desconocido %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
@@ -1536,28 +1558,28 @@ msgstr "%s: %s"
 # Propongo eliminar la palabra virtual. sv
 # Pero si es muy bonita. :) Bueno. Como ya platicamos puede que sea
 # una buena idea pero, por ahora la dejaría. mm
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "memoria virtual agotada"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Acceso inicializado"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Acceso del usuario"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Acceso del Make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Acceso del hijo"
 
@@ -1570,73 +1592,55 @@ msgstr "Acceso del hijo"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "error al escribir: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "error al escribir"
 
 # Sugerencia: eliminar la palabra "archivo". sv
 # Ok. Mejora. mm
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Leyendo makefiles...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Leyendo makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (no hay objetivo por defecto)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (ruta de búsqueda)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (no importa)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (no hay expansión del ~)"
 
 # ## Sintaxis no llevaba tilde.
 # Ok. mm
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "sintaxis no válida en condicional"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "el `endef' es irrelevante o está mal colocado"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "nombre de variable vacío"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "instrucción `override' vacía"
-
-# Creo que tendremos un problema con instrucción, comando
-# , programa y directiva . Está claro que aquí es directiva em+
-# Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "directiva de sobreposición `override' inválida"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "las instrucciones comenzaron antes del primer objetivo"
 
 # "falta una regla". sv
@@ -1644,91 +1648,104 @@ msgstr "las instrucciones comenzaron antes del primer objetivo"
 # Cierto pareciera que se perdió dentro de algún circuito. mm
 # Falta 'la' regla em+
 # No no es la regla sino una regla pues puede ser cualquiera de ellas. mm
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "falta una regla antes de las instrucciones"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "falta un separador%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (¿Quiere decir TAB en vez de 8 espacios?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "falta un patrón de objetivos"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "hay varios patrones de objetivos"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "el patrón de objetivo no contiene `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "falta un `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nombre de variable vacío"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr ""
 "Hay un texto irrelevante o mal colocado después de la instrucción `endef'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "falta un `endef', no se terminó un `define'"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr ""
+"Hay un texto irrelevante o mal colocado después de la instrucción `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Texto irrelevante o mal colocado después de la instrucción `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "irrelevante o mal colocado `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "sólo se admite un `else' por condicional"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr ""
 "La definición de las variables específicas al blanco está mal construida"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
 msgstr "los prerequisitos no pueden ser definidos por guiones de instrucciones"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "las reglas implícitas y las de patrón estático están mezcladas"
 
 # Y 'las' normales  em+
 # Ok. mm
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "las reglas implícitas y las normales están mezcladas"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "el archivo de objetivos `%s' no coincide con el patrón de objetivos"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "el archivo de objetivos `%s' tiene líneas con : y ::"
 
 # Cambiaría given por 'proporcionó' o 'indicó' em+
 # Ok. mm
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "el objetivo `%s' se proporcionó más de una vez en la misma regla."
@@ -1737,44 +1754,44 @@ msgstr "el objetivo `%s' se proporcion
 # si encaja mejor alguna de las dos que se proponen arriba
 # em+
 # Aunque no me acaba de convencer, que te parece ésto? mm
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "atención: se imponen comandos para el objetivo `%s'"
 
 # Ojo con ignora. sv
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "atención: se ignoran las instrucciones viejas para el objetivo `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "atención: hay un carácter NUL; se ignora el resto de la línea"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "No se hace nada para `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' está actualizado."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Se continúa actualizando el archivo `%s'.\n"
 
 # Sugerencia: No hay ninguna regla... sv
 # Como una no hay ninguna. mm
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sNo hay ninguna regla para construir el objetivo `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr ""
@@ -1786,7 +1803,7 @@ msgstr ""
 # de las que aparecen al hacer un make con la opción -d ( debug )
 # se refiere a lo que dice Santiago, es decir, 'archivo objetivo'  em+
 # Ok creo que tienen razón. mm
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Se considera el archivo objetivo `%s'.\n"
@@ -1797,32 +1814,32 @@ msgstr "Se considera el archivo objetivo `%s'.\n"
 # o bien "Se intentó sin éxito actualizar ..."
 # ¿Qué te parece? sv
 # Bien y tiene razón. mm
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Se intentó, sin éxito, actualizar el archivo `%s'.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "El archivo `%s' ya fue considerado.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Se continúa actualizando el archivo `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Se terminó de actualizar el archivo `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "El archivo `%s' no existe.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1830,26 +1847,26 @@ msgstr ""
 "*** Atención: el archivo .LOW_RESOLUTION_TIME `%s' tiene una resolución "
 "demasiado alta"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Se encontró una regla implícita para `%s'.\n"
 
 # Se ha encontrado em+
 # Ok, pero procuro evitar como a la muerte los gerundios. mm
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "No se ha encontrado una regla implícita para `%s'.\n"
 
 # Por defecto, como haces arriba em+
 # en efecto, mm
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Se utilizan las instrucciones por defecto para `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Se elimina la dependencia circular %s <- %s."
@@ -1857,73 +1874,73 @@ msgstr "Se elimina la dependencia circular %s <- %s."
 # Lo mismo de antes con "target file". sv
 # Estoy de acuerdo con él ( por una vez ;) ) em+
 # Ok. mm
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Se terminaron las dependencias del archivo objetivo `%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Se están construyendo las dependencias de `%s'.\n"
 
 # Give up no es enfocar, es abandonar, o desistir em+
 # Si, metí la pata. mm
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Se abandona el archivo objetivo `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Debido a los errores, el objetivo `%s' no se reconstruyó."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "El prerequisito `%s' es posterior al objetivo `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "La dependencia `%s' del blanco `%s' no existe.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "La dependencia `%s' es más reciente que el objetivo `%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "La dependencia `%s' es posterior al objetivo `%s'.\n"
 
 # Ahorra espacio, y pon '::'  en vez de eso :) em+
 # Bueno, no es mala idea. A ver si te gusta lo que puse. mm
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 "El objetivo `%s' es de tipo dos puntos dos veces (::)\n"
 "y no tiene dependencias.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "No hay instrucciones para `%s' y ninguna dependencia cambió.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Haciendo `%s' debido a la bandera always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "No es necesario reconstruir el objetivo `%s'."
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; se usa el nombre del VPATH `%s'"
@@ -1931,59 +1948,66 @@ msgstr "; se usa el nombre del VPATH `%s'"
 # Revisa todo el po con un search, y mira a ver si decides usar
 # regenerar o reconstruir ( prefiero lo último 10000 veces ) em+
 # Ok, buena propuesta. mm
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Se debe reconstruir el objetivo `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Se ignora el nombre del VPATH `%s'.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Las instrucciones de `%s' se están ejecutando.\n"
 
 # Target file no es archivo de objetivos, sino el archivo objetivo
 # make no tiene ningún archivo de objetivos em+
 # Ok. mm
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Fallo al reconstruir el archivo objetivo `%s'.\n"
 
 # Lo mismo em+
 # Ok. mm
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Se reconstruyó con éxito el archivo objetivo `%s'.\n"
 
 # Otra vez em+
 # Ok, no te puedes quejar de falta de consistencia en este caso! mm
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Se necesita reconstruir el archivo objetivo `%s' con la opción -q.\n"
 
+# Por defecto, como haces arriba em+
+# en efecto, mm
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Se utilizan las instrucciones por defecto para `%s'.\n"
+
 # Ubicada :)) , que tal futura, a secas ? em+
 # Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm
-#: remake.c:1306
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Atención: El archivo `%s' tiene una hora de modificación en el futuro"
 
 # Ubicada :)) , que tal futura, a secas ? em+
 # Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr ""
 "Atención: El archivo `%s' tiene una hora de modificación %.2g en el futuro"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "El elemento .LIBPATTERNS `%s' no es un patrón"
@@ -2005,7 +2029,7 @@ msgstr "El elemento .LIBPATTERNS `%s' no es un patr
 msgid "Customs won't export: %s\n"
 msgstr "Los valores definidos por el usuario no se exportarán: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -2013,7 +2037,7 @@ msgstr ""
 "\n"
 "# Reglas implícitas."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -2021,7 +2045,7 @@ msgstr ""
 "\n"
 "# No hay reglas implícitas."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -2030,7 +2054,7 @@ msgstr ""
 "\n"
 "# %u reglas implícitas, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
@@ -2038,16 +2062,16 @@ msgstr " terminal."
 # Gracias. mm
 # ¿ qué tal erróneo ? em+
 # Si, suena mejor. mm
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: ¡num_pattern_rules erróneo!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "señal desconocida"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Colgado"
 
@@ -2055,25 +2079,25 @@ msgstr "Colgado"
 # Porque es una acción. De hecho es un mensaje que se envía a través
 # del sistema en este caso le enviarías un kill -INT num_proceso para
 # interrumpir al programa. Lo revisé contra el fuente. mm
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Interrumpir"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Finalizar"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Instrucción no válida"
 
 # Los trap los hemos dejado como traps, simplemente. em+
 # Ok. mm
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Trace/breakpoint trap"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Abortado"
 
@@ -2081,13 +2105,13 @@ msgstr "Abortado"
 # Enrique tiene esta misma frase en glibc. sv
 # Eso es :) IOT trap em+
 # Ok. mm
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT trap"
 
 # Otra em+
 # Ok. mm
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT trap"
 
@@ -2096,7 +2120,7 @@ msgstr "EMT trap"
 # por eso usamos el punto flotante. Debemos llegar a un acuerdo.
 # Por ahora pongo coma flotante para facilitar las cosas, pero bajo
 # protesta ;-) mm
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Excepción de coma flotante"
 
@@ -2105,23 +2129,23 @@ msgstr "Excepci
 # Bueno, creo que mi traducción es más exacta, concisa y clara
 # pero si insisten... Además recuerda en que estoy en un país
 # en donde asesinado es palabra de todos los días. mm
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Terminado (killed)"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Error en el bus"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Fallo de segmentación"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Llamada al sistema errónea"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Tubería rota"
 
@@ -2132,36 +2156,36 @@ msgstr "Tuber
 # Bueno, un alarm clock es una alarma del reloj. No tiene pierde.
 # Temporizador es una bonita palabra pero en donde dice que va a
 # sonar una campana para despertarte? mm
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarma del reloj"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Finalizado"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Señal 1 definida por el usuario"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Señal 2 definida por el usuario"
 
 # Proceso hijo terminado em+
 # Ok. mm
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Proceso hijo terminado"
 
 # Fallo. sv
 # Alimentación eléctrico em+
 # Ok. mm
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Falla de alimentación eléctrica"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Detenido"
 
@@ -2172,30 +2196,30 @@ msgstr "Detenido"
 # Requiere 'de';) , como te vea Santiago que le metes
 # otro 'de' otra vez ... em+
 # Ok. mm
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Detenido (se requiere entrada de terminal)"
 
 # lo mismo, se requiere entrada de terminal ,  em+
 # Ok. mm
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Detenido (se requiere salida de terminal)"
 
 # idem em+
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Detenido (se requiere una señal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Se agotó el tiempo de CPU permitido"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Se excedió el tamaño máximo de archivo permitido"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "El contador de tiempo virtual ha expirado"
 
@@ -2207,112 +2231,123 @@ msgstr "El contador de tiempo virtual ha expirado"
 # Esto lo tengo en glibc, lo mirare otro día. Estos mensajes no son
 # importantes em+
 # Agregué unas palabras en aras de claridad (espero) mm
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "El contador de tiempo para la generación del perfil ha expirado"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "La ventana ha cambiado"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Continuado"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Condición urgente de I/O"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "Posible I/O"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Señal de peligro"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Petición de información"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Coprocesador de punto flotante no disponible"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# estadísticas de la tabla de hash de los archivos:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "por defecto"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "entorno"
 
 # Sugerencia: No poner archivo. sv
 # Ok. mm
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
 # 'bajo -e' = 'con -e activo' em+
 # Ok. Esta inversión en los idiomas sajones se pega. mm
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "con -e activo"
 
 # Línea de comandos me parece correcto em+
 # Ver arriba. Estoy de acuerdo si así han traducido en otros lados. mm
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "línea de instrucciones"
 
 # Creo que tendremos un problema con instrucción, comando
 # , programa y directiva . Está claro que aquí es directiva em+
 # Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "directiva de sobreposición `override'"
 
 # Lo he cmabiado em+
 # Ok. Deberíamos platicarlo con Ulrich. mm
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automática/o"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (de `%s', línea %lu):"
@@ -2322,11 +2357,11 @@ msgstr " (de `%s', l
 # Estos mensajes son para debug, no creo que haga falta usar cubetas ;) em+
 # Tienes razón, si el debugueador no lo entiende pues, ... que se
 # dedique a otra cosa. mm
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# estadísticas del conjunto de variables de la tabla de hash:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -2334,7 +2369,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -2342,7 +2377,7 @@ msgstr ""
 "\n"
 "# Valores de variables específicas al patrón"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -2350,7 +2385,7 @@ msgstr ""
 "\n"
 "# No hay valores de variables específicas al patrón."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -2361,14 +2396,14 @@ msgstr ""
 
 # ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv
 # Pero que bestia soy. Perdón por el desbarre. mm
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "atención: la variable `%.*s' no ha sido definida"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "fallo en sys$search con %d\n"
 
 #: vmsjobs.c:71
@@ -2376,49 +2411,44 @@ msgstr "fallo en sys$search con %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Atención: redirección vacía\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "error interno: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-atención, CTRL-Y dejará vivos a los subprocesos.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-atención, deberás rehabilitar el manejo del CTRL-Y desde el DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INTERCONSTRUIDO [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD INTERCONSTRUIDO %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM INTERCONSTRUIDO %s\n"
 
 # Por defecto, como haces arriba em+
 # en efecto, mm
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Instrucción interconstruida desconocida `%s'.\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Error, comando vacío\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada redirigida desde %s\n"
@@ -2432,31 +2462,41 @@ msgstr "Entrada redirigida desde %s\n"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Se redirecciona el error a %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Salida redirigida a %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Salida redirigida a %s\n"
 
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
 # "en sustituto" me suena muy raro. Propongo: "en su lugar" en su lugar :-) sv
 # Ok. mm
-#: vmsjobs.c:568
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "En su lugar, se ejecuta %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Error al lanzar el proceso %d\n"
 
 # ¿Y al revés?: Rutas de búsqueda VPATH. sv
 # Mejora
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2466,13 +2506,13 @@ msgstr ""
 
 # Rutas creo que queda mejor. sv
 # Ok. Es más común. mm
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# No hay rutas de búsqueda `vpath'."
 
 # ¡Ah! Aquí si que pones el vpath al final, ¿eh? :-) sv
 # You really got me! mm
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -2481,7 +2521,7 @@ msgstr ""
 "\n"
 "# %u rutas de búsqueda `vpath'.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -2489,7 +2529,7 @@ msgstr ""
 "\n"
 "# No hay ruta de búsqueda general (variable `VPATH')."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2505,6 +2545,33 @@ msgstr ""
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Reajustando a make para el modo monotarea."
 
+# De esto hablaremos otro día. sv
+# Si. Es bastante complicado. mm
+#~ 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 ""
+#~ "%sEste es software libre; consulte en el código fuente las condiciones de "
+#~ "copia.\n"
+#~ "%sNO hay garantía; ni siquiera para MERCANTIBILIDAD o EL CUMPLIMIENTO DE\n"
+#~ "%sALGÚN PROPÓSITO PARTICULAR.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "el `endef' es irrelevante o está mal colocado"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "instrucción `override' vacía"
+
+# Creo que tendremos un problema con instrucción, comando
+# , programa y directiva . Está claro que aquí es directiva em+
+# Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm
+#~ msgid "invalid `override' directive"
+#~ msgstr "directiva de sobreposición `override' inválida"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-atención, CTRL-Y dejará vivos a los subprocesos.\n"
+
 # Esto habría que revisarlo. sv
 # En efecto, había que revisarlo, no es número de archivos
 # sino que no hay archivos. mm
index fa05218..cc9ea0c 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index d17bf96..b85fbc4 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\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"
@@ -15,107 +15,108 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "yritettiin käyttää ominaisuutta, jolle ei ole tukea: \"%s\""
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Arkistoa \"%s\" ei ole olemassa"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: \"%s\" ei ole kelvollinen arkisto"
 
-#: ar.c:178
+#: ar.c:159
 #, 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
+#: ar.c:166
 #, 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"
+#, fuzzy, 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"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control epäonnistui, tila = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, 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
+#: arscan.c:850
 #, 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
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (nimi voi olla typistynyt)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Päiväys %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, oikeudet = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Katkaisu.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, 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
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Arkistojäsen \"%s\" voi olla viallinen - ei poisteta"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Poistetaan tiedosto \"%s\""
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Poistetaan tiedosto \"%s\""
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  käynnisetttävät komennot"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (sisäänrakennettu):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (tiedostosta \"%s\", rivi %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,221 +124,224 @@ msgstr ""
 "\n"
 "# Hakemistot\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: tilaa ei voitu lukea.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, 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
+#: dir.c:1016
 #, 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
+#: dir.c:1021
 #, 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
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (avain %s, maika %d: "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (laite %ld, i-solmu %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Ei"
 
 # Juuri näin, muodostetaan käännöslause yksittäisistä sanoista...
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " tiedostoa, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "ei"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " mahdottomuutta"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " tähän mennessä."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " mahdottomuutta %lu hakemistossa.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Rekursiivinen muuttuja \"%s\" viittaa (lopulta) itseensä"
 
-#: expand.c:266
+#: expand.c:276
 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,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was 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,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "Tiedostolle \"%s\" löytyi komentoja oletussääntöhaussa,"
 
-#: file.c:278
+#: file.c:275
 #, 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'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 "Tiedoston \"%s\" komentoja ei huomioida, vaan käytetään komentoja "
 "tiedostosta \"%s\"."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Poistetaan aputiedosto \"%s\""
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Poistetaan aputiedostot...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Tämänhetkinen aika"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Ei kohde:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Valekohde (ennakkoehto .PHONY:lle)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Komentorivikohde."
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Oletussääntöhaku on suoritettu."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Oletussääntöhakua ei ole suoritettu."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr ""
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Tiedosto on välitason ennakkoehto."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Tuotetaan myös:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Muutosaikaa ei koskaan tarkastettu."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Tiedosto ei ole olemassa."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Tiedosto on hyvin vanha."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Viimeksi muutettu %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Tiedosto on päivitetty."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Tiedostoa ei ole päivitetty."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe 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)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Päivitetty onnistuneesti."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Vaatii päivitystä (-q on asetettu)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Päivitys epäonnistui."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Virheellinen arvo \"update_status\"-jäsenessä!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Virheellinen arvo \"command_state\"-jäsenessä!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -345,7 +349,7 @@ msgstr ""
 "\n"
 "# Tiedostot"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -355,261 +359,262 @@ msgstr ""
 "# tilasto tiedostojen hajautustaulusta:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "ei-numeerinen ensimmäinen argumentti \"word\"-funktiolle"
 
-#: function.c:764
+#: function.c:763
 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
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "ei-numeerinen ensimmäinen argumentti \"wordlist\"-funktiolle"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "ei-numeerinen toinen argumentti \"wordlist\"-funktiolle"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) epäonnistui (v=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) epäonnistui (v=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, 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"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() epäonnistui\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Liian vähän (%d) argumenttejeja funktiolle \"%s\""
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Ei toteutettu tällä alustalla: funktio \"%s\""
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "päättämätön kutsu funktioon \"%s\": puuttuva \"%c\""
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: valitsin \"%s\" on moniselitteinen\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: valitsin \"--%s\" ei salli argumenttia\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, 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
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: valitsin \"%s\" vaatii argumentin\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: tunnistamaton valitsin \"--%s\"\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: tunnistamaton valitsin \"%c%s\"\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: virheellinen valitsin -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: virheellinen valitsin -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: valitsin vaatii argumentin -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: valitsin \"-W %s\" on moniselitteinen\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, 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"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Kuormitus=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Uudelleenhajautus=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Törmäykset=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Etsitään oletussääntöä kohteelle \"%s\".\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, 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
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Vältetään oletussääntörekursio.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, 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
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Hylätään mahdoton säännön ennakkoehto \"%s\".\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Yritetään käyttää oletusennakkoehtoa \"%s\".\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Hylätään mahdoton oletusennakkoehto \"%s\".\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Yritetään käyttää säännön ennakkoehtoa \"%s\".\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Yritetään käyttää oletusennakkoehtoa \"%s\".\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Löydettiin ennakkoehto \"%s\", joka on VPATH \"%s\"\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Etsitään sääntöä aputiedostolla \"%s\".\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "Väliaikaistiedoston luominen ei onnistu\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Virhe 0x%x (ei huomioida)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Virhe 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Virhe %d (ei huomioida)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Virhe %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (muisti vedostettu)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Odotetaan keskeneräisiä töitä...."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (etä)"
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:704
+#: job.c:763
 #, 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"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "työpalvelimen kirjoitus"
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, 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
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -618,99 +623,111 @@ 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"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Lisätään ketjuun lapsiprosessi 0x%08lx (%s) PID %ld%s.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "työputken luku"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Ei tarvetta uudelleentuottaa kohdetta \"%s\""
+
+#: job.c:1910
 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
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "kuormarajaa ei voi ottaa käyttöön: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 "tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 "tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr "Vakiosyötettä ei voitu palauttaa\n"
 
-#: job.c:1945
+#: job.c:2023
 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
+#: job.c:2127
 #, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Komentoa ei löytynyt"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Kuoriohjelmaa ei löytynyt"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: ympäristötila saattaa olla lopussa"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL muuttunut (oli \"%s\", nyt \"%s\")\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Luodaan väliaikainen komentotiedosto %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, 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
+#: main.c:303
 msgid "Options:\n"
 msgstr "Valitsimet:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 "  -b, -m                      Yhteensopivuuden vuoksi jätetään huomiotta.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Tuota kaikki kohteet ehdoitta.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -718,16 +735,16 @@ msgstr ""
 "  -C HAKEMISTO, --directory=HAKEMISTO\n"
 "                              Siirry HAKEMISTOon ennen jatkamista.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Näytä runsaasti vianetsintätietoja.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "  --debug[=LIPUT]             Näytä monenlaisia vianetsintätietoja.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -736,7 +753,12 @@ msgstr ""
 "                              Ympäristömuuttujat kumoavat makefile-"
 "tiedostot.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -744,17 +766,18 @@ msgstr ""
 "  -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n"
 "                              Käytä TIEDOSTOa makefile-tiedostona.\n"
 
-#: main.c:309
+#: main.c:323
 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"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Älä huomioi suoritettujen komentojen "
 "virheitä.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -763,7 +786,7 @@ msgstr ""
 "                              Etsi sisällytettäviä makefile:ja "
 "HAKEMISTOsta.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -771,14 +794,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Salli N yhtäaikaista työtä; ilman N:ää "
 "ääretön.\n"
 
-#: main.c:318
+#: main.c:332
 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
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -788,7 +811,7 @@ msgstr ""
 "                              Älä aloita useita töitä ellei kuormitus alle "
 "N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -796,17 +819,18 @@ msgstr ""
 "  -L, --check-symlink-times   Käytä uusinta mtime-aikaa symlinkkien ja\n"
 "                                kohteen välillä.\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Näytä ajettavat komennot, älä käynnistä "
 "niitä.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -815,33 +839,35 @@ msgstr ""
 "  -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n"
 "                              Käsittele TIEDOSTO vanhana, älä tuota sitä.\n"
 
-#: main.c:331
+#: main.c:345
 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
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Älä aja komentoja; paluuarvo kertoo ajan-\n"
 "                                tasaisuuden.\n"
 
-#: main.c:335
+#: main.c:349
 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
+#: main.c:351
 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"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Älä kaiuta komentoja.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -849,20 +875,20 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Kumoaa valitsimen -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "  -t, --touch                 Kosketa kohteita tuottamisen sijaan.\n"
 
-#: main.c:346
+#: main.c:360
 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
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Näytä nykyinen hakemisto.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -870,7 +896,7 @@ msgstr ""
 "  --no-print-directory        Kumoa -w, vaikka se olisi käytössä "
 "oletuksena.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -879,7 +905,7 @@ msgstr ""
 "new=TIEDOSTO\n"
 "                              Käsittele TIEDOSTO aina uutena.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -887,28 +913,28 @@ msgstr ""
 "  --warn-undefined-variables  Varoita viittauksista määrittelemättömiin\n"
 "                                muuttujiin.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "tuntematon vianetsintätason määritys \"%s\""
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%x, osoite = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Ohjelmasta %s kutsuttiin käsittelemätöntä poikkeussuodinta\n"
@@ -916,159 +942,164 @@ msgstr ""
 "Poikkeusliput = %x\n"
 "Poikkeusosoite = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\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"
+#: main.c:781 main.c:792
+#, fuzzy, 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"
+#: main.c:834
+#, fuzzy, 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
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s keskeytyy 30 sekunniksi..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) valmis. Jatketaan.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (väliaikaistiedosto)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (väliaikaistiedosto)"
 
-#: main.c:1640
+#: main.c:1703
 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
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Palataan yhden työn (-j1) tilaan."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "sisäinen virhe: useitan --jobserver-fds -valitsimia"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono \"%s\""
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 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
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "kaksinkertainen työpalvelin"
 
-#: main.c:1687
+#: main.c:1753
 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
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "luodaan työputki"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "alustetaan työpalvelimen putki"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Päivitetään makefile-tiedostoja....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, 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
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Makefile-tiedoston \"%s\" uudelleentuottaminen epäonnistui."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Sisällytettyä makefile-tiedostoa \"%s\" ei löytynyt."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefile-tiedostoa \"%s\" ei löytynyt"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Uudelleenkäynnistetään[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (väliaikaistiedosto): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Ei kohteita"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2222
+#: main.c:2306
 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
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Käyttö: %s [valitsimet] [kohde] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1077,7 +1108,7 @@ msgstr ""
 "\n"
 "Tämä ohjelma on käännetty järjestelmälle %s.\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1086,52 +1117,46 @@ msgstr ""
 "\n"
 "Tämä ohjelma on käännetty järjestelmälle %s (%s).\n"
 
-#: main.c:2394
+#: main.c:2481
 #, 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"
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "valitsin \"-%c\" vaatii ei-tyhjän merkkijonoargumentin"
 
-#: main.c:2518
+#: main.c:2617
 #, 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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\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"
+"%sTämä ohjelma on käännetty järjestelmälle %s.\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
-"%sTämä ohjelma on käännetty järjestelmälle %s.\n"
+"%sTämä ohjelma on käännetty järjestelmälle %s (%s).\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sTämä ohjelma on käännetty järjestelmälle %s (%s).\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1140,7 +1165,7 @@ msgstr ""
 "\n"
 "# Make-tietokanta, tulostettu %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1149,308 +1174,305 @@ msgstr ""
 "\n"
 "# Make-tietokanta saatu valmiiksi %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Siirrytään hakemistoon \"%s\"\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Poistutaan hakemistosta \"%s\"\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Siirrytään tuntemattomaan hakemistoon\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Siirrytään hakemistoon \"%s\"\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Poistutaan hakemistosta \"%s\"\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Seis.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Tuntematon virhe %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "virtuaalimuisti lopussa"
 
-#: misc.c:646
+#: misc.c:708
 #, 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
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Alkuperäiset käyttöoikeudet"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Käyttäjän käyttöoikeudet"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Make-prosessin käyttöoikeudet"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Lapsiprosessin käyttöoikeudet"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "kirjoitusvirhe: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "kirjoitusvirhe"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Luetaan makefile-tiedostoja...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Luetaan makefile-tiedosto \"%s\""
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr ""
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (hakupolku)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (ei välitetä)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ei ~-laajennusta)"
 
-#: read.c:623
+#: read.c:759
 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"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "komennot alkavat ennen ensimmäistä kohdetta"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "puuttuva sääntö ennen komentoja"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "puuttuva erotin%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (ehkä tarkoitit sarkainta eikä kahdeksaa välilyöntiä?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "puuttuva kohdehahmo"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "useita kohdehahmoja"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "kohdehahmo ei sisällä %%-merkkiä"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "puuttuva \"endif\""
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "tyhjä muuttujan nimi"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Ylimääräistä tekstiä \"endef\"-toimintaohjeen jälkeen"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "puuttuva \"endef\", päättämätön \"define\""
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Ylimääräistä tekstiä \"endef\"-toimintaohjeen jälkeen"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Ylimääräistä tekstiä \"%s\"-toimintaohjeen jälkeen"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "ylimääräinen \"%s\""
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "vain yksi \"else\" ehtolausetta kohden"
 
-#: read.c:1824
+#: read.c:1797
 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"
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
 msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1954
+#: read.c:1976
 #, 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
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "kohdetiedostolla \"%s\" on sekä :- että ::-merkinnät"
 
-#: read.c:1979
+#: read.c:1997
 #, 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'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "varoitus: syrjäytetään kohteen \"%s\" komennot"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle \"%s\""
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Kohteelle \"%s\" ei tarvitse tehdä mitään."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "\"%s\" on ajan tasalla."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Karsitaan tiedosto \"%s\".\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sKohteen \"%s\" tuottamiseen ei ole sääntöä%s"
 
-#: remake.c:351
+#: remake.c:361
 #, 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
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Tarkastellaan tiedostoa \"%s\".\n"
 
-#: remake.c:385
+#: remake.c:420
 #, 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
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Tiedostoa \"%s\" on jo tarkasteltu.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Päivitetään edelleen tiedostoa \"%s\".\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Tiedosto \"%s\" päivitetty.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Tiedosto \"%s\" ei ole olemassa.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1458,132 +1480,137 @@ msgstr ""
 "*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla \"%s\" on "
 "korkearesoluutioinen aikaleima"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Kohteelle \"%s\" löytyi oletussääntö.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, 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"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Käytetään oletuskomentoja kohteelle \"%s\".\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Kehäriippuvuus %s <- %s hylätty."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Kohdetiedoston \"%s\" ennakkoehdot täytetty.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Kohteen \"%s\" ennakkoehtoja täytetään.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Luovutaan kohdetiedostosta \"%s\".\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Kohdetta \"%s\" ei tuotettu uudelleen virheiden vuoksi."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ""
 
-#: remake.c:682
+#: remake.c:732
 #, 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
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Ennakkoehto \"%s\" on uudempi kuin kohde \"%s\".\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Ennakkoehto \"%s\" on vanhempi kuin kohde \"%s\".\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:720
+#: remake.c:770
 #, 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
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Ei tarvetta uudelleentuottaa kohdetta \"%s\""
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; käytetään VPATH-nimeä \"%s\""
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Kohde \"%s\" on tuotettava uudelleen.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ei huomioida VPATH-nimeä \"%s\".\n"
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
+msgid "Recipe of `%s' is being run.\n"
 msgstr ""
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Kohdetiedoston \"%s\" uudelleentuottaminen epäonnistui.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Kohdetiedosto \"%s\" uudelleentuotettiin onnistuneesti.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr ""
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Käytetään oletuskomentoja kohteelle \"%s\".\n"
+
+#: remake.c:1357
 #, 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"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Varoitus: Tiedoston \"%s\" muutosaika on %.2g sekuntia tulevaisuudessa"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS-elementti \"%s\" ei ole hahmo"
@@ -1593,7 +1620,7 @@ msgstr ".LIBPATTERNS-elementti \"%s\" ei ole hahmo"
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1601,7 +1628,7 @@ msgstr ""
 "\n"
 "# Oletussäännöt"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1609,7 +1636,7 @@ msgstr ""
 "\n"
 "# Ei oletussääntöjä."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1618,231 +1645,242 @@ msgstr ""
 "\n"
 "# %u oletussääntöä, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr ""
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "VIKA: num_pattern_rules väärä! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "tuntematon signaali"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Linjankatkaisu"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Keskeytys"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Lopetettu"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Virheellinen käsky"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Jäljitys/katkaisupisteansa"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Keskeytetty"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT-ansa"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT-ansa"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Liukulukupoikkeus"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Tapettu"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Väylävirhe"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Muistialueen ylitys"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Virheellinen järjestelmäkutsu"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Katkennut putki"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Herätyskello"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Päätetty"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Käyttäjän määrittelemä signaali 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Käyttäjän määrittelemä signaali 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Lapsi lopetti"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Sähkökatko"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Pysäytetty"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Pysäytetty (päätteen syöte)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Pysäytetty (päätteen tuloste)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Pysäytetty (signaali)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Suoritinaikaraja ylittynyt"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Tiedoston kokoraja ylitetty"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtuaaliajastin vanhentunut"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profilointiajastin vanhentunut"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Ikkuna vaihtunut"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Jatkettu"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Kiireellinen I/O-tilanne"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O mahdollista"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Resurssi menetetty"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Vaarasignaali"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Tietopyyntö"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Käytettävissä ei ole liukulukusuoritinta"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# tilasto tiedostojen hajautustaulusta:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "oletus"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "ympäristö"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "-e:n alainen ympäristö"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "komentorivi"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "\"override\"-toimintaohje"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automaattinen"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (tiedostosta \"%s\", rivi %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# muuttujajoukon hajautustaulutilastot:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1850,7 +1888,7 @@ msgstr ""
 "\n"
 "# Muuttujat\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1858,7 +1896,7 @@ msgstr ""
 "\n"
 "# Hahmokohtaisia muuttujien arvoja"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1866,7 +1904,7 @@ msgstr ""
 "\n"
 "# Ei hahmokohtaisia muuttuja-arvoja."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1875,14 +1913,14 @@ msgstr ""
 "\n"
 "# %u hahmokohtaista muuttuja-arvoa"
 
-#: variable.h:189
+#: variable.h:219
 #, 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"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search epäonnistui, arvo %d\n"
 
 #: vmsjobs.c:71
@@ -1890,73 +1928,78 @@ msgstr "sys$search epäonnistui, arvo %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Varoitus: Tyhjä uudelleenohjaus\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, 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
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "SISÄÄNRAKENNETTU [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "SISÄÄNRAKENNETTU CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "SISÄÄNRAKENNETTU RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Tuntematon sisäänrakennettu komento \"%s\"\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Virhe, tyhjä komento\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Syöte uudelleenohjattu kohteesta %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Virhetuloste uudelleenohjattu kohteeseen %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Käynnistetään sen sijaan %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Virhe käynnistyksessä, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1964,11 +2007,11 @@ msgstr ""
 "\n"
 "# VPATH-hakupolut\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Ei \"vpath\"-hakupolkuja."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1977,7 +2020,7 @@ msgstr ""
 "\n"
 "# %u \"vpath\"-hakupolkua.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1985,7 +2028,7 @@ msgstr ""
 "\n"
 "# Ei yleistä (\"VPATH\"-muuttuja) hakupolkua."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2001,5 +2044,26 @@ msgstr ""
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Palautetaan make yhden työn tilaan."
 
+#~ 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"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "ylimääräinen \"endef\""
+
+#~ msgid "empty `override' directive"
+#~ msgstr "tyhjä \"override\"-toimintaohje"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "virheellinen \"override\"-toimintaohje"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-varoitus, Ctrl-Y jättää aliprosessi(n/t) käyntiin.\n"
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "Syntaksivirhe, edelleen \":n sisällä\n"
index b86a249..85109c0 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index b6e1db3..4b38b22 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
 # Messages français pour make.
-# Copyright © 2004 Free Software Foundation, Inc.
-# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
+# Copyright © 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 #
 # 30-juillet-2001, n'avons plus de nouvelle de Marc depuis 5 janvier 1997
 # Marc Baudoin <babafou@ensta.fr>, Frédéric Liné <line@MicroNet.fr>, 1996.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996-2006
+# Christophe Combelles <ccomb@free.fr>, 2009, 2010
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU make 3.81-b3\n"
+"Project-Id-Version: GNU make 3.81.91\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-29 08:00-0500\n"
-"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2010-07-23 01:02+0100\n"
+"Last-Translator: Christophe Combelles <ccomb@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
-msgstr "tentative d'utiliser une caractéristique non supportée : « %s »"
+msgstr "tentative d'utiliser une caractéristique non prise en charge : « %s »"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "impossible de modifier la date d'un membre d'une archive sur VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
-msgstr "touch: L'archive « %s » n'existe pas"
+msgstr "touch : l'archive « %s » n'existe pas"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
-msgstr "touch: « %s » n'est pas une archive valide"
+msgstr "touch : « %s » n'est pas une archive valide"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch: Le membre « %s » n'existe pas dans « %s »"
+msgstr "touch : le membre « %s » n'existe pas dans « %s »"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
-msgstr "touch: Mauvais code de retour de ar_member_touch pour « %s »"
+msgstr "touch : mauvais code de retour de ar_member_touch pour « %s »"
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
-msgstr "lbr$set_module en échec lors de l'extraction du module info, état = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_module() n'a pas pu extraire les infos du module. Code = %d"
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
-msgstr "lbr$ini_control en échec avec l'état = %d"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() a échoué avec un code = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "ne peut ouvrir la librairie %s pour y repérer le membre « %s »"
+msgstr "impossible d'ouvrir la bibliothèque %s pour récupérer le membre « %s »"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membre « %s »%s: %ld octets a %ld (%ld).\n"
+msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (le nom peut être tronqué)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Date %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Break.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
-"*** [%s] membre d'archive « %s » peut être corrompu; n'a pas été détruit"
+"*** [%s] le membre d'archive « %s » peut avoir un problème ; il n'a pas été "
+"supprimé"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** membre d'archive « %s » peut être corrompu; n'a pas été détruit"
+msgstr ""
+"*** Le membre d'archive « %s » peut avoir un problème; il n'a pas été supprimé"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Destruction du fichier « %s »"
+msgstr "*** [%s] Suppression du fichier « %s »"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
-msgstr "*** Destruction du fichier « %s »"
+msgstr "*** Suppression du fichier « %s »"
 
-#: commands.c:599
-msgid "#  commands to execute"
-msgstr "#  commandes à exécuter"
+#: commands.c:676
+msgid "#  recipe to execute"
+msgstr "#  recette à exécuter"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (commande interne):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
-msgstr " (de « %s », ligne %lu):\n"
+msgstr " (de « %s », ligne %lu) :\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -127,226 +131,226 @@ msgstr ""
 "\n"
 "# Répertoires\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s : statut indisponible.\n"
+msgstr "# %s : « stat » impossible.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (clé %s, mtime %d): n'a pu être ouvert.\n"
+msgstr "# %s (clé %s, mtime %d) : ouverture impossible.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : n'a pas pu être ouvert.\n"
+msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (périphérique %ld, inode %ld) : n'a pas pu être ouvert.\n"
+msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (périphérique %s, mtime %d): "
+msgstr "# %s (périphérique %s, mtime %d) : "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (périphérique %ld, inode %ld) : "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
-msgstr "Pas de"
+msgstr "Aucun"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
-msgstr " fichiers, "
+msgstr " fichier(s), "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
-msgstr "non"
+msgstr "aucune"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
-msgstr " impossibilités"
+msgstr " impossibilité(s)"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " jusqu'ici."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilités dans %lu répertoires.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "La variable récursive « %s » se référence elle-même (finalement)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "référence incomplète à une variable"
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
-msgstr "Les commandes pour le fichier « %s » ont été spécifiées à %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Une recette a été spécifiée pour le fichier « %s » à %s:%lu,"
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
-"Les commandes pour le fichier « %s » ont été trouvées par une recherche de "
-"règle implicite,"
+"La recette pour le fichier « %s » a été trouvée par une recherche de règle "
+"implicite,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
 "mais « %s » est maintenant considéré comme étant le même fichier que « %s »."
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
-msgstr ""
-"Les commandes pour « %s » seront ignorées en faveur de celles pour « %s »."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
-"impossible de renommer le simple deux-points « %s » en double deux-points « %"
-"»"
+"impossible de renommer le deux-points simple « %s » en deux-points double « %s "
+"»"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
-"impossible de renommer le double deux-points « %s » en simple deux-points « %"
-"»"
+"impossible de renommer le deux-points double « %s » en deux-points simple « %s "
+"»"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Suppression du fichier intermédiaire « %s »"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Suppression des fichiers intermédiaires...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: tampon date-heure hors limite; substitution par %s"
+msgstr "%s : horodatage hors limite ; remplacement par %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
-msgstr "Heure courante"
+msgstr "Heure actuelle"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Pas une cible :"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Fichier précieux (dépendance de .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Cible factice (dépendance de .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
-msgstr "#  Cible provenant de la ligne de commande."
+#: file.c:933
+msgid "#  Command line target."
+msgstr "#  Cible de la ligne de commande."
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Une valeur par défaut MAKEFILES ou -include/sinclude makefile."
+msgstr "#  Une valeur par défaut, MAKEFILES ou -include/sinclude makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
-msgstr "#  Recherche de règle implicite effectuée."
+msgstr "#  La recherche de règle implicite a été effectuée."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Recherche de règle implicite n'a pas été effectuée."
+msgstr "#  La recherche de règle implicite n'a pas été effectuée."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Préfixe de schéma implicite/statique : « %s »\n"
+msgstr "#  Préfixe de motif implicite ou statique : « %s »\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  Ce fichier est une dépendance intermédiaire."
+msgstr "#  Le fichier est une dépendance intermédiaire."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Fabrique également :"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Heure de modification jamais vérifiée."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
-msgstr "# Fichier inexistant."
+msgstr "# Le fichier n'existe pas."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
-msgstr "#  Fichier très âgé."
+msgstr "#  Le fichier est très ancien."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Dernière modification %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
-msgstr "#  Fichier a été mis à jour."
+msgstr "#  Le fichier a été mis à jour."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
-msgstr "#  Fichier n'a pas été mis à jour."
+msgstr "#  Le fichier n'a pas été mis à jour."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
-msgstr "#  Commandes en cours d'exécution (CECI EST UN BUG)."
+#: file.c:968
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Recette en cours d'exécution (CECI EST UNE ANOMALIE)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
-msgstr "#  Commandes de dépendances en cours d'exécution (CECI EST UN BUG)."
+#: file.c:971
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr ""
+"#  Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
-msgstr "#  Mise à jour réussie"
+msgstr "#  Mise à jour réussie."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  A besoin d'être mis à jour (l'option -q est activée)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  N'a pas pu être mis à jour."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Valeur non valable dans le membre « update_status » !"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Valeur non valable dans le membre « command_state » !"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -354,808 +358,834 @@ msgstr ""
 "\n"
 "# Fichiers"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statistiques des fichiers de la table de hachage:\n"
+"# stats des tables de hachage des fichiers :\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
-msgstr "premier argument de la fonction « word » non numérique"
+msgstr "le premier argument de la fonction « word » doit être numérique"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
-msgstr "premier argument de la fonction « word » dot être plus grand que 0"
+msgstr "le premier argument de la fonction « word » doit être plus grand que 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
-msgstr "premier argument de la fonction « wordlist » n'est pas numérique"
+msgstr "le premier argument de la fonction « wordlist » doit être numérique"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
-msgstr "premier argument de la fonction « wordlist » n'est pas numérique"
-
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process(): DuplicateHandle(In) en échec (e=%d)\n"
+msgstr "le deuxième argument de la fonction « wordlist » doit être numérique"
 
-#: function.c:1464
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process(): DuplicateHandle(Err) en échec (e=%d)\n"
+#: function.c:1458
+#, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) a échoué (e=%ld)\n"
 
 #: function.c:1469
-#, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() en échec (e=%d)\n"
+#, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): DuplicateHandle(Err) a échoué (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
-msgstr "windows32_openpipe(): process_init_fd() en échec\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() a échoué (e=%ld)\n"
 
-#: function.c:1725
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() a échoué\n"
+
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "Nettoyage du fichier temporaire %s\n"
+msgstr "Nettoyage du fichier de commandes temporaire %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "nombre insuffisant d'argument (%d) de la fonction « %s »"
+msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Non implanté sur cette plate-forme: fonction « %s »"
+msgstr "non implémenté sur cette plateforme: fonction « %s »"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "appel à la fonction « %s » non terminé : « %c » manquant"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s : l'option « %s » est ambiguë\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s : l'option « --%s » ne prend pas d'argument\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s : l'option « %c%s » ne prend pas d'argument\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s : l'option « %s » nécessite un argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s : option non reconnue « --%s »\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s : option non reconnue « %c%s »\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s : option illégale -- %c\n"
+msgstr "%s : option non admise -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s : option invalide -- %c\n"
+msgstr "%s : option incorrecte -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s : l'option nécessite un argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s : l'option « -W %s » est ambiguë\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s : l'option « -W %s » ne prend pas d'argument\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
-msgstr "ne peut allouer %ld octets pour la table de hachage: mémoire épuisée"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr ""
+"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Charge=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr "Refait le hachage=%d, "
+msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Collisions=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Recherche d'une règle implicite pour « %s ».\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Évitement de récursion dans une régle implicite.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Essai du schéma avec « %.*s » comme préfixe.\n"
+msgstr "Essai du motif avec « %.*s » comme radical.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rejet impossible d'une dépendance implicite « %s ».\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Rejet impossible d'une dépendance de règle « %s ».\n"
+msgstr "Rejet d'une dépendance de règle impossible « %s ».\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Essaie de la dépendance implicite « %s ».\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Rejet d'une dépendance implicite impossible « %s ».\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Essai de la règle de dépendance « %s ».\n"
+msgstr "Essai de la dépendance de règle « %s ».\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Essai de la dépendance implicite « %s ».\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "Ne peut créer un fichier temporaire\n"
+msgstr "Impossible de créer un fichier temporaire\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Erreur 0x%x (ignorée)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Erreur 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Erreur %d (ignorée)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Erreur %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
-msgstr " (vidange mémoire)"
+msgstr " (core dump créé)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Attente des tâches non terminées...."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
-msgstr "Processus fils actif 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Processus fils actif %p (%s) PID %s %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (distant)"
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
-msgstr ""
-"Récupération du statut de sortie du processus fils 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Récolte du processus fils perdant %p PID %s %s\n"
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
-msgstr ""
-"Récupération du statut de sortie du processus fils 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Récolte du processus fils gagnant %p PID %s %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "Nettoyage du fichier temporaire %s\n"
+msgstr "Nettoyage du fichier de commande temporaire %s\n"
 
-#: job.c:802
+#: job.c:861
 #, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "Suppression du processus fils 0x%08lx PID %ld%s de la chaîne.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "écriture vers le serveur de tâches"
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
-msgstr "Relâche du jeton du processus fils 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
+msgstr "Jeton relâché pour le processus fils %p (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() en échec du lancement du processus (e=%d)\n"
+msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Dénombré %d arguments lors du lancement en échec\n"
+"%d arguments comptés lors du lancement échoué\n"
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
-msgstr "Ajout du processus fils 0x%08lx (%s) PID %ld%s à la chaîne.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
-msgstr "Obtention d'un jeton pour le processus fils 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Jeton obtenu pour le processus fils %p (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
-msgstr "lecture des pipes des processus"
+msgstr "lecture du tube des processus"
+
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr "Invocation de recette de %s:%lu pour mettre à jour la cible « %s ».\n"
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr ""
+"Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n"
 
-#: job.c:1832
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 "impossible d'imposer des limites de charge sur ce système d'exploitation"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "impossible d'imposer des limites de charge : "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr "plus de pointeurs de fichiers: ne peut duplicater stdin\n"
+msgstr ""
+"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr "plus de pointeurs de fichiers: ne peut duplicater stdout\n"
+msgstr ""
+"plus d'identificateur de fichier disponible : impossible de dupliquer "
+"stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr "Ne peut restaurer stdin\n"
+msgstr "Impossible de restaurer stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
-msgstr "Ne peut restaurer stdout\n"
-
-#: job.c:2016
-#, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() en échec du lancement du processus (e=%d)\n"
+msgstr "Impossible de restaurer stdout\n"
 
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make a récupéré le processus fils pid %d, en attente du pid %d\n"
+#: job.c:2127
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr ""
+"make a récolté le processus fils pid %s, toujours en attente du pid %s\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s : commande introuvable"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s : interpréteur de commandes introuvable"
+msgstr "%s : programme Shell introuvable"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: l'espace de l'environment peut être épuisé"
+msgstr "spawnvpe: l'espace d'environnement est peut-être épuisé"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL a été modifié (était « %s » et  maintenant est « %s »)\n"
+msgstr "$SHELL a été modifié (valait « %s », maintenant vaut « %s »)\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "Création d'un fichier temporaire %s\n"
+msgstr "Création d'un fichier de commande temporaire %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Contenu du fichier Batch :%s\n"
+"\t%s\n"
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
-"%s (ligne %d) contexte erroné d'interpréteur (!unixy && !batch_mode_shell)\n"
+"%s (ligne %d) Mauvais contexte du shell (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
-msgstr "Options:\n"
+msgstr "Options :\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      ignoré pour compatibilité\n"
+msgstr "  -b, -m                      Ignoré pour compatibilité.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
-"  -B, --always-make           traiter toutes les cibles sans condition\n"
+"  -B, --always-make           Fabriquer toutes les cibles sans condition.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C RÉPERTOIRE, --directory=RÉPERTOIRE\n"
-"                              changer de répertoire avant de faire quoi que "
-"ce soit\n"
+"                              Se placer dans le RÉPERTOIRE avant toute "
+"action.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          afficher beaucoup d'informations de débugging\n"
+"  -d                          Afficher beaucoup d'informations de débogage.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=FANIONS]           afficher divers types d'informations de "
-"débugging\n"
+"  --debug[=FLAGS]           Afficher divers types d'informations de "
+"débogage.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              les variable d'environment écrase celles de "
-"makefile\n"
+"                              Les variables d'environment sont prioritaires "
+"sur les makefiles.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+"  --eval=CHAINE               Evaluer la CHAINE comme une instruction de "
+"makefile.\n"
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 "  -f FICHIER, --file=FICHIER, --makefile=FICHIER\n"
-"                              lire le FICHIER comme fichier makefile\n"
+"                              Lire le FICHIER comme un makefile.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "  -h, --help                  afficher ce message et quitter\n"
+msgstr "  -h, --help                  Afficher ce message et quitter.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
-"  -i, --ignore-errors         ignorer les erreurs d'exécution des commandes\n"
+"  -i, --ignore-errors         Ignorer les erreurs venant des recettes.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I RÉPERTOIRE, --include-dir=RÉPERTOIRE\n"
-"                              RÉPERTOIRE de recherche pour les fichiers "
-"inclus lors du makefile\n"
+"                              Chercher dans le RÉPERTOIRE les makefiles "
+"traités par inclusion.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          autoriser N tâches simultanées ; nombre de "
-"tâches est infini si utilisé sans argument\n"
+"  -j [N], --jobs[=N]          Autoriser N tâches simultanées ; nombre infini "
+"si utilisé sans argument.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
-"  -k, --keep-going            poursuivre même si certaines cibles n'ont pas "
-"pu être fabriquées\n"
+"  -k, --keep-going            Poursuivre même si certaines cibles n'ont pas "
+"pu être fabriquées.\n"
 
-#: main.c:320
+#: main.c:334
 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"
-"                              na pas lancer de multiples tâches à moins que "
-"la charge soit inférieure à N\n"
+"                              Ne pas lancer de tâches multiples à moins que "
+"la charge soit inférieure à N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times   utiliser le dernier mtime entre les liens "
-"symboliques et la cible.\n"
+"  -L, --check-symlink-times   Utiliser le « mtime » le plus récent entre les "
+"liens symboliques et la cible.\n"
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              ne pas exécuter aucune commande; seulement les "
-"afficher\n"
+"                              N'exécuter aucune recette ; seulement les "
+"afficher.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
 "  -o FICHIER, --old-file=FICHIER, --assume-old=FICHIER\n"
-"                              considérer le FICHIER comme étant très âgé et "
-"ne pas le retraiter\n"
+"                              Considérer le FICHIER comme étant très ancien "
+"et ne pas le refabriquer.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
-"  -p, --print-data-base       afficher la base de données interne de make\n"
+"  -p, --print-data-base       Afficher la base de données interne de make.\n"
 
-#: main.c:333
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"  -q, --question              ne pas exécuter de commandes ; le statut de "
-"sortie indique si la cible est à jour\n"
+"  -q, --question              Ne pas exécuter de recette ; le code de sortie "
+"indique si la cible est à jour.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
-"  -r, --no-builtin-rules      désactiver les règles implicites internes\n"
+"  -r, --no-builtin-rules      Désactiver les règles implicites internes.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  désactiver les variables d'initialisation des "
-"règles implicites internes\n"
+"  -R, --no-builtin-variables  Désactiver les réglages des variables "
+"internes.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
-msgstr "  -s, --silent, --quiet       ne pas faire l'écho des commandes\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       Ne pas répéter les recettes.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              désactivier -k\n"
+"                              Désactiver -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 assigner l'heure actuelle aux cibles au lieu "
-"de les refabriquer\n"
+"  -t, --touch                 Assigner l'heure actuelle aux cibles au lieu "
+"de les refabriquer.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
-"  -v, --version               afficher le numéro de version de make et "
-"quitter\n"
+"  -v, --version               Afficher le numéro de version de make et "
+"quitter.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       afficher le répertoire courant\n"
+msgstr "  -w, --print-directory       Afficher le répertoire courant.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        désactiver l'option -w, même si elle a été "
-"activée implicitement\n"
+"  --no-print-directory        Désactiver l'option -w, même si elle a été "
+"activée implicitement.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 "  -W FICHIER, --what-if=FICHIER, --new-file=FICHIER, --assume-new=FICHIER\n"
-"                              considérer le FICHIER comme étant toujours "
-"nouveau\n"
+"                              Considérer le FICHIER comme étant toujours "
+"nouveau.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  prévenir lorsqu'une variable non définie est "
-"référencée\n"
+"  --warn-undefined-variables  Prévenir lorsqu'une variable non définie est "
+"référencée.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "une chaîne vide n'est pas un nom de fichier valable"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
-msgstr "niveau de débug inconnu « %s »"
+msgstr "niveau de débogage inconnu « %s »"
 
-#: main.c:670
-#, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+#: main.c:690
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
-"%s: interception de l'Interruption/Exception (code = 0x%x, addr = 0x%x)\n"
+"%s : interception de l'Interruption/Exception (code = 0x%lx, addr = 0x%p)\n"
 
-#: main.c:677
-#, fuzzy, c-format
+#: main.c:697
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Filtre d'exception à ne pas traiter appelé par le programme %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"Filtre d'exception non pris en charge appelé depuis le programme %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:685
-#, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Violation d'accès: opération d'écriture à l'adresse %x\n"
+#: main.c:705
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n"
 
-#: main.c:686
-#, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Violoation d'accès: opération de lecture à l'adresse %x\n"
+#: main.c:706
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n"
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
-msgstr "find_and_set_shell initialisé aux paramètres default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() définit default_shell = %s\n"
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
-"find_and_set_shell chemin de recherche initialisé aux paramètres "
-"default_shell = %s\n"
+"La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr "%s est suspendu pour 30 secondes..."
+msgstr "%s s'arrête pendant 30 secondes..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "sommeil terminé(30). Poursuite.\n"
+msgstr "sleep(30) terminé. On continue.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
-msgstr "Makefile depuis l'entrée stadnard spécifié deux fois."
+msgstr "Makefile depuis l'entrée standard spécifié deux fois."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (fichier temporaire)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (fichier temporaire)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
-"Les tâches en parallèle (-j) ne sont pas supportées sur cette plate-forme."
+"Les tâches en parallèle (-j) ne sont pas prises en charge sur cette "
+"plateforme."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
-msgstr "Réinitialisation en mode simple de traitement des tâches (-j1)."
+msgstr "On revient en mode monotâche (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
-msgstr "erreur interne: options multiple de --jobserver-fds"
+msgstr "erreur interne : options --jobserver-fds multiples"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "erreur interne: chaîne « %s » invalide dans --jobserver-fds"
+msgstr "erreur interne : chaîne --jobserver-fds incorrecte « %s » "
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "client Jobserver (fds %d,%d)\n"
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
-"AVERTISSEMENT: -jN forcé dans submake: désactivation du mode serveur de "
-"taches."
+"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de "
+"tâches."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
-msgstr "duplication par dup du serveur de tâches"
+msgstr "duplication du serveur de tâches"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
-"AVERTISSEMENT: serveur de tâches n'est pas disponible: utilisation de -j1. "
-"Ajouter « + » à la règle parent du make."
+"AVERTISSEMENT : le serveur de tâches n'est pas disponible: utilisation de -"
+"j1. Ajouter « + » à la règle parent du make."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
-msgstr "création des pipes pour les tâches"
+msgstr "création d'un tube pour les tâches"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
-msgstr "initialisation du pipe du serveur de tâches"
+msgstr "initialisation du tube du serveur de tâches"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr "Les liens symboliques ne sont pas supportées: désactivation de -L."
+msgstr ""
+"Les liens symboliques ne sont pas pris en charge : désactivation de -L."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Mise à jour des makefiles....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Le makefile « %s » peut boucler ; pas de refabrication.\n"
+msgstr "Le makefile « %s » peut boucler ; on ne refabrique pas.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Échec de refabrication du makefile « %s »."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
-msgstr "Le makefile inclus « %s » n'a pas été trouvé."
+msgstr "Le makefile inclus « %s » est introuvable."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
-msgstr "Le makefile « %s » n'a pas été trouvé"
+msgstr "Le makefile « %s » est introuvable"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Impossible de revenir dans le répertoire d'origine."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
-msgstr "Ré-exécution[%u]:"
+msgstr "Ré-exécution[%u] :"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (fichier temporaire):"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ".DEFAULT_GOAL conteitn plus d'une cible"
+msgstr ".DEFAULT_GOAL contient plus d'une cible"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
-msgstr "Pas de cibles spécifiées et aucun makefile n'a été trouvé"
+msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
-msgstr "Pas de cibles"
+msgstr "Pas de cible"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
-msgstr "Mise à jour des cibles visées....\n"
+msgstr "Mise à jour des objectifs cibles....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"AVERTISSEMENT: changement d'horloge détecté. La construction peut être "
+"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être "
 "incomplète."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Usage : %s [options] [cible] ...\n"
+msgstr "Utilisation : %s [options] [cible] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Ce logiciel est construit pour %s\n"
+"Ce programme a construit pour %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Ce logiciel est construit pour %s (%s)\n"
+"Ce programme a construit pour %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Rapporter toutes anomalies à  <bug-make@gnu.org>.\n"
+msgstr "Signaler les anomalies à  <bug-make@gnu.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "l'option « -%c » requiert une chaîne non vide comme argument"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "l'option « -%c » prend en argument un entier positif"
 
-#: main.c:2942
+#: main.c:3054
 #, 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 ""
-"%sCeci est un logiciel libre ; voir le source pour les conditions de copie.\n"
-"%sIl n'y a PAS de garantie ; tant pour une utilisation COMMERCIALE que pour\n"
-"%sRÉPONDRE À UN BESOIN PARTICULIER.\n"
+msgid "%sBuilt for %s\n"
+msgstr "%sConstruit pour %s\n"
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
-msgstr ""
-"\n"
-"%sCe logiciel est construit pour %s\n"
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sConstruit pour %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sCe logiciel est construit pour %s (%s)\n"
+"%sLicence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/"
+"gpl.html>\n"
+"%sCeci est un logiciel libre : vous êtes autorisé à le modifier et à la "
+"redistribuer.\n"
+"%sIl ne comporte AUCUNE GARANTIE, dans la mesure de ce que permet la loi.\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1164,475 +1194,474 @@ msgstr ""
 "\n"
 "# Base de données de Make, imprimée le %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Fin de la base de données de Make le %s\n"
+"# Base de données de Make terminée le %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: entrant dans un répertoire inconnu\n"
+msgstr "%s : on entre dans un répertoire inconnu\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: quittant un répertoire inconnu\n"
+msgstr "%s : on quitte un répertoire inconnu\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
-msgstr "%s: entrant dans le répertoire « %s »\n"
+msgstr "%s : on entre dans le répertoire « %s »\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: quittant le répertoire « %s »\n"
+msgstr "%s: on quitte le répertoire « %s »\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: entrant dans un répertoire inconnu\n"
+msgstr "%s[%u] : on entre dans un répertoire inconnu\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: quittant un répertoire inconnu\n"
+msgstr "%s[%u] : on quitte un répertoire inconnu\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: entrant dans le répertoire « %s »\n"
+msgstr "%s[%u] : on entre dans le répertoire « %s »\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: quittant le répertoire « %s »\n"
+msgstr "%s[%u] : on quitte le répertoire « %s »\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Arrêt.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Erreur inconnue %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
-msgstr "%s%s: %s"
+msgstr "%s%s : %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
-msgstr "%s: %s"
+msgstr "%s : %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "mémoire virtuelle épuisée"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n"
+msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Accès initialisé"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Accès utilisateur"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Accès de Make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Accès des fils"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
-msgstr "Erreur d'écriture: %s"
+msgstr "erreur d'écriture : %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "erreur d'écriture"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Lecture des makefiles...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Lecture du makefile « %s »"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (pas de cible par défaut)"
+msgstr " (pas d'objectif par défaut)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (chemin de recherche)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (n'importe pas)"
+msgstr " (peu importe)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (pas de remplacement du ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
-msgstr "syntaxe invalide dans la condition"
-
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "« endef » superflu"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "nom de variable vide"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "directive « override » vide"
+msgstr "syntaxe incorrecte dans la condition"
 
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "directive « override » invalide"
+#: read.c:891
+msgid "recipe commences before first target"
+msgstr "La recette commence avant la première cible"
 
-#: read.c:854
-msgid "commands commence before first target"
-msgstr "les commandes commencent avant la première cible"
+#: read.c:940
+msgid "missing rule before recipe"
+msgstr "règle manquante avant la recette"
 
-#: read.c:905
-msgid "missing rule before commands"
-msgstr "règle manquante avant les commandes"
-
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "séparateur manquant %s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (voulez-vous dire TAB au lieu de 8 blancs d'espacement?)"
+msgstr " (vouliez-vous dire TAB au lieu des 8 espaces ?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
-msgstr "schéma de cible manquant"
+msgstr "motif de cible manquant"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
-msgstr "schémas de cible multiples"
+msgstr "motifs de cible multiples"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
-msgstr "le schéma de cible ne contient pas « %% »"
+msgstr "le motif de cible ne contient pas « %% »"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "« endif » manquant"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
-msgstr "Texte superflu après la directive « endef »"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nom de variable vide"
+
+#: read.c:1367
+msgid "extraneous text after `define' directive"
+msgstr "Texte superflu après la directive « define »"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "« endef » manquant, « define » non terminé"
 
-#: read.c:1454
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr "Texte superflu après la directive « endef »"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Texte superflu après la directive « %s »"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "« %s » superflu"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "un seul « else » par condition"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
-msgstr "Définition de variable par cible spécifique mal-composée"
+msgstr "Définition malformée de variable spécifique à une cible"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr "les prérequis ne peuvent être définis dans des scripts de commandes"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
+msgstr "les prérequis ne peuvent être définis dans des recettes"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
-msgstr "mélange de schémas de règles implicites et statiques"
+msgstr "mélange de règles implicites et statiques pour le motif"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "mélange de règles implicites et normales"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
-msgstr "la cible « %s » ne correspond pas au schéma de cible"
+msgstr "la cible « %s » ne correspond pas au motif de cible"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
-msgstr "le fichier cible « %s » a à la fois des entrées : et ::"
+msgstr "le fichier cible « %s » possède à la fois des entrées : et ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "la cible « %s » apparaît plus d'une fois dans la même règle."
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr "attention : écrasement des commandes pour la cible « %s »"
+msgid "warning: overriding recipe for target `%s'"
+msgstr "AVERTISSEMENT : surchargement de la recette pour la cible « %s »"
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
-msgstr "attention : anciennes commandes ignorées pour la cible « %s »"
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr "AVERTISSEMENT : ancienne recette ignorée pour la cible « %s »"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "attention : caractère NUL détecté ; le reste de la ligne est ignoré"
+msgstr ""
+"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Rien à faire pour « %s »."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "« %s » est à jour."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Élagage du fichier « %s ».\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
-msgstr "%sPas de règle pour fabriquer la cible « %s »%s"
+msgstr "%sAucune règle pour fabriquer la cible « %s »%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr ""
-"%sPas de règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
+msgstr "%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Étude du fichier cible « %s ».\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Tentative récente échouée de mettre à jour le fichier « %s ».\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Le fichier « %s » a déjà été étudié.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Mise à jour du fichier « %s » en cours.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Fin de la mise à jour du fichier « %s ».\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Le fichier « %s » n'existe pas.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
-"AVERTISSEMENT: fichier .LOW_RESOLUTION_TIME « %s » a une date de haute "
-"résolution"
+"*** AVERTISSEMENT : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à "
+"haute résolution"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Règle implicite trouvée pour « %s ».\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Pas de règle implicite trouvée pour « %s ».\n"
 
-#: remake.c:462 remake.c:970
+#: remake.c:502
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Utilisation des commandes par défaut pour « %s ».\n"
+msgid "Using default recipe for `%s'.\n"
+msgstr "Utilisation de la recette par défaut pour « %s ».\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Dépendance circulaire %s <- %s abandonnée."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Fin des dépendances du fichier cible « %s ».\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Les dépendances de « %s » ont été fabriquées.\n"
+msgstr "Les dépendances de « %s » sont en cours de fabrication.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
-msgstr "Abandon du fichier cible « %s ».\n"
+msgstr "Abandon sur le fichier cible « %s ».\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
-msgstr "La cible « %s » n'a pas pu être refabriquée à cause d'erreurs."
+msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Prérequis « %s » est d'ordre seulement pour la cible « %s ».\n"
+msgstr "Le prérequis « %s » est seulement d'ordre pour la cible « %s ».\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "Le fichier de dépendance « %s » de la cible « %s » n'existe pas.\n"
+msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "La dépendance « %s » est plus récente que la cile « %s ».\n"
+msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "La dépendance « %s » est vieux que la cible « %s ».\n"
+msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "La cible « %s » est double deux-points et n'a pas de dépendances.\n"
+msgstr "La cible « %s » a un double deux-points et n'a pas de dépendance.\n"
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
-msgstr "Pas de commandes pour « %s » et aucune dépendance n'a changé.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr "Pas de recette pour « %s » et aucune dépendance n'a changé.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
-msgstr "Traitement de « %s » en raison du fanion de construction permanent.\n"
+msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Inutile de refabriquer la cible « %s »."
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
-msgstr "; utilisation du nom « %s » du VPATH"
+msgstr "; utilisation du nom VPATH « %s »"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Il faut refabriquer la cible « %s ».\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
-msgstr " Ignorer le nom « %s » du VPATH.\n"
+msgstr " On ignore le nom VPATH « %s ».\n"
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
-msgstr "Les commandes de « %s » sont en cours d'exécution.\n"
+msgid "Recipe of `%s' is being run.\n"
+msgstr "La recette de « %s » est en cours d'exécution.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Échec de refabrication du fichier cible « %s ».\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
-msgstr "Refabrication du fichier cible « %s » réussie.\n"
+msgstr "Refabrication réussie du fichier cible « %s ».\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Le fichier cible « %s » a besoin d'être refabriqué avec l'option -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Utilisation des commandes par défaut pour « %s ».\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
-msgstr "AVERTISSEMENT: fichier « %s » a une date de modification dans le futur"
+msgstr ""
+"AVERTISSEMENT : le fichier « %s » a une date de modification dans le futur"
 
-#: remake.c:1313
+#: remake.c:1370
 #, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr ""
-"AVERTISSEMENT: fichier « %s » a une date de modification %.2g dans le futur"
+"AVERTISSEMENT : le fichier « %s » a une date de modification %s s dans le "
+"futur"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr ".LIBPATTERNS: l'élément « %s » n'est pas un modèle"
+msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif"
 
 #: remote-cstms.c:125
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "La douane n'exportera pas : %s\n"
+msgstr "« customs » n'exportera pas : %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Régles Implicites"
+"# Règles Implicites"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# Pas de règles implicites."
+"# Pas de règle implicite."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1641,231 +1670,244 @@ msgstr ""
 "\n"
 "# %u règles implicites, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminales."
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
-msgstr "BUG : num_pattern_rules est faux !  %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "ANOMALIE : num_pattern_rules est faux !  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "signal inconnu"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
-msgstr "Raccroché"
+msgstr "Raccroche"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
-msgstr "Interruption"
+msgstr "Interrompt"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Quitte"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
-msgstr "Instruction Illégale"
+msgstr "Instruction non admise"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Point de trace/arrêt"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
-msgstr "Avorté"
+msgstr "Annulé"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Appel IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
-msgstr "Appel émulateur"
+msgstr "Appel EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
-msgstr "Exception numérique"
+msgstr "Exception en virgule flottante"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Tué"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Erreur de bus"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Erreur de segmentation"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
-msgstr "Appel système invalide"
+msgstr "Mauvais appel système"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Tube cassé"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarme"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Terminé"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Signal utilisateur 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Signal utilisateur 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
-msgstr "Fin d'un fils"
+msgstr "Processus fils terminé"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
-msgstr "Panne de courant"
+msgstr "Coupure d'alimentation"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Arrêté"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
-msgstr "Arrêté (lecture sur tty)"
+msgstr "Arrêté (entrée tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
-msgstr "Arrêté (écriture sur tty)"
+msgstr "Arrêté (sortie tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Arrêté (signal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
-msgstr "Limite du temps CPU atteinte"
+msgstr "Limite du temps CPU dépassée"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
-msgstr "Limite de taille de fichier atteinte"
+msgstr "Limite de taille de fichier dépassée"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
-msgstr "Timer virtuel expiré"
+msgstr "Compteur virtuel expiré"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
-msgstr "Timer de profiling expiré"
+msgstr "Compteur de profiling expiré"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
-msgstr "Changement de taille de la fenêtre"
+msgstr "Fenêtre modifiée"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Reprise"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Condition d'E/S urgente"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "E/S possible"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Ressource perdue"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Signal de danger"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Demande d'informations"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
-msgstr "Co-processeur en virgule flottante n'est pas disponible"
+msgstr "Coprocesseur en virgule flottante non disponible"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s nombre de chaines dans strcache: %d / lookups = %lu / hits = %lu\n"
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s nombre de tampons strcache : %d (* %d B/buffer = %d B)\n"
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s strcache utilisé : total = %d (%d) / max = %d / min = %d / moy = %d\n"
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache libre : total = %d (%d) / max = %d / min = %d / moy = %d\n"
+
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# stats des tables de hachage strcache :\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "défaut"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "environnement"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "environnement avec l'option -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "ligne de commande"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "directive « override »"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatique"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
-msgstr " (de « %s », ligne %lu)"
+msgstr " (depuis « %s », ligne %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# variables initialisées dans les statistiques de table de hachage:\n"
+msgstr "# stats des tables de hachage de la variable « set » :\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1873,112 +1915,119 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Valeurs de variable avec modèle spécifique"
+"# Valeurs de variable spécifiques au motif"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# pas de valeurs de variable avec modèle spécifique"
+"# pas de valeurs de variable spécifiques au motif"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u valeurs de variable avec modèle spécifique "
+"# %u valeurs de variable spécifiques au motif"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
-msgstr "attention : variable indéfinie « %.*s »"
+msgstr "AVERTISSEMENT : variable indéfinie « %.*s »"
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
-msgstr "sys$serach en échec avec %d\n"
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() a échoué avec %d\n"
 
 #: vmsjobs.c:71
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "AVERTISSEMENT: redirection vide\n"
+msgstr "AVERTISSEMENT : redirection vide\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "erreur interne : « %s » command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-warning, CTRL-Y laissera les sous-processsus.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
-msgstr "-warning, vous devrez ré-activier par CTRL-Y le traitement par DCL.\n"
+msgstr ""
+"-warning, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y "
+"par DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr "Commande interne [%s][%s]\n"
+msgstr "COMMANDE INTERNE [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr "Commande interne CD %s\n"
+msgstr "COMMANDE CD INTERNE %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr "Commande internr RM %s\n"
+msgstr "COMMANDE RM INTERNE %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Utilisation des commandes internes « %s »\n"
+msgstr "Commande interne inconnue « %s »\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Erreur, commande vide\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Redirection de l'entrée de %s\n"
+msgstr "Entrée redirigée depuis %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erreur redirigée vers %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Sortie ajoutée à %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Redirection de la sortie vers %s\n"
+msgstr "Sortie redirigée vers %s\n"
+
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Ajoute %.*s et nettoie\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Exécution de %s à la place\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "Erreur de lancement de tâche, %d\n"
+msgstr "Erreur de lancement, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1986,11 +2035,11 @@ msgstr ""
 "\n"
 "# Chemins de Recherche VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
-msgstr "# Pas de chemins de recherche « vpath »."
+msgstr "# Aucun chemin de recherche « vpath »."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1999,15 +2048,15 @@ msgstr ""
 "\n"
 "# %u chemins de recherche « vpath ».\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Pas de chemin de recherche général (variable « VPATH »)."
+"# Aucun chemin de recherche général (variable « VPATH »)."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2017,6 +2066,31 @@ msgstr ""
 "# Chemin de recherche général (variable « VPATH ») :\n"
 "# "
 
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sCeci est un logiciel libre ; consultez le code source pour connaître "
+#~ "les conditions de copie.\n"
+#~ "%sIl n'y a PAS de garantie ; ni pour une utilisation COMMERCIALE ni pour\n"
+#~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "« endef » superflu"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "directive « override » vide"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "directive « override » incorrecte"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-warning, CTRL-Y va laisser des sous-processsus dans la nature.\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Ne pas spécifier -j ou --jobs si sh.exe n'est pas disponible."
 
index bdfd99d..94495a8 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index be85146..281f8f9 100644 (file)
--- a/po/ga.po
+++ b/po/ga.po
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81-b3\n"
+"Project-Id-Version: make 3.81\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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2006-04-22 16:02-0500\n"
 "Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
-"Language-Team: Irish <ga@li.org>\n"
+"Language-Team: Irish <gaeilge-gnulinux@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
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "ní féidir ball cartlainne a `touch'áil ar VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Níl an chartlann `%s' ann"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: Níl `%s' ina cartlann bhailí"
 
-#: ar.c:178
+#: ar.c:159
 #, 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
+#: ar.c:166
 #, 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"
+#, fuzzy, 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"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "theip ar lbr$ini_control le stádas = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, 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
+#: arscan.c:850
 #, 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
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (is féidir go bhfuil an t-ainm teasctha)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Dáta %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mód = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Briseadh.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, 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
+#: commands.c:625
 #, 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
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Comhad `%s' á scriosadh"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Comhad `%s' á scriosadh"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  orduithe le rith"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (insuite):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (ó `%s', líne %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -127,222 +128,225 @@ msgstr ""
 "\n"
 "# Comhadlanna\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: níorbh fhéidir é a stat.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, 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
+#: dir.c:1016
 #, 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
+#: dir.c:1021
 #, 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
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (eochair %s, am-m %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (gléas %ld, i-nód %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
-msgstr "Níl"
+msgstr "Ná Déan"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " comhad, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "níl"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " rudaí neamhfhéideartha"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " go dtí seo."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, 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
+#: expand.c:276
 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,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was 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,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 "Aimsíodh orduithe le haghaidh `%s' trí chuardach ar rialacha intuigthe,"
 
-#: file.c:278
+#: file.c:275
 #, 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'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 "Déanfar neamhshuim ar orduithe le haghaidh `%s'; úsáidfear na cinn le "
 "haghaidh `%s' ina n-ionad."
 
-#: file.c:301
+#: file.c:298
 #, 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
+#: file.c:303
 #, 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
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Comhad idirmheánach `%s' á scriosadh"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Comhaid idirmheánacha á mbaint...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "An t-am anois"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Ní sprioc é:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Comhad luachmhar (réamhriachtanas de .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Sprioc bhréige (réamhriachtanas de .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Sprioc líne na n-orduithe."
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Rinneadh cuardach ar rialacha intuigthe."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Ní dhearna cuardach ar rialacha intuigthe."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Stoc patrúin intuigthe/statach: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Tá an comhad ina réamhriachtanas idirmheánach."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Déantar fosta:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Níor seiceáladh an t-am mionathraithe riamh."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Níl a leithéid de chomhad ann."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Is cianaosta an comhad seo."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Athraithe %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Nuashonraíodh an comhad."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Níor nuashonraíodh an comhad."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe 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)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Tá orduithe spleáchais ag rith (IS FABHT É SEO)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  D'éirigh leis an nuashonrú."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Tá gá le nuashonrú (-q ceaptha)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Theip ar nuashonrú."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Luach neamhbhailí sa bhall `update_status'!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Luach neamhbhailí sa bhall `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -350,7 +354,7 @@ msgstr ""
 "\n"
 "# Comhaid"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -360,262 +364,263 @@ msgstr ""
 "# comhaid hais-tábla stait:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "tá an chéad argóint neamhuimhriúil leis an fheidhm `word'"
 
-#: function.c:764
+#: function.c:763
 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
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "is neamhuimhriúil í an chéad argóint leis an fheidhm `wordlist'"
 
-#: function.c:787
+#: function.c:785
 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
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: theip ar DuplicateHandle(Err) (e=%d)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: theip ar DuplicateHandle(In) (e=%ld)\n"
 
 #: function.c:1469
 #, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "Theip ar CreatePipe() (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: theip ar DuplicateHandle(Earr) (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "Theip ar CreatePipe() (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): theip ar process_init_fd()\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Easpa argóintí (%d) d'fheidhm `%s'"
+msgstr "easpa argóintí (%d) d'fheidhm `%s'"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Níl an fheidhm `%s' ar fáil ar an chóras seo"
+msgstr "níl an fheidhm `%s' ar fáil ar an chóras seo"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "glao ar fheidhm `%s' gan chríochnú: `%c' ar iarraidh"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: Tá an rogha `%s' débhríoch\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, 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
+#: getopt.c:690
 #, 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
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: ní foláir argóint don rogha `%s'\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: rogha anaithnid `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: rogha anaithnid `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: rogha neamhcheadaithe -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: rogha neamhbhailí -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: ní foláir argóint don rogha -- %c\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, 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"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu 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
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Lód=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Ath-haiseáil=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, 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
+#: implicit.c:56
 #, 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
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, 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
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Réamhriachtanas neamhfhéideartha rialach `%s' á dhiúltú.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Ag baint triail as an réamhriachtanas intuigthe `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Réamhriachtanas intuigthe neamhfhéideartha `%s' á dhiúltú.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Ag baint triail as an réamhriachtanas rialach `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Ag baint triail as an réamhriachtanas intuigthe `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Aimsíodh réamhriachtanas `%s' mar VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, 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
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "Ní féidir comhad sealadach a chruthú\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Earráid 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Earráid %d (rinneadh neamhshuim)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Earráid %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (córdhumpa)"
 
-#: job.c:488
+#: job.c:549
 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"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Mac beo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (cianda)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %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"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Mac buaiteach á bhaint: 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, 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"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Mac 0x%08lx PID %ld%s á dhealú ón slabhra.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "scríobh jabfhreastalaí"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Saoradh ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, 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"
+msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -624,97 +629,109 @@ 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"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%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"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Fuarthas ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "léadh píopa na jabanna"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Níl gá leis an sprioc `%s' a athdhéanamh"
+
+#: job.c:1910
 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
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "ní féidir srian lóid a chur i bhfeidhm: "
 
-#: job.c:1907
+#: job.c:1985
 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
+#: job.c:1987
 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
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr "Níorbh fhéidir stdin a athchóiriú\n"
 
-#: job.c:1945
+#: job.c:2023
 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
+#: job.c:2127
 #, 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"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "ghin make mac le pid %ld, ag feitheamh le pid %ld fós\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Ní bhfuarthas an t-ordú"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Ní bhfuarthas an clár blaoisce"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: is féidir gur ídithe í cuimhne na timpeallachta"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "Athraíodh $SHELL (ba `%s' é, agus is `%s' é anois)\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Baisc-chomhad sealadach %s á chruthú\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, 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
+#: main.c:303
 msgid "Options:\n"
 msgstr "Roghanna:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Déan neamhshuim (comhoiriúnacht)\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Déan gach sprioc, gan choinníollacha.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -722,18 +739,18 @@ msgstr ""
 "  -C COMHADLANN, --directory=COMHADLANN\n"
 "                              Téigh go COMHADLANN roimh dhéanamh aon rud.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Taispeáin go leor eolas dífhabhtaithe.\n"
 
-#: main.c:301
+#: main.c:313
 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
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -741,7 +758,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              Sáraíonn athróga timpeallachta makefileanna.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -749,16 +771,17 @@ msgstr ""
 "  -f COMHAD, --file=COMHAD, --makefile=COMHAD\n"
 "                              Léigh COMHAD mar makefile.\n"
 
-#: main.c:309
+#: main.c:323
 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"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Déan neamhshuim ar earráidí ó orduithe.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -767,7 +790,7 @@ msgstr ""
 "                              Cuardaigh i gCOMHADLANN ar makefileanna "
 "breise.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -775,14 +798,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Ceadaigh N jab le chéile; éigríoch mura "
 "gceaptar arg.\n"
 
-#: main.c:318
+#: main.c:332
 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
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -792,7 +815,7 @@ msgstr ""
 "                              Ná tosaigh jabanna iomadúla mura bhfuil an lód "
 "níos lú ná N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -801,17 +824,18 @@ msgstr ""
 "nasc\n"
 "                                 siombalach nó ar an sprioc.\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; 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
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -821,33 +845,35 @@ msgstr ""
 "                              Caith le COMHAD mar cheann cianaosta; ná "
 "hathdhéan é.\n"
 
-#: main.c:331
+#: main.c:345
 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
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; 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
+#: main.c:349
 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
+#: main.c:351
 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"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Ná déan macalla ar orduithe.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -855,23 +881,23 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Múch -k.\n"
 
-#: main.c:344
+#: main.c:358
 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
+#: main.c:360
 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
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Taispeáin an chomhadlann reatha.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -879,7 +905,7 @@ msgstr ""
 "  --no-print-directory        Múch -w, fiú má tá sé i bhfeidhm go "
 "hintuigthe.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -888,7 +914,7 @@ msgstr ""
 "                              Caith le COMHAD mar cheann úrnua (go "
 "héigríoch).\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -896,184 +922,189 @@ msgstr ""
 "  --warn-undefined-variables  Tabhair rabhadh má dhéantar tagairt d'athróg "
 "gan sainmhíniú.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "sonrú anaithnid `%s' ar an leibhéal dífhabhtaithe"
 
-#: main.c:670
+#: main.c:690
 #, 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"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%lx)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\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"
+"CódEisceachta = %lx\n"
+"BratachaEisceachta = %lx\n"
+"SeoladhEisceachta = %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Sárú rochtana: oibríocht scríofa ag seoladh %x\n"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Sárú rochtana: oibríocht scríofa ag seoladh %lx\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Sárú rochtana: oibríocht léimh ag seoladh %x\n"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Sárú rochtana: oibríocht léimh ag seoladh %lx\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, 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"
+#: main.c:834
+#, fuzzy, 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
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) críochnaithe. Ag gabháil ar aghaidh.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (comhad sealadach)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (comhad sealadach)"
 
-#: main.c:1640
+#: main.c:1703
 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
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-fds `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 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
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "jabfhreastalaí dup"
 
-#: main.c:1687
+#: main.c:1753
 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
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "píopa na jabanna á chruthú"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "píopa an jabfhreastalaí á thúsú"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Makefileanna á nuashonrú....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, 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
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Theip ar athdhéanamh an makefile `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Níor aimsíodh an makefile `%s' san áireamh."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Níor aimsíodh an makefile `%s'"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Níorbh fhéidir an chomhadlann oibre a athrú ar ais."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Á rith arís[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (comhad sealadach): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL"
 
-#: main.c:2189
+#: main.c:2270
 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
+#: main.c:2272
 msgid "No targets"
 msgstr "Níl aon sprioc ann"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Cinn sprice á nuashonrú....\n"
 
-#: main.c:2222
+#: main.c:2306
 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
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Úsáid: %s [roghanna] [sprioc] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1082,7 +1113,7 @@ msgstr ""
 "\n"
 "Tógadh an clár seo le haghaidh %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1091,51 +1122,45 @@ msgstr ""
 "\n"
 "Tógadh an clár seo le haghaidh %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, 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"
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "caithfidh tú teaghrán nach folamh a thabhairt mar argóint le `-%c'"
 
-#: main.c:2518
+#: main.c:2617
 #, 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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\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"
+"%sTógadh an clár seo le haghaidh %s\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
-"%sTógadh an clár seo le haghaidh %s\n"
+"%sTógadh an clár seo le haghaidh %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sTógadh an clár seo le haghaidh %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1144,7 +1169,7 @@ msgstr ""
 "\n"
 "# Bunachar sonraí Make, priontáilte ar %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1153,446 +1178,448 @@ msgstr ""
 "\n"
 "# Críochnaíodh an bunachar sonraí Make seo ar %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Ag dul amach as comhadlann anaithnid\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Ag dul isteach sa chomhadlann `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Ag dul amach as an gcomhadlann `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Ag dul isteach sa chomhadlann `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Ag dul amach as an gcomhadlann `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Stop.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Earráid anaithnid %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "cuimhne fhíorúil ídithe"
 
-#: misc.c:646
+#: misc.c:708
 #, 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
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Rochtain túsaithe"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Rochtain úsáideora"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Rochtain make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Rochtain mic"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "earráid sa scríobh: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "earráid sa scríobh"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Makefileanna á léamh...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Makefile `%s' á léamh"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (gan ceann sprice réamhshocraithe)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (conair chuardaigh)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (is cuma)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ná fairsing ~)"
 
-#: read.c:623
+#: read.c:759
 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"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "tá orduithe ann roimh an chéad sprioc"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "riail ar iarraidh roimh orduithe"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "deighilteoir%s ar iarraidh"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (Ar mhian leat TÁB in ionad ocht spás?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "patrún sprice ar iarraidh"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "patrúin iomadúla sprice"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "níl aon `%%' sa phatrún sprice"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "`endif' ar iarraidh"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "ainm folamh athróige"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "`endef' ar iarraidh, `define' gan chríochnú"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Téacs gan mhaith i ndiaidh treorach `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "`%s' breise"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "ní cheadaítear ach aon `else' amháin le gach coinníollach"
 
-#: read.c:1824
+#: read.c:1797
 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"
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
 msgstr "ní féidir réamhriachtanais a shonrú i scripteanna ordaithe"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
 
-#: read.c:1954
+#: read.c:1976
 #, 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
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "tá iontrálacha : agus :: araon ann don chomhad sprice `%s'"
 
-#: read.c:1979
+#: read.c:1997
 #, 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'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe 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'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr ""
 "rabhadh: ag déanamh neamhshuim ar sheanorduithe le haghaidh sprice `%s'"
 
-#: read.c:2575
+#: read.c:2392
 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
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Níl faic le déanamh i gcomhair `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
-msgstr "Ní gá le `%s' a nuashonrú."
+msgstr "Níl gá le `%s' a nuashonrú."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Comhad `%s' á bhearradh.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, 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
+#: remake.c:361
 #, 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
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Comhad sprice `%s' idir lámha.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, 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
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Rinneadh scrúdú ar an chomhad `%s' cheana.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Comhad `%s' á nuashonrú fós.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Nuashonraíodh an comhad `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Níl a leithéid de chomhad `%s' ann.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, 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
+#: remake.c:494 remake.c:1016
 #, 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
+#: remake.c:496 remake.c:1018
 #, 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"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Tréigeadh an spleáchas ciorclach %s <- %s."
 
-#: remake.c:601
+#: remake.c:651
 #, 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
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Réamhriachtanais de `%s' á ndéanamh anois.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Ag tréigean an chomhaid sprice `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, 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
+#: remake.c:727
 #, 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
+#: remake.c:732
 #, 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
+#: remake.c:737
 #, 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
+#: remake.c:740
 #, 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
+#: remake.c:758
 #, 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"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe 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
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "`%s' á dhéanamh de bharr bratach --always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
-msgstr "Ní gá leis an sprioc `%s' a athdhéanamh"
+msgstr "Níl gá leis an sprioc `%s' a athdhéanamh"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; ag baint úsáid as ainm VPATH `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Caithfidh an sprioc `%s' a athdhéanamh.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, 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"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Orduithe de `%s' á rith.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Theip ar athdhéanamh an sprioc-chomhaid `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "D'éirigh le hathdhéanamh an sprioc-chomhaid `%s'.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, 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
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
+
+#: remake.c:1357
 #, 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"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr ""
 "Rabhadh: Tá an t-am mionathraithe den chomhad `%s' %.2g soicind sa todhchaí"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "Níl eilimint .LIBPATTERNS `%s' ina patrún"
@@ -1602,7 +1629,7 @@ msgstr "N
 msgid "Customs won't export: %s\n"
 msgstr "Ní easpórtálfar Customs: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1610,7 +1637,7 @@ msgstr ""
 "\n"
 "# Rialacha Intuigthe"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1618,7 +1645,7 @@ msgstr ""
 "\n"
 "# Níl aon riail intuigthe."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1627,231 +1654,244 @@ msgstr ""
 "\n"
 "# %u riail intuigthe, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " teirminéal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "FABHT: num_pattern_rules mícheart!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "comhartha anaithnid"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Croch suas"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Idirbhriseadh"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Scoir"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Treoir Neamhcheadaithe"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Rianaigh/brisphointe"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Tobscortha"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Gaiste IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Gaiste EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Eisceacht snámhphointe"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Maraithe"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Busearráid"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Fabht deighilte"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Drochghlao ar an gcóras"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Píopa briste"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Clog aláraim"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Scortha"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Comhartha saincheaptha 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Comhartha saincheaptha 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Scoir an mhacphróiseas"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Cliseadh cumhachta"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Stoptha"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Stoptha (ionchur tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Stoptha (aschur tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Stoptha (comhartha)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Teorainn ama LAP sáraithe"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Uasmhéid na gcomhad sáraithe"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Am fíorúil caite"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Am próifíle caite"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Athraíodh an fhuinneog"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Leanta"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Staid phráinneach A/I"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "A/I indéanta"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Acmhainn caillte"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Comhartha guaise"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Iarratas ar eolas"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Níl comhphróiseálaí snámhphointe ar fáil"
 
-#: strcache.c:210
-#, c-format
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s líon na dteaghrán i strcache: %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s líon na maolán strcache: %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
-msgstr ""
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s méid strcache: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache saor: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# comhaid hais-tábla stait:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "réamhshocraithe"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "timpeallacht"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "timpeallacht le -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "líne na n-orduithe"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "treoir `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "uathoibríoch"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (ó `%s', líne %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# athróg tacar hais-tábla stait:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1859,7 +1899,7 @@ msgstr ""
 "\n"
 "# Athróga\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1867,7 +1907,7 @@ msgstr ""
 "\n"
 "# Luachanna Athróige sainiúil don phatrún"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1875,7 +1915,7 @@ msgstr ""
 "\n"
 "# Níl aon luach athróige atá sainiúil don phatrún."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1884,14 +1924,14 @@ msgstr ""
 "\n"
 "# %u luach athróige atá sainiúil don phatrún"
 
-#: variable.h:189
+#: variable.h:219
 #, 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"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "Theip ar sys$cuardach le %d\n"
 
 #: vmsjobs.c:71
@@ -1899,73 +1939,78 @@ msgstr "Theip ar sys$cuardach le %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Rabhadh: Atreorú folamh\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, 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
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INSUITE [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD INSUITE %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM INSUITE %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Ordú anaithnid insuite '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Earráid, ordú folamh\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Atreoraíodh ionchur ó %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Atreoraíodh earráidí go %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Atreoraíodh aschur go %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Atreoraíodh aschur go %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s á rith ina áit\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Earráid le linn sceitheadh, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1973,11 +2018,11 @@ msgstr ""
 "\n"
 "# VPATH Conairí Cuardaigh\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Níl aon chonair chuardaigh `vpath'."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1986,7 +2031,7 @@ msgstr ""
 "\n"
 "# %u conair chuardaigh `vpath'.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1994,7 +2039,7 @@ msgstr ""
 "\n"
 "# Níl aon chonair ghinearálta cuardaigh (athróg `VPATH')."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2004,20 +2049,27 @@ msgstr ""
 "# 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 "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
 
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "make á athshocrú le haghaidh jabanna aonair."
+#~ 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 D'FHEIDHM AR LEITH.\n"
 
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Earráid chomhréire, isteach i '\"' fós\n"
+#~ msgid "extraneous `endef'"
+#~ msgstr "`endef' breise"
 
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Fuarthas SIGCHLD; %u mac gan bhaint.\n"
+#~ msgid "empty `override' directive"
+#~ msgstr "treoir `override' folamh"
 
-#~ msgid "no file name for `%sinclude'"
-#~ msgstr "níl aon ainm comhaid do `%sinclude'"
+#~ msgid "invalid `override' directive"
+#~ msgstr "treoir neamhbhailí `override'"
 
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "fágann an sprioc `%s' an patrún réamhriachtanais folamh"
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n"
index f0feca0..c3ec093 100644 (file)
Binary files a/po/gl.gmo and b/po/gl.gmo differ
index c59a6d7..a4cabbc 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -6,7 +6,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2002-10-05 14:46+0200\n"
 "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
 "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
@@ -14,109 +14,110 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "tentouse usar unha característica non soportada: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "a operación de tocar un membro do arquivo non está dispoñible en VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: O arquivo `%s' non existe"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' non é un arquivo válido"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: O membro `%s' non existe en `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: Código de retorno incorrecto de ar_member_touch en `%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 "a chamada a lbr$set_module non puido extrae-la información do módulo, status "
 "= %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "a chamada a lbr$ini_control fallou con status = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "non se pode abri-la biblioteca `%s' para busca-lo membro `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Membro `%s'%s: %ld bytes en %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (o nome pode quedar truncado)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Interrompido.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] O membro do arquivo `%s' pode non ser correcto; non borrado"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** O membro do arquivo `%s' pode non ser correcto; non borrado"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Borrando o ficheiro `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Borrando o ficheiro `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  comandos para executar"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (incluidas):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (de `%s', liña %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,220 +125,223 @@ msgstr ""
 "\n"
 "# Directorios\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: non se puido face-la operación de stat.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (clave %s, mtime %d): non se puido abrir.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): non se puido abrir.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (dispositivo %ld, inode %ld): non se puido abrir.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (clave %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Non"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " ficheiros, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "non"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " imposibles"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " ata aquí."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " imposibles en %lu directorios.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "A variable recursiva `%s' fai referencia a si mesma (ao final)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "referencia a variable non rematada"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Especificáronse comandos do ficheiro `%s' en %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 "Atopáronse os comandos do ficheiro `%s' por busca de regras implícitas,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "pero agora considérase que `%s' é o mesmo ficheiro que `%s'."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Os comandos de `%s' serán ignorados en favor dos de `%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "non se pode renomear `%s' con dous puntos a `%s' con catro puntos"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "non se pode renomear `%s' con catro puntos a `%s' con dous puntos"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Borrando o ficheiro intermedio `%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Borrando os ficheiros intermedios...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Marca de tempo fóra de rango; substituíndo %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Hora actual"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Non é un obxectivo:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Ficheiro precioso (prerrequisito de .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Obxectivo falso (prerrequisito de .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Obxectivo da liña de comando."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Un ficheiro de make por defecto ou de MAKEFILES."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Fíxose a busca de regras implícitas."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Non se fixo a busca de regras implícitas."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Raiz do patrón implícito/estático: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  O ficheiro é un prerrequisito intermedio."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Tamén se fai:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Nunca se comprobou o tempo de modificación."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  O ficheiro non existe."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  O ficheiro é moi antigo."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Última modificación: %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  O ficheiro foi actualizado."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  O ficheiro non foi actualizado."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Comandos que se están a executar agora (ISTO É UN ERRO)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Comandos de dependencias que se están a executar (ISTO É UN ERRO)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Actualizado con éxito."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Ten que ser actualizado (-q está estabrecido)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Non se puido actualizar."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  ¡Valor non válido no membro `update_status'!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  ¡Valor non válido no membro `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -345,7 +349,7 @@ msgstr ""
 "\n"
 "# Ficheiros"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -355,262 +359,263 @@ msgstr ""
 "# estatísticas da táboa hash de ficheiros:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "primeiro argumento da función `word' non numérico"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "o primeiro argumento da función `word' debe ser maior que 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "primeiro argumento da función `wordlist' non numérico"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "segundo argumento da función `wordlist' non numérico"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "process_easy: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: a chamada a DuplicateHandle(Err) fallou (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "process_easy: a chamada a DuplicateHandle(Err) fallou (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "A chamada a CreatePipe() fallou (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): a chamada a process_init_fd() fallou\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Limpando o ficheiro de lotes temporal %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Número de argumentos insuficiente (%d) na chamada á función `%s'"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Non implementada nesta plataforma: función `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "chamada á función `%s' non rematada: falla `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: a opción `%s' é ambigua\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: a opción `--%s' non admite un argumento\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: a opción `%c%s' non admite un argumento\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: a opción `%s' precisa dun argumento\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción `--%s' non recoñecida\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción `%c%s' non recoñecida\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción non válida -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción non válida -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opción precisa dun argumento -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: a opción `-W %s' é ambigua\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: a opción `-W %s' non admite un argumento\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "non se poden reservar %ld bytes para a táboa hash: memoria esgotada"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Carga=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Colisións=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Buscando unha regra implícita para `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Buscando unha regra implícita membro do arquivo para `%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando a recursión de regras implícitas.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Probando a regra de patrón con raiz `%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rexeitando o prerrequisito implícito imposible `%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Rexeitando o prerrequisito imposible `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Probando o prerrequisito implícito `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Rexeitando o prerrequisito implícito imposible `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Probando o prerrequisito `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Probando o prerrequisito implícito `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Atopouse a o prerrequisito `%s' coma VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Buscando unha regra co ficheiro intermedio `%s'.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (ficheiro temporal)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Erro 0x%x (ignorado)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Erro 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Erro %d (ignorado)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Erro %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (memoria envorcada)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Agardando por traballos non rematados...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Proceso fillo vivo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (remoto)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Colleitando o proceso fillo perdedor 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Colleitando o proceso fillo gañador 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Limpando o ficheiro de lotes temporal %s\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Eliminando o proceso fillo 0x%08lx PID %ld%s da cadea.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "write jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Liberouse un elemento para o proceso fillo 0x%08lx (%s).\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() non puido lanza-lo proceso (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -619,100 +624,112 @@ msgstr ""
 "\n"
 "Contáronse %d argumentos no lanzamento que fallou\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Poñendo o proceso fillo 0x%08lx (%s) PID %ld%s na cadea.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Obtívose un elemento para o proceso fillo 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "lectura do cano de traballos"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Non é preciso reface-lo obxectivo `%s'"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "non se poden impoñer límites de carga neste sistema operativo"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "non se pode impoñer un límite de carga: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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() non puido lanza-lo proceso (e=%d)\n"
-
-#: job.c:2046
+#: job.c:2127
 #, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 "make colleitou un proceso fillo de pid %d, ainda se agarda polo pid %d\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Comando non atopado"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Intérprete de comandos non atopado"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "O valor de $SHELL cambiou (antes era `%s', agora `%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Creando un ficheiro por lotes temporal %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 "%s (liña %d) Contexto do intérprete de comandos incorrecto (!unixy && !"
 "batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opcións:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignorado por compatibilidade.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Facer tódolos obxectivos incondicionalmente.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -720,19 +737,19 @@ msgstr ""
 "  -C DIRECTORIO, --directory=DIRECTORIO\n"
 "                              Cambiar ao DIRECTORIO antes de facer nada.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d                          Amosar moita información de depuración.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=MODIFICADORES]     Amosar varios tipos de información de "
 "depuración.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -742,7 +759,12 @@ msgstr ""
 "ficheiros\n"
 "                                 de make.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -750,15 +772,16 @@ msgstr ""
 "  -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n"
 "                              Le-lo FICHEIRO coma ficheiro de make.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Amosar esta mensaxe e saír.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Ignora-los erros dos comandos.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -767,7 +790,7 @@ msgstr ""
 "                              Busca-los ficheiros de make incluídos\n"
 "                                 no directorio.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -775,14 +798,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Admitir N traballos á vez; infinitos sen\n"
 "                                 un argumento.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Continuar cando no se poidan facer\n"
 "                                 algúns obxectivos.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -792,22 +815,23 @@ msgstr ""
 "                              Non iniciar varios traballos con carga\n"
 "                                superior a N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Non executar ningún comando; só amosalos.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -817,35 +841,37 @@ msgstr ""
 "                              Trata-lo FICHEIRO coma moi antigo e non "
 "refacelo.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 "  -p, --print-data-base       Amosa-la base de datos interna de make.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Non executar ningún comando; o estado de\n"
 "                                 saída di se está actualizado.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Desactiva-las regras implícitas incluidas.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Desactiva-los valores das variables "
 "incluidos.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet             Non amosa-los comandos.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -853,22 +879,22 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Desactiva -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Toca-los obxectivos no canto de os refacer.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               Amosa-lo número de versión de make e saír.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Amosa-lo directorio actual.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -876,7 +902,7 @@ msgstr ""
 "  --no-print-directory        Desactivar -w, incluso se se activou\n"
 "                                 implicitamente.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -885,7 +911,7 @@ msgstr ""
 "new=FICHEIRO\n"
 "                              Trata-lo FICHEIRO coma infinitamente novo.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -893,29 +919,29 @@ msgstr ""
 "  --warn-undefined-variables  Avisar cando se faga referencia a\n"
 "                                 unha variable non definida.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "a cadea baleira non é válida coma nome de ficheiro"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "especificación de nivel de depuración descoñecido `%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 "%s: Atrapouse unha Interrupción/Excepción (código = 0x%x, enderezo = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Filtro de excepcións non manexadas chamado dende o programa %s\n"
@@ -923,158 +949,163 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Violación de acceso: operación de escritura no enderezo %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Violación de acceso: operación de lectura no enderezo %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell estabrecendo default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell busca de camiños estabrece default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspendido durante 30 segundos..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "rematouse sleep(30). Continuando.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "O ficheiro de make da entrada estándar foi especificado dúas veces."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (ficheiro temporal)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (ficheiro temporal)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Os traballos en paralelo (-j) non están soportados nesta plataforma."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Reiniciando para entrar no modo de un traballo (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "erro interno: opcións --jobserver-fds múltiples"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "erro interno: cadea --jobserver-fds non válida `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "aviso: o servidor de traballos non está dispoñible: usando -j1. Engada `+' á "
 "regra do make pai."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "creando o cano de traballos"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "inicializa-lo cano do servidor de traballos"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Actualizando os ficheiros de make....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "O ficheiro de make `%s' podería causar un lazo; non se refai.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Non se puido reface-lo ficheiro de make `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Non se atopou o ficheiro de make incluido `%s'."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Non se atopou o ficheiro de make `%s'"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Non se puido voltar ao directorio orixinal."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-executando:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (ficheiro temporal)"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Non hai obxectivos"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Actualizando os obxectivos meta....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar "
 "incompleta."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uso: %s [opcións] [obxectivo] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1083,7 +1114,7 @@ msgstr ""
 "\n"
 "Este programa compilou para %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1092,53 +1123,47 @@ msgstr ""
 "\n"
 "Este programa compilou para %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "Informe dos erros no programa a <bug-make@gnu.org>.\n"
 "Informe dos erros na traducción a <proxecto@trasno.net>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "a opción `-%c' precisa dun argumento integral positivo"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "a opción `-%c' precisa dun argumento integral positivo"
 
-#: 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 ""
-"%sIsto é software libre; vexa o código fonte polas condicións de copia.\n"
-"%sNON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA\n"
-"%sUN FIN DETERMINADO.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Este programa compilou para %s\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Este programa compilou para %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1147,7 +1172,7 @@ msgstr ""
 "\n"
 "# Base de datos de Make, imprimida en %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1156,307 +1181,303 @@ msgstr ""
 "\n"
 "# Base de datos de Make rematada en %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Entrando nun directorio descoñecido"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Saíndo dun directorio descoñecido"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Entrando no directorio `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Saíndo do directorio `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Entrando nun directorio descoñecido"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Saíndo dun directorio descoñecido"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Entrando no directorio `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Saíndo do directorio `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Detido.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Erro %d descoñecido"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "memoria virtual esgotada"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Acceso inicializado"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Acceso de usuario"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Acceso de make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Acceso de fillo"
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "Erros redirixidos a %s\n"
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "write jobserver"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Lendo os ficheiros de make...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Lendo o ficheiro de make `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (non hai un obxectivo por defecto)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (camiño de busca)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (non importa)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (non hai expansión de ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "sintaxe non válida no condicional"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "`endef' superfluo"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "nome de variable baleiro"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "directiva `override' baleira"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "directiva `override' non válida"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "os comandos comezan antes do primeiro obxectivo"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "falla unha regra antes dos comandos"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "falla un separador%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (¿se cadra unha tabulación no canto de oito espacios?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "falla un patrón obxectivo"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "patróns de obxectivo múltiples"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "o patrón obxectivo non contén `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "falla `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nome de variable baleiro"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Texto superfluo trala directiva `endef'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "falla `endef', `define' sen rematar"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Texto superfluo trala directiva `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Texto superfluo trala directiva `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "`%s' superfluo"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "só un `else' por condicional"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Definición dunha variable por obxectivo mal formada"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "regrás de patrón implícitas e estáticas mesturadas"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "regras implícitas e normais mesturadas"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "o obxectivo `%s' non coincide co patrón do obxectivo"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "o ficheiro obxectivo `%s' ten entradas : e ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "o obxectivo `%s' aparece máis dunha vez na mesma regra."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "aviso: ignorando os comandos do obxectivo `%s'"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "aviso: ignóranse os comandos antigos do obxectivo `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "aviso: viuse un carácter NUL; ignórase o resto da liña"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Non hai nada que facer para `%s'"
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' está actualizado."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Podando o ficheiro `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sNon hai unha regra para face-lo obxectivo `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sNon hai unha regra para face-lo obxectivo `%s', que precisa `%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Considerando o ficheiro obxectivo `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Hai pouco probouse a actualiza-lo ficheiro `%s' e non se puido.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "O ficheiro `%s' xa fora considerado.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Ainda se está actualizando o ficheiro `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Rematouse de actualiza-lo ficheiro `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "O ficheiro `%s' non existe.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1464,132 +1485,137 @@ msgstr ""
 "*** Aviso: o ficheiro `%s' de .LOW_RESOLUTION_TIME ten unha marca de tempo "
 "de alta resolución"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Atopouse unha regra implícita de `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Non se atopou unha regra implícita para `%s'.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Usando os comandos por defecto para `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "A dependencia circular %s <- %s foi eliminada."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo `%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Estan a se face-los prerrequisitos de `%s'.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Abandonando no ficheiro obxectivo `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Non se refai o obxectivo `%s' a causa dos erros."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "O prerrequisito `%s' é só-orde para o obxectivo `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "O prerrequisito `%s' do obxectivo `%s' non existe.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "O prerrequisito `%s' é máis novo có obxectivo `%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "O prerrequisito `%s' é máis vello có obxectivo `%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "O obxectivo `%s' ten catro puntos e non ten prerrequisitos.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Non hai comandos de `%s', e non cambiaron os prerrequisitos.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Facendo `%s' debido á marca de sempre-facer.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Non é preciso reface-lo obxectivo `%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; usando o nome de VPATH `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Debe refacerse o obxectivo `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ignorando o nome VPATH `%s'.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Estanse a executa-los comandos de `%s'.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Non se puido reface-lo ficheiro obxectivo `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "O ficheiro obxectivo `%s' foi feito de novo con éxito.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "O ficheiro obxectivo `%s' precisa refacerse con -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Usando os comandos por defecto para `%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Aviso: O ficheiro `%s' ten unha data de modificación no futuro"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Aviso: O ficheiro `%s' ten unha data de modificación %.2g s. no futuro"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "O elemento de .LIBPATTERNS `%s' non é un patrón"
@@ -1599,7 +1625,7 @@ msgstr "O elemento de .LIBPATTERNS `%s' non 
 msgid "Customs won't export: %s\n"
 msgstr "A Aduana non exporta: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1607,7 +1633,7 @@ msgstr ""
 "\n"
 "# Regras Implícitas"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1615,7 +1641,7 @@ msgstr ""
 "\n"
 "# Non hai regras implícitas."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1624,231 +1650,242 @@ msgstr ""
 "\n"
 "# %u regras implícitas, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "ERRO: ¡num_pattern_rules é incorrecto! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "sinal descoñecido"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Colgar"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Interrompido"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Saír"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Instrucción Ilegal"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Trampa de trazado/punto de detención"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Abortado"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Trampa de IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Trampa EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Excepción de coma flotante"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Matado"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Erro do bus"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Fallo de segmento"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Chamada ao sistema incorrecta"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Cano rompido"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Temporizador"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Rematado"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Sinal definido polo usuario 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Sinal definido polo usuario 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "O proceso fillo rematou"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Fallo de suministro eléctrico"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Detido"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Detido (entrada de consola)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Detido (saída de consola)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Detido (sinal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Límite de tempo de CPU superado"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Límite de tamaño de ficheiros superado"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Temporizador virtual esgotado"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "O temporizador esgotouse"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "A fiestra cambiou"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Continuado"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Condición de E/S urxente"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "A E/S é posible"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Sinal de perigo"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Petición de información"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "O co-procesador de coma flotante non está dispoñible"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# estatísticas da táboa hash de ficheiros:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "por defecto"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "ambiente"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "ficheiro de make"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "ambiente baixo -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "liña de comandos"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "directiva `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automático"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (de `%s', liña %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# estatísticas da táboa hash de conxunto de variables:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1856,7 +1893,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1865,7 +1902,7 @@ msgstr ""
 "\n"
 "# Valores de variables específicos do patrón"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1873,7 +1910,7 @@ msgstr ""
 "\n"
 "# Non hai valores específicos do patrón."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1882,14 +1919,14 @@ msgstr ""
 "\n"
 "# %u valores de variables específicos do patrón"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "aviso: variable non definida `%.*s'"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "a chamada a sys$search fallou con %d\n"
 
 #: vmsjobs.c:71
@@ -1897,72 +1934,77 @@ msgstr "a chamada a sys$search fallou con %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Aviso: Redirección baleira\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "erro interno: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-aviso, CTRL-Y deixará subprocesos ceibos.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-aviso, pode que teña que reactiva-lo manexo de CTRL-Y dende o DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Comando incluido descoñecido '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Erro, comando baleiro\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada redirixida de %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erros redirixidos a %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Saída redirixida a %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Saída redirixida a %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Executando %s no canto\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erro ao lanzar, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1970,11 +2012,11 @@ msgstr ""
 "\n"
 "# Camiños de Busca VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Non hai camiños de busca `vpath'"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1983,7 +2025,7 @@ msgstr ""
 "\n"
 "# %u camiños de busca `vpath'.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1991,7 +2033,7 @@ msgstr ""
 "\n"
 "# Non hai un camiño de busca xeral (variable `VPATH')."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2001,18 +2043,47 @@ msgstr ""
 "# Camiño de busca xeral (variable `VPATH'):\n"
 "# "
 
+#~ msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
+#~ msgstr ""
+#~ "create_child_process: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
+
+#~ msgid "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
+#~ msgstr ""
+#~ "create_child_process: a chamada a DuplicateHandle(Err) fallou (e=%d)\n"
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "Erro de sintaxe, ainda dentro de '\"'\n"
 
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr "Recibiuse un sinal SIGCHLD; %u procesos fillos non colleitados.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-aviso, CTRL-Y deixará subprocesos ceibos.\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Non especifique -j ou --jobs se sh.exe non está dispoñible."
 
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Reiniciando make para entrar no modo de un traballo."
 
+#~ 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 ""
+#~ "%sIsto é software libre; vexa o código fonte polas condicións de copia.\n"
+#~ "%sNON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA\n"
+#~ "%sUN FIN DETERMINADO.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "`endef' superfluo"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "directiva `override' baleira"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "directiva `override' non válida"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "non hai un home de ficheiro en `%sinclude'"
 
@@ -2269,12 +2340,6 @@ msgstr ""
 #~ msgid "process_begin: CreateProcess(%s, %s, ...) failed.\n"
 #~ msgstr "process_begin: a chamada a CreateProcess(%s, %s, ...) fallou.\n"
 
-#~ msgid "process_easy: DuplicateHandle(Err) failed (e=%d)\n"
-#~ msgstr "process_easy: a chamada a DuplicateHandle(Err) fallou (e=%d)\n"
-
-#~ msgid "process_easy: DuplicateHandle(In) failed (e=%d)\n"
-#~ msgstr "process_easy: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
-
 #~ msgid "process_easy: DuplicateHandle(Out) failed (e=%d)\n"
 #~ msgstr "process_easy: a chamada a DuplicateHandle(Out) fallou (e=%d)\n"
 
index 50797d1..5e8d924 100644 (file)
Binary files a/po/he.gmo and b/po/he.gmo differ
index 2880ccb..7befe70 100644 (file)
--- a/po/he.po
+++ b/po/he.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: make 3.79.1\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2002-03-30 21:33+0300\n"
 "Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
 "Language-Team: Hebrew <eliz@gnu.org>\n"
@@ -14,90 +14,90 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "úëîúð äððéàù `%s' äðåëúá ùåîéù ïåéñð"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "VMS úëøòîá ïåéëøàá øáà ìù äòù/êéøàú éåðéùá äëéîú ïéà"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "ïé÷ú ïåéëøà õáå÷ åðéà `%s' :touch"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "`%s' øáà ìéëî åðéà `%s' ïåéëøà :touch"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "`%s' øåáò ïé÷ú-àì ãå÷ äøéæçä ar_member_touch :touch"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "%d ñåèèñ ,lib$rset_module é\"ò ìåãåî ìò òãéî úôéìùá ïåìùë"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "%d ñåèèñ íò ìùëð lbr$ini_control"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "(`%s' äéøôñ) `%s' øáà øåáò äéøôñ úçéúôá äì÷ú"
 
 #  These are not translated, since they belong to a test program.
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (name might be truncated)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Date %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Break. ***\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] `%s' õáå÷ ÷çåî ***"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** `%s' õáå÷ ÷çåî ***"
@@ -105,20 +105,21 @@ msgstr "*** `%s' 
 #  I decided to retain the English text of what Make prints under -p,
 #  since it is notoriously hard to get right in right-to-left languages,
 #  and because its primary use is for programmers who write Makefiles.
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  commands to execute"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (built-in):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (from `%s', line %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -126,221 +127,224 @@ msgstr ""
 "\n"
 "# Directories\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: could not be stat'd.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (key %s, mtime %d): could not be opened.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (device %ld, inode %ld): could not be opened.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (key %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "No"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " files, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "no"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " impossibilities"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " so far."
 
-#: dir.c:1079
+#: dir.c:1092
 #, fuzzy, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilities in %u directories.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "(øáã ìù åôåñá) åîöòì äééðôäì íøåâ `%s' éáéñøå÷ø äðúùî"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå"
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ".`%s' øåáò åìà ìò úåôéãò `%s' øåáò úåãå÷ô"
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
 
-#: file.c:385
+#: file.c:396
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "øúåîä íåçúì õåçî äðéäù ,%s ìù ïîæä úîéúç úà %s-á óéìçî"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "úëøòî ïåòù"
 
 #  See the comment above about translations of text printed under -p.
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Not a target:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Precious file (prerequisite of .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Phony target (prerequisite of .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Command-line target."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  A default or MAKEFILES makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Implicit rule search has been done."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Implicit rule search has not been done."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Implicit/static pattern stem: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  File is an intermediate prerequisite."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Also makes:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Modification time never checked."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  File does not exist."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  File is very old."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Last modified %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  File has been updated."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  File has not been updated."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Commands currently running (THIS IS A BUG)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Dependencies commands running (THIS IS A BUG)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Successfully updated."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Needs to be updated (-q is set)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Failed to be updated."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Invalid value in `update_status' member!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Invalid value in `command_state' member!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -348,271 +352,272 @@ msgstr ""
 "\n"
 "# Files"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "øôñî åðéà `word' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "éáåéç úåéäì áééç `word' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() failed (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() failed\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr ".`%s' íã÷ úùéøã ììë äñðî\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (temporary file)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] 0x%x äì÷úî éúîìòúä ***"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] 0x%x äì÷ú ***"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] %d äì÷úî éúîìòúä"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] %d äì÷ú"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî"
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "äöø 0x%08lx (%s) PID=%ld %s úá-úéðëú\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr "(ú÷çåøî)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "äçéìöäù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr ".úåãåáò úøùøùî 0x%08lx PID=%ld %s úá-úéðëú ÷éçøî\n"
 
 #  Here and elsewhere leading strings passed to perror are not translated,
 #  since they will be followed by an error message in English.
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "write jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -621,272 +626,288 @@ msgstr ""
 "\n"
 "ìùëðù øåâéùá åðîð íéèðîåâøà %d\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ".úåãåáò úøùøùì 0x%08lx (%s) PID=%ld %s úá-úéðëú óøöî\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "read jobs pipe"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "cannot enforce load limit: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "äôñàð pid %d úá-úéðëú ,pid %d-ì äëçî ïééãò\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "äàöîð àì åæ äãå÷ô :%s"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "äàöîð àì shell úãå÷ô :%s"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ øöåé\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 "(!unixy && !batch_mode_shell) shell-mode úòéá÷á äì÷ú :%s õáå÷ ìù %d äøåù\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "                                             :íéðééôàî\n"
 
-#: main.c:292
+#: main.c:304
 #, fuzzy
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "úåîéàú ïòîì èîùåî"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:299
+#: main.c:311
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä"
 
-#: main.c:301
+#: main.c:313
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:309
+#: main.c:323
 #, fuzzy
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "úéðëúäî àöå äæ äøæò êñî âöä"
 
-#: main.c:311
-#, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "úåéðëú-úúá úåàéâùî íìòúä"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr ""
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:330
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr "äìáâî ïéà èðîåâøà àìì ;úéðîæ-åá úåãåáò N-î øúåé àì"
 
-#: main.c:318
+#: main.c:332
 #, fuzzy
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä"
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "Make ìù éîéðô íéðåúð ñéñá âöä"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà"
 
-#: main.c:335
+#: main.c:349
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð"
 
-#: main.c:337
+#: main.c:351
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:344
+#: main.c:358
 #, fuzzy
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò"
 
-#: main.c:346
+#: main.c:360
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä"
 
-#: main.c:348
+#: main.c:362
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "úéçëåð äé÷éú íù âöä"
 
-#: main.c:350
+#: main.c:364
 #, fuzzy
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "ùøåôîá ïéåö àåä íà åìéôà -w ìèá"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "%s úéðëú êåúî àø÷ð ìåôéè àìì úåâéøç ïðñî\n"
@@ -894,219 +915,211 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell setting default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell path search set default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ".úåéðù 30 ìù %s úééäùä"
 
 #  Pay attention: this is written to the _right_ of the previous string,
 #  but should look like a single sentence together with it.
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr " äîééúñð\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile"
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (temporary file)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (temporary file)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô"
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "íéáåøî --jobserver-fds éðééôàî :úéîéðô äðëú úì÷ú"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "--jobserver-fds ïééôàîá `%s' äéåâù úæåøçî :úéîéðô äðëú úì÷ú"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà"
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 ".Make ìù áàä ììëì `+' óñåä .-j1-á ùåîéù äùòéé ;ïéîæ åðéà jobserver :äøäæà"
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "creating jobs pipe"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "init jobserver pipe"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "...makefile éöá÷ ïëãòî\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú"
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr ".àöîð àì `%s' ììëåî makefile"
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "àöîð àì `%s' Makefile"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì"
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-executing:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (temporary file): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "úåøèî ïéà"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "...ãòé úåøèî ïëãòî\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ"
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "%s [íéðééôàî] [äøèî] ...  :ùåîéù ïôåà\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2394
+#: main.c:2481
 #, fuzzy, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "\n"
 ".<bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
 
-#: 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 ""
-", by Richard Stallman and Roland McGrath.\n"
-"%s           %s øåáò äúðáð\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
-"%s\tFree Software Foundation, Inc.\n"
-"%s                     .øå÷î éöá÷á ïééò ä÷úòä úåéåëæì ;úéùôç äðëú éäåæ\n"
-"%s     äîàúä åà úåøéçñ øåáò àì åìéôà ;úåéøçà áúëá äååìî äðéà åæ úéðëåú\n"
-"%s                                                       .éäùìë úéìëúì\n"
-"\n"
-"%s                           <bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\n"
-"\n"
+#: main.c:3054
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr ""
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1115,7 +1128,7 @@ msgstr ""
 "\n"
 "# Make data base, printed on %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1124,441 +1137,442 @@ msgstr ""
 "\n"
 "# Finished Make data base on %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3106
+#: main.c:3242
 #, fuzzy, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, fuzzy, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3121
+#: main.c:3257
 #, fuzzy, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "directory `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Stop.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Unknown error %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "éìàåèøéåä ïåøëæä øîâð"
 
-#: misc.c:646
+#: misc.c:708
 #, fuzzy, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 #, fuzzy
 msgid "Initialized access"
 msgstr "Initialized"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr ""
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "%s-ì úåàéâù úééðôä\n"
 
 #  Here and elsewhere leading strings passed to perror are not translated,
 #  since they will be followed by an error message in English.
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "write jobserver"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "...makefile éöá÷ àøå÷\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Reading makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (no default goal)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (search path)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (don't care)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (no ~ expansion)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "éàðú ìù éåâù øéáçú"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "øúåéî `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "÷éø äðúùî íù"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "ä÷éø `override' úàøåä"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "äéåâù `override' úàøåä"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "ïäéðôì ììë àìì úåãå÷ô"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "%sãéøôî øñç"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr "(?íéçååø 8 íå÷îá TAB-ì úðååëúä íàä) "
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "äøèî úéðáú ïéà"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "úåáåøî äøèî úåéðáú"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "`%%' àìì äøèî úéðáú"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "øñç `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "÷éø äðúùî íù"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "`%s' úàøåä éøçà øúåéî èñ÷è"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "øúåéî `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "ãòéä úéðáú úà úîàåú äðéà `%s' äøèî"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî"
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "äçðæð äøåùä úøúé ;NUL åú éúùâô :äøäæà"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr ".`%s øåáò úåùòì äî ïéà"
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr ".éðëãò øáë `%s'"
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr ".`%s' äøèî õáå÷ ïçåá\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr ".`%s' õáå÷ ïëãòî ïééãò\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr ".íéé÷ åðéà `%s' õáå÷\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ".%s <- %s úéìâòî ìåìú èéîùî"
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî"
 
-#: remake.c:677
+#: remake.c:727
 #, fuzzy, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr " (`%s' :VPATH õáå÷ íù)"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr ".`%s' äøèî ùãçî úåðáì áééç\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  .`%s' VPATH íùî íìòúî\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr ".`%s' øåáò úåãå÷ô õéøî\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr ".`%s' ùãçî úééðáá äçìöä\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr ".-q íò úåðáéäì êéøö `%s' äøèî õáå÷\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
+
+#: remake.c:1357
 #, fuzzy, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
 
-#: remake.c:1313
+#: remake.c:1370
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà"
@@ -1568,7 +1582,7 @@ msgstr "
 msgid "Customs won't export: %s\n"
 msgstr "%s àöééî åðéà Customs\n"
 
-#: rule.c:548
+#: rule.c:499
 #, fuzzy
 msgid ""
 "\n"
@@ -1577,7 +1591,7 @@ msgstr ""
 "\n"
 "# No implicit rules."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1585,7 +1599,7 @@ msgstr ""
 "\n"
 "# No implicit rules."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1594,234 +1608,241 @@ msgstr ""
 "\n"
 "# %u implicit rules, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: num_pattern_rules wrong!  %u != %u"
 
 #  It's no use to try to translate the signal names.
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "unknown signal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Hangup"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Interrupt"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Quit"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Illegal Instruction"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Trace/breakpoint trap"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Aborted"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT trap"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT trap"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Floating point exception"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Killed"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Bus error"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Segmentation fault"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Bad system call"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Broken pipe"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarm clock"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Terminated"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "User defined signal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "User defined signal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Child exited"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Power failure"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Stopped"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Stopped (tty input)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Stopped (tty output)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Stopped (signal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU time limit exceeded"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "File size limit exceeded"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtual timer expired"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profiling timer expired"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Window changed"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Continued"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Urgent I/O condition"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O possible"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Resource lost"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Danger signal"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Information request"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Floating point co-processor not available"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
 
 #  These are printed under -p, so they are left in English.
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "default"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "environment"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "environment under -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "command line"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "`override' directive"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatic"
 
-#: variable.c:1396
+#: variable.c:1570
 #, fuzzy, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (from `%s', line %lu):\n"
 
-#: variable.c:1438
+#: variable.c:1612
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %u variables in %u hash buckets.\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1829,7 +1850,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1838,7 +1859,7 @@ msgstr ""
 "\n"
 "# Pattern-specific variable values"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1846,7 +1867,7 @@ msgstr ""
 "\n"
 "# No pattern-specific variable values."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1855,14 +1876,14 @@ msgstr ""
 "\n"
 "# %u pattern-specific variable values"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "%d íò ìùëð sys$search\n"
 
 #: vmsjobs.c:71
@@ -1870,72 +1891,77 @@ msgstr "%d 
 msgid "Warning: Empty redirection\n"
 msgstr "ä÷éø äééðôä :úåøéäæ\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "command_state `%s' :úéîéðô äðëú úì÷ú"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr ".úåìéòô úá-úåéðëú øéàùäì ìåìò CTRL-Y :úåøéäæ\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ".DCL-î CTRL-Y-á ìåôéè øåùôéàá êøåö úåéäì ìåìò :úåøéäæ\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "úøëåî äðéà '%s'úéðáåî äãå÷ô\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "ä÷éø äãå÷ô :äì÷ú\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s-î èì÷ úééðôä\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s-ì úåàéâù úééðôä\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "%s-ì èìô úééðôä\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s-ì èìô úééðôä\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s õéøî úàæ íå÷îá\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1943,11 +1969,11 @@ msgstr ""
 "\n"
 "# VPATH Search Paths\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# No `vpath' search paths."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1956,7 +1982,7 @@ msgstr ""
 "\n"
 "# %u `vpath' search paths.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1964,7 +1990,7 @@ msgstr ""
 "\n"
 "# No general (`VPATH' variable) search path."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1997,6 +2023,9 @@ msgstr ""
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr ".åôñàð íøèù úá-úåéðëú %u ;SIGCHLD ìá÷úä\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr ".úåìéòô úá-úåéðëú øéàùäì ìåìò CTRL-Y :úåøéäæ\n"
+
 #~ msgid "DIRECTORY"
 #~ msgstr "DIRECTORY"
 
@@ -2018,6 +2047,9 @@ msgstr ""
 #~ msgid "Read FILE as a makefile"
 #~ msgstr "makefile-ë FILE àø÷"
 
+#~ msgid "Ignore errors from commands"
+#~ msgstr "úåéðëú-úúá úåàéâùî íìòúä"
+
 #~ msgid "Search DIRECTORY for included makefiles"
 #~ msgstr "DIRECTORY-á íéììëð makefile éöá÷ ùôç"
 
@@ -2045,12 +2077,44 @@ msgstr ""
 #~ msgid "Resetting make for single job mode."
 #~ msgstr ".éúøãñ ïôåàá åòöåáé úåãå÷ô"
 
+#~ msgid ""
+#~ ", by Richard Stallman and Roland McGrath.\n"
+#~ "%sBuilt for %s\n"
+#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+#~ "%s\tFree Software Foundation, Inc.\n"
+#~ "%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"
+#~ "\n"
+#~ "%sReport bugs to <bug-make@gnu.org>.\n"
+#~ "\n"
+#~ msgstr ""
+#~ ", by Richard Stallman and Roland McGrath.\n"
+#~ "%s           %s øåáò äúðáð\n"
+#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+#~ "%s\tFree Software Foundation, Inc.\n"
+#~ "%s                     .øå÷î éöá÷á ïééò ä÷úòä úåéåëæì ;úéùôç äðëú éäåæ\n"
+#~ "%s     äîàúä åà úåøéçñ øåáò àì åìéôà ;úåéøçà áúëá äååìî äðéà åæ úéðëåú\n"
+#~ "%s                                                       .éäùìë úéìëúì\n"
+#~ "\n"
+#~ "%s                           <bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\n"
+#~ "\n"
+
 #~ msgid "Entering"
 #~ msgstr "Entering"
 
 #~ msgid "Leaving"
 #~ msgstr "Leaving"
 
+#~ msgid "extraneous `endef'"
+#~ msgstr "øúåéî `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "ä÷éø `override' úàøåä"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "äéåâù `override' úàøåä"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "õáå÷ íù àìì `%sinclude' úàøåä"
 
index c4b3e8e..a3d3307 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index 2019755..5806881 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
@@ -6,7 +6,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2003-10-12 18:01+0200\n"
 "Last-Translator: Hrvoje Niksic <hniksic@xemacs.org>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -14,107 +14,108 @@ msgstr ""
 "Content-Type: text/plain; charset=iso-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "poku¹aj kori¹tenja nepodr¾ane moguænosti: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "touch dijela arhive nije rapolo¾iv na VMS-u"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Arhiva `%s' ne postoji"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' nije valjana arhiva"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: èlan `%s' ne postoji u `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: Neispravan povratni kod iz ar_member_touch na `%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_module nije izdvojio informacije o modulu, status = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control nije uspio sa statusom = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "ne mogu otvoriti biblioteku `%s' da naðem èlan `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "èlan `%s'%s: %ld bajtova na %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (ime je mo¾da odrezano)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Prekid.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Èlan arhive '%s' mogao bi biti bezvezan; nije obrisan"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Èlan arhive '%s' mogao bi biti bezvezan; nije obrisan"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Bri¹em spis `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Bri¹em spis `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  naredbe za izvr¹avanje"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (ugraðeno):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (iz `%s', redak %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -122,219 +123,222 @@ msgstr ""
 "\n"
 "# Direktoriji\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: ne mo¾e se statati.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (tipka %s, mtime %d): nije ga se moglo otvoriti.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (device %d, inode [%d,%d,%d]): nije ga se moglo otvoriti.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (device %ld, inode %ld): nije ga se moglo otvoriti.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (tipka %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Nijedan"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " spis, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "nijedna"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " nemoguænost"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " do sad."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " nemoguænosti u %lu direktorija.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Rekurzivna varijabla `%s' pokazuje (na kraju) na sebe"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "nedovr¹ena referenca na varijablu"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Naredbe su naznaèene za spis `%s' na %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "Naredbe za spis `%s' naðene su implicitnim pretra¾ivanjem propisa,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "ali `%s' se sada smatra istim spisom kao i `%s'."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Naredbe za `%s' ignorirat æe se u korist onih za `%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "ne mogu preimenovati `%s' s jednom dvotoèkom u `%s' s dvije dvotoèke"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "ne mogu preimenovati `%s' s dvije dvotoèke u `%s' s jednom dvotoèkom"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Bri¹em posredni spis `%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Bri¹em posredne spise...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Vremenska oznaka van granica; zamjenjujem s %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Trenutno vrijeme"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Nije meta:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Vrijedan spis (prerekvizit mete .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  La¾na meta (prerekvizit mete .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Meta na komandnoj liniji."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Podrazumijevani ili MAKEFILES makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#   Implicitna pretraga propisa je izvr¹ena."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Implicitna pretraga propisa nije izvr¹ena."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Korijen implicitnog/statièkog uzorka: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Spis je posredni prerekvizit."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Takoðer proizvodi:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Vrijeme promjene nikada nije provjereno."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Spis ne postoji."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Spis je vrlo star."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Zadnja promjena %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Spis je a¾uriran."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Spis nije a¾uriran."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Naredbe koje se trenutno izvr¹avaju (OVO JE BUG)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Ovisnosti izmeðu naredbi koje se izvr¹avaju (OVO JE BUG)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Uspje¹no a¾uriran."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Treba ga a¾urirati (-q je postavljen)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Nije ga se a¾uriralo."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Neispravna vrijednost u elementu `update_status'!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Neispravna vrijednost u elementu `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -342,7 +346,7 @@ msgstr ""
 "\n"
 "# Spisi"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -352,263 +356,264 @@ msgstr ""
 "# statistike hash tablice spisa\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "prvi argument funkcije `word' nije broj"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "prvi argument funkcije `word' mora biti veæi od 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "drugi argument funkcije `wordllist' nije broj"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "drugi arument funkcije `wordlist' nije broj"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) je zakazao (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) je zakazao (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() je zakazao (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() je zakazao\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Èistim privremeni batch spis %s.\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "Nedovoljan broj argumenata (%d) funkciji `%s'"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Neimplementirano na ovoj platformi: funkcija `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "nedovr¹en poziv funkciji `%s': nedostaje `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: opcija `%s' je vi¹eznaèna\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: uz opciju `--%s' ne ide argument\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: opcija `%c%s' ne dopu¹ta argument\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: opcija `%s' zahtijeva argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: nepoznata opcija `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: nepoznata opcija `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: nedopu¹tena opcija -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: neispravna opcija -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opcija tra¾i argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: opcija `-W %s' je vi¹eznaèna\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: opcija `-W %s' ne dopu¹ta argument\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "ne mogu alocirati %ld bajtova za hash tablicu; memorija iscrpljena"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Optereæenje=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Preraspodjela=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Kolizije=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Tra¾im implicitni propis za `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Tra¾im implicitni propis za `%s' koji pripada elementu arhive.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Izbjegavam rekurziju implicitnog propisa.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Poku¹avam propis uzorka s korijenom `%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Odbacujem nemoguæ prerekvizit `%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Odbacujem nemoguæe pravilo prerekvizita `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Poku¹avam s implicitnim prerekvizitom `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Odbacujem nemoguæ prerekvizit `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Poku¹avam s propisom prerekvizita `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Poku¹avam s implicitnim prerekvizitom `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Na¹ao prerekvizit `%s' kao VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Tra¾im propis s posrednim spisom `%s'.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite(privremeni spis)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Gre¹ka 0x%x (ignorirana)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Gre¹ka 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Gre¹ka %d (ignorirana)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Gre¹ka %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (izbaèen core)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** èekam na nedovr¹ene poslove...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "®ivo dijete 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (udaljen)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "®anjem proma¹eno dijete 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "®anjem uspje¹no dijete 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Èistim privremeni batch spis %s\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Uklanjam dijete 0x%08lx PID %ld%s iz lanca.\n"
 
 # ©to bi ovdje trebalo iæi?
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "write jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Otpustio token za dijete 0x%08lx (%s).\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() nije uspio pokrenuti proces (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -617,97 +622,109 @@ msgstr ""
 "\n"
 "Prebrojao %d argumenata u neuspjelom pokretanju\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Smje¹tam dijete 0x%08lx (%s) PID %ld%s u lanac.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Preuzeo token za dijete 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "read jobs pipe"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Nema potrebe ponovo izraditi metu `%s'"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 "ne mogu silom primijeniti ogranièenje loada na ovom operativnom sustavu"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "ne mogu silom primijeniti ogranièenje loada: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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() nije uspio pokrenuti proces (e=%d)\n"
-
-#: job.c:2046
+#: job.c:2127
 #, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "make je po¾njeo dijete pid %d, jo¹ uvijek èeka na pid %d\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Naredba nije naðena"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Ljuskin program nije naðen"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL se promijenio (prije `%s', sad `%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Stvaram privremeni batch spis %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (redak %d) Lo¹ kontekst ljuske (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opcije:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignorira se zbog kompatibilnosti\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Bezuvjetno proizvedi sve mete.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -716,18 +733,18 @@ msgstr ""
 "                              Prijeði u DIREKTORIJ prije no ¹to i¹ta "
 "obavi¹.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Ispi¹i puno podataka za debugiranje.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAGOVI]             Ispi¹i razne vrste informacija za "
 "debugiranje.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -736,7 +753,12 @@ msgstr ""
 "                              Varijable iz okoline imaju veæu va¾nost od\n"
 "                              makefileova.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -744,15 +766,16 @@ msgstr ""
 "  -f SPIS, --file=SPIS, --makefile=SPIS\n"
 "                              Proèitaj SPIS kao makefile.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Ispi¹i ovu poruku i izaði.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Zanemari gre¹ke od naredbi.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -760,7 +783,7 @@ msgstr ""
 "  -I DIREKTORIJ, --include-dir=DIREKTORIJ\n"
 "                              Potra¾i u DIREKTORIJU ukljuèene makefileove.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -768,14 +791,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Dopusti N istovremenih poslova; bez argumenta\n"
 "                              ih dopusti beskonaèno.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Nastavi s radom ako se neke mete ne mogu "
 "izraditi.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -785,23 +808,24 @@ msgstr ""
 "                              Ne pokreæi vi¹estruke poslove, osim ako pri\n"
 "                              optereæenju ispod N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Nemoj zapravo pokrenuti nijednu naredbu;\n"
 "                              samo ih ispi¹i.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -811,32 +835,34 @@ msgstr ""
 "                              Smatraj da je SPIS vrlo star i nemoj ga\n"
 "                              ponovo napraviti.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Ispi¹i makeovu internu bazu.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Ne pokreæi naredbe; izlazni status oznaèava\n"
 "                              je li sve a¾urirano.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "  -r, --no-builtin-rules      Onemoguæi ugraðene implicitne propise.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Onemoguæi ugraðene vrijednosti varijabli.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Ne ispisuj naredbe.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -844,21 +870,21 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Iskljuèuje -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Dodirni mete umjesto da ih ponovo izraðuje¹.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               Ispi¹i verziju makea i izaði.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Ispi¹i trenutni direktorij.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -866,7 +892,7 @@ msgstr ""
 "  --no-print-directory        Iskljuèi -w, èak i ako je implicitno "
 "ukljuèen.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -874,7 +900,7 @@ msgstr ""
 "  -W SPIS, --what-if=SPIS, --new-file=SPIS, --assume-new=SPIS\n"
 "                              Smatraj SPIS beskonaèno novim.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -882,28 +908,28 @@ msgstr ""
 "  --warn-undefined-variables  Upozori kad se referencira nedefinirana "
 "varijabla.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "prazan string nije valjan naziv spisa"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "nepoznata naznaka nivoa debuga `%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: Prekid/Iznimka uhvaæena (code = 0x%x, addr = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Filter neobraðene iznimke pozvan iz programa %s\n"
@@ -911,157 +937,162 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Pristupni prekr¹aj: operacija pisanja na adresi %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Pristupni prekr¹aj: operacija èitanja na adresi %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell postavljam default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell pretraga staze postavljam default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s se zaustavlja na 30 sekundi..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "gotov sa sleep(30).  Nastavljam.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile sa standardnog ulaza naveden dvaput."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (privremeni spis)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite(privremeni spis)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Paralelni poslovi (-j) nisu podr¾ani na ovoj platformi."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Resetiram na mod jednog posla (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "interna gre¹ja: vi¹estruko pojavljivanje opcije --jobserver-fds"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "interna gre¹ka: neispravan --jobserver-fds string `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "upozorenje: -jN se forsira u pod-makeu: onemoguæujem jobserver mod."
 
 # Treba li ovo prevesti?
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "upozorenje: jobserver nedostupan: koristim -j1.  Dodaj `+' na roditeljev "
 "make propis."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "kreiram pipe za posao"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "prevesti?"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "A¾uriram makefileove....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefile `%s' bi mogao upasti u petlju; ne izgraðujem ga ponovo.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Nisam uspio ponovo izgraditi makefile `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Ukljuèeni makefile `%s' ne mo¾e se naæi."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefile `%s' ne mo¾e se naæi"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Nisam se mogao vratiti u prvotni direktorij."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Ponovo izvr¹avam:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (privremeni spis): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Nijedna meta nije navedena, niti je ijedan makefile pronaðen"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Nema meta"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "A¾uriram ciljne mete....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "upozorenje: uoèena je nepravilnost sata.  Izgradnja bi mogla biti nedovr¹ena."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uporaba: %s [opcije] [meta] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1070,7 +1101,7 @@ msgstr ""
 "\n"
 "Program sastavljen za %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1079,51 +1110,45 @@ msgstr ""
 "\n"
 "Program sastavljen za %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Uoèene gre¹ke prijavite na adresu <bug-make@gnu.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "opcija `-%c' tra¾i pozitivan cjelobrojni argument"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "opcija `-%c' tra¾i pozitivan cjelobrojni argument"
 
-#: 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 ""
-"%sOvaj program je slobodan; u izvornom kodu nalaze se uvjeti kopiranja.\n"
-"%sNema NIKAKVOG jamstva, èak ni za PROIZVODNOST ili UPOTREBLJIVOST ZA\n"
-"%sPOJEDINU SVRHU.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Program sastavljen za %s\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Program sastavljen za %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1132,7 +1157,7 @@ msgstr ""
 "\n"
 "# Makeova baza, ispisana na %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1141,310 +1166,306 @@ msgstr ""
 "\n"
 "# Kraj Makeove baze na %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Ulazim u nepoznat direktorij"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Izlazim iz nepoznatog direktorija"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Ulazim u direktorij `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Izlazim iz direktorija `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Ulazim u nepoznat direktorij"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Izlazim iz nepoznatog direktorija"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Ulazim u direktorij `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Izlazim iz direktorija `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Zaustavi.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Nepoznata gre¹ka %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "prividna memorija potro¹ena"
 
 # Da prevedem ovo?
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Inicijaliziran pristup"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Korisnièki pristup"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Makeov pristup"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Pristup djeteta"
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "Preusmjerio gre¹ke u %s\n"
 
 # ©to bi ovdje trebalo iæi?
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "write jobserver"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Èitam makefileove...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Èitam makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (nema podrazumijevanog cilja)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (staza za pretra¾ivanje)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (nije va¾no)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (bez ekspanzije ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "neispravna sintaksa uvjeta"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "suvi¹an `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "prazno ime varijable"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "prazna direktiva `ovverride'"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "neispravna direktiva `override'"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "naredbe poèinju prije prve mete"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "nedostaje propis prije naredbi"
 
 # Grr, ¾ivjela engleska mno¾ina!  I ¹to sad da radim s onim %s-om?
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "nedostaju separatori-%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (jeste li mislili na TAB umjesto 8 razmaka?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "nedostaje uzorak mete"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "vi¹estruki uzorci meta"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "uzorak mete ne sadr¾i `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "nedostaje `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "prazno ime varijable"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Suvi¹an tekst nakon direktive `endef'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "nedostaje `endef', nedovr¹en `define'"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Suvi¹an tekst nakon direktive `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Suvi¹an tekst nakon direktive `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "suvi¹an `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "samo jedan `else' po uvjetu"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Izoblièena definicija o meti ovisne varijable"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "pomije¹ani implicitni i statièki propisi uzorka"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "pomije¹ani implicitni i normalni propisi"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "meta `%s' ne odgovara uzorku mete"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "spis meta `%s' ima unose i kod : i kod ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "meta `%s' zadan vi¹e nego jednom u istom propisu."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "upozorenje: poni¹tavam postojeæe naredbe za metu `%s'"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "upozorenje: ignoriram stare naredbe za metu `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "upozorenje: NUL znak uoèen; ostatak retka se zanemaruje"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Ni¹ta za napraviti za `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' je a¾uriran."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Èistim spis `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sNema propisa za izradu mete `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sNema propisa za izradu mete `%s', kojeg tra¾i `%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Uzimam u razmatranje spis metu `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Nedavno bezuspje¹no poku¹ao a¾urirati spis `%s'\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Spis `%s' veæ je bio uzet u razmatranje.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Jo¹ uvijek a¾uriram spis `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Zavr¹io s a¾uriranjem spisa `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Spis `%s' ne postoji.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1452,133 +1473,138 @@ msgstr ""
 "*** Upozorenje: .LOW_RESOLUTION_TIME spis `%s' ima vremensku oznaku visoke "
 "rezolucije"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Na¹ao implicitni propis za `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Nijedan implicitni propis nisam na¹ao za `%s'.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Koristim podrazumijevane naredbe za `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Kru¾na ovisnost %s <- %s ispu¹tena."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Zavr¹eni prerekviziti spisa mete `%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Prerekviziti `%s' su u izradi.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Odustajem od spisa mete `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Meta `%s' nije ponovo izraðen zbog gre¹aka."
 
 # Nisam siguran da sam ovo ispravno shvatio.
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Prerekvizit `%s' slu¾i samo za redosljed pri meti `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Prerekvizit `%s' mete `%s' ne postoji.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Prerekvizit `%s' noviji je od mete `%s':\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Prerekvizit `%s' stariji je od mete `%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Meta `%s' je dvotoèka, a nema prerekvizita.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Nema naredbi za `%s', a nijedan prerekvizit nije promijenjen.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Proizvodim `%s' zbog opcije always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Nema potrebe ponovo izraditi metu `%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; koristim VPATH imena `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Moram ponovo izgraditi metu `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ignoriram VPATH imena `%s'.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Naredbe od `%s' se izvr¹avaju.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Nije uspjela ponovna izrada spisa mete `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Uspje¹no ponovno izradio spis metu `%s'.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Spis meta `%s' treba ponovnu izradu zbog -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Koristim podrazumijevane naredbe za `%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Upozorenje: Spis `%s' ima vrijeme promjene u buduænosti"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Upozorenje: Spis `%s' ima vrijeme promjene %.2g s u buduænosti"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "Element .LIBPATTERNS `%s' nije uzorak"
@@ -1588,7 +1614,7 @@ msgstr "Element .LIBPATTERNS `%s' nije uzorak"
 msgid "Customs won't export: %s\n"
 msgstr "Customs neæe eksportirati: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1596,7 +1622,7 @@ msgstr ""
 "\n"
 "# Implicitni Propisi"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1604,7 +1630,7 @@ msgstr ""
 "\n"
 "# Nema implicitnih propisa."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1613,235 +1639,246 @@ msgstr ""
 "\n"
 "# %u implicitnih propisa, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " zavr¹ni."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: pogre¹an num_pattern_rules!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "nepoznat signal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Izgubljena veza"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Prekid"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Prestanak"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Nedopu¹tena instrukcija"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Zamka za slijed/prekidnu toèku"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Otkazan"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT zamka"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT zamja"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Iznimka floating pointa"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Ubijen"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Sabirnièka gre¹ka"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Segmentacijska gre¹ka"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Nevaljan sistemski poziv"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Prekinut kanal"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Budilica"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Terminiran"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Korisnièki definiran signal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Korisnièki definiran signal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Dijete iza¹lo"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Nestalo struje"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Zaustavljen"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Zaustavljen (unosom s TTY-ja)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Zaustavljen (outputom s TTY-ja)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Zaustavljen (signalom)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "prekoraèeno ogranièenje CPU vremena"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Prekoraèeno ogranièenje velièine spisa"
 
 # Kako prevesti "virtual timer"?
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtualna ¹toperica istekla"
 
 # Kako prevesti "profiling timer"?
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profajlerska ¹toperica istekla"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Promijenjen prozor"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Nastavljen"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Hitno stanje I/O-a"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O moguæ"
 
 # Jesu li ova dva signala vic ili ¹to?  U svakom sluèaju, ovo su samo
 # descriptioni.  Za svaki sluèaj, nisam ih dirao.
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Izgubljen resurs"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Signal za opasnost"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Zahtjev za informacijom"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Aritmetièki koprocesor nije dostupan."
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# statistike hash tablice spisa\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "podrazumijevano"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "okoli¹"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "okoli¹ pod -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "komandna linija"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "direktiva `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatsko"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (iz `%s', redak %lu):"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# hash table statistike varijabli:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1849,7 +1886,7 @@ msgstr ""
 "\n"
 "# Varijable\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1858,7 +1895,7 @@ msgstr ""
 "\n"
 "# Uzorcima svojstvene vrijednosti varijabli"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1866,7 +1903,7 @@ msgstr ""
 "\n"
 "# Nema uzorcima svojstvenih vrijednosti varijabli."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1875,14 +1912,14 @@ msgstr ""
 "\n"
 "# %u uzorcima svojstvenih vrijednosti varijabli"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "upozorenje: nedefinirana varijabla `%.*s'"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search je zatajila s %d\n"
 
 #: vmsjobs.c:71
@@ -1890,73 +1927,78 @@ msgstr "sys$search je zatajila s %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Upozorenje: Prazno preusmjeravanje\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "unutra¹nja gre¹ka: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-upozorenje, CTRL-Y æe ostaviti potproces(e) na ¾ivotu.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-upozorenje, mo¾da æete morati ponovo omoguæiti obradu CTRL-Y iz DCL-a.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "UGRAÐEN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "UGRAÐEN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "UGRAÐEN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Nepoznata ugraðena naredba `%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Gre¹ka, prazna naredba\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Preusmjerio ulaz iz %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Preusmjerio gre¹ke u %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Preusmjerio izlaz u %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Preusmjerio izlaz u %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Umjesto toga, izvr¹avam %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Gre¹ka pri pokretanju, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1964,11 +2006,11 @@ msgstr ""
 "\n"
 "# VPATH staze za pretra¾ivanje\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Nema `vpath' staza za pretra¾ivanje."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1977,7 +2019,7 @@ msgstr ""
 "\n"
 "# %u `vpath' staza za pretra¾ivanje.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1985,7 +2027,7 @@ msgstr ""
 "\n"
 "# Nema opæe (iz varijable `VPATH') staze za pretra¾ivanje."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2002,12 +2044,33 @@ msgstr ""
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr "Dobio SIGCHLD; %u nepo¾etene djece.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-upozorenje, CTRL-Y æe ostaviti potproces(e) na ¾ivotu.\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Nemojte koristiti -j ili --jobs ako sh.exe nije dostupan."
 
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Resetiram make u mod jednog posla."
 
+#~ 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 ""
+#~ "%sOvaj program je slobodan; u izvornom kodu nalaze se uvjeti kopiranja.\n"
+#~ "%sNema NIKAKVOG jamstva, èak ni za PROIZVODNOST ili UPOTREBLJIVOST ZA\n"
+#~ "%sPOJEDINU SVRHU.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "suvi¹an `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "prazna direktiva `ovverride'"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "neispravna direktiva `override'"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "nedostaje naziv spisa za `%sinclude'"
 
index ce46634..5ef2ce3 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index 6336e43..3ccb143 100644 (file)
--- a/po/id.po
+++ b/po/id.po
 # 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.
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2006, 2009.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU make 3.79\n"
+"Project-Id-Version: GNU make 3.81\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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2009-01-31 18:30+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
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
-msgstr "usaha untuk menggunakan feature yang tidak disupport: `%s'"
+msgstr "usaha untuk menggunakan layanan yang tidak didukung: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
-msgstr "tidak dapat memodifikasi tanggal pada anggota archive pada VMS"
+msgstr "touch anggota archive tidak tersedia di VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Archive `%s' tidak ada"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' bukan archive yang valid"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: Anggota `%s' tidak terdapat dalam `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, 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'"
+msgstr "touch: Kode kembali tidak baik dari ar_member_touch pada `%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, 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"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control gagal dengan status = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "tidak dapat membuka library `%s' untuk melihat anggota `%s'"
+msgstr "tidak dapat membuka perpustakaan `%s' untuk melihat anggota `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, 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
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (nama mungkin akan di potong)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr " Tanggal %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr " uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Berhenti.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] Anggota archive `%s' mungkin berupa bogus: tidak dihapus"
+msgstr "*** [%s] Anggota archive `%s' mungkin palsu: tidak dihapus"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Anggota archive `%s' mungkin berupa bogus; tidak dihapus"
+msgstr "*** Anggota archive `%s' mungkin palsu; tidak dihapus"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Menghapus file `%s'"
+msgstr "*** [%s] Menghapus berkas `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
-msgstr "*** Menghapus file `%s'"
+msgstr "*** Menghapus berkas `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
-msgstr "# perintah dijalankan"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
+msgstr "#  perintah untuk dijalankan"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
-msgstr " (built-in):"
+msgstr " (bawaan):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (dari `%s', baris %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,493 +124,496 @@ msgstr ""
 "\n"
 "# Direktori\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: tidak dapat melihat statistik.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (key %s, mtime %d): tidak dapat dibuka.\n"
+msgstr "# %s (kunci %s, mtime %d): tidak dapat dibuka.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, 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"
+msgstr "# %s (perangkat %d, inode [%d,%d,%d]): tidak dapat dibuka.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (device %ld, inode %ld): tidak dapat dibuka.\n"
+msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (key %s, mtime %d): "
+msgstr "# %s (kunci %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (perangkat %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (device %ld, inode %ld): "
+msgstr "# %s (perangkat %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Tidak"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
-msgstr " files, "
+msgstr " berkas, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "tidak"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " tidak mungkin"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " sejauh ini."
 
-#: dir.c:1079
-#, fuzzy, c-format
+#: dir.c:1092
+#, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " tidak mungkin dalam direktori %u.\n"
+msgstr " tidak mungkin dalam direktori %lu.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Variabel rekursif `%s' menunjuk pada dirinya sendiri"
 
-#: expand.c:266
+#: expand.c:276
 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:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Perintah di spesifikasikan untuk berkas `%s' di %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:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr "Perintah untuk berkas `%s' ditemukan dalam pencarian aturan implisit,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
-"tetapi `%s' sekarang dipertimbangkan sebagai file yang sama dengan `%s'."
+"tetapi `%s' sekarang dipertimbangkan sebagai berkas yang sama dengan `%s'."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Perintah untuk `%s' akan diabaikan untuk menghargai `%s'."
 
-#: file.c:301
+#: file.c:298
 #, 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'"
+msgstr "tidak dapat mengubah nama dari kolon-tunggal `%s' ke kolon-ganda `%s'"
 
-#: file.c:306
+#: file.c:303
 #, 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'"
+msgstr "tidak dapat mengubah nama kolon-ganda `%s' menjadi kolon-tunggal `%s'"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Menghapus file intermediate `%s'"
+msgstr "*** Menghapus berkas sementara `%s'"
 
-#: file.c:385
-#, fuzzy
+#: file.c:396
 msgid "Removing intermediate files...\n"
-msgstr "*** Menghapus file intermediate `%s'"
+msgstr "Menghapus berkas sementara...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr ""
+msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
-msgstr ""
+msgstr "Waktu saat ini"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Bukan sebuah target:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  File sebelumnya (dibutuhkan oleh .PRECIOUS)."
+msgstr "#  Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 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
+#: file.c:933
 #, fuzzy
+msgid "#  Command line target."
+msgstr "#  Baris-perintah target."
+
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# merupakan sebuah default atau MAKEFILES makefile."
+msgstr "#  Merupakan baku, MAKEFILES atau -include/sinclude makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Pencarian aturan implisit sudah selesai."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Pencarian aturan implisit belum selesai."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Pola implisit atau statis stem: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  File merupakan persyaratan perantara (intermediate)."
+msgstr "#  Berkas merupakan dibutuhkan untuk sementara."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Juga membuat:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
-msgstr "#  Waktu ubah sudah di check."
+msgstr "#  Waktu ubah sudah diperiksa."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
-msgstr "#  File tidak ada."
+msgstr "#  Berkas tidak ada."
 
-#: file.c:929
-#, fuzzy
+#: file.c:956
 msgid "#  File is very old."
-msgstr "#  File sudah diupdate."
+msgstr "#  Berkas sudah sangat tua."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  Terakhir dimodifikasi pada %s\n"
+msgstr "#  Terakhir dimodifikasi %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
-msgstr "#  File sudah diupdate."
+msgstr "#  Berkas sudah diperbarui."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
-msgstr "#  File belum di-update."
+msgstr "#  Berkas belum diperbarui."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe 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:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
-msgstr "#  Sukses mengupdate."
+msgstr "#  Sukses memperbarui."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Perlu untuk diupdate (-q diset)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Gagal untuk mengupdate."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Nilai yang salah dalam anggota `update_status' !"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Nilai yang salah dalam anggota `command_state' !"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 "\n"
-"# Files"
+"# Berksa"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
+"\n"
+"# berkas statistik hash-table:\n"
+"# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "argumen pertama untuk fungsi `word' bukan numerik"
 
-#: function.c:764
-#, fuzzy
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
-msgstr "argumen pertama untuk fungsi `word' bukan numerik"
+msgstr "argumen pertama untuk fungsi `word' harus lebih besar dari 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "argumen pertama untuk fungsi `wordlist' bukan numerik"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "argumen kedua dari fungsi `wordlist' bukan numerik"
 
-#: function.c:1453
+#: function.c:1458
 #, 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"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) gagal (e=%ld)\n"
 
 #: function.c:1469
 #, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() gagal (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Err) gagal (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() gagal (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() gagal\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "Membersihkan file batch sementara %s\n"
+msgstr "Membersihkan berkas batch sementara %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Argumen kurang (%d) untuk fungsi `%s'"
+msgstr "Jumlah dari argumen (%d) untuk fungsi `%s' tidak mencukupi"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "Tidak terimplementasi dalam platform ini: fungsi `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "fungsi `%s' tidak diselesaikan: hilang `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: opsi `%s' merupakan ambigu\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: opsi `--%s' tidak memperbolehkan argumen\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, 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
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: opsi `%s' membutuhkan sebuah argumen\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opsi tidak dikenali `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opsi tidak dikenali `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: opsi illegal -- %c\n"
+msgstr "%s: opsi tidak legal -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opsi tidak valid -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: opsi `-W %s' merupakan opsi ambigu\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, 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"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
+"tidak dapat mengalokasikan %ld bytes untuk tabel hash; kehabisan memory"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr ""
+msgstr "Beban=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr ""
+msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr ""
+msgstr "Tabrakan=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Mencari aturan implisit untuk `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, 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
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Menghindari aturan implisit rekursi.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, 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
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Menolak persyaratan aturan yang tidak mungkin `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Mencoba persyaratan implisit `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Menolak persyaratan implisit yang tidak mungkin `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Mencoba persyaratan dari aturan `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Mencoba persyaratan implisit `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Menemukan persyaratan `%s' sebagai VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Mencari aturan dengan file antara `%s'.\n"
+msgstr "Mencari aturan dengan berkas sementara `%s'.\n"
 
-#: job.c:321
-#, fuzzy
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (file sementara)"
+msgstr "Tidak dapat membuat berkas sementara\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Error 0x%x (diabaikan)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Error 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Error %d (diabaikan)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Error %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (core di-dump)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Menunggu jobs yang belum selesai...."
+msgstr "*** Menunggu pekerjaan yang belum selesai...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %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
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 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:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Reaping anak hilang 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Reaping winning child 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "Membersihkan file batch sementara %s\n"
+msgstr "Membersihkan berkas batch sementara %s\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Menghilangkan proses anak 0x%08lx PID %ld%s dari rantai.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "menulis jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Melepaskan token dari proses anak 0x%08lx (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() gagal untuk menjalankan proses (e=%d)\n"
+msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -618,948 +622,989 @@ 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"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%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"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Memperoleh token untuk proses anak 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
-msgstr "membaca jobs pipe"
+msgstr "membaca pipa pekerjaan"
+
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Tidak perlu membuat lagi target `%s'"
 
-#: job.c:1832
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "tidak dapat memaksa mencapai batas beban: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Tidak dapat mengembalikan stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 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"
+msgstr "Tidak dapat mengembalikan stdout\n"
 
-#: job.c:2046
+#: job.c:2127
 #, 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"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make reaped child pid %ld, tetap menunggu untuk pid %ld\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Perintah tidak ada"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell program tidak ditemukan"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: mungkin kehabisan ruang environment"
 
-#: job.c:2363
-#, fuzzy, c-format
+#: job.c:2461
+#, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL berubah (sebelumnya `%s', sekarang `%s')"
+msgstr "$SHELL berubah (sebelumnya `%s', sekarang `%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "Membuat file batch sementara %s\n"
+msgstr "Membuat berkas batch sementara %s\n"
+
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
 
-#: job.c:2902
+#: job.c:3065
 #, 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
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opsi:\n"
 
-#: main.c:292
-#, fuzzy
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "Diabaikan untuk kompatibilitas."
+msgstr "  -b, -m                      Diabaikan untuk kompatibilitas.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
+"  -B, --always-make           Membuat semua target secara tidak "
+"kondisional.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
+"  -C DIRECTORI, --directory=DIREKTORI\n"
+"                              Pindah ke DIREKTORI sebelum melakukan apapun.\n"
 
-#: main.c:299
-#, fuzzy
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "Menampilkan banyak informasi debug"
+msgstr "  -d                          Menampilkan banyak informasi debug.\n"
 
-#: main.c:301
-#, fuzzy
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
-msgstr "Menampilkan berbagai tipe informasi debug."
+msgstr ""
+"  --debug[=FLAGS]             Menampilkan berbagai tipe informasi debug.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
+"  -e, --environment-overrides\n"
+"                              Variabel lingkungan memaksa makefiles.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
+"  -f BERKAS, --file=BERKAS, --makefile=BERKAS\n"
+"                              Baca BERKAS sebagai sebuah makefile.\n"
 
-#: main.c:309
-#, fuzzy
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "Tampilkan pesan ini dan keluar"
+msgstr "  -h, --help                  Tampilkan pesan ini dan keluar.\n"
 
-#: main.c:311
+#: main.c:325
 #, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "Abaikan kesalahan dari perintah yang dijalankan"
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr ""
+"  -i, --ignore-errors         Abaikan kesalahan dari perintah yang "
+"dijalankan.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
+"  -I DIREKTORI, --include-dir=DIREKTORI\n"
+"                              Cari di DIREKTORI untuk makefile yang "
+"disertakan.\n"
 
-#: main.c:316
-#, fuzzy
+#: main.c:330
 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."
+"  -j [N], --jobs[=N]          Ijinkan N kerja secara bersamaan. Kerja tidak "
+"terhingga jika tidak diberikan argumen.\n"
 
-#: main.c:318
-#, fuzzy
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
-msgstr "Tetap jalan ketika target tidak dapat dibuat."
+msgstr ""
+"  -k, --keep-going            Tetap jalan ketika target tidak dapat dibuat.\n"
 
-#: main.c:320
+#: main.c:334
 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"
+"                              Jangan menjalankan multiple pekerjaan kecuali "
+"beban dibawah N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Gunakan waktu mtime terbaru diantara symlinks "
+"dan target.\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                               Jangan menjalankan perintah apapun; tampilkan "
+"saja apa yang akan dikerjakan.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
+"  -o FILE, --old-file=BERKAS, --assume-old=BERKAS\n"
+"                              Pertimbangkan BERKAS sudah sangat tua dan "
+"jangan membuatnya lagi.\n"
 
-#: main.c:331
-#, fuzzy
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "Tampilkan make's internal database"
+msgstr "  -p, --print-data-base       Tampilkan basis data internal make.\n"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"Tidak menjalankan perintah. Mengeluarkan status saja dan mengatakan up to "
-"date"
+"  -q, --question              Tidak menjalankan perintah. Mengeluarkan "
+"status saja dan mengatakan up to date.\n"
 
-#: main.c:335
-#, fuzzy
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "Aturan implisit builtin tidak digunakan."
+msgstr ""
+"  -r, --no-builtin-rules      Aturan implisit bawaan tidak digunakan.\n"
 
-#: main.c:337
-#, fuzzy
+#: main.c:351
 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 ""
+"  -R, --no-builtin-variables  Non-aktifkan konfigurasi variabel bawaan.\n"
+
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       Jangan menampilkan perintah.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Matikan opsi -k.\n"
 
-#: main.c:344
-#, fuzzy
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
-msgstr "Touch target dari pada membuat kembali"
+msgstr ""
+"  -t, --touch                 Sentuh target dari pada membuat kembali.\n"
 
-#: main.c:346
-#, fuzzy
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "Tampilkan versi dari make dan keluar"
+msgstr "  -v, --version               Tampilkan versi dari make dan keluar.\n"
 
-#: main.c:348
-#, fuzzy
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "Tampilkan directory saat ini"
+msgstr "  -w, --print-directory       Tampilkan directory saat ini.\n"
 
-#: main.c:350
-#, fuzzy
+#: main.c:364
 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"
+msgstr ""
+"  --no-print-directory        Matikan opsi -w, walaupun opsi ini diaktifkan "
+"secara implisit.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
+"  -W FILE, --what-if=BERKAS, --new-file=BERKAS, --assume-new=BERKAS\n"
+"                              Pertimbangkan BERKAS sebagai sebuah berkas "
+"baru.\n"
 
-#: main.c:355
-#, fuzzy
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
-msgstr "Peringatkan akan adanya variabel yang tidak terdefinisi."
+msgstr ""
+"  --warn-undefined-variables  Peringatkan akan adanya variabel yang tidak "
+"terdefinisi yang direferensikan.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "`string' kosong tidak valid sebagai nama file"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
-msgstr "spesifikasi level debug tidak diketahui `%s'"
+msgstr "spesifikasi tingkat debug tidak diketahui `%s'"
 
-#: main.c:670
+#: main.c:690
 #, 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"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%lx)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Exception filter tidak dapat diatasi dari program %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Akses dilanggar: operasi tulis pada alamat %x\n"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Akses dilanggar: operasi tulis pada alamat %lx\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Akses dilanggar: operasi baca pada alamat %x\n"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Akses dilanggar: operasi baca pada alamat %lx\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, 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"
+#: main.c:834
+#, fuzzy, 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
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s dihentikan selama 30 detik..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "selesai tidur(30). Melanjutkan.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile dari standard input dispesifikasikan dua kali."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
-msgstr "fopen (file sementara)"
+msgstr "fopen (berkas sementara)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
-msgstr "fwrite (file sementara)"
+msgstr "fwrite (berkas sementara)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Parallel jobs (-j) tidak disupport dalam platform ini."
+msgstr "Parallel jobs (-j) tidak didukung dalam platform ini."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Mereset kembali ke mode satu job (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "internal error: opsi --jobserver-fds lebih dari satu"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "internal error: invalid --jobserver-fds string `%s'"
+msgstr "internal error: tidak valid --jobserver-fds string `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "Peringatan: -jN dipaksakan dalam submake: disabling jobserver mode."
+msgstr ""
+"Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
-msgstr "dup jobserver"
+msgstr "dup server pekerja"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
-"Peringatan: jobserver tidak ada: menggunakan -j1. Tambahkan `+' pada aturan "
-"make paling atas."
+"Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan `+' pada "
+"aturan make paling atas."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
-msgstr "membuat jobs pipe"
+msgstr "membuat pipa pekerjaan"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
-msgstr "inisiasi jobserver pipe"
+msgstr "inisiasi pipa server pekerja"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
-msgstr "Meng-update makefiles....\n"
+msgstr "Memperbarui makefiles....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefile `%s' mungkin berupa loop; tidak membuat lagi.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
-msgstr "Gagal membuat lagi target file `%s'."
+msgstr "Gagal membuat lagi makefile `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
-msgstr "Included makefile `%s' tidak ditemukan."
+msgstr "Makefile yang dimasukan `%s' tidak ditemukan."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefile `%s' tidak ditemukan"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Tidak dapat kembali ke direktori asal."
 
-#: main.c:2024
-#, fuzzy, c-format
+#: main.c:2102
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Menjalankan kembali:"
+msgstr "Menjalankan kembali[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
-msgstr "unlink (file sementara): "
+msgstr "unlink (berkas sementara): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL berisi lebih dari satu target"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
-msgstr "Tidak diberikan target dan tidak ditemukan makefile"
+msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
-msgstr "Tidak terdapat targets"
+msgstr "Tidak ada targets"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
-msgstr "Men-update target akhir....\n"
+msgstr "Memperbarui tujuan target....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna"
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Penggunaan: %s [opsi] [target] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
+"\n"
+"Program ini dibuat untuk %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
+"\n"
+"Program ini dibuat untuk %s (%s)\n"
 
-#: main.c:2394
-#, fuzzy, c-format
+#: main.c:2481
+#, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr ""
-"\n"
-"Laporkan bugs kepada <bug-make@gnu.org>\n"
+msgstr "Laporkan bugs kepada <bug-make@gnu.org>\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "opsi `-%c' membutuhkan sebuah argument `string' yang tidak kosong"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "opsi `-%c' membutuhkan sebuah argument string yang tidak kosong"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "opsi `-%c' membutuhkan sebuah argument `string' yang tidak kosong"
 
-#: main.c:2942
+#: main.c:3054
 #, 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"
+msgid "%sBuilt for %s\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"
+"%sAplikasi ini dibuat untuk %s\n"
 
-#: main.c:2948
-#, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
+"\n"
+"%sAplikasi ini dibuat untuk %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# Make data base, di tampilkan pada %s"
+"# Membuat basis data, ditampilkan %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Selesai membuat Make data base pada %s\n"
+"# Selesai membuat basis data %s\n"
 
-#: main.c:3101
-#, fuzzy, c-format
+#: main.c:3237
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "sebuah direktori yang tidak diketahui"
+msgstr "%s: Memasuki sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3103
-#, fuzzy, c-format
+#: main.c:3239
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "sebuah direktori yang tidak diketahui"
+msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3106
-#, fuzzy, c-format
+#: main.c:3242
+#, c-format
 msgid "%s: Entering directory `%s'\n"
-msgstr "direktori `%s'\n"
+msgstr "%s: Memasuki direktori `%s'\n"
 
-#: main.c:3109
-#, fuzzy, c-format
+#: main.c:3245
+#, c-format
 msgid "%s: Leaving directory `%s'\n"
-msgstr "direktori `%s'\n"
+msgstr "%s: Meninggalkan direktori `%s'\n"
 
-#: main.c:3114
-#, fuzzy, c-format
+#: main.c:3250
+#, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "sebuah direktori yang tidak diketahui"
+msgstr "%s[%u]: Memasuki sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3117
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "sebuah direktori yang tidak diketahui"
+msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3121
-#, fuzzy, c-format
+#: main.c:3257
+#, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "direktori `%s'\n"
+msgstr "%s[%u]: Memasuki direktori `%s'\n"
 
-#: main.c:3124
-#, fuzzy, c-format
+#: main.c:3260
+#, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "direktori `%s'\n"
+msgstr "%s[%u]: Meninggalkan direktori `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Berhenti.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
-msgstr "Tidak diketahui kesalahan %d"
+msgstr "Kesalahan tidak diketahui %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
-msgstr ""
+msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
-msgstr ""
+msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
-msgstr "Kehabisan memori virtual"
+msgstr "Kehabisan memori maya"
 
-#: misc.c:646
-#, fuzzy, c-format
+#: misc.c:708
+#, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: pengguna %lu (nyata %lu), grup %lu (nyata %lu)\n"
+msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n"
 
-#: misc.c:667
-#, fuzzy
+#: misc.c:729
 msgid "Initialized access"
-msgstr "Terinisialisasi"
+msgstr "Akses terinisialisasi"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
-msgstr ""
+msgstr "Akses pengguna"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
-msgstr ""
+msgstr "Buat akses"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
-msgstr ""
+msgstr "Akses anak"
 
-#: misc.c:892
-#, fuzzy, c-format
+#: misc.c:954
+#, c-format
 msgid "write error: %s"
-msgstr "Meneruskan error menuju %s\n"
+msgstr "error menulis: %s"
 
-#: misc.c:894
-#, fuzzy
+#: misc.c:956
 msgid "write error"
-msgstr "menulis jobserver"
+msgstr "error menulis"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Membaca makefiles...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Membaca makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (tidak terdapat goal default)"
+msgstr " (tidak terdapat tujuan baku)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (jalur pencarian)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (tidak peduli)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (tidak terdapat ekspansi tilde ~)"
 
-#: read.c:623
+#: read.c:759
 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"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "perintah dijalankan sebelum target pertama"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "hilang aturan sebelum menjalankan perintah"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "pemisah %s hilang"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (apakah yang anda maksud TAB dari pada 8 buah spasi?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "pola target hilang"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "pola target banyak"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "pola target tidak memiliki `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "hilang `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nama variabel kosong"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Kelebihan text sesudah `endef' directive"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
-msgstr "hilang syntak `endef', tidak diselesaikan `define'"
+msgstr "hilang `endef', tidak diselesaikan `define'"
+
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Kelebihan text sesudah `endef' directive"
 
-#: read.c:1454
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Kelebihan text sesudah `%s' directive"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "kelebihan `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "hanya satu `else' dalam setiap kondisi"
 
-#: read.c:1824
-#, fuzzy
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
-msgstr "Definisi variable target-specific memiliki format salah"
+msgstr "Definisi variable target-specific memiliki format yang salah"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr ""
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
+msgstr "persyaratan tidak dapat didefinisikan dalam script perintah"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "aturan pola implisit dan static tercampur"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "aturan implisit dan aturan normal tercampur"
 
-#: read.c:1954
+#: read.c:1976
 #, 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
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
-msgstr "target file `%s' keduanya memiliki : dan :: entries"
+msgstr "target berkas `%s' keduanya memiliki masukan : dan ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
-msgstr "target `%s' diberikan lebih dari sekali dalam satu aturan."
+msgstr "target `%s' memberikan lebih dari sekali dalam aturan sama."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr "Peringatan: overriding perintah untuk target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
+msgstr "Peringatan: memaksa perintah untuk target `%s'"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "Peringatan: menghiraukan perintah lama untuk target `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
-msgstr "Tidak ada yang harus dilakukan untuk membuat `%s'."
+msgstr "Tidak ada yang harus dilakukan untuk `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
-msgstr "`%s' sudah up to date."
+msgstr "`%s' sudah baru."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Pruning file `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sTidak terdapat aturan untuk membuat target `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, 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
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
-msgstr "Mempertimbangkan target file `%s'.\n"
+msgstr "Mempertimbangkan berkas target `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "Baru saja dicoba dan gagal untuk meng-update file `%s'.\n"
+msgstr "Baru saja dicoba dan gagal untuk memperbarui berkas `%s'.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
-msgstr "File `%s' baru saja dipertimbangkan.\n"
+msgstr "Berkas `%s' baru saja dipertimbangkan.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
-msgstr "Sedang meng-update file `%s'.\n"
+msgstr "Sedang memperbarui berkas `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
-msgstr "Selesai meng-update file `%s'.\n"
+msgstr "Selesai memperbarui berkas `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
-msgstr "File `%s' tidak ada.\n"
+msgstr "Berkas `%s' tidak ada.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
+"*** Peringatan: .LOW_RESOLUTION_TIME berkas `%s' memiliki sebuah penanda "
+"waktu dengan resolusi tinggi"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Ditemukan sebuah aturan implisit untuk `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, 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:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
+msgstr "Menggunakan perintah baku untuk `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Circular %s <- %s ketergantungan dijatuhkan."
+msgstr "Ketergantungan %s <- %s melingkar dijatuhkan."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Selesai melakukan semua persyaratan dari target file `%s'.\n"
+msgstr "Selesai melakukan semua persyaratan untuk berkas target `%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Persyaratan untuk membuat `%s' sedang dibuat.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
-msgstr "Menyerah untuk membuat target file `%s'.\n"
+msgstr "Menyerah untuk membuat target berkas `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
-msgstr "Target `%s' tidak dibuat lagi karena ada kesalahan (errors)."
+msgstr "Target `%s' tidak dibuat lagi karena ada errors."
 
-#: remake.c:677
-#, fuzzy, c-format
+#: remake.c:727
+#, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Persyaratan untuk `%s' lebih tua dari pada target `%s'.\n"
+msgstr "Persyaratan untuk `%s' adalah order-only untuk target `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, 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
+#: remake.c:737
 #, 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
+#: remake.c:740
 #, 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
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "Target `%s' merupakan double-colon dan tidak memiliki syarat.\n"
+msgstr "Target `%s' merupakan kolon-ganda dan tidak memiliki syarat.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Tidak ada perintah untuk `%s' dan persyaratan tidak berubah.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
-msgstr ""
+msgstr "Membuat `%s' karena adanya tanda always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Tidak perlu membuat lagi target `%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; menggunakan nama VPATH `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Harus membuat lagi target `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, 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"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Perintah dari `%s' sedang dijalankan.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
-msgstr "Gagal membuat lagi target file `%s'.\n"
+msgstr "Gagal membuat lagi target berkas `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
-msgstr "Sukses membuat kembali target file `%s'.\n"
+msgstr "Sukses membuat kembali target berkas `%s'.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Target file `%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n"
+msgstr "Target berkas `%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n"
 
-#: remake.c:1306
-#, fuzzy, c-format
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Menggunakan perintah baku untuk `%s'.\n"
+
+#: remake.c:1357
+#, c-format
 msgid "Warning: File `%s' has modification time in the future"
-msgstr ""
-"*** Peringatan: File `%s' memiliki waktu modifikasi lebih baru (%s > %s)"
+msgstr "Peringatan: Berkas `%s' memiliki waktu modifikasi dimasa depan"
 
-#: remake.c:1313
+#: remake.c:1370
 #, 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)"
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "Peringatan: Berkas `%s' memiliki waktu modifikasi %.2g s kedepan"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS elemen `%s' bukan merupakan sebuah pattern"
@@ -1569,16 +1614,15 @@ msgstr ".LIBPATTERNS elemen `%s' bukan merupakan sebuah pattern"
 msgid "Customs won't export: %s\n"
 msgstr "Custom tidak akan men-export: %s\n"
 
-#: rule.c:548
-#, fuzzy
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Tidak ada aturan implisit."
+"# Aturan implisit."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1586,7 +1630,7 @@ msgstr ""
 "\n"
 "# Tidak ada aturan implisit."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1595,232 +1639,244 @@ msgstr ""
 "\n"
 "# %u aturan implisit, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: num_pattern_rules salah! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "sinyal tidak diketahui"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Hangup"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Interupsi"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Berhenti"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
-msgstr "Instruksi Ilegal"
+msgstr "Instruksi Tidak Legal"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
-msgstr "Trace/breakpoint trap"
+msgstr "Penangkap trace/breakpoint"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Dibatalkan"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
-msgstr "IOT trap"
+msgstr "Penangkap IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
-msgstr "EMT trap"
+msgstr "Penangkap EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
-msgstr "Floating point exception"
+msgstr "Eksepsi titik pecahan"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
-msgstr "Dimatikan"
+msgstr "Terbunuh"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Bus error"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
-msgstr "Kesalahan segmentasi memory"
+msgstr "Kesalahan segmentasi"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
-msgstr "system call jelek"
+msgstr "Panggilan sistem buruk"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
-msgstr "`pipe' rusak"
+msgstr "Pipa rusak"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
-msgstr "Jam alarm"
+msgstr "Alarm"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Dimatikan"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Sinyal definisi pengguna 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Sinyal definisi pengguna 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Proses anak berakhir"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
-msgstr "Listrik mati"
+msgstr "Listrik bermasalah"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Dihentikkan"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Dihentikan (masukkan tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Dihentikan (keluaran tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
-msgstr "Dihentikan oleh sinyal"
+msgstr "Dihentikan (sinyal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Batas waktu CPU telah terlampaui"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
-msgstr "Batas maksimal ukuran file sudah dilampaui"
+msgstr "Batas maksimal ukuran berkas terlampaui"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
-msgstr "Virtual timer sudah lewat"
+msgstr "Pewaktu maya habis"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
-msgstr "Profiling timer sudah lewat"
+msgstr "Pewaktu profiling habis"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
-msgstr "Window berubah"
+msgstr "Jendela berubah"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Dilanjutkan"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Kondisi I/O penting"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O mungkin"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Resource hilang"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Sinyal bahaya"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Permintaan informasi"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
-msgstr "Floating point co-processor tidak ada"
+msgstr "co-processor titik pecahan tidak tersedia"
 
-#: strcache.c:210
-#, c-format
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s # dari string dalam strcache: %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s # dari buffer strcache: %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
-msgstr ""
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "besar %s strcache: total = %d / mak = %d / min = %d / rata-rata = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache free: total = %d / mak = %d / min = %d / rata-rata = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# berkas statistik hash-table:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
-msgstr "default"
+msgstr "baku"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
-msgstr "environment"
+msgstr "lingkungan"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
-msgstr "envirenment dibawah opsi -e"
+msgstr "lingkungan dibawah opsi -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
-msgstr "command line"
+msgstr "baris perintah"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
-msgstr "`override' directive"
+msgstr "`override' direktif"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "otomatis"
 
-#: variable.c:1396
-#, fuzzy, c-format
+#: variable.c:1570
+#, c-format
 msgid " (from `%s', line %lu)"
-msgstr " (dari `%s', baris %lu):\n"
+msgstr " (dari `%s', baris %lu)"
 
-#: variable.c:1438
-#, fuzzy
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# %u variabel dalam %u hash buckets.\n"
+msgstr "# statistik variable set hash-table:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1828,40 +1884,39 @@ msgstr ""
 "\n"
 "# Variabel\n"
 
-#: variable.c:1453
-#, fuzzy
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Nilai Variabel Pattern-specific"
+"# Nilai Variabel Pola-Spesifik"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Tidak terdapat nilai variabel pattern-specific"
+"# Tidak terdapat nilai variabel pola-spesifik"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u Nilai Variabel Pattern-specific"
+"# %u nilai variabel pola-spesifik"
 
-#: variable.h:189
+#: variable.h:219
 #, 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"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search gagal dengan kode %d\n"
 
 #: vmsjobs.c:71
@@ -1869,73 +1924,78 @@ msgstr "sys$search gagal dengan kode %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Peringatan: redirection kosong\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, 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
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr "BUILTIN [%s][%s]\n"
+msgstr "BAWAAN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr "BUILTIN CD %s\n"
+msgstr "BAWAAN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr "BUILTIN RM %s\n"
+msgstr "BAWAAN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Perintah builtin '%s' tidak diketahui\n"
+msgstr "Perintah bawaan '%s' tidak diketahui\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
-msgstr "Error, tidak ada perintah\n"
+msgstr "Error, perintah kosong\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Meneruskan input dari %s\n"
+msgstr "Meneruskan masukan dari %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "Meneruskan error menuju %s\n"
+msgstr "Meneruskan error ke %s\n"
+
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Meneruskan output ke %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Meneruskan output menuju %s\n"
+msgstr "Meneruskan output ke %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Menjalankan perintah %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Gagal spawning, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1943,11 +2003,11 @@ msgstr ""
 "\n"
 "# VPATH Jalur Pencarian\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Tidak ada `vpath' dalam jalur pencarian."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1956,24 +2016,49 @@ msgstr ""
 "\n"
 "# %u `vpath' jalur pencarian.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Tidak ada (`VPATH' variabel) yang umum dalam jalur pencarian."
+"# Tidak ada (`VPATH' variabel) umum dalam jalur pencarian."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Jalur pencarian yang umum untuk variabel `VPATH':\n"
+"# Jalur pencarian umum untuk variabel `VPATH':\n"
 "# "
 
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sIni adalah piranti lunak bebas; lihat kode program untuk syarat "
+#~ "penyalinan.\n"
+#~ "%sTIDAK TERDAPAT GARANSI; bahkan untuk PENJUALAN atau \n"
+#~ "%sKESESUAIAN UNTUK TUJUAN TERTENTU.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "kelebihan `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "directive `override' kosong"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "directive `override' tidak valid"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-warning, CTRL-Y akan meninggalkan sub-process(es).\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "# No files."
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644 (file)
index 0000000..f232b0c
Binary files /dev/null and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..df0ce15
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,2089 @@
+# Italian messages for GNU Make.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Francesco Groccia <fgr@anche.no>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 3.81\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2009-07-23 12:54+0200\n"
+"Last-Translator: Francesco Groccia <fgr@anche.no>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:48
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "tentativo di usare una funzionalità non supportata: «%s»"
+
+#: ar.c:125
+msgid "touch archive member is not available on VMS"
+msgstr "impossibile modificare la data di un membro di un archivio su VMS"
+
+#: ar.c:149
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: l'archivio «%s» non esiste"
+
+#: ar.c:152
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: «%s» non è un archivio valido"
+
+#: ar.c:159
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr "touch: il membro «%s» non esiste in «%s»"
+
+#: ar.c:166
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr "touch: codice di ritorno errato da ar_member_touch su «%s»"
+
+#: arscan.c:69
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr ""
+"lbr$set_module fallito per estrarre informazioni del modulo, stato = %d"
+
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control fallito con lo stato = %d"
+
+#: arscan.c:187
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "impossibile aprire la libreria «%s» per cercare il membro «%s»"
+
+#: arscan.c:850
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Membro «%s»%s: %ld byte a %ld (%ld).\n"
+
+#: arscan.c:851
+msgid " (name might be truncated)"
+msgstr " (il nome potrebbe essere troncato)"
+
+#: arscan.c:853
+#, c-format
+msgid "  Date %s"
+msgstr "  Data %s"
+
+#: arscan.c:854
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
+
+#: commands.c:499
+msgid "*** Break.\n"
+msgstr "*** Interruzione.\n"
+
+#: commands.c:622
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr ""
+"*** [%s] L'archivio membro «%s» potrebbe essere inesistente; non eliminato"
+
+#: commands.c:625
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** L'archivio membro «%s» potrebbe essere inesistente; non eliminarlo"
+
+#: commands.c:638
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Eliminazione del file «%s»"
+
+#: commands.c:640
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Eliminazione del file «%s»"
+
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
+msgstr "#  comandi da eseguire"
+
+#: commands.c:679
+msgid " (built-in):"
+msgstr " (comando interno):"
+
+#: commands.c:681
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (da «%s», riga %lu):\n"
+
+#: dir.c:996
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Directory\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: impossibile eseguire stat.\n"
+
+#: dir.c:1012
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (key %s, mtime %d): impossibile aprirlo.\n"
+
+#: dir.c:1016
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (device %d, inode [%d,%d,%d]): impossibile aprirlo.\n"
+
+#: dir.c:1021
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (device %ld, inode %ld): impossibile aprirlo.\n"
+
+#: dir.c:1048
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (key %s, mtime %d): "
+
+#: dir.c:1052
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (device %d, inode [%d,%d,%d]): "
+
+#: dir.c:1057
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (device %ld, inode %ld): "
+
+#: dir.c:1063 dir.c:1084
+msgid "No"
+msgstr "No"
+
+#: dir.c:1066 dir.c:1087
+msgid " files, "
+msgstr " file, "
+
+#: dir.c:1068 dir.c:1089
+msgid "no"
+msgstr "no"
+
+#: dir.c:1071
+msgid " impossibilities"
+msgstr " impossibilità"
+
+#: dir.c:1075
+msgid " so far."
+msgstr " finora."
+
+#: dir.c:1092
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " impossibilità nelle directory %lu.\n"
+
+#: expand.c:127
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "La variabile ricorsiva «%s» si autoreferenzia (finalmente)"
+
+#: expand.c:276
+msgid "unterminated variable reference"
+msgstr "riferimento della variabile non terminato"
+
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Sono stati specificati dei comandi per il file «%s» a %s:%lu,"
+
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr ""
+"Sono stati trovati dei comandi per il file «%s» mediante una regola di "
+"ricerca implicita,"
+
+#: file.c:275
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "ma il file «%s» adesso viene considerato lo stesso di «%s»."
+
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgstr "I comandi per «%s» saranno ignorati in favore di quelli per «%s»."
+
+#: file.c:298
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr ""
+"impossibile rinominare la regola \"single-colon\" «%s» con la regola \"double-"
+"colon\" «%s»"
+
+#: file.c:303
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr ""
+"impossibile rinominare la regola \"double-colon\" «%s» con la regola \"single-"
+"colon\" «%s»"
+
+#: file.c:392
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Eliminazione del file intermedio «%s»"
+
+#: file.c:396
+msgid "Removing intermediate files...\n"
+msgstr "Rimozione dei file intermedi...\n"
+
+#: file.c:803
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Intervallo errato per la marcatura temporale; sostituzione di %s"
+
+#: file.c:804
+msgid "Current time"
+msgstr "Ora corrente"
+
+#: file.c:924
+msgid "# Not a target:"
+msgstr "# Non è un obiettivo:"
+
+#: file.c:929
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  File \"precious\" (prerequisito di .PRECIOUS)."
+
+#: file.c:931
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Obiettivo \"phony\" (prerequisito di .PHONY)."
+
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
+msgstr "#  Obiettivo a riga di comando."
+
+#: file.c:935
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#  Makefile predefiniti oppure un makefile -include/sinclude."
+
+#: file.c:937
+msgid "#  Implicit rule search has been done."
+msgstr "#  Regola di ricerca implicita completate."
+
+#: file.c:938
+msgid "#  Implicit rule search has not been done."
+msgstr "#  Regola di ricerca implicita non completate."
+
+#: file.c:940
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "#  Radice del pattern implicita/statica: «%s»\n"
+
+#: file.c:942
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  Il file è un prerequisito intermedio."
+
+#: file.c:946
+msgid "#  Also makes:"
+msgstr "#  Inoltre, genera:"
+
+#: file.c:952
+msgid "#  Modification time never checked."
+msgstr "#  Ora di modifica mai controllata."
+
+#: file.c:954
+msgid "#  File does not exist."
+msgstr "#  Il file non esiste."
+
+#: file.c:956
+msgid "#  File is very old."
+msgstr "#  Il file è molto vecchio."
+
+#: file.c:961
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Ultima modifica %s\n"
+
+#: file.c:964
+msgid "#  File has been updated."
+msgstr "#  Il file è stato aggiornato."
+
+#: file.c:964
+msgid "#  File has not been updated."
+msgstr "#  Il file non è stato aggiornato."
+
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Comandi correntemente in esecuzione (QUESTO È UN BUG)."
+
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Dipendenze dei comandi in esecuzione (QUESTO È UN BUG)."
+
+#: file.c:980
+msgid "#  Successfully updated."
+msgstr "#  Aggiornato con successo."
+
+#: file.c:984
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Richiede di essere aggiornato (-q è impostato)."
+
+#: file.c:987
+msgid "#  Failed to be updated."
+msgstr "#  Aggiornamento non riuscito."
+
+#: file.c:990
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#  Valore non valido nel membro «update_status»"
+
+#: file.c:997
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#  Valore non valido nel membro «command_state»"
+
+#: file.c:1016
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# File"
+
+#: file.c:1020
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# statistiche della tabella di hash dei file:\n"
+"# "
+
+#: function.c:758
+msgid "non-numeric first argument to `word' function"
+msgstr "primo argomento non numerico per la funzione word"
+
+#: function.c:763
+msgid "first argument to `word' function must be greater than 0"
+msgstr "il primo argomento per la funzione word deve essere maggiore di 0"
+
+#: function.c:783
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "primo argomento non numerico per la funzione wordlist"
+
+#: function.c:785
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "secondo argomento non numerico per la funzione wordlist"
+
+#: function.c:1458
+#, fuzzy, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) fallita (e=%ld)\n"
+
+#: function.c:1469
+#, fuzzy, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Err) fallita (e=%ld)\n"
+
+#: function.c:1474
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() fallita (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe (): process_init_fd() fallita\n"
+
+#: function.c:1728
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Pulitura del file batch temporaneo %s\n"
+
+#: function.c:2150
+#, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»"
+
+#: function.c:2162
+#, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr "non implementata su questa architettura: funzione «%s»"
+
+#: function.c:2212
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "chiamata non terminata per la funzione «%s»: «%c» mancante"
+
+#: getopt.c:661
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'opzione «%s» è ambigua\n"
+
+#: getopt.c:685
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione «--%s» non ammette un argomento\n"
+
+#: getopt.c:690
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione «%c%s» non ammette un argomento\n"
+
+#: getopt.c:707 getopt.c:880
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'opzione «%s» richiede un argomento\n"
+
+#: getopt.c:736
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: «--%s» opzione sconosciuta\n"
+
+#: getopt.c:740
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: «%c%s» opzione sconosciuta\n"
+
+#: getopt.c:766
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opzione non valida -- %c\n"
+
+#: getopt.c:769
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opzione non valida -- %c\n"
+
+#: getopt.c:799 getopt.c:929
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'opzione richiede un argomento -- %c\n"
+
+#: getopt.c:846
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'opzione «-W %s» è ambigua\n"
+
+#: getopt.c:864
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opzione «-W %s» non ammette un argomento\n"
+
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "impossibile allocare %ld byte per la tabella hash: memoria esaurita"
+
+#: hash.c:280
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr "Load=%ld/%ld=%.0f%%, "
+
+#: hash.c:282
+#, c-format
+msgid "Rehash=%d, "
+msgstr "Rehash=%d, "
+
+#: hash.c:283
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr "Collisioni=%ld/%ld=%.0f%%"
+
+#: implicit.c:40
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr "Ricerca di una regola implicita per «%s».\n"
+
+#: implicit.c:56
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr ""
+"Ricerca di una regola implicita per «%s» usando il nome dell'archivio "
+"membro.\n"
+
+#: implicit.c:317
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Viene evitata la ricorsione della regola implicita.\n"
+
+#: implicit.c:491
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr "Viene tentata la regola del pattern con radice «%.*s».\n"
+
+#: implicit.c:674
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "Viene rifiutata la regola prerequisita \"impossible\" «%s».\n"
+
+#: implicit.c:675
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Viene rifiutato il prerequisito implicito \"impossible\" «%s».\n"
+
+#: implicit.c:688
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "Viene tentata la regola prerequisita «%s».\n"
+
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Viene tentato il prerequisito implicito «%s».\n"
+
+#: implicit.c:728
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n"
+
+#: implicit.c:742
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "Ricerca di una regola con il \"file intermedio\" «%s».\n"
+
+#: job.c:335
+msgid "Cannot create a temporary file\n"
+msgstr "Impossibile creare il file temporaneo\n"
+
+#: job.c:449
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] Errore 0x%x (ignorato)"
+
+#: job.c:450
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] Errore 0x%x"
+
+#: job.c:454
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr "[%s] Errore %d (ignorato)"
+
+#: job.c:455
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr "*** [%s] Errore %d"
+
+#: job.c:460
+msgid " (core dumped)"
+msgstr " (core dumped)"
+
+#: job.c:549
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Attesa dei processi non terminati...."
+
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Processo figlio vivo 0x%08lx (%s) PID %ld %s\n"
+
+#: job.c:581 job.c:760 job.c:862 job.c:1527
+msgid " (remote)"
+msgstr " (remoto)"
+
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Interruzione del processo figlio perdente 0x%08lx PID %ld %s\n"
+
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Interruzione del processo figlio vincente 0x%08lx PID %ld %s\n"
+
+#: job.c:763
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Pulitura del file batch temporaneo %s\n"
+
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr ""
+"Rimozione del processo figlio 0x%08lx PID %ld%s dalla catena di esecuzione.\n"
+
+#: job.c:920
+msgid "write jobserver"
+msgstr "write jobserver"
+
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "Token rilasciato per il processo figlio 0x%08lx (%s).\n"
+
+#: job.c:1453 job.c:2094
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() fallita all'avvio del processo (e=%ld)\n"
+
+#: job.c:1457 job.c:2098
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Contati %d argomenti nell'avvio fallito\n"
+
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr ""
+"Inserimento del processo figlio 0x%08lx (%s) PID %ld%s sulla catena di "
+"esecuzione.\n"
+
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Token ottenuto per il processo figlio 0x%08lx (%s).\n"
+
+#: job.c:1787
+msgid "read jobs pipe"
+msgstr "lettura della pipe dei processi"
+
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "L'obiettivo «%s» non necessita di essere rigenerato"
+
+#: job.c:1910
+msgid "cannot enforce load limits on this operating system"
+msgstr "impossibile applicare i limiti di carico su questo sistema operativo"
+
+#: job.c:1912
+msgid "cannot enforce load limit: "
+msgstr "impossibile applicare il limite di carico: "
+
+#: job.c:1985
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "nessun altro file gestito: impossibile duplicare lo standard input\n"
+
+#: job.c:1987
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "nessun altro file gestito: impossibile duplicare lo standard output\n"
+
+#: job.c:2015
+msgid "Could not restore stdin\n"
+msgstr "Impossibile ripristinare lo standard input\n"
+
+#: job.c:2023
+msgid "Could not restore stdout\n"
+msgstr "Impossibile ripristinare lo standard output\n"
+
+#: job.c:2127
+#, fuzzy, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr ""
+"make ha interrotto il processo figlio con pid %ld, in attesa ancora del "
+"processo con pid %ld\n"
+
+#: job.c:2168
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: comando non trovato"
+
+#: job.c:2228
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: shell non trovata"
+
+#: job.c:2237
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito"
+
+#: job.c:2461
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n"
+
+#: job.c:2951
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Creazione del file batch temporaneo %s\n"
+
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr ""
+"%s (riga %d) Contesto della shell errato (!unixy && !batch_mode_shell)\n"
+
+#: main.c:303
+msgid "Options:\n"
+msgstr "Opzioni:\n"
+
+#: main.c:304
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "  -b, -m                      Ignorato per compatibilità.\n"
+
+#: main.c:306
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr ""
+"  -B, --always-make           Genera tutti gli obbiettivi "
+"incondizionatamente\n"
+
+#: main.c:308
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Cambia in DIRECTORY prima di fare qualunque "
+"cosa.\n"
+
+#: main.c:311
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "  -d                          Mostra informazioni di debug.\n"
+
+#: main.c:313
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr ""
+"  --debug[=FLAGS]             Mostra diversi tipi di informazioni di debug.\n"
+
+#: main.c:315
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+"  -e, --environment-overrides\n"
+"                              Le variabili d'ambiente sovrascrivono i "
+"makefile.\n"
+
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Legge FILE come un makefile.\n"
+
+#: main.c:323
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "  -h, --help                  Mostra questo messaggio ed esce.\n"
+
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors         Ignora gli errori dei comandi.\n"
+
+#: main.c:327
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Cerca DIRECTORY per i makefile inclusi.\n"
+
+#: main.c:330
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"  -j [N], --jobs[=N]          Permette N processi in una volta; infiniti "
+"processi senza argomento.\n"
+
+#: main.c:332
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+"  -k, --keep-going            Continua l'esecuzione quando alcuni obbiettivi "
+"non possono essere creati.\n"
+
+#: main.c:334
+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"
+"                              Non avvia processi multipli a meno che il "
+"carico di lavoro è sotto N.\n"
+
+#: main.c:337
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+"  -L, --check-symlink-times   Usa il più recente mtime tra i collegamenti "
+"simbolici e l'obiettivo.\n"
+
+#: main.c:339
+#, fuzzy
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Non esegue alcun comando; li mostra "
+"solamente.\n"
+
+#: main.c:342
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Considera FILE come molto vecchio e non "
+"riesegue make.\n"
+
+#: main.c:345
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "  -p, --print-data-base       Mostra il database interno di make.\n"
+
+#: main.c:347
+#, fuzzy
+msgid ""
+"  -q, --question              Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+"  -q, --question              Non avvia alcun comando; lo stato di uscita "
+"dice se è aggiornato.\n"
+
+#: main.c:349
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr ""
+"  -r, --no-builtin-rules      Disabilita le regole implicite integrate.\n"
+
+#: main.c:351
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr ""
+"  -R, --no-builtin-variables  Dsabilita le impostazioni delle variabili "
+"integrate.\n"
+
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       Non visualizza i comandi.\n"
+
+#: main.c:355
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                            Disattiva l'opzione -k.\n"
+
+# # touch = in questo contesto è simile alla funzione del comando 'touch'
+#: main.c:358
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr ""
+"  -t, --touch                 Aggiorna la marcatura temporale degli "
+"obbiettivi senza ricrearli.\n"
+
+#: main.c:360
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr ""
+"  -v, --version               Mostra il numero di versione di make ed esce.\n"
+
+#: main.c:362
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "  -w, --print-directory       Mostra la directory corrente.\n"
+
+#: main.c:364
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+"  --no-print-directory        Disattiva l'opzione -w, anche se è stata "
+"attivata implicitamente.\n"
+
+#: main.c:366
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Considera FILE come infinitamente nuovo.\n"
+
+#: main.c:369
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+"  --warn-undefined-variables  Avvisa quando una variabile non definita viene "
+"referenziata.\n"
+
+#: main.c:564
+msgid "empty string invalid as file name"
+msgstr "testo vuoto non valido come nome di file"
+
+#: main.c:650
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "livello di debug specificato sconosciuto «%s»"
+
+#: main.c:690
+#, fuzzy, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr ""
+"%s: interruzione/eccezione ricevuta (codice = 0x%lx, indirizzo = 0x%lx)\n"
+
+#: main.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"Filtro eccezione non gestita chiamata dal programma %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = %lx\n"
+
+#: main.c:705
+#, fuzzy, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Violazione accesso: operazione di scrittura all'indirizzo %lx\n"
+
+#: main.c:706
+#, fuzzy, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Violazione accesso: operazione di lettura all'indirizzo %lx\n"
+
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell impostazione default_shell = %s\n"
+
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+"find_and_set_shell impostazione del percorso di ricerca default_shell = %s\n"
+
+#: main.c:1273
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s viene sospeso per 30 secondi..."
+
+#: main.c:1275
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "sleep(30) eseguito. Continuazione.\n"
+
+#: main.c:1501
+msgid "Makefile from standard input specified twice."
+msgstr "Il Makefile dallo standard input è stato specificato due volte."
+
+#: main.c:1539 vmsjobs.c:500
+msgid "fopen (temporary file)"
+msgstr "fopen (file temporaneo)"
+
+#: main.c:1545
+msgid "fwrite (temporary file)"
+msgstr "fwrite (file temporaneo)"
+
+#: main.c:1703
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Processi paralleli (-j) non supportati su questa piattaforma."
+
+#: main.c:1704
+msgid "Resetting to single job (-j1) mode."
+msgstr "Reimposto alla modalità a singolo processo (-j1)."
+
+#: main.c:1719
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "errore interno: opzioni multiple per --jobserver-fds"
+
+#: main.c:1727
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "errore interno: testo non valido per --jobserver-fds «%s»"
+
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr ""
+"attenzione: -jN forzata nel submake: disattivazione della modalità jobserver."
+
+#: main.c:1750
+msgid "dup jobserver"
+msgstr "jobserver duplicato"
+
+#: main.c:1753
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"attenzione: jobserver non disponibile: viene usato -j1. Aggiungere «+» alla "
+"regola make superiore."
+
+#: main.c:1777
+msgid "creating jobs pipe"
+msgstr "creazione pipe dei processi"
+
+#: main.c:1792
+msgid "init jobserver pipe"
+msgstr "inizializzazione della pipe della modalità jobserver"
+
+#: main.c:1812
+msgid "Symbolic links not supported: disabling -L."
+msgstr ""
+"Collegamenti simbolici non supportati: disabilitazione dell'opzione -L."
+
+#: main.c:1892
+msgid "Updating makefiles....\n"
+msgstr "Aggiornamento dei makefile....\n"
+
+#: main.c:1917
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr "Il makefile «%s» potrebbe ciclare all'infinito; non viene ricreato.\n"
+
+#: main.c:1996
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr "Riesecuzione del makefile «%s» non riuscita."
+
+#: main.c:2013
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr "Il makefile «%s» incluso non è stato trovato."
+
+#: main.c:2018
+#, c-format
+msgid "Makefile `%s' was not found"
+msgstr "Il makefile «%s» non è stato trovato."
+
+#: main.c:2086
+msgid "Couldn't change back to original directory."
+msgstr "Impossibile ritornare alla directory originale."
+
+#: main.c:2102
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Riesecuzione[%u]:"
+
+#: main.c:2215
+msgid "unlink (temporary file): "
+msgstr "unlink (file temporaneo): "
+
+#: main.c:2247
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ".DEFAULT_GOAL contiene più di un obiettivo"
+
+#: main.c:2270
+msgid "No targets specified and no makefile found"
+msgstr "Nessun obiettivo specificato e nessun makefile trovato"
+
+#: main.c:2272
+msgid "No targets"
+msgstr "Nessun obiettivo"
+
+#: main.c:2277
+msgid "Updating goal targets....\n"
+msgstr "Aggiornamento degli obbiettivi....\n"
+
+#: main.c:2306
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr ""
+"attenzione: Rilevato un tempo alterato. La costruzione potrebbe essere "
+"incompleta."
+
+#: main.c:2470
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Uso: %s [opzioni] [obiettivo] ...\n"
+
+#: main.c:2476
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Questo programma è stato compilato per %s\n"
+
+#: main.c:2478
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Questo programma è stato compilato per %s (%s)\n"
+
+#: main.c:2481
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Segnalare i bug all'indirizzo <bug-make@gnu.org>\n"
+
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "l'opzione «-%c» richiede un argomento di testo non vuoto"
+
+#: main.c:2617
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "l'opzione «-%c» richiede un argomento intero positivo"
+
+# # anche se manca il verbo "to be" per la forma passiva inglese, traduco in italiano come ci fosse
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\n"
+msgstr ""
+"\n"
+"%sQuesto programma è stato compilato per %s\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr ""
+"\n"
+"%s Questo programma è stato compilato per %s (%s)\n"
+
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+# # «%s» è un tipo ctime(3)
+#: main.c:3086
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Generazione del database delle informazioni, creato il %s"
+
+#: main.c:3096
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Fine generazione del database il %s\n"
+
+#: main.c:3237
+#, fuzzy, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: entrata directory sconosciuta\n"
+
+#: main.c:3239
+#, fuzzy, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: uscita directory sconosciuta\n"
+
+#: main.c:3242
+#, fuzzy, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s: entrato nella directory «%s»\n"
+
+#: main.c:3245
+#, fuzzy, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s: uscito dalla directory «%s»\n"
+
+#: main.c:3250
+#, fuzzy, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: entrata nella directory sconosciuta\n"
+
+#: main.c:3253
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: uscita dalla directory sconosciuta"
+
+#: main.c:3257
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]: entrata nella directory «%s»\n"
+
+#: main.c:3260
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]: uscita dalla directory «%s»\n"
+
+#: misc.c:316
+msgid ".  Stop.\n"
+msgstr ".  Stop.\n"
+
+#: misc.c:337
+#, c-format
+msgid "Unknown error %d"
+msgstr "Errore %d sconosciuto"
+
+#: misc.c:347
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: misc.c:355
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
+msgid "virtual memory exhausted"
+msgstr "memoria virtuale esaurita"
+
+#: misc.c:708
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: utente %lu (reale %lu), gruppo %lu (reale %lu)\n"
+
+#: misc.c:729
+msgid "Initialized access"
+msgstr "Accesso inizializzato"
+
+#: misc.c:808
+msgid "User access"
+msgstr "Accesso utente"
+
+#: misc.c:856
+msgid "Make access"
+msgstr "Accesso Make"
+
+#: misc.c:890
+msgid "Child access"
+msgstr "Accesso processo figlio"
+
+#: misc.c:954
+#, c-format
+msgid "write error: %s"
+msgstr "errore in scrittura: %s"
+
+#: misc.c:956
+msgid "write error"
+msgstr "errore in scrittura"
+
+#: read.c:179
+msgid "Reading makefiles...\n"
+msgstr "Lettura dei makefile...\n"
+
+#: read.c:333
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Lettura del makefile «%s»"
+
+#: read.c:335
+#, c-format
+msgid " (no default goal)"
+msgstr " (nessun obiettivo predefinito)"
+
+#: read.c:337
+#, c-format
+msgid " (search path)"
+msgstr " (percorso di ricerca)"
+
+#: read.c:339
+#, c-format
+msgid " (don't care)"
+msgstr " (ignora)"
+
+#: read.c:341
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (nessuna sostituzione per il carattere «~»)"
+
+#: read.c:759
+msgid "invalid syntax in conditional"
+msgstr "sintassi non valida nella condizione"
+
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
+msgstr "i comandi iniziano prima del primo obiettivo"
+
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
+msgstr "regola assente prima dei comandi"
+
+#: read.c:1027
+#, c-format
+msgid "missing separator%s"
+msgstr "separatore %s assente"
+
+#: read.c:1029
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (si intendeva dire un carattere tabulatore invece di otto spazi?)"
+
+#: read.c:1163
+msgid "missing target pattern"
+msgstr "obiettivo del pattern assente"
+
+#: read.c:1165
+msgid "multiple target patterns"
+msgstr "obiettivo dei pattern multiplo"
+
+#: read.c:1169
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "obiettivo del pattern non contiene «%%»"
+
+#: read.c:1293
+msgid "missing `endif'"
+msgstr "«endif» assente"
+
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nome della variabile vuoto"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
+msgstr "Testo estraneo dopo la direttiva «endef»"
+
+#: read.c:1392
+msgid "missing `endef', unterminated `define'"
+msgstr "«endef» assente, «define» non terminato"
+
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Testo estraneo dopo la direttiva «endef»"
+
+#: read.c:1490
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Testo estraneo dopo la direttiva «%s»"
+
+#: read.c:1499 read.c:1513
+#, c-format
+msgid "extraneous `%s'"
+msgstr "«%s» estraneo"
+
+#: read.c:1518
+msgid "only one `else' per conditional"
+msgstr "un solo «else» per condizione"
+
+#: read.c:1797
+msgid "Malformed target-specific variable definition"
+msgstr "Definizione della variabile \"target-specific\""
+
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
+msgstr "i prerequisiti non possono essere definiti nei comandi degli script"
+
+#: read.c:1908
+msgid "mixed implicit and static pattern rules"
+msgstr "regole del pattern implicite e statiche miste"
+
+#: read.c:1931 read.c:2112
+msgid "mixed implicit and normal rules"
+msgstr "regole implicite e normali miste"
+
+#: read.c:1976
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr "l'obiettivo «%s» non coincide con l'obiettivo pattern"
+
+#: read.c:1991 read.c:2036
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr "l'obiettivo file «%s» ha entrambe le voci : e ::"
+
+#: read.c:1997
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr "l'obiettivo «%s» è stato passato più di una volta nella stessa regola."
+
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
+msgstr "attenzione: sovrascrittura dei comandi per l'obiettivo «%s»"
+
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr "attenzione: scarto dei vecchi comandi per l'obiettivo «%s»"
+
+#: read.c:2392
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr ""
+"attenzione: è stato letto il carattere NUL; il resto della riga viene "
+"ignorato"
+
+#: remake.c:234
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Nessuna operazione da eseguire per «%s»."
+
+#: remake.c:235
+#, c-format
+msgid "`%s' is up to date."
+msgstr "«%s» è aggiornato."
+
+#: remake.c:306
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "Il file «%s» è stato tagliato.\n"
+
+#: remake.c:359
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sNessuna regola per generare l'obiettivo «%s»%s"
+
+#: remake.c:361
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr "%sNessuna regola per generare l'obiettivo «%s», necessario per «%s»%s"
+
+#: remake.c:413
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Considerato il file obiettivo «%s».\n"
+
+#: remake.c:420
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr ""
+"L'aggiornamento del file «%s» è stato provato recentemente e non è riuscito.\n"
+
+#: remake.c:432
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Il file «%s» è stato già esaminato.\n"
+
+#: remake.c:442
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Aggiornamento ancora in corso del file «%s».\n"
+
+#: remake.c:445
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Aggiornamento del file «%s» terminato.\n"
+
+#: remake.c:474
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Il file «%s» non esiste.\n"
+
+#: remake.c:481
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+"*** Attenzione: il file .LOW_RESOLUTION_TIME «%s» ha un'alta risoluzione "
+"della marcatura temporale"
+
+#: remake.c:494 remake.c:1016
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "Trovata una regola implicita per «%s».\n"
+
+#: remake.c:496 remake.c:1018
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Nessuna regola implicita trovata per «%s».\n"
+
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
+msgstr "Uso dei comandi predefiniti per «%s».\n"
+
+#: remake.c:535 remake.c:1057
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Dipendenza circolare %s <- %s scartata."
+
+#: remake.c:651
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr "Prerequisiti del file obiettivo «%s» terminati.\n"
+
+#: remake.c:657
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "I prerequisiti di «%s» vengono generati.\n"
+
+#: remake.c:670
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr "Abbandono del file obiettivo «%s».\n"
+
+#: remake.c:675
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "L'obiettivo «%s» non è stato rigenerato a causa degli errori."
+
+#: remake.c:727
+#, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr "Il prerequisito «%s» è solo per l'obiettivo «%s».\n"
+
+#: remake.c:732
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n"
+
+#: remake.c:737
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "Il prerequisito di «%s» è più nuovo dell'obiettivo «%s».\n"
+
+#: remake.c:740
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "Il prerequisito «%s» è più vecchio dell'obiettivo «%s».\n"
+
+#: remake.c:758
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr "L'obiettivo «%s» è \"double-colon\" e non ha alcun prerequisito.\n"
+
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr "Nessun comando per «%s» e nessun prerequisito attualmente cambiato.\n"
+
+#: remake.c:770
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr "Generazione di «%s» a causa dell'opzione \"always-make\".\n"
+
+#: remake.c:778
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "L'obiettivo «%s» non necessita di essere rigenerato"
+
+#: remake.c:780
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; uso del nome VPATH «%s»"
+
+#: remake.c:800
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "L'obiettivo «%s» deve essere rigenerato.\n"
+
+#: remake.c:806
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "  Ignoro il nome VPATH «%s».\n"
+
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
+msgstr "I comandi di «%s» vengono eseguiti.\n"
+
+#: remake.c:822
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n"
+
+#: remake.c:825
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr "File obiettivo «%s» rigenerato correttamente.\n"
+
+#: remake.c:828
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr "Il file obiettivo «%s» deve essere rigenerato con l'opzione -q.\n"
+
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Uso dei comandi predefiniti per «%s».\n"
+
+#: remake.c:1357
+#, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr "Attenzione: il file «%s» ha il tempo di modifica nel futuro"
+
+# # penso che la stringa "%.2g s" sia "%.2g is"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "Attenzione: il file «%s» ha il tempo di modifica %.2g per il futuro"
+
+#: remake.c:1569
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr "l'elemento .LIBPATTERNS «%s» non è un pattern"
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Le personalizzazioni non saranno esportate: %s\n"
+
+#: rule.c:499
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Regole implicite"
+
+#: rule.c:514
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Nessuna regola implicita."
+
+#: rule.c:517
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u regole implicite, %u"
+
+#: rule.c:526
+msgid " terminal."
+msgstr " terminale."
+
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "BUG: num_pattern_rules errato!  %u != %u"
+
+#: signame.c:86
+msgid "unknown signal"
+msgstr "segnale sconosciuto"
+
+#: signame.c:94
+msgid "Hangup"
+msgstr "Riaggancia"
+
+#: signame.c:97
+msgid "Interrupt"
+msgstr "Interrompi"
+
+#: signame.c:100
+msgid "Quit"
+msgstr "Esci"
+
+#: signame.c:103
+msgid "Illegal Instruction"
+msgstr "Istruzione illegale"
+
+#: signame.c:106
+msgid "Trace/breakpoint trap"
+msgstr "Intercetta traccia/punto di rottura"
+
+#: signame.c:111
+msgid "Aborted"
+msgstr "Annullato"
+
+#: signame.c:114
+msgid "IOT trap"
+msgstr "IOT trap"
+
+#: signame.c:117
+msgid "EMT trap"
+msgstr "EMT trap"
+
+#: signame.c:120
+msgid "Floating point exception"
+msgstr "Eccezione virgola mobile"
+
+#: signame.c:123
+msgid "Killed"
+msgstr "Ucciso"
+
+#: signame.c:126
+msgid "Bus error"
+msgstr "Errore del bus"
+
+#: signame.c:129
+msgid "Segmentation fault"
+msgstr "Errore di segmentazione"
+
+#: signame.c:132
+msgid "Bad system call"
+msgstr "Chiamata di sistema errata"
+
+#: signame.c:135
+msgid "Broken pipe"
+msgstr "Pipe interrotta"
+
+#: signame.c:138
+msgid "Alarm clock"
+msgstr "Allarme"
+
+#: signame.c:141
+msgid "Terminated"
+msgstr "Terminato"
+
+#: signame.c:144
+msgid "User defined signal 1"
+msgstr "Segnale 1 definito dall'utente"
+
+#: signame.c:147
+msgid "User defined signal 2"
+msgstr "Segnale 2 definito dall'utente"
+
+#: signame.c:152 signame.c:155
+msgid "Child exited"
+msgstr "Processo figlio uscito"
+
+#: signame.c:158
+msgid "Power failure"
+msgstr "Blackout"
+
+#: signame.c:161
+msgid "Stopped"
+msgstr "Fermato"
+
+#: signame.c:164
+msgid "Stopped (tty input)"
+msgstr "Fermato (tty input)"
+
+#: signame.c:167
+msgid "Stopped (tty output)"
+msgstr "Fermato (tty output)"
+
+#: signame.c:170
+msgid "Stopped (signal)"
+msgstr "Fermato (segnale)"
+
+#: signame.c:173
+msgid "CPU time limit exceeded"
+msgstr "Limite di tempo della CPU superato"
+
+#: signame.c:176
+msgid "File size limit exceeded"
+msgstr "Limite della dimensione dei file superato"
+
+#: signame.c:179
+msgid "Virtual timer expired"
+msgstr "Timer virtuale scaduto"
+
+#: signame.c:182
+msgid "Profiling timer expired"
+msgstr "Profiling timer scaduto"
+
+#: signame.c:188
+msgid "Window changed"
+msgstr "Finestra cambiata"
+
+#: signame.c:191
+msgid "Continued"
+msgstr "Continua"
+
+#: signame.c:194
+msgid "Urgent I/O condition"
+msgstr "Condizioni I/O urgenti"
+
+#: signame.c:201 signame.c:210
+msgid "I/O possible"
+msgstr "I/O possibile"
+
+#: signame.c:204
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: signame.c:207
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:213
+msgid "Resource lost"
+msgstr "Risorsa persa"
+
+#: signame.c:216
+msgid "Danger signal"
+msgstr "Segnale di pericolo"
+
+#: signame.c:219
+msgid "Information request"
+msgstr "Richiesta informazioni"
+
+#: signame.c:222
+msgid "Floating point co-processor not available"
+msgstr "Co-processore virgola mobile non disponibile"
+
+#: strcache.c:235
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+msgstr ""
+"\n"
+"%s # di stringhe in strcache: %d\n"
+
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s # di buffer strcache: %d\n"
+
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+"%s dimensione strcache: totale = %d / massima = %d / minima = %d / media = %"
+"d\n"
+
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+"%s strcache libera: totale = %d / massima = %d / minima = %d / media = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# statistiche della tabella di hash dei file:\n"
+"# "
+
+#: variable.c:1541
+msgid "default"
+msgstr "predefinito"
+
+#: variable.c:1544
+msgid "environment"
+msgstr "ambiente"
+
+#: variable.c:1547
+msgid "makefile"
+msgstr "makefile"
+
+#: variable.c:1550
+msgid "environment under -e"
+msgstr "ambiente sotto l'opzione -e"
+
+#: variable.c:1553
+msgid "command line"
+msgstr "riga di comando"
+
+#: variable.c:1556
+msgid "`override' directive"
+msgstr "direttiva «override»"
+
+#: variable.c:1559
+msgid "automatic"
+msgstr "automatico"
+
+#: variable.c:1570
+#, c-format
+msgid " (from `%s', line %lu)"
+msgstr " (da «%s», riga %lu)"
+
+#: variable.c:1612
+msgid "# variable set hash-table stats:\n"
+msgstr "# impostazione variabile delle statistiche della tabella di hash:\n"
+
+#: variable.c:1623
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Variabili\n"
+
+#: variable.c:1627
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Valori variabile \"pattern-specific\""
+
+#: variable.c:1641
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Nessun valore per la variabile \"pattern-specific\"."
+
+#: variable.c:1643
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u valori della variabile \"pattern-specific\""
+
+#: variable.h:219
+#, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "attenzione: variabile «%.*s» non definita"
+
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search fallita con %d\n"
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Attenzione: Redirezione vuota\n"
+
+#: vmsjobs.c:184
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "errore interno: «%s» command_state"
+
+#: vmsjobs.c:289
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-attenzione, potresti riabilitare la gestione di CTRL+Y dalla DCL.\n"
+
+#: vmsjobs.c:421
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "BUILTIN [%s][%s]\n"
+
+#: vmsjobs.c:432
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "BUILTIN CD %s\n"
+
+#: vmsjobs.c:450
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "BUILTIN RM %s\n"
+
+#: vmsjobs.c:471
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Comando interno «%s» sconosciuto\n"
+
+#: vmsjobs.c:493
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Errore, comando vuoto\n"
+
+#: vmsjobs.c:506
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "Input rediretto da %s\n"
+
+#: vmsjobs.c:513
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Errore rediretto a %s\n"
+
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Output rediretto a %s\n"
+
+#: vmsjobs.c:529
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Output rediretto a %s\n"
+
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "%s verrà invece eseguito\n"
+
+#: vmsjobs.c:712
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Error spawning, %d\n"
+
+#: vpath.c:586
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# Percorsi di ricerca VPATH\n"
+
+#: vpath.c:603
+msgid "# No `vpath' search paths."
+msgstr "# Nessun percorso di ricerca «vpath»."
+
+#: vpath.c:605
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+"\n"
+"# percorsi di ricerca «vpath» %u.\n"
+
+#: vpath.c:608
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Nessun percorso di ricerca generale (variabile \"VPATH\")."
+
+#: vpath.c:614
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Percorso di ricerca generale (variabile \"VPATH\"):\n"
+"# "
+
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() fallita all'avvio del processo (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sQuesto è software libero; vedere il codice sorgente per le condizioni "
+#~ "di utilizzo.\n"
+#~ "%sNON c'è garanzia; neanche di COMMERCIABILITÀ o IDONEITÀ\n"
+#~ "%sPER UN PARTICOLARE SCOPO.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "«endef» estraneo"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "direttiva «override» vuota"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "direttiva «override» non valida"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr ""
+#~ "-attenzione, CTRL+Y lascierà il sottoprocesso (o i sottoprocessi).\n"
index d344be2..990a70f 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index bae0889..1791f48 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2004-05-18 00:47+0900\n"
 "Last-Translator: GOTO Masanori <gotom@debian.or.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -16,107 +16,108 @@ msgstr ""
 "Content-Type: text/plain; charset=EUC-JP\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½¤ò»È¤ª¤¦¤È¤·¤Æ¤¤¤Þ¤¹: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "VMS ¤Ç¤Ï½ñ¸Ë¤Î¥á¥ó¥Ð¤ò touch ¤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: ½ñ¸Ë `%s' ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' ¤ÏÀµ¾ï¤Ê½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: ¥á¥ó¥Ð `%s' ¤Ï `%s' Æâ¤Ë¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: `%s' ¤Ø¤Î ar_member_touch ¤«¤é°Û¾ï¤ÊÃͤ¬ÊÖ¤ê¤Þ¤·¤¿"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_module ¤¬¥â¥¸¥å¡¼¥ë¾ðÊó¤ÎÃê½Ð¤Ë¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control ¤¬¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "¥é¥¤¥Ö¥é¥ê `%s' ¤ò³«¤±¤º, ¥á¥ó¥Ð `%s' ¤Î¸¡º÷¤¬¤Ç¤­¤Þ¤»¤ó"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "¥á¥ó¥Ð `%s'%s: %ld ¥Ð¥¤¥È at %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (̾Á°¤¬ÀÚ¤êµÍ¤á¤é¤ì¤¿¤«¤â)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  ÆüÉÕ %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** ÃæÃÇ.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] ½ñ¸Ë¥á¥ó¥Ð `%s' ¤Ï¿ʬµ¶Êª¤Ç¤¹ ¡½ ºï½ü¤·¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** ½ñ¸Ë¥á¥ó¥Ð `%s' ¤Ï¿ʬµ¶Êª¤Ç¤¹ ¡½ ºï½ü¤·¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] ¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** ¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  ¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (¥Ó¥ë¥È¥¤¥ó):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (`%s', %lu ¹ÔÌܤ«¤é):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,219 +125,222 @@ msgstr ""
 "\n"
 "# ¥Ç¥£¥ì¥¯¥È¥ê\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: ¾õÂÖ¤òÄ´¤Ù¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (key %s, mtime %d): ³«¤±¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (device %d, inode [%d,%d,%d]): ³«¤±¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (device %ld, inode %ld): ³«¤±¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (key %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "0"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " ¸Ä¤Î¥Õ¥¡¥¤¥ë, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "0"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " ¸Ä¤ÎŬÍÑÉÔǽ¥Õ¥¡¥¤¥ë̾"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " (¤³¤³¤Þ¤Ç¤Ë)."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " ¸Ä¤ÎŬÍÑÉÔǽ¥Õ¥¡¥¤¥ë̾ (%lu ¸Ä¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ).\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "ºÆµ¢ÅªÊÑ¿ô `%s' ¤¬(ºÇ½ªÅª¤Ë)¤½¤ì¼«¿È¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "½ªÃ¼¤Î¤Ê¤¤ÊÑ¿ô»²¾È"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤¬ %s:%lu ¤Ç»ØÄꤵ¤ì¤Þ¤·¤¿."
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤Ï°ÅÌۥ롼¥ë¤Îõº÷¤Ç¸«¤Ä¤«¤ê¤Þ¤·¤¿,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "¤·¤«¤·º£¤Ï `%s' ¤È `%s' ¤ÏƱ¤¸¥Õ¥¡¥¤¥ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "`%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤Ï, `%s' ¤òÁª¤Ö¤³¤È¤Çº£¸å̵»ë¤µ¤ì¤Þ¤¹."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "¥·¥ó¥°¥ë¥³¥í¥ó `%s' ¤«¤é¥À¥Ö¥ë¥³¥í¥ó `%s' ¤Ë̾Á°¤òÊѤ¨¤é¤ì¤Þ¤»¤ó"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "¥À¥Ö¥ë¥³¥í¥ó `%s' ¤«¤é¥·¥ó¥°¥ë¥³¥í¥ó `%s' ¤Ë̾Á°¤òÊѤ¨¤é¤ì¤Þ¤»¤ó"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Ãæ´Ö¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Ãæ´Ö¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¤¤Þ¤¹...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: ¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬Èϰϳ°¤Ç¤¹ -- Âå¤ê¤Ë %s ¤È¤·¤Þ¤¹"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "¸½ºß»þ¹ï"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# ¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ÆÃÊÌ°·¤¤¤Î¥Õ¥¡¥¤¥ë (.PRECIOUS ¤ÎɬÍ×¾ò·ï)"
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  µ¿»÷¥¿¡¼¥²¥Ã¥È (.PHONY ¤ÎɬÍ×¾ò·ï)"
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  ¥³¥Þ¥ó¥É¥é¥¤¥ó¥¿¡¼¥²¥Ã¥È."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  ¥Ç¥Õ¥©¥ë¥È¤Þ¤¿¤Ï MAKEFILES ¥á¥¤¥¯¥Õ¥¡¥¤¥ë."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  °ÅÌۥ롼¥ë¤Îõº÷¤¬¹Ô¤ï¤ì¤Þ¤·¤¿."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  °ÅÌۥ롼¥ë¤Îõº÷¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  °ÅÌÛ/ÀÅŪ¥Ñ¥¿¡¼¥ó¸ì´´: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤ÏÃæ´ÖɬÍ×¾ò·ï¤Ç¤¹."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  ¤µ¤é¤Ë make:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  ½¤Àµ»þ¹ï¤¬¥Á¥§¥Ã¥¯¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤¬Èó¾ï¤Ë¸Å¤¤¤Ç¤¹."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  ºÇ½ª½¤Àµ %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤Ï¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤Ï¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤»¤ó."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  ¥³¥Þ¥ó¥É¤¬¸½ºß¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  °Í¸´Ø·¸¥³¥Þ¥ó¥É¤¬¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  ¹¹¿·¤ËÀ®¸ù¤·¤Þ¤·¤¿."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  ¹¹¿·¤¬É¬ÍפǤ¹ (-q ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  ¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  `update_status' ¥á¥ó¥Ð¤Ë̵¸ú¤ÊÃÍ!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  `command_state' ¥á¥ó¥Ð¤Ë̵¸ú¤ÊÃÍ!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -344,7 +348,7 @@ msgstr ""
 "\n"
 "# ¥Õ¥¡¥¤¥ë"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -354,264 +358,265 @@ msgstr ""
 "# ¥Õ¥¡¥¤¥ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "Èó¿ôÃͤÎÂè°ì°ú¿ô¤¬ `word' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "`word' ´Ø¿ô¤Ø¤ÎÂè°ì°ú¿ô¤Ï 0 ¤è¤êÂ礭¤¯¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "Èó¿ôÃͤÎÂè°ì°ú¿ô¤¬ `wordlist' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "Èó¿ôÃͤÎÂèÆó°ú¿ô¤¬ `wordlist' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) ¤¬¼ºÇÔ (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) ¤¬¼ºÇÔ (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() ¤¬¼ºÇÔ (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() ¤¬¼ºÇÔ\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤ò¾Ãµî¤·¤Þ¤¹\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "°ú¿ô¤Î¿ô(%d)¤¬´Ø¿ô `%s' ¤Ë¤È¤Ã¤ÆÉÔ½½Ê¬¤Ç¤¹"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó: ´Ø¿ô `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "½ªÃ¼¤¬¤Ê¤¤´Ø¿ô¸Æ¤Ó½Ð¤· `%s': `%c' ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: Ç§¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: Ç§¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó ¡½ %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: Ìµ¸ú¤Ê¥ª¥×¥·¥ç¥ó ¡½ %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹ ¡½ %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 "¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ëÍÑ %ld ¥Ð¥¤¥È¤Î³ä¤êÅö¤Æ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·"
 "¤¿"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Load=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Collisions=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î½ñ¸Ë¥á¥ó¥Ð°ÅÌۥ롼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "°ÅÌۥ롼¥ë¤ÎºÆµ¢¤ò²óÈò¤·¤Þ¤¹.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "¸ì´´ `%.*s' ¤È¤Î¥Ñ¥¿¡¼¥ó¥ë¡¼¥ë¤ò»î¤·¤Þ¤¹.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "ŬÍÑÉÔǽ¤Ê°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤òµÑ²¼¤·¤Þ¤¹.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "ŬÍÑÉÔǽ¤Ê¥ë¡¼¥ë¤ÎɬÍ×¾ò·ï `%s' ¤òµÑ²¼¤·¤Þ¤¹.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤ò»î¤·¤Þ¤¹.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "ŬÍÑÉÔǽ¤Ê°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤òµÑ²¼¤·¤Þ¤¹.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "¥ë¡¼¥ë¤ÎɬÍ×¾ò·ï `%s' ¤ò»î¤·¤Þ¤¹.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤ò»î¤·¤Þ¤¹.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "VPATH `%2$s' ¤È¤·¤ÆɬÍ×¾ò·ï `%1$s' ¤ò¸«¤Ä¤±¤Þ¤·¤¿\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Ãæ´Ö¥Õ¥¡¥¤¥ë `%s' ¤Î¥ë¡¼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (°ì»þ¥Õ¥¡¥¤¥ë)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] ¥¨¥é¡¼ 0x%x (̵»ë¤µ¤ì¤Þ¤·¤¿)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] ¥¨¥é¡¼ 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] ¥¨¥é¡¼ %d (̵»ë¤µ¤ì¤Þ¤·¤¿)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] ¥¨¥é¡¼ %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (¥³¥¢¥À¥ó¥×¤·¤Þ¤·¤¿)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Ì¤´°Î»¤Î¥¸¥ç¥Ö¤òÂԤäƤ¤¤Þ¤¹...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "À¸Â¸»Ò¥×¥í¥»¥¹ 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (¥ê¥â¡¼¥È)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "¼º¤Ã¤¿»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "À®¸ù¤·¤¿»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤òÊÒÉÕ¤±¤Þ¤¹\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "¥Á¥§¥¤¥ó¤«¤é»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld%s ¤òºï½ü¤·¤Þ¤¹.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "¥¸¥ç¥Ö¥µ¡¼¥Ð¤Ø¤Î write"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "»Ò¥×¥í¥»¥¹ 0x%08lx (%s) ¤Î°õ¤ò²òÊü¤·¤Þ¤·¤¿.\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() ¤¬¼ºÇÔ¤·¥×¥í¥»¥¹µ¯Æ°¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿ (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -620,96 +625,108 @@ msgstr ""
 "\n"
 "µ¯Æ°¤Î¼ºÇԤǠ%d ¸Ä¤Î°ú¿ô¤¬¥«¥¦¥ó¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "¥Á¥§¥¤¥ó¤Ë»Ò¥×¥í¥»¥¹ 0x%08lx (%s) PID %ld%s ¤ò¼è¤ê¹þ¤ß¤Þ¤·¤¿.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "»Ò¥×¥í¥»¥¹ 0x%08lx (%s) ¤Ë°õ¤¬¤Ä¤±¤é¤ì¤Þ¤·¤¿.\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "¥¸¥ç¥Ö¤Î¥Ñ¥¤¥×¤Î read"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤òºÆ make ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "¤³¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¥·¥¹¥Æ¥àÉé²ÙÀ©¸Â¤ò²Ã¤¨¤é¤ì¤Þ¤»¤ó"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "¥·¥¹¥Æ¥àÉé²ÙÀ©¸Â¤Î²Ý¤¹¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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() ¤¬¼ºÇÔ¤·¥×¥í¥»¥¹µ¯Æ°¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿ (e=%d)\n"
-
-#: job.c:2046
+#: job.c:2127
 #, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "make ¤Ï pid %d ¤Î»Ò¥×¥í¥»¥¹¤ò²ó¼ý¤·, pid %d ¤òÂÔ¤Á³¤±¤Þ¤¹\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ¥·¥§¥ë¥×¥í¥°¥é¥à¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL ¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿ (Á°¤Ï `%s', º£¤Ï `%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤·¤Þ¤¹\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (%d ¹ÔÌÜ) ÉÔÀµ¤Ê¥·¥§¥ë¥³¥ó¥Æ¥­¥¹¥È (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "¥ª¥×¥·¥ç¥ó:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      ¸ß´¹À­¤Î¤¿¤á¤Î¤â¤Î¤Ç, Ìµ»ë¤µ¤ì¤ë.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Ìµ¾ò·ï¤ËÁ´¥¿¡¼¥²¥Ã¥È¤ò make ¤¹¤ë.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -718,16 +735,16 @@ msgstr ""
 "                              make ³«»ÏÁ°¤Ë¥Ç¥£¥ì¥¯¥È¥ê DIRECTORY ¤Ø°ÜÆ°¤¹"
 "¤ë.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          ¥Ç¥Ð¥Ã¥°¾ðÊó¤òÂçÎ̤Ëɽ¼¨¤¹¤ë.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "  --debug[=FLAGS]             ÍÍ¡¹¤Ê¥¿¥¤¥×¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -735,7 +752,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              ´Ä¶­ÊÑ¿ô¤¬ makefile Ãæ¤Îµ­½Ò¤ËÍ¥À褹¤ë\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -743,15 +765,16 @@ msgstr ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              FILE ¤ò makefile ¤È¤·¤ÆÆɤ߹þ¤à\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  ¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         ¥³¥Þ¥ó¥É¤«¤éÊÖ¤µ¤ì¤¿¥¨¥é¡¼¤ò̵»ë¤¹¤ë.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -761,7 +784,7 @@ msgstr ""
 "                              ¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë makefile ¤òõº÷¤¹¤ë "
 "DIRECTORY.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -769,14 +792,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          °ìÅ٤ˠN ¸Ä¤Þ¤Ç¤Î¥¸¥ç¥Ö¤òµö²Ä; Ìµ°ú¿ô¤À¤È¥¸¥ç¥Ö"
 "¿ôÀ©¸Â¤Ê¤·.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            ¤¢¤ë¥¿¡¼¥²¥Ã¥È¤¬ make ¤Ç¤­¤Ê¤¯¤Æ¤â¼Â¹Ô¤ò³¤±"
 "¤ë.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -786,22 +809,23 @@ msgstr ""
 "                              Éé²Ù ¤¬ N Ì¤Ëþ¤Ç¤Ê¤¤¸Â¤êÊ£¿ô¤Î¥¸¥ç¥Ö¤ò³«»Ï¤·¤Ê"
 "¤¤.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              ¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Ë¼Â¹Ô¤·¤Ê¤¤; É½¼¨¤¹¤ë¤Î¤ß.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -811,31 +835,33 @@ msgstr ""
 "                              FILE ¤ò¤È¤Æ¤â¸Å¤¤¤â¤Î¤È¸«¤Ê¤·¤Æ, ºÆ make ¤·¤Ê"
 "¤¤.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       make ¤ÎÆâÉô¥Ç¡¼¥¿¥Ù¡¼¥¹¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Ê¤¤; ¹¹¿·ºÑ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò½ª"
 "λ¥¹¥Æ¡¼¥¿¥¹¤ÇÄÌÃÎ.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "  -r, --no-builtin-rules      ¥Ó¥ë¥È¥¤¥ó¤Î°ÅÌۥ롼¥ë¤ò̵¸ú¤Ë¤¹¤ë.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "  -R, --no-builtin-variables  ¥Ó¥ë¥È¥¤¥ó¤ÎÊÑ¿ôÀßÄê¤ò̵¸ú¤Ë¤¹¤ë.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       ¥³¥Þ¥ó¥Éɽ¼¨¤ò¥¨¥³¡¼¤·¤Ê¤¤.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -843,22 +869,22 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              -k ¥ª¥×¥·¥ç¥ó¤ò¥ª¥Õ¤Ë¤¹¤ë.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 ¥¿¡¼¥²¥Ã¥È¤òºÆ make ¤¹¤ëÂå¤ï¤ê¤Ë¥¿¥Ã¥Á¤¹¤ë.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               make ¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -866,7 +892,7 @@ msgstr ""
 "  --no-print-directory        -w ¤ò¥ª¥Õ¤Ë¤¹¤ë. °ÅÌÛ¤ËÍ­¸ú¤Ê¾ì¹ç¤Ç¤â¥ª¥Õ¤Ë¤¹"
 "¤ë.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -874,35 +900,35 @@ msgstr ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              FILE ¤ò¤¤¤Ä¤Ç¤âºÇ¿·¤È¤·¤Æ¸«¤Ê¤¹.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 "  --warn-undefined-variables  Ì¤ÄêµÁ¤ÎÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿¤È¤­¤Ë·Ù¹ð¤òȯ¤¹¤ë.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "¶õ¤Îʸ»úÎó¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ¤Ï̵¸ú¤Ç¤¹"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "ÉÔÌÀ¤Ê¥Ç¥Ð¥Ã¥°¥ì¥Ù¥ë»ØÄê `%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: ³ä¤ê¹þ¤ß/Îã³°¤òÊ᪤·¤Þ¤·¤¿ (code = 0x%x, addr = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "¥Ï¥ó¥É¥ë¤µ¤ì¤Ê¤«¤Ã¤¿Îã³°¥Õ¥£¥ë¥¿¤¬¥×¥í¥°¥é¥à %s ¤«¤é¸Æ¤Ð¤ì¤Þ¤·¤¿\n"
@@ -910,155 +936,160 @@ msgstr ""
 "Îã³°¥Õ¥é¥° = %x\n"
 "Îã³°¥¢¥É¥ì¥¹ = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ %x ¤Ç¤Î½ñ¤­¹þ¤ßÁàºî\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ %x ¤Ç¤ÎÆɤ߹þ¤ßÁàºî\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell ¤Ï default_shell = %s ¤ËÀßÄꤷ¤Þ¤¹\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell ¥Ñ¥¹Ãµº÷¤Ç default_shell = %s ¤Ë¥»¥Ã¥È¤·¤Þ¤·¤¿\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s ¤Ï 30 ÉôÖÄä»ß¤·¤Þ¤¹..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) ¤¬½ª¤ï¤ê¤Þ¤·¤¿. Â³¤±¤Þ¤¹.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "ɸ½àÆþÎϤ«¤é¤Î makefile ¤¬Æó²ó»ØÄꤵ¤ì¤Þ¤·¤¿."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (°ì»þ¥Õ¥¡¥¤¥ë)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (°ì»þ¥Õ¥¡¥¤¥ë)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "ÊÂÎ󥸥ç¥Ö (-j) ¤Ï¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "ñ°ì¥¸¥ç¥Ö (-j1) ¥â¡¼¥É¤Ë¥ê¥»¥Ã¥È¤·¤Þ¤¹."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "ÆâÉô¥¨¥é¡¼: Ê£¿ô¤Î --jobserver-fds ¥ª¥×¥·¥ç¥ó"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "ÆâÉô¥¨¥é¡¼: Ìµ¸ú¤Ê --jobserver-fds Ê¸»úÎó `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "·Ù¹ð: Éû¼¡ make ¤Ç -jN ¤ò¶¯À©»ØÄꤷ¤Þ¤·¤¿: jobserver ¥â¡¼¥É¤ò̵¸ú¤Ë¤·¤Þ¤¹."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "·Ù¹ð: jobserver ¤¬ÍøÍÑÉÔ²Ä: -j1 ¤ò»È¤¤, ¿Æ make ¥ë¡¼¥ë¤Ë `+' ¤òÄɲä·¤Þ¤·¤ç¤¦"
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "¥¸¥ç¥Ö¥Ñ¥¤¥×ºîÀ®Ãæ"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "jobserver ¥Ñ¥¤¥×¤Î½é´ü²½"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "makefile ¤Î¹¹¿·Ãæ....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "makefile `%s' ¼«¸ÊºÆµ¢¤Î¤ª¤½¤ì ¡½ ºÆ make ¤·¤Þ¤»¤ó.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "makefile `%s' ¤ÎºÆ make ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë makefile `%s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "makefile `%s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "¸µ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÌá¤ì¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "ºÆ¼Â¹Ô¤·¤Þ¤¹:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (°ì»þ¥Õ¥¡¥¤¥ë): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "¥¿¡¼¥²¥Ã¥È¤¬»ØÄꤵ¤ì¤Æ¤ª¤é¤º, makefile ¤â¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "¥¿¡¼¥²¥Ã¥È¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "ºÇ½ª¥¿¡¼¥²¥Ã¥È¤ò¹¹¿·Ãæ....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "·Ù¹ð:  »þ¹ï¤Î¤º¤ì¤ò¸¡½Ð. ÉÔ´°Á´¤Ê¥Ó¥ë¥É·ë²Ì¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó] [¥¿¡¼¥²¥Ã¥È] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1067,7 +1098,7 @@ msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1076,51 +1107,45 @@ msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s (%s) ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï <bug-make@gnu.org> ¤Þ¤Ç.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "`-%c' ¥ª¥×¥·¥ç¥ó¤ÏÀµ¤ÎÀ°¿ô°ú¿ô¤òÍ׵ᤷ¤Þ¤¹"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "`-%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 ""
-"%s¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹. ÍøÍѵöÂú¤Ë¤Ä¤¤¤Æ¤Ï¥½¡¼¥¹¤ò\n"
-"%s¤´Í÷¤¯¤À¤µ¤¤.\n"
-"%s¾¦¶ÈÀ­¤äÆÃÄê¤ÎÌÜŪ¤Ø¤ÎŬ¹çÀ­¤ÎÇ¡²¿¤Ë´Ø¤ï¤é¤º, ÌµÊݾڤǤ¹.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s (%s) ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2968
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1129,7 +1154,7 @@ msgstr ""
 "\n"
 "# Make ¥Ç¡¼¥¿¥Ù¡¼¥¹½ÐÎÏ %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1138,308 +1163,304 @@ msgstr ""
 "\n"
 "# Make ¥Ç¡¼¥¿¥Ù¡¼¥¹½ªÎ» %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Ãæ»ß.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "̤ÃΤΥ¨¥é¡¼ %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "²¾ÁÛ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: ¥æ¡¼¥¶ %lu (¼Â¸ú %lu), ¥°¥ë¡¼¥× %lu (¼Â¸ú %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "¥¢¥¯¥»¥¹¸¢¸Â¤ò½é´ü²½"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "¥æ¡¼¥¶¥¢¥¯¥»¥¹"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "make ¥¢¥¯¥»¥¹"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "»Ò¥×¥í¥»¥¹¥¢¥¯¥»¥¹"
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "%s ¤Ø¥¨¥é¡¼¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "¥¸¥ç¥Ö¥µ¡¼¥Ð¤Ø¤Î write"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "makefile ¤òÆɤ߹þ¤ß¤Þ¤¹...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "makefile `%s' ¤ÎÆɤ߹þ¤ßÃæ"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (¥Ç¥Õ¥©¥ë¥È¤ÎºÇ½ª¥¿¡¼¥²¥Ã¥È¤¬¤¢¤ê¤Þ¤»¤ó)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (õº÷¥Ñ¥¹)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (µ¤¤Ë¤·¤Ê¤¯¤Æ¤è¤¤)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (~ ¤ÎŸ³«¤Ê¤·)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "¾ò·ïÉô¤Îʸˡ¤¬Ìµ¸ú¤Ç¤¹"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "´Ø·¸¤Î¤Ê¤¤ `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "¶õ¤ÎÊÑ¿ô̾"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "¶õ¤Î `override' µ¿»÷Ì¿Îá"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "̵¸ú¤Ê `override' µ¿»÷Ì¿Îá"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "ºÇ½é¤Î¥¿¡¼¥²¥Ã¥È¤è¤êÁ°¤Ë¥³¥Þ¥ó¥É¤òµ¯Æ°"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "¥³¥Þ¥ó¥É¤è¤êÁ°¤Ç¥ë¡¼¥ë¤¬»Ø¼¨¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "ʬΥµ­¹æ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (8 ¸Ä¤Î¶õÇò¤Ç¤·¤¿¤¬, TAB ¤Î¤Ä¤â¤ê¤Ç¤·¤¿¤«?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò·ç¤¤¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "Ê£¿ô¤Î¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤Ç¤¹"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤¬ `%%' ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "`endif' ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "¶õ¤ÎÊÑ¿ô̾"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "`endef' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "`endef' ¤ò·ç¤¤¤Æ¤ª¤ê, `define' ¤¬½ªÎ»¤µ¤ì¤Þ¤»¤ó"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "`endef' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "`%s' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "̵´Ø·¸¤Ê `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "°ì¤Ä¤Î¾ò·ïÉô¤Ë¤Ä¤­°ì¤Ä¤·¤« `else' ¤ò»È¤¨¤Þ¤»¤ó"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "¥¿¡¼¥²¥Ã¥ÈËè¤ÎÊÑ¿ôÄêµÁ¤¬°Û¾ï¤Ç¤¹"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "°ÅÌۥ롼¥ë¤ÈÀÅŪ¥Ñ¥¿¡¼¥ó¥ë¡¼¥ë¤¬º®¤¶¤ê¤Þ¤·¤¿"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "°ÅÌۥ롼¥ë¤ÈÄ̾ï¥ë¡¼¥ë¤¬º®¤¶¤ê¤Þ¤·¤¿"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤È°ìÃפ·¤Þ¤»¤ó"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤¬ : ¤È :: ¹àÌܤÎξÊý¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "Ʊ°ì¥ë¡¼¥ëÆâ¤Ç¥¿¡¼¥²¥Ã¥È `%s' ¤¬Ê£¿ô²óÍ¿¤¨¤é¤ì¤Þ¤·¤¿."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤òÃÖ¤­´¹¤¨¤Þ¤¹"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Ø¤Î¸Å¤¤¥³¥Þ¥ó¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "·Ù¹ð: NUL Ê¸»ú¤¬¤¢¤ê¤Þ¤¹; ¹Ô¤Î»Ä¤ê¤Ï̵»ë¤µ¤ì¤Þ¤¹"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "`%s' ¤ËÂФ·¤Æ¹Ô¤¦¤Ù¤­»ö¤Ï¤¢¤ê¤Þ¤»¤ó."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' ¤Ï¹¹¿·ºÑ¤ß¤Ç¤¹"
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òÀ°Íý¤·¤Þ¤¹.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%s¥¿¡¼¥²¥Ã¥È `%s' ¤ò make ¤¹¤ë¥ë¡¼¥ë¤¬¤¢¤ê¤Þ¤»¤ó%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr ""
 "%1$s`%3$s' ¤ËɬÍפʥ¿¡¼¥²¥Ã¥È `%2$s' ¤ò make ¤¹¤ë¥ë¡¼¥ë¤¬¤¢¤ê¤Þ¤»¤ó%4$s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤Î¸¡Æ¤¤ò¹Ô¤¤¤Þ¤¹.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "ºÇ¶á»î¤·¤Æ¹¹¿·¤Ë¼ºÇÔ¤·¤¿¥Õ¥¡¥¤¥ë `%s'.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ï¸¡Æ¤ºÑ¤ß¤Ç¤¹.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "¤Þ¤À¥Õ¥¡¥¤¥ë `%s' ¤Î¹¹¿·Ãæ¤Ç¤¹.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Î¹¹¿·¤¬½ªÎ»¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤¬Â¸ºß¤·¤Þ¤»¤ó.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1447,132 +1468,137 @@ msgstr ""
 "*** ·Ù¹ð: .LOW_RESOLUTION_TIME ¥Õ¥¡¥¤¥ë `%s' ¤¬¹â²òÁüÅÙ¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò»ý¤Ã¤Æ"
 "¤¤¤Þ¤¹"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤ò¸«¤Ä¤±¤Þ¤·¤¿.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤¬¤¢¤ê¤Þ¤»¤ó.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "`%s' ÍѤΥǥե©¥ë¥È¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "½Û´Ä %s <- %s °Í¸´Ø·¸¤¬ÇË´þ¤µ¤ì¤Þ¤·¤¿."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎɬÍ×¾ò·ï¤òËþ¤¿¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "`%s' ¤ÎɬÍ×¾ò·ï¤ò make ¤·¤Þ¤¹.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤òÄü¤á¤Þ¤¹.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥¨¥é¡¼¤Ë¤è¤êºÆ make ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤Ë¤Ä¤¤¤Æ½çÈÖÄ̤ê¤Î¤ß¹Ô¤¤¤Þ¤¹.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%2$s' ¤ÎɬÍ×¾ò·ï `%1$s' ¤¬Â¸ºß¤·¤Þ¤»¤ó.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤è¤ê¤â¿·¤·¤¤.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤è¤ê¤â¸Å¤¤.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥À¥Ö¥ë¥³¥í¥ó¤Ç, ¤«¤ÄɬÍ×¾ò·ï¤ò»ý¤¿¤Ê¤¤.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î¥³¥Þ¥ó¥É¤¬Ìµ¤¯, ¤«¤Ä¼ÂºÝ¤ËÊѹ¹¤µ¤ì¤¿É¬Í×¾ò·ï¤¬¤Ê¤¤.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "akways-make ¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤ë¤Î¤Ç `%s' ¤ò make ¤·¤Þ¤¹.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤òºÆ make ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; VPATH Ì¾ `%s' ¤ò»ÈÍѤ·¤Þ¤¹"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤ÎºÆ make ¤¬É¬ÍפǤ¹.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  VPATH Ì¾ `%s' ¤ò̵»ë¤·¤Þ¤¹.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "`%s' ¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎºÆ make ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎºÆ make ¤ËÀ®¸ù¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤Ï -q ¥ª¥×¥·¥ç¥óÉդǤκƠmake ¤¬É¬ÍפǤ¹.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "`%s' ÍѤΥǥե©¥ë¥È¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "·Ù¹ð: ¥Õ¥¡¥¤¥ë `%s' ¤Î½¤Àµ»þ¹ï¤¬Ì¤Íè¤Î»þ¹ï¤Ç¤¹"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "·Ù¹ð: ¥Õ¥¡¥¤¥ë `%s' ¤Î½¤Àµ»þ¹ï¤¬ %.2g ÉÃʬ̤Íè¤Î»þ¹ï¤Ç¤¹"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS Í×ÁÇ `%s' ¤¬¥Ñ¥¿¡¼¥ó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
@@ -1582,7 +1608,7 @@ msgstr ".LIBPATTERNS 
 msgid "Customs won't export: %s\n"
 msgstr "Customs ¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Æ¤¯¤ì¤Þ¤»¤ó: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1590,7 +1616,7 @@ msgstr ""
 "\n"
 "# °ÅÌۥ롼¥ë"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1598,7 +1624,7 @@ msgstr ""
 "\n"
 "# °ÅÌۥ롼¥ë¤Ê¤·."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1607,231 +1633,242 @@ msgstr ""
 "\n"
 "# %u ¸Ä¤Î°ÅÌۥ롼¥ë, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " °Ê¾å."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "¥Ð¥°: num_pattern_rules ¤¬´Ö°ã¤Ã¤Æ¤¤¤ë!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "̤ÃΤΥ·¥°¥Ê¥ë"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "¥Ï¥ó¥°¥¢¥Ã¥×"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "³ä¤ê¹þ¤ß"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "½ªÎ»"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "ÉÔÀµ¤Ê¥Ï¡¼¥É¥¦¥§¥¢Ì¿Îá"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "¥È¥ì¡¼¥¹/¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¥È¥é¥Ã¥×"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Abort ¤·¤Þ¤·¤¿"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT ¥È¥é¥Ã¥×"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT ¥È¥é¥Ã¥×"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "ÉâÆ°¾®¿ôÅÀÎã³°"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Kill ¤µ¤ì¤Þ¤·¤¿"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "¥Ð¥¹¥¨¥é¡¼"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "¥á¥â¥ê°ãÈ¿"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "ÉÔÀµ¤Ê¥·¥¹¥Æ¥à¥³¡¼¥ë"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Æɤ߼ê¤Î¤Ê¤¤¥Ñ¥¤¥×¤Ø¤Î½ñ¤­¹þ¤ß"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "¥¢¥é¡¼¥à¥¯¥í¥Ã¥¯"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "¶¯À©½ªÎ»"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "¥æ¡¼¥¶ÄêµÁ¥·¥°¥Ê¥ë 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "¥æ¡¼¥¶ÄêµÁ¥·¥°¥Ê¥ë 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "»Ò¥×¥í¥»¥¹½ªÎ»"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "ÅŸ»¾ã³²"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "°ì»þÄä»ß"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "°ì»þÄä»ß (tty ÆþÎÏ)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "°ì»þÄä»ß (tty ½ÐÎÏ)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "°ì»þÄä»ß (¥·¥°¥Ê¥ë)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU »þ´Ö¤¬À©¸Â¤ò±Û¤¨¤Þ¤·¤¿"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "¥Õ¥¡¥¤¥ë¥µ¥¤¥ºÀ©¸Â¤ò±Û¤¨¤Þ¤·¤¿"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "²¾ÁÛ¥¿¥¤¥ÞËþλ"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "¥×¥í¥Õ¥¡¥¤¥ë¥¿¥¤¥ÞËþλ"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "¥¦¥£¥ó¥É¥¦¥µ¥¤¥ºÊѹ¹"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "ºÆ³«¤µ¤ì¤Þ¤·¤¿"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "¶ÛµÞ I/O ¾ò·ï"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "ÈóƱ´ü I/O ²ÄǽÀ­"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "¥ê¥½¡¼¥¹¤¬¼º¤ï¤ì¤Þ¤·¤¿"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "´í¸±¥·¥°¥Ê¥ë"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "¾ðÊóÍ×µá"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "ÉâÆ°¾®¿ôÅÀ¥³¥×¥í¥»¥Ã¥µ¤¬ÍøÍÑÉÔǽ"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# ¥Õ¥¡¥¤¥ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "¥Ç¥Õ¥©¥ë¥È"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "´Ä¶­ÊÑ¿ô"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile ÊÑ¿ô"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "-e ¥ª¥×¥·¥ç¥ó¤Ç¤Î´Ä¶­ÊÑ¿ô"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "¥³¥Þ¥ó¥É¥é¥¤¥óÊÑ¿ô"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "`override' µ¿»÷Ì¿Îá"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "¼«Æ°ÊÑ¿ô"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (`%s', %lu ¹ÔÌܤ«¤é)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# ÊÑ¿ô¥»¥Ã¥È¤Î¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1839,7 +1876,7 @@ msgstr ""
 "\n"
 "# ÊÑ¿ô\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1848,7 +1885,7 @@ msgstr ""
 "\n"
 "# ¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃÍ"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1856,7 +1893,7 @@ msgstr ""
 "\n"
 "# ¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃͤʤ·."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1865,14 +1902,14 @@ msgstr ""
 "\n"
 "# %u ¸Ä¤Î¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃÍ"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "·Ù¹ð: Ì¤ÄêµÁ¤ÎÊÑ¿ô `%.*s'"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search ¤¬ %d ¤Ç¼ºÇÔ¤·¤Þ¤·¤¿\n"
 
 #: vmsjobs.c:71
@@ -1880,73 +1917,78 @@ msgstr "sys$search 
 msgid "Warning: Empty redirection\n"
 msgstr "·Ù¹ð: ¶õ¤Î¥ê¥À¥¤¥ì¥¯¥È\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "ÆâÉô¥¨¥é¡¼: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-·Ù¹ð, CTRL-Y ¤Ï»Ò¥×¥í¥»¥¹¤ò»¶¤é¤«¤·¤¿¤Þ¤Þ¤Ë¤¹¤ë¤Ç¤·¤ç¤¦.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-·Ù¹ð, DCL ¤«¤é¤Î CTRL-Y Áàºî¤òºÆ¤ÓÍ­¸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "ÉÔÌÀ¤Ê¥Ó¥ë¥È¥¤¥ó¥³¥Þ¥ó¥É '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "¥¨¥é¡¼, ¶õ¤Î¥³¥Þ¥ó¥É\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s ¤«¤éÆþÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s ¤Ø¥¨¥é¡¼¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "%s ¤Ø½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s ¤Ø½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Âå¤ï¤ê¤Ë %s ¤ò¼Â¹Ô¤·¤Þ¤¹\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "spawn ¤Î¥¨¥é¡¼, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1954,11 +1996,11 @@ msgstr ""
 "\n"
 "# VPATH Ãµº÷¥Ñ¥¹\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# `vpath' Ãµº÷¥Ñ¥¹¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1967,7 +2009,7 @@ msgstr ""
 "\n"
 "# %u ¸Ä¤Î `vpath' Ãµº÷¥Ñ¥¹\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1975,7 +2017,7 @@ msgstr ""
 "\n"
 "# °ìÈ̤Π(`VPATH' ÊÑ¿ô) Ãµº÷¥Ñ¥¹¤Ê¤·."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1991,12 +2033,33 @@ msgstr ""
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr "SIGCHLD ¤¬È¯À¸; %u ¸Ä¤Î̤²ó¼ý»Ò¥×¥í¥»¥¹.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-·Ù¹ð, CTRL-Y ¤Ï»Ò¥×¥í¥»¥¹¤ò»¶¤é¤«¤·¤¿¤Þ¤Þ¤Ë¤¹¤ë¤Ç¤·¤ç¤¦.\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "sh.exe ¤¬»È¤¨¤Ê¤¤¾õÂ֤Ǡ-j ¤ä --jobs ¤ò»ØÄꤷ¤Æ¤Ï¤¤¤±¤Þ¤»¤ó."
 
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "ñ°ì¥¸¥ç¥Ö¥â¡¼¥É¤Î make ¤Ë¥ê¥»¥Ã¥È¤·¤Þ¤¹."
 
+#~ 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 ""
+#~ "%s¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹. ÍøÍѵöÂú¤Ë¤Ä¤¤¤Æ¤Ï¥½¡¼¥¹¤ò\n"
+#~ "%s¤´Í÷¤¯¤À¤µ¤¤.\n"
+#~ "%s¾¦¶ÈÀ­¤äÆÃÄê¤ÎÌÜŪ¤Ø¤ÎŬ¹çÀ­¤ÎÇ¡²¿¤Ë´Ø¤ï¤é¤º, ÌµÊݾڤǤ¹.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "´Ø·¸¤Î¤Ê¤¤ `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "¶õ¤Î `override' µ¿»÷Ì¿Îá"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "̵¸ú¤Ê `override' µ¿»÷Ì¿Îá"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "`%sinclude' ¤Ë¥Õ¥¡¥¤¥ë̾¤¬¤¢¤ê¤Þ¤»¤ó"
 
index e33e02b..a00dcfc 100644 (file)
Binary files a/po/ko.gmo and b/po/ko.gmo differ
index 2fa6752..939e2a8 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU make 3.79.1\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2001-06-08 01:30+0900\n"
 "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
 "Language-Team: Korean <ko@li.org>\n"
@@ -14,108 +14,109 @@ msgstr ""
 "Content-Type: text/plain; charset=EUC-KR\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "Áö¿øµÇÁö ¾Ê´Â ±â´ÉÀ» »ç¿ëÇÏ·Á°í ÇÔ: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "¾ÆÄ«À̺꠸â¹ö touch´Â VMS¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: ¹®¼­ `%s'°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s'´Â Àû¹ýÇÑ ¹®¼­°¡ ¾Æ´Õ´Ï´Ù"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: ¸â¹ö `%s'°¡ `%s'¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: `%s'¿¡ ´ëÇÏ¿© ar_member_touch¿¡¼­ ½ÇÆР¸®ÅÏ ÄÚµå"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_moduleÀÌ ¸ðµâÁ¤º¸¸¦ ÃßÃâÇϴ µ¥ ½ÇÆÐ, »óÅ = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_controlÀÌ »óÅ = %d·Î(À¸·Î) ½ÇÆР"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "¸â¹ö `%2$s'¸¦ ÂüÁ¶Çϱâ À§ÇØ ¶óÀ̺귯¸® `%1$s'¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "¸â¹ö `%s'%s: %ld¹ÙÀÌÆ®, %ld (%ld) ¿¡¼­.\n"
 
 # À̹̠Àß·ÁÁø À̸§À» Ç¥½ÃÇϸ鼭 À̸§ÀÌ Àß·ÁÁ³À» ¼öµµ ÀÖÀ¸´Ï À¯ÀÇÇ϶ó´Â ¶æ
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (À̸§ÀÌ Àß·Á³ª°¬À» ¼öµµ ÀÖ½À´Ï´Ù)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  ³¯Â¥ %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, ¸ðµå = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** ÁßÁö.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] ¾ÆÄ«À̺꠸â¹ö `%s'´Â °¡Â¥ÀÏ ¼ö ÀÖ½À´Ï´Ù; Áö¿ìÁö ¾Ê½À´Ï´Ù"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** ¾ÆÄ«À̺꠸â¹ö `%s'´Â °¡Â¥ÀÏ ¼ö ÀÖ½À´Ï´Ù; Áö¿ìÁö ¾Ê½À´Ï´Ù"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** ÆÄÀÏ `%s'À»(¸¦) Áö¿ó´Ï´Ù"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  ½ÇÇàÇÒ ¸í·É¾î"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (³»Àå):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (`%s'¿¡¼­, %lu¹ø° ÁÙ):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,222 +124,225 @@ msgstr ""
 "\n"
 "# µð·ºÅ丮\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: statÀ» ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (Å° %s, º¯°æ½Ã°¢ %d): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (ÀåÄ¡ %d, ¾ÆÀ̳ëµå [%d,%d,%d]): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (ÀåÄ¡ %ld, ¾ÆÀ̳ëµå %ld): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (Å° %s, º¯°æ½Ã°¢ %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (ÀåÄ¡ %d, ¾ÆÀ̳ëµå [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (ÀåÄ¡ %ld, ¾ÆÀ̳ëµå %ld): "
 
 # ¿©±â¼­ No´Â "No files"¶ó°í ¾²ÀδÙ.  ±Ã±ØÀûÀ¸·Î msgid°¡ °íÃÄÁ®¾ß ÇÔ
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "0°³"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " ÆÄÀÏ, "
 
 # ¿©±â¼­ no´Â "no impossibilities"¶ó°í ¾²ÀδÙ.  ±Ã±ØÀûÀ¸·Î msgid°¡ °íÃÄÁ®¾ß ÇÔ
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "0°³"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " ºÒ°¡´É"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " Áö±Ý±îÁö."
 
-#: dir.c:1079
+#: dir.c:1092
 #, fuzzy, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " %u°³ÀÇ µð·ºÅ丮¿¡¼­ ºÒ°¡´É.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Àç±Í º¯¼ö `%s'´Â ÀÚ±â ÀÚ½ÅÀ» ÂüÁ¶ÇÏ°í ÀÖ½À´Ï´Ù (°á±¹)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "Á¾°áµÇÁö ¾ÊÀº º¯¼ö ÂüÁ¶"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "ÆÄÀÏ `%s'ÀÇ %s:%lu¿¡¼­ ¸í·É¾î°¡ ÁöÁ¤µÇ¾ú½À´Ï´Ù,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "ÆÄÀÏ `%s'¸¦ À§ÇÑ ¸í·ÉÀ» ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀ¸·Î Ã£¾Ò½À´Ï´Ù."
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "ÇÏÁö¸¸ `%s'´Â ÀÌÁ¦ `%s'¿Í °°Àº ÆÄÀϷΠ°£Áֵ˴ϴÙ."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "`%s'¿¡ ´ëÇÑ ¸í·É¾î´Â `%s'¿¡ ´ëÇÑ ¸í·É¾î°¡ ¿ì¼±ÇϹǷΠ¹«½ÃµË´Ï´Ù.."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "´ÜÀÏ ÄݷР`%s'¸¦ ÀÌÁß ÄݷР`%s'·Î À̸§¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "ÀÌÁß ÄݷР`%s'¸¦ ´ÜÀÏ ÄݷР`%s'·Î À̸§¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Áß°£ ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: file.c:385
+#: file.c:396
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** Áß°£ ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Å¸ÀÓ½ºÅÆÇÁ°¡ ¹üÀ§¸¦ ¹þ¾î³³´Ï´Ù; %sÀ»(¸¦) ´ëüÇÕ´Ï´Ù"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "ÇöÀ砽ð¢"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Å¸°ÙÀÌ ¾Æ´Ô:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ÇÁ·¹½Ã¾î½º ÆÄÀÏ (.PRECIOUSÀÇ ¼±ÇàÁ¶°Ç)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Æ÷´Ï Å¸°Ù (.PHONYÀÇ ¼±ÇàÁ¶°Ç)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  ¸í·ÉÇà Å¸°Ù."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  ±âº» ¸ÞÀÌÅ©ÆÄÀϠȤÀº MAKEFILES ¸ÞÀÌÅ©ÆÄÀÏ."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀÌ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  ¹¬½ÃÀû/°íÁ¤ ÆÐÅÏ ½ºÅÛ: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  ÆÄÀÏÀÌ Áß°£´Ü°èÀÇ ¼±ÇàÁ¶°ÇÀÔ´Ï´Ù."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  ´ÙÀ½µµ ¸¸µì´Ï´Ù:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  º¯°æ ½Ã°¢ÀÌ °áÄÚ °Ë»çµÇÁö ¾Ê¾ÒÀ½."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  ÆÄÀÏÀÌ ¸Å¿ì ¿À·¡µÇ¾ú½À´Ï´Ù."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  ¸¶Áö¸· º¯°æ %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  ÆÄÀÏÀÌ °»½ÅµÇ¾ú½À´Ï´Ù."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  ÆÄÀÏÀÌ °»½ÅµÇÁö ¾Ê¾Ò½À´Ï´Ù."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  ÇöÀç ½ÇÇàÁßÀΠ¸í·É (ÀÌ°ÍÀº ¹ö±×ÀÔ´Ï´Ù)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  ÇöÀç ½ÇÇàÁßÀΠÀÇÁ¸¼º (ÀÌ°ÍÀº ¹ö±×ÀÔ´Ï´Ù)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  ¼º°øÀûÀ¸·Î °»½ÅµÊ."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  °»½ÅµÉ ÇÊ¿ä°¡ ÀÖÀ½ (-q ¼³Á¤µÊ)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  °»½Å¿¡ ½ÇÆÐÇÔ."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  `update_status' ¸â¹ö¿¡ °ªÀÌ À߸øµÇ¾ú½À´Ï´Ù!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  `command_status' ¸â¹ö¿¡ °ªÀÌ À߸øµÇ¾ú½À´Ï´Ù!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -346,272 +350,273 @@ msgstr ""
 "\n"
 "# ÆÄÀÏ"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "`word' ÇÔ¼öÀǠù¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "`word' ÇÔ¼öÀǠù¹ø° ÀÎÀڴ 0º¸´Ù Ä¿¾ß ÇÕ´Ï´Ù"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "`wordlist' ÇÔ¼öÀǠù¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "`wordlist' ÇÔ¼öÀÇ µÎ¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) ½ÇÆР(e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) ½ÇÆР(e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() ½ÇÆР(e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() ½ÇÆÐ\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) Áö¿ó´Ï´Ù\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "ÇÔ¼ö `%2$s'¿¡ ÀÎÀÚ °¹¼ö(%1$d)°¡ ºÎÁ·ÇÕ´Ï´Ù "
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â ±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù: `%s' ÇÔ¼ö"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "ÇÔ¼ö `%s'¿¡ ´ëÇØ Á¾·áµÇÁö ¾ÊÀº È£Ãâ: `%c'°¡ ºüÁ³À½"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: `%s'´Â ¾Ö¸ÅÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: `%c%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: `%s' ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: À߸øµÈ ¿É¼Ç -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ºÎÀûÀýÇÑ ¿É¼Ç -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ÀÌ ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' ¿É¼ÇÀº ¾Ö¸ÅÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¾ÆÄ«À̺ê¸â¹ö ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "¹¬½ÃÀû ±ÔÄ¢ÀÇ Àç±Í¸¦ ÇÇÇÔ.\n"
 
 # ½ºÅÛstemÀ̶õ ÆÐÅÏ ·ê¿¡¼­ prefix/suffix¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö¸¦ ¸»ÇÑ´Ù.
 # ¿¹¸¦ µé¾î `%.c'¶ó´Â ÆÐÅÏ¿¡ `hello.c'°¡ µé¾î ¸Â¾ÒÀ» °æ¿ì stemÀº `hello'ÀÌ´Ù.
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "½ºÅÛ `%.*s'¿¡¼­ºÎÅÍ ÆÐÅÏ ±ÔÄ¢ ½Ãµµ.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "ºÒ°¡´ÉÇÑ ¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'Àº(´Â) °ÅºÎµË´Ï´Ù.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "ºÒ°¡´ÉÇÑ ±ÔÄ¢ ¼±ÇàÁ¶°Ç `%s'Àº(´Â) °ÅºÎµË´Ï´Ù.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'À»(¸¦) ½ÃµµÇÕ´Ï´Ù\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "ºÒ°¡´ÉÇÑ ¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'Àº(´Â) °ÅºÎµË´Ï´Ù.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "±ÔÄ¢ ¼±ÇàÁ¶°Ç `%s'À»(¸¦) ½ÃµµÇÕ´Ï´Ù.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'À»(¸¦) ½ÃµµÇÕ´Ï´Ù\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "VPATH `%2$s'¿¡¼­ ¼±ÇàÁ¶°Ç `%1$s'À»(¸¦) Ã£¾Ò½À´Ï´Ù\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Áß°£ ÆÄÀÏ `%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (ÀӽàÆÄÀÏ)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] ¿À·ù 0x%x (¹«½ÃµÊ)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] ¿À·ù 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] ¿À·ù %d (¹«½ÃµÊ)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] ¿À·ù %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (¸Þ¸ð¸® ´ýÇÁµÊ)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ³¡³ªÁö ¾ÊÀº ÀÛ¾÷À» ±â´Ù¸®°í ÀÖ½À´Ï´Ù...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "»ì¾ÆÀִ ÀڽĠÇÁ·Î¼¼½º 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (¿ø°Ý)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "½ÇÆÐÇÑ ÀڽĠÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) °ÅµÖµéÀÔ´Ï´Ù\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "¼º°øÇÑ ÀڽĠÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) °ÅµÖµéÀÔ´Ï´Ù\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) Áö¿ó´Ï´Ù\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "üÀο¡¼­ ÀÚ½ÄÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) Áö¿ó´Ï´Ù.\n"
 
 # ??? µð¹ö±ë ¸Þ¼¼Áö
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "ÀÚ½ÄÇÁ·Î¼¼½º child 0x%08lx (%s) ¿¡ ÅäÅ«À» ³»¾î ÁÝ´Ï´Ù.\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy()°¡ ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇϴ µ¥ ½ÇÆÐÇß½À´Ï´Ù (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -620,273 +625,289 @@ msgstr ""
 "\n"
 "½ÇÇà ½ÇÆп¡¼­ %d°³ÀÇ Àμö\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "ÀÚ½ÄÇÁ·Î¼¼½º 0x%08lx (%s) PID %ld%sÀ»(¸¦) Ã¼Àο¡ ³Ö½À´Ï´Ù.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "ÀڽĠÇÁ·Î¼¼½º 0x%08lx (%s)¿¡¼­ ÅäÅ«À» ¹Þ¾Ò½À´Ï´Ù.\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "ÀÛ¾÷ ÆÄÀÌÇÁ Àбâ"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Ÿ°Ù `%s'À»(¸¦) ´Ù½Ã ¸¸µé ÇÊ¿ä°¡ ¾ø½À´Ï´Ù."
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "ÀÌ ¿î¿µ Ã¼Á¦¿¡¼­´Â ºÎÇÏ Á¦ÇÑÀ» °­Á¦ÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "ºÎÇÏ Á¦ÇÑÀ» °­Á¦ÇÒ ¼ö ¾ø½À´Ï´Ù: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy()°¡ ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇϴ µ¥ ½ÇÆÐÇß½À´Ï´Ù (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 "ÀÚ½ÄÇÁ·Î¼¼½º pid %d¸¦ °ÅµÖµéÀÌ°í, ¾ÆÁ÷ pid %dÀ»(¸¦) ±â´Ù¸®°í ÀÖ½À´Ï´Ù\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: ¸í·ÉÀ» Ã£Áö ¸øÇßÀ½"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ¼Ð ÇÁ·Î±×·¥À» Ã£Áö ¸øÇßÀ½"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELLÀÌ ¹Ù²î¾ú½À´Ï´Ù (°ú°Å `%s', ÇöÀç `%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) ¸¸µì´Ï´Ù\n"
 
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
 # ???  µð¹ö±ë ¸Þ¼¼Áö
-#: job.c:2902
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (%d¹ø° ÁÙ) À߸øµÈ ½© ÄÁÅؽºÆ® (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "¿É¼Ç:\n"
 
-#: main.c:292
+#: main.c:304
 #, fuzzy
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "ȣȯ¼ºÀ» À§ÇØ ¹«½ÃµÊ"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:299
+#: main.c:311
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "¿©·¯ °¡Áö µð¹ö±ë Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:301
+#: main.c:313
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "¿©·¯ °¡Áö Á¾·ùÀÇ µð¹ö±ë Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:309
+#: main.c:323
 #, fuzzy
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "ÀÌ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù"
 
-#: main.c:311
-#, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "¸í·É¿¡ Àִ ¿À·ù¸¦ ¹«½ÃÇÕ´Ï´Ù"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr ""
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:330
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr "µ¿½Ã¿¡ N°³ÀÇ ÀÛ¾÷À» Çã¿ëÇÕ´Ï´Ù; ÀÎÀÚ°¡ ¾øÀ¸¸é ¹«ÇÑ´ë·Î Çã¿ëÇÕ´Ï´Ù"
 
-#: main.c:318
+#: main.c:332
 #, fuzzy
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "¸î¸î Å¸°ÙÀ» ¸¸µé ¼ö ¾ø´õ¶óµµ °è¼Ó ÁøÇàÇÕ´Ï´Ù"
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "makeÀÇ ³»ºÎ µ¥ÀÌŸº£À̽º¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr "¸í·ÉÀ» ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù; Á¾·á »óȲÀÌ °»½Å ¿©ºÎ¸¦ ¸»ÇØ ÁÝ´Ï´Ù"
 
-#: main.c:335
+#: main.c:349
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "³»Àå ¹¬½ÃÀû ±ÔÄ¢À» »ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÕ´Ï´Ù"
 
-#: main.c:337
+#: main.c:351
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "³»Àå º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:344
+#: main.c:358
 #, fuzzy
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "Ÿ°ÙÀ» ´Ù½Ã ¸¸µéÁö ¾Ê°í touch¸¸ ÇÕ´Ï´Ù"
 
-#: main.c:346
+#: main.c:360
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "makeÀÇ ¹öÀü ¹øÈ£¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù"
 
-#: main.c:348
+#: main.c:362
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "ÇöÀç µð·ºÅ丮¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:350
+#: main.c:364
 #, fuzzy
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "¹¬½ÃÀûÀ¸·Î ÄÑÁ® ÀÖ´õ¶óµµ -w¸¦ ²ü´Ï´Ù"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr "Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§ °æ°í¸¦ ³À´Ï´Ù"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "ºó ¹®ÀÚ¿­Àº ÆÄÀÏ À̸§À¸·Î ºÎÀûÀýÇÕ´Ï´Ù"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "µð¹ö±ë ´Ü°è ÁöÁ¤ `%s'ÀÌ(°¡) À߸øµÇ¾ú½À´Ï´Ù"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: ÀÎÅÍ·´Æ®/¿¹¿Ü°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù (ÄÚ¤§ = 0x%x, ÁÖ¼Ò = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "ÇÁ·Î±×·¥ %s¿¡¼­ Ã³¸®µÇÁö ¾ÊÀº ¿¹¿Ü°¡ ¹ß»ýÇß½À´Ï´Ù\n"
@@ -894,221 +915,213 @@ msgstr ""
 "¿¹¿ÜÇ÷¡±× = %x\n"
 "¿¹¿ÜÁÖ¼Ò = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Á¢±Ù±ÇÇÑ À§¹Ý: ÁÖ¼Ò %x¿¡ ¾²±â\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Á¢±Ù±ÇÇÑ À§¹Ý: ÁÖ¼Ò %x¿¡¼­ Àбâ\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shellÀÌ default_shell = %s À¸·Î(·Î) ¼¼ÆÃÇÕ´Ï´Ù.\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 "find_and_set_shell °æ·Î Å½»öÀÌ default_shell = %s À¸·Î(·Î) ¼¼ÆÃÇÕ´Ï´Ù.\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%sÀÌ(°¡) 30Ãʵ¿¾È ÀϽàÁßÁöµË´Ï´Ù..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "¿Ï·á sleep(30). °è¼Ó.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Ç¥ÁØÀԷ¿¡¼­ ¹Þ¾ÆµéÀ̴ ¸ÞÀÌÅ©ÆÄÀÏÀÌ µÎ ¹ø ÀÌ»ó ÁöÁ¤µÇ¾ú½À´Ï´Ù."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (ÀӽàÆÄÀÏ)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (ÀӽàÆÄÀÏ)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â º´·Ä ÀÛ¾÷(-j)ÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "´ÜÀÏ ÀÛ¾÷ (-j1) ¸ðµå·Î µ¹¾Æ°©´Ï´Ù."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "³»ºÎ ¿À·ù: ¿©·¯ °³ÀÇ -jobserver-fds ¿É¼Ç"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "³»ºÎ ¿À·ù: À߸øµÈ -jobserver-fds ¹®ÀÚ¿­ `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "°æ°í: ÆÄ»ýµÈ ¸ÞÀÌÅ©¿¡¼­ -jNÀÌ °­Á¦µÇ¾ú½À´Ï´Ù: ÀÛ¾÷¼­¹ö ¸ðµå¸¦ ²ü´Ï´Ù."
 
 # ???  µð¹ö±ë ¸Þ¼¼Áö
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup ÀÛ¾÷¼­¹ö"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "°æ°í: ÀÛ¾÷¼­¹ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù: -j1À» »ç¿ëÇÕ´Ï´Ù.  ºÎ¸ð ¸ÞÀÌÅ© ±ÔÄ¢¿¡ `"
 "+'¸¦ Ãß°¡ÇÕ´Ï´Ù."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "ÀÛ¾÷ ÆÄÀÌÇÁ »ý¼º"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "ÀÛ¾÷¼­¹ö ÆÄÀÌÇÁ ÃʱâÈ­"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ°í ÀÖ½À´Ï´Ù....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'Àº(´Â) ¹Ýº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù; ´Ù½Ã ¸¸µéÁö ¾Ê½À´Ï´Ù.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'À» ´Ù½Ã ¸¸µå´Âµ¥ ½ÇÆÐÇÔ."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Æ÷ÇԵȠ¸ÞÀÌÅ©ÆÄÀÏ `%s'¸¦ Ã£Áö ¸øÇß½À´Ï´Ù."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'À» Ã£Áö ¸øÇß½À´Ï´Ù"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "¿ø·¡ µð·ºÅ丮·Î µ¹¾Æ°¥ ¼ö ¾ø½À´Ï´Ù."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Àç½ÇÇà:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (ÀӽàÆÄÀÏ): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Ÿ°ÙÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò°í ¸ÞÀÌÅ©ÆÄÀÏÀÌ ¾ø½À´Ï´Ù"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Ÿ°Ù ¾øÀ½"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "ÃÖÁ¾ Å¸°ÙÀ» °»½ÅÇÕ´Ï´Ù....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "°æ°í:  ½Ã°è°¡ À߸øµÇ¾úÀ½ÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.  ºôµå°¡ ºÒ¿ÏÀüÇÒ ¼ö ÀÖ½À´Ï´Ù."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "»ç¿ë¹ý: %s [¿É¼Ç] [Ÿ°Ù] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2394
+#: main.c:2481
 #, fuzzy, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "\n"
 "¹®Á¦Á¡À» <bug-make@gnu.org>·Î ¾Ë·Á ÁֽʽÿÀ.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "`-%c' ¿É¼ÇÀº ¾çÀÇ ÀûºÐ Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "`-%c' ¿É¼ÇÀº ¾çÀÇ ÀûºÐ Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù"
 
-#: 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 ""
-", Richard Stallman°ú Roland McGrath.\n"
-"%s%s¿¡ ´ëÇÑ ºôµå\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
-"%s\tFree Software Foundation, Inc.\n"
-"%sÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù; º¹»çÁ¶°ÇÀº ¼Ò½º¸¦ Âü°íÇϽʽÿÀ.\n"
-"%s»óÇ°¼ºÀ̳ª Æ¯Á¤ ¸ñÀû¿¡ ´ëÇÑ ÀûÇÕ¼ºÀ» ºñ·ÔÇÏ¿©, ¾î¶°ÇÑ º¸Áõµµ ÇÏÁö \n"
-"%s¾Ê½À´Ï´Ù.\n"
-"\n"
-"%s¹®Á¦Á¡Àº <bug-make@gnu.org>·Î ¾Ë·ÁÁֽʽÿÀ.\n"
-"\n"
+#: main.c:3054
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr ""
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1117,7 +1130,7 @@ msgstr ""
 "\n"
 "# ¸ÞÀÌÅ© µ¥ÀÌŸº£À̽º, %s¿¡ Ç¥½Ã"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1126,441 +1139,442 @@ msgstr ""
 "\n"
 "# ¸ÞÀÌÅ© µ¥ÀÌŸ º£À̽º ¸¶Ä§, %s¿¡¼­\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3106
+#: main.c:3242
 #, fuzzy, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3109
+#: main.c:3245
 #, fuzzy, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3121
+#: main.c:3257
 #, fuzzy, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3124
+#: main.c:3260
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  ¸ØÃã.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "¾Ë ¼ö ¾ø´Â ¿À·ù %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "°¡»ó ¸Þ¸ð¸®°¡ °í°¥µÊ"
 
-#: misc.c:646
+#: misc.c:708
 #, fuzzy, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s Á¢±Ù: »ç¿ëÀÚ %lu (½ÇÁ¦ %lu), ±×·ì %lu (½ÇÁ¦ %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 #, fuzzy
 msgid "Initialized access"
 msgstr "ÃʱâÈ­µÊ"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr ""
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "¿À·ù¸¦ %sÀ¸·Î(·Î) ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
 # ??? µð¹ö±ë ¸Þ¼¼Áö
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏÀ» Àаí ÀÖ½À´Ï´Ù\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'¸¦ Àаí ÀÖ½À´Ï´Ù"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (ÃÖÁ¾ Å¸°ÙÀÌ ¾øÀ½)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (Ž»ö °æ·Î)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (»ó°ü ¾ÈÇÔ)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (~ È®Àå ¾øÀ½)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "Á¶°Ç¹®¿¡ ºÎÀûÀýÇÑ ¹®¹ýÀÌ ¾²ÀÓ"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "¿©ºÐÀÇ `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "ºó º¯¼ö À̸§"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "ºó `override' Áö½ÃÀÚ"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "À߸øµÈ `override' Áö½ÃÀÚ"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "ù¹ø° Å¸°Ùº¸´Ù ¾Õ¿¡¼­ ¸í·É¾î°¡ ½ÃÀ۵Ǿú½À´Ï´Ù"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "¸í·É ¾Õ¿¡ ±ÔÄ¢ÀÌ ºüÁ³À½"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "ºÐ¸®±âÈ£ %sÀÌ(°¡) ºüÁ³À½"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (8°³ÀÇ °ø¹é ¸»°í ÅÇÀ» ¾²·Á°í ÇÑ °Í ¾Æ´Ï¾ú½À´Ï±î?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "Ÿ°Ù ÆÐÅÏÀÌ ºüÁ³À½"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "´ÙÁߠŸ°Ù ÆÐÅÏ"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "Ÿ°Ù ÆÐÅÏ¿¡ `%%'°¡ ¾ø½À´Ï´Ù."
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "`endif'°¡ ºüÁ³À½"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "ºó º¯¼ö À̸§"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "`endef' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ±ÛÀÌ ÀÖÀ½"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "`endef'°¡ ºüÁ³À½. Á¾·áµÇÁö ¾ÊÀº `define'"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "`endef' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ±ÛÀÌ ÀÖÀ½"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "`%s' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ¹®ÀåÀÌ ÀÖÀ½"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "¿©ºÐÀÇ `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "ÇÑ °³ÀÇ Á¶°Ç¿¡´Â ÇÑ °³ÀÇ `else'¸¸ ÀÖ¾î¾ß ÇÕ´Ï´Ù"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Ÿ°Ùº° º¯¼ö Á¤ÀÇ Çü½ÄÀ̠Ʋ·È½À´Ï´Ù"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "¹¬½ÃÀû ÆÐÅÏ ·ê°ú °íÁ¤µÈ ÆÐÅÏ·êÀÌ ¼¯¿´½À´Ï´Ù"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "È¥ÇյȠ¹¬½ÃÀû ±ÔÄ¢°ú ÀϹÝÀû ±ÔÄ¢"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "Ÿ°Ù `%s'Àº(´Â) Å¸°Ù ÆÐÅÏ¿¡ ¸ÂÁö ¾Ê½À´Ï´Ù"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'Àº(´Â) :¿Í :: Ç׸ñÀ» µ¿½Ã¿¡ °®°í ÀÖ½À´Ï´Ù"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "Ÿ°Ù `%s'ÀÌ(°¡) °°Àº ±ÔÄ¢¿¡¼­ ¿©·¯ ¹ø ÁÖ¾îÁ³½À´Ï´Ù"
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "°æ°í: Å¸°Ù `%s'¿¡ ´ëÇÑ ¸í·É¾îº¸´Ù ´Ù¸¥ °ÍÀÌ ¿ì¼±ÇÕ´Ï´Ù"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "°æ°í: Å¸°Ù `%s'¿¡ ´ëÇÑ °ú°Å ¸í·É¾îµéÀ» ¹«½ÃÇÕ´Ï´Ù"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "°æ°í: NUL ¹®ÀÚ°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù; ÁÙÀÇ ³ª¸ÓÁö´Â ¹«½ÃµË´Ï´Ù"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "`%s'¸¦ À§ÇØ ÇÒ ÀÏÀÌ ¾ø½À´Ï´Ù"
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s'´Â À̹̠°»½ÅµÇ¾ú½À´Ï´Ù."
 
 # pruneÀÌ truncateÀÇ ÀǹÌÀΰ¡ Áö¿î´Ù´Â ÀǹÌÀΰ¡??
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "`%s' ÆÄÀÏÀ» À߶󳻰í ÀÖ½À´Ï´Ù.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sŸ°Ù `%s'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾øÀ½%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%1$s`%3$s'¿¡¼­ ÇÊ¿ä·Î Çϴ  Å¸°Ù `%2$s'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾ø½À´Ï´Ù%4$s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'À»(¸¦) °í·ÁÇÕ´Ï´Ù.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "ÃÖ±Ù¿¡ `%s' ÆÄÀÏÀ» °»½ÅÇÏ·Á°í ½ÃµµÇÏ¿´°í ½ÇÆÐÇÏ¿´½À´Ï´Ù.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "ÆÄÀÏ `%s'´Â À̹̠°ËÅäµÇ¾ú½À´Ï´Ù.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "¾ÆÁ÷ `%s' ÆÄÀÏÀ» °»½ÅÇÏ°í ÀÖ½À´Ï´Ù.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "`%s' ÆÄÀÏÀÇ °»½ÅÀ» ¸¶ÃƽÀ´Ï´Ù.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "`%s' ÆÄÀÏÀº Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£¾Ò½À´Ï´Ù.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£Áö ¸øÇß½À´Ï´Ù.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "`%s'¿¡ ´ëÇØ ³»Á¤µÈ ¸í·ÉÀ» »ç¿ëÇÔ.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "%s <- %s »óÈ£ ÀÇÁ¸¼ºÀº ¹«½ÃµË´Ï´Ù."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'ÀÇ ¼±ÇàÁ¶°ÇÀ» ¸¶ÃƽÀ´Ï´Ù.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "`%s'ÀÇ ¼±ÇàÁ¶°ÇÀÌ ¸¸µé¾îÁö°í ÀÖ½À´Ï´Ù.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'À»(¸¦) Æ÷±âÇÕ´Ï´Ù.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "¿À·ù·Î ÀÎÇؠŸ°Ù `%s'¸¦ ´Ù½Ã ¸¸µéÁö ¸øÇß½À´Ï´Ù."
 
-#: remake.c:677
+#: remake.c:727
 #, fuzzy, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ¸ÕÀú ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Ÿ°Ù `%2$s'ÀÇ ¼±ÇàÁ¶°Ç %1$sÀº(´Â) Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ÃÖ±Ù¿¡ ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ¸ÕÀú ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Ÿ°Ù `%s'ÀÌ(°¡) µÎ °³ÀÇ ÄÝ·ÐÀÌ ºÙ¿©Á³Áö¸¸ ¼±ÇàÁ¶°ÇÀÌ ¾ø½À´Ï´Ù.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¸í·É¾î°¡ ¾ø°í ¾î¶² ¼±ÇàÁ¶°Çµµ º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Ÿ°Ù `%s'À»(¸¦) ´Ù½Ã ¸¸µé ÇÊ¿ä°¡ ¾ø½À´Ï´Ù."
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; VPATH À̸§ `%s'À»(¸¦) »ç¿ëÇÕ´Ï´Ù"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Ÿ°Ù `%s'¸¦ ´Ù½Ã ¸¸µé¾î¾ß ÇÕ´Ï´Ù.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  VPATH À̸§ `%s'À»(¸¦) ¹«½ÃÇÕ´Ï´Ù.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "`%s'¶ó´Â ¸í·ÉÀÌ ½ÇÇà ÁßÀÔ´Ï´Ù.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'¸¦ ´Ù½Ã ¸¸µå´Â µ¥ ½ÇÆÐÇß½À´Ï´Ù.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'¸¦ ¼º°øÀûÀ¸·Î ´Ù½Ã ¸¸µé¾ú½À´Ï´Ù.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'ÀÌ(°¡) -q ÇÏ¿¡ ´Ù½Ã ¸¸µé¾îÁ®¾ß ÇÕ´Ï´Ù.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "`%s'¿¡ ´ëÇØ ³»Á¤µÈ ¸í·ÉÀ» »ç¿ëÇÔ.\n"
+
+#: remake.c:1357
 #, fuzzy, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "*** ÆÄÀÏ `%s'°¡ ¹Ì·¡ÀÇ º¯°æ ½Ã°¢À» °¡Áö°í ÀÖ½À´Ï´Ù (%s > %s)"
 
-#: remake.c:1313
+#: remake.c:1370
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "*** ÆÄÀÏ `%s'°¡ ¹Ì·¡ÀÇ º¯°æ ½Ã°¢À» °¡Áö°í ÀÖ½À´Ï´Ù (%s > %s)"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNSÀÇ ¿ø¼Ò `%s'ÀÌ(°¡) ÆÐÅÏÀÌ ¾Æ´Õ´Ï´Ù"
@@ -1571,7 +1585,7 @@ msgstr ".LIBPATTERNS
 msgid "Customs won't export: %s\n"
 msgstr "CustomsÀº exportµÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 #, fuzzy
 msgid ""
 "\n"
@@ -1580,7 +1594,7 @@ msgstr ""
 "\n"
 "# ¹¬½ÃÀû ±ÔÄ¢ ¾øÀ½."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1588,7 +1602,7 @@ msgstr ""
 "\n"
 "# ¹¬½ÃÀû ±ÔÄ¢ ¾øÀ½."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1597,232 +1611,239 @@ msgstr ""
 "\n"
 "# %u°³ÀÇ ¹¬½ÃÀû ±ÔÄ¢, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " Å͹̳Î."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "¹ö±×: num_pattern_rules ¿À·ù!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "¾Ë ¼ö ¾ø´Â ½ÅÈ£"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "²÷¾îÁü"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "ÀÎÅÍ·´Æ®"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Á¾·á"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "À߸øµÈ ¸í·É"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "ÃßÀû/Áß´ÜÁ¡ Æ®·¦"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "ÁߴܵÊ"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT Æ®·¦"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT Æ®·¦"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "ºÎµ¿ ¼Ò¼öÁ¡ ¿¹¿Ü"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Á×¾úÀ½"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "¹ö½º ¿À·ù"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "¼¼±×¸àÅ×À̼Ǡ¿À·ù"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "À߸øµÈ ½Ã½ºÅ۠ȣÃâ"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "±ú¾îÁø ÆÄÀÌÇÁ"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "ÀÚ¸íÁ¾ ½Ã°è"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Á¾·áµÊ"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "»ç¿ëÀÚ Á¤ÀÇ ½ÅÈ£ 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "»ç¿ëÀÚ Á¤ÀÇ ½ÅÈ£ 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "ÀÚ½ÄÀÌ Á¾·áµÇ¾úÀ½"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Àü·Â Áß´Ü"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "ÁßÁöµÊ"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "ÁßÁöµÊ (tty ÀÔ·Â)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "ÁßÁöµÊ (tty Ãâ·Â)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "ÁßÁöµÊ (½Ã±×³Î)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU ½Ã°£ Á¦ÇÑ ÃÊ°úµÊ"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "ÆÄÀÏ Å©±â Á¦ÇÑ ÃÊ°úµÊ"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "°¡»ó Å¸À̸Ӡ½Ã°£ ÃÊ°úµÊ"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "ÇÁ·ÎÆÄÀϸµ Å¸À̸Ӡ½Ã°£ ÃÊ°úµÊ"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "âÀÌ ¹Ù²î¾úÀ½"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "°è¼ÓµÊ"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "±ä±ÞÇÑ ÀÔÃâ·Â »óȲ"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "ÀÔÃâ·Â °¡´É"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "ÀÚ¿ø ¼Õ½Ç"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "À§Çè ½ÅÈ£"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Á¤º¸ ¿äû"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê º¸Á¶ÇÁ·Î¼¼¼­°¡ ¾ø½À´Ï´Ù"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "±âº»°ª"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "ȯ°æ"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "-e ÇÏÀǠȯ°æ"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "¸í·ÉÇà"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "`override' Áö½ÃÀÚ"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "ÀÚµ¿"
 
-#: variable.c:1396
+#: variable.c:1570
 #, fuzzy, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (`%s'¿¡¼­, %lu¹ø° ÁÙ):\n"
 
-#: variable.c:1438
+#: variable.c:1612
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %2$u°³ÀÇ Çؽ¬ ¹öŶ¿¡ %1$u°³ÀÇ º¯¼ö.\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1830,7 +1851,7 @@ msgstr ""
 "\n"
 "# º¯¼ö\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1839,7 +1860,7 @@ msgstr ""
 "\n"
 "# ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµé"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1847,7 +1868,7 @@ msgstr ""
 "\n"
 "# ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµéÀÌ ¾ø½À´Ï´Ù."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1856,14 +1877,14 @@ msgstr ""
 "\n"
 "# %u°³ÀÇ ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµé"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "°æ°í: Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö `%.*s'"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search°¡ %d¸¦ ¸®ÅÏÇϸ砽ÇÆÐÇß½À´Ï´Ù\n"
 
 #: vmsjobs.c:71
@@ -1871,73 +1892,78 @@ msgstr "sys$search
 msgid "Warning: Empty redirection\n"
 msgstr "°æ°í: ºñ¾î Àִ ¸®´ÙÀÌ·º¼Ç\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "³»ºÎ ¿À·ù: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-°æ°í, CTRL-Y´Â ÆÄ»ýµÈ ÇÁ·Î¼¼½ºµéÀ» ±×´ë·Î ³²°ÜµÑ °ÍÀÔ´Ï´Ù.\n"
-
 # DCL - Digital Command Language, VMS¿¡¼­¸¸ Á¸ÀçÇϴ shell languageÀÇ ÀÏÁ¾
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-°æ°í, DCL¿¡¼­ CTRL-Y¸¦ ´Ù½Ã »ç¿ë°¡´ÉÇϵµ·Ï ÇؾߠÇÒ °ÍÀÔ´Ï´Ù.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "³»Àå [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "³»Àå CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "³»Àå RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "¾Ë ¼ö ¾ø´Â ³»Àå ¸í·É¾î `%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "¿À·ù, ºó ¸í·É¾î\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "ÀÔ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "¿À·ù¸¦ %sÀ¸·Î(·Î) ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Ãâ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Ãâ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "´ë½Å %s¸¦ ½ÇÇàÇÔ\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "½ÇÇà ¿À·ù, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1945,11 +1971,11 @@ msgstr ""
 "\n"
 "# VPATH Å½»ö °æ·Î\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# `vpath' Å½»ö °æ·Î°¡ ¾øÀ½."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1958,7 +1984,7 @@ msgstr ""
 "\n"
 "# %u°³ÀÇ `vpath' Å½»ö °æ·Î.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1966,7 +1992,7 @@ msgstr ""
 "\n"
 "# ÀϹÝÀûÀΠ(`VPATH' º¯¼ö) Å½»ö °æ·Î°¡ ¾øÀ½."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2000,6 +2026,9 @@ msgstr ""
 #~ msgstr ""
 #~ "SIGCHLD ½Ã±×³ÎÀ» ¹Þ¾Ò½À´Ï´Ù; %u°³ÀÇ ÀÚ½ÄÇÁ·Î¼¼½º°¡ ³¡³ªÁö ¾Ê¾Ò½À´Ï´Ù.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-°æ°í, CTRL-Y´Â ÆÄ»ýµÈ ÇÁ·Î¼¼½ºµéÀ» ±×´ë·Î ³²°ÜµÑ °ÍÀÔ´Ï´Ù.\n"
+
 #~ msgid "DIRECTORY"
 #~ msgstr "<µð·ºÅ丮>"
 
@@ -2021,6 +2050,9 @@ msgstr ""
 #~ msgid "Read FILE as a makefile"
 #~ msgstr "<ÆÄÀÏ>À» ¸ÞÀÌÅ©ÆÄÀϷΠÀнÀ´Ï´Ù"
 
+#~ msgid "Ignore errors from commands"
+#~ msgstr "¸í·É¿¡ Àִ ¿À·ù¸¦ ¹«½ÃÇÕ´Ï´Ù"
+
 #~ msgid "Search DIRECTORY for included makefiles"
 #~ msgstr "Æ÷ÇÔ½Ãų ¸ÞÀÌÅ©ÆÄÀÏÀ» <µð·ºÅ丮>¿¡¼­ Ã£½À´Ï´Ù"
 
@@ -2048,12 +2080,44 @@ msgstr ""
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "make°¡ ´ÜÀÏ ÀÛ¾÷ ¸ðµå·Î º¹±ÍÇÕ´Ï´Ù"
 
+#~ msgid ""
+#~ ", by Richard Stallman and Roland McGrath.\n"
+#~ "%sBuilt for %s\n"
+#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+#~ "%s\tFree Software Foundation, Inc.\n"
+#~ "%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"
+#~ "\n"
+#~ "%sReport bugs to <bug-make@gnu.org>.\n"
+#~ "\n"
+#~ msgstr ""
+#~ ", Richard Stallman°ú Roland McGrath.\n"
+#~ "%s%s¿¡ ´ëÇÑ ºôµå\n"
+#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+#~ "%s\tFree Software Foundation, Inc.\n"
+#~ "%sÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù; º¹»çÁ¶°ÇÀº ¼Ò½º¸¦ Âü°íÇϽʽÿÀ.\n"
+#~ "%s»óÇ°¼ºÀ̳ª Æ¯Á¤ ¸ñÀû¿¡ ´ëÇÑ ÀûÇÕ¼ºÀ» ºñ·ÔÇÏ¿©, ¾î¶°ÇÑ º¸Áõµµ ÇÏÁö \n"
+#~ "%s¾Ê½À´Ï´Ù.\n"
+#~ "\n"
+#~ "%s¹®Á¦Á¡Àº <bug-make@gnu.org>·Î ¾Ë·ÁÁֽʽÿÀ.\n"
+#~ "\n"
+
 #~ msgid "Entering"
 #~ msgstr "µé¾î°¨"
 
 #~ msgid "Leaving"
 #~ msgstr "³ª°¨"
 
+#~ msgid "extraneous `endef'"
+#~ msgstr "¿©ºÐÀÇ `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "ºó `override' Áö½ÃÀÚ"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "À߸øµÈ `override' Áö½ÃÀÚ"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "`%sinclude'¿¡ ÆÄÀÏÀ̸§ÀÌ ¾ø½À´Ï´Ù"
 
diff --git a/po/lt.gmo b/po/lt.gmo
new file mode 100644 (file)
index 0000000..a956d85
Binary files /dev/null and b/po/lt.gmo differ
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..3b337bd
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,1971 @@
+# translation of make-3.81 to Lithuanian
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: make-3.81\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2008-05-17 21:42+0300\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ar.c:48
+#, c-format
+msgid "attempt to use unsupported feature: `%s'"
+msgstr "bandymas naudoti nepalaikomą funkcionalumą: „%s“"
+
+#: ar.c:125
+msgid "touch archive member is not available on VMS"
+msgstr ""
+
+#: ar.c:149
+#, c-format
+msgid "touch: Archive `%s' does not exist"
+msgstr "touch: Archyvas „%s“ neegzistuoja"
+
+#: ar.c:152
+#, c-format
+msgid "touch: `%s' is not a valid archive"
+msgstr "touch: „%s“ nėra taisyklingas archyvas"
+
+#: ar.c:159
+#, c-format
+msgid "touch: Member `%s' does not exist in `%s'"
+msgstr ""
+
+#: ar.c:166
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgstr ""
+
+#: arscan.c:69
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr ""
+
+#: arscan.c:175
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr ""
+
+#: arscan.c:187
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "nepavyko atverti bibliotekos „%s“ bandant surasti narį „%s“"
+
+#: arscan.c:850
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Narys „%s“%s: %ld baitų pozicijoje %ld (%ld).\n"
+
+#: arscan.c:851
+msgid " (name might be truncated)"
+msgstr " (pavadinimas gali būti sutrumpintas)"
+
+#: arscan.c:853
+#, c-format
+msgid "  Date %s"
+msgstr "  Data %s"
+
+#: arscan.c:854
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
+
+#: commands.c:499
+msgid "*** Break.\n"
+msgstr ""
+
+#: commands.c:622
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr ""
+
+#: commands.c:625
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr ""
+
+#: commands.c:638
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] Trinamas failas „%s“"
+
+#: commands.c:640
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** Trinamas failas „%s“"
+
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
+msgstr "#  vykdytinos komandos"
+
+#: commands.c:679
+msgid " (built-in):"
+msgstr "  (integruota)"
+
+#: commands.c:681
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr " (nuo „%s“, %lu eilutė):\n"
+
+#: dir.c:996
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Aplankai\n"
+
+#: dir.c:1008
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: negalėjo būti stat'intas.\n"
+
+#: dir.c:1012
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n"
+
+#: dir.c:1016
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr ""
+
+#: dir.c:1021
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr ""
+
+#: dir.c:1048
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr ""
+
+#: dir.c:1052
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr ""
+
+#: dir.c:1057
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr ""
+
+#: dir.c:1063 dir.c:1084
+msgid "No"
+msgstr "Ne"
+
+#: dir.c:1066 dir.c:1087
+msgid " files, "
+msgstr " failai, "
+
+#: dir.c:1068 dir.c:1089
+msgid "no"
+msgstr "ne"
+
+#: dir.c:1071
+msgid " impossibilities"
+msgstr " negalimybės"
+
+#: dir.c:1075
+msgid " so far."
+msgstr " kol kas."
+
+#: dir.c:1092
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " negalimybės %lu aplankuose.\n"
+
+#: expand.c:127
+#, c-format
+msgid "Recursive variable `%s' references itself (eventually)"
+msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksčiau ar vėliau)"
+
+#: expand.c:276
+msgid "unterminated variable reference"
+msgstr "neterminuota nuoroda į kintamąjį"
+
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Komandos nurodytos failui „%s“ %s:%lu,"
+
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr "Komandos failui „%s“ rastos pagal neišreikštinę taisyklių paiešką"
+
+#: file.c:275
+#, c-format
+msgid "but `%s' is now considered the same file as `%s'."
+msgstr "bet „%s“ dabar laikomas tuo pačiu failu kaip „%s“."
+
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgstr "Komandos „%s“ bus ignoruojamos „%s“ komandų naudai."
+
+#: file.c:298
+#, c-format
+msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgstr ""
+
+#: file.c:303
+#, c-format
+msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgstr ""
+
+#: file.c:392
+#, c-format
+msgid "*** Deleting intermediate file `%s'"
+msgstr "*** Trinamas tarpinis failas „%s“"
+
+#: file.c:396
+msgid "Removing intermediate files...\n"
+msgstr "Šalinami tarpiniai failai...\n"
+
+#: file.c:803
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Laiko žymė už rėžių; keičiama į %s"
+
+#: file.c:804
+msgid "Current time"
+msgstr "Dabartinis laikas"
+
+#: file.c:924
+msgid "# Not a target:"
+msgstr "# Ne tikslas:"
+
+#: file.c:929
+#, fuzzy
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  Brangus failas (reikalingas .PRECIOUS)"
+
+#: file.c:931
+#, fuzzy
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Keistas tikslas (reikalingas .PHONY)."
+
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
+msgstr "#  Komandinės eilutės tikslas"
+
+#: file.c:935
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#  Numatytoji reikšmė, MAKEFILES, arba -include/sinclude „make“ failas"
+
+#: file.c:937
+msgid "#  Implicit rule search has been done."
+msgstr "#  Neišreikštinių taisyklių paieška atlikta."
+
+#: file.c:938
+msgid "#  Implicit rule search has not been done."
+msgstr "#  Neišreikštinių taisyklių paieška neatlikta."
+
+#: file.c:940
+#, c-format
+msgid "#  Implicit/static pattern stem: `%s'\n"
+msgstr "#  Išreikštinis/statinis šablono kamienas: „%s“\n"
+
+#: file.c:942
+#, fuzzy
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  Failas yra tarpinė sąlyga"
+
+#: file.c:946
+msgid "#  Also makes:"
+msgstr "#  Taip pat sukuria:"
+
+#: file.c:952
+msgid "#  Modification time never checked."
+msgstr "#  Modifikacijos laikas niekada netikrintas."
+
+#: file.c:954
+msgid "#  File does not exist."
+msgstr "#  Failas neegzistuoja."
+
+#: file.c:956
+msgid "#  File is very old."
+msgstr "#  Failas labai senas."
+
+#: file.c:961
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Paskutinį kartą pakeista %s\n"
+
+#: file.c:964
+msgid "#  File has been updated."
+msgstr "#  Failas atnaujintas."
+
+#: file.c:964
+msgid "#  File has not been updated."
+msgstr "#  Failas nebuvo atnaujintas."
+
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Dabar vykdomos komandos (TAI KLAIDA)."
+
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Vykdomos priklausomybių komandos (TAI KLAIDA)."
+
+#: file.c:980
+msgid "#  Successfully updated."
+msgstr "#  Sėkmingai atnaujinta."
+
+#: file.c:984
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Turi būti atnaujinta (-q nustatyta)."
+
+#: file.c:987
+msgid "#  Failed to be updated."
+msgstr "#  Nepavyko atnaujinti."
+
+#: file.c:990
+msgid "#  Invalid value in `update_status' member!"
+msgstr "#  Netaisyklinga reikšmė „update_status“ naryje!"
+
+#: file.c:997
+msgid "#  Invalid value in `command_state' member!"
+msgstr "#  Netaisyklinga reikšmė „command_state“ naryje!"
+
+#: file.c:1016
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Failai"
+
+#: file.c:1020
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# failų maišos lentelės statistika:\n"
+"# "
+
+#: function.c:758
+msgid "non-numeric first argument to `word' function"
+msgstr ""
+
+#: function.c:763
+msgid "first argument to `word' function must be greater than 0"
+msgstr ""
+
+#: function.c:783
+msgid "non-numeric first argument to `wordlist' function"
+msgstr ""
+
+#: function.c:785
+msgid "non-numeric second argument to `wordlist' function"
+msgstr ""
+
+#: function.c:1458
+#, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1469
+#, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1474
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr ""
+
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr ""
+
+#: function.c:1728
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr ""
+
+#: function.c:2150
+#, c-format
+msgid "insufficient number of arguments (%d) to function `%s'"
+msgstr ""
+
+#: function.c:2162
+#, c-format
+msgid "unimplemented on this platform: function `%s'"
+msgstr ""
+
+#: function.c:2212
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr ""
+
+#: getopt.c:661
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: parametras `%s' dviprasmis\n"
+
+#: getopt.c:685
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: argumentas „--%s“ neleidžia parametro\n"
+
+#: getopt.c:690
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: argumentas „%c%s“ neleidžia parametro\n"
+
+#: getopt.c:707 getopt.c:880
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: parametrui „%s“ reikia argumento\n"
+
+#: getopt.c:736
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neatpažintas argumentas „--%s“\n"
+
+#: getopt.c:740
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neatpažintas argumentas „%c%s“\n"
+
+#: getopt.c:766
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neleistinas parametras -- %c\n"
+
+#: getopt.c:769
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: netaisyklingas argumentas -- %c\n"
+
+#: getopt.c:799 getopt.c:929
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: parametrui reikia argumento -- %c\n"
+
+#: getopt.c:846
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: parametras „-W %s“ dviprasmis\n"
+
+#: getopt.c:864
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: parametras „-W %s“ neleidžia argumento\n"
+
+#: hash.c:49
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr ""
+
+#: hash.c:280
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr ""
+
+#: hash.c:282
+#, c-format
+msgid "Rehash=%d, "
+msgstr ""
+
+#: hash.c:283
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr ""
+
+#: implicit.c:40
+#, c-format
+msgid "Looking for an implicit rule for `%s'.\n"
+msgstr ""
+
+#: implicit.c:56
+#, c-format
+msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgstr ""
+
+#: implicit.c:317
+msgid "Avoiding implicit rule recursion.\n"
+msgstr ""
+
+#: implicit.c:491
+#, c-format
+msgid "Trying pattern rule with stem `%.*s'.\n"
+msgstr ""
+
+#: implicit.c:674
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:675
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:688
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr ""
+
+#: implicit.c:728
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr ""
+
+#: implicit.c:742
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr ""
+
+#: job.c:335
+msgid "Cannot create a temporary file\n"
+msgstr ""
+
+#: job.c:449
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr ""
+
+#: job.c:450
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr ""
+
+#: job.c:454
+#, c-format
+msgid "[%s] Error %d (ignored)"
+msgstr ""
+
+#: job.c:455
+#, c-format
+msgid "*** [%s] Error %d"
+msgstr ""
+
+#: job.c:460
+msgid " (core dumped)"
+msgstr ""
+
+#: job.c:549
+msgid "*** Waiting for unfinished jobs...."
+msgstr ""
+
+#: job.c:579
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr ""
+
+#: job.c:581 job.c:760 job.c:862 job.c:1527
+msgid " (remote)"
+msgstr ""
+
+#: job.c:758
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr ""
+
+#: job.c:759
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr ""
+
+#: job.c:763
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: job.c:861
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr ""
+
+#: job.c:920
+#, fuzzy
+msgid "write jobserver"
+msgstr "rašymo klaida: %s"
+
+#: job.c:922
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr ""
+
+#: job.c:1453 job.c:2094
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr ""
+
+#: job.c:1457 job.c:2098
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+
+#: job.c:1525
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr ""
+
+#: job.c:1778
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr ""
+
+#: job.c:1787
+msgid "read jobs pipe"
+msgstr ""
+
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Nereikia atnaujinti taikinio „%s“"
+
+#: job.c:1910
+msgid "cannot enforce load limits on this operating system"
+msgstr ""
+
+#: job.c:1912
+#, fuzzy
+msgid "cannot enforce load limit: "
+msgstr "%s: nepayko pakeisti limito: %s"
+
+#: job.c:1985
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+
+#: job.c:1987
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+
+#: job.c:2015
+msgid "Could not restore stdin\n"
+msgstr ""
+
+#: job.c:2023
+msgid "Could not restore stdout\n"
+msgstr ""
+
+#: job.c:2127
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr ""
+
+#: job.c:2168
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: Komanda nerasta"
+
+#: job.c:2228
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: Kevalo programa nerasta"
+
+#: job.c:2237
+msgid "spawnvpe: environment space might be exhausted"
+msgstr ""
+
+#: job.c:2461
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')\n"
+msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n"
+
+#: job.c:2951
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr ""
+
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr ""
+
+#: main.c:303
+msgid "Options:\n"
+msgstr ""
+
+#: main.c:304
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr ""
+
+#: main.c:306
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr ""
+
+#: main.c:308
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+
+#: main.c:311
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr ""
+
+#: main.c:313
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr ""
+
+#: main.c:315
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+
+#: main.c:323
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr ""
+
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr ""
+
+#: main.c:327
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+
+#: main.c:330
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+
+#: main.c:332
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+
+#: main.c:334
+msgid ""
+"  -l [N], --load-average[=N], --max-load[=N]\n"
+"                              Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+
+#: main.c:337
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+
+#: main.c:339
+msgid ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+
+#: main.c:342
+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:345
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr ""
+
+#: main.c:347
+msgid ""
+"  -q, --question              Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+
+#: main.c:349
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr ""
+
+#: main.c:351
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr ""
+
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr ""
+
+#: main.c:355
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+
+#: main.c:358
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr ""
+
+#: main.c:360
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr ""
+
+#: main.c:362
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr ""
+
+#: main.c:364
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+
+#: main.c:366
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+
+#: main.c:369
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+
+#: main.c:564
+msgid "empty string invalid as file name"
+msgstr "negalimas tuščias failo pavadinimas"
+
+#: main.c:650
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "nežinomas debug lygio specifikacija „%s“"
+
+#: main.c:690
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr ""
+
+#: main.c:697
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+
+#: main.c:705
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr ""
+
+#: main.c:706
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr ""
+
+#: main.c:781 main.c:792
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr ""
+
+#: main.c:834
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+
+#: main.c:1273
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr ""
+
+#: main.c:1275
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr ""
+
+#: main.c:1501
+msgid "Makefile from standard input specified twice."
+msgstr ""
+
+#: main.c:1539 vmsjobs.c:500
+msgid "fopen (temporary file)"
+msgstr ""
+
+#: main.c:1545
+msgid "fwrite (temporary file)"
+msgstr ""
+
+#: main.c:1703
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr ""
+
+#: main.c:1704
+msgid "Resetting to single job (-j1) mode."
+msgstr ""
+
+#: main.c:1719
+msgid "internal error: multiple --jobserver-fds options"
+msgstr ""
+
+#: main.c:1727
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr ""
+
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr ""
+
+#: main.c:1750
+msgid "dup jobserver"
+msgstr ""
+
+#: main.c:1753
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+
+#: main.c:1777
+msgid "creating jobs pipe"
+msgstr ""
+
+#: main.c:1792
+msgid "init jobserver pipe"
+msgstr ""
+
+#: main.c:1812
+msgid "Symbolic links not supported: disabling -L."
+msgstr ""
+
+#: main.c:1892
+msgid "Updating makefiles....\n"
+msgstr "Atnaujinami „make“ failai....\n"
+
+#: main.c:1917
+#, c-format
+msgid "Makefile `%s' might loop; not remaking it.\n"
+msgstr ""
+
+#: main.c:1996
+#, c-format
+msgid "Failed to remake makefile `%s'."
+msgstr ""
+
+#: main.c:2013
+#, c-format
+msgid "Included makefile `%s' was not found."
+msgstr ""
+
+#: main.c:2018
+#, fuzzy, c-format
+msgid "Makefile `%s' was not found"
+msgstr "„Make“ failas „%s“ nerastas"
+
+#: main.c:2086
+msgid "Couldn't change back to original directory."
+msgstr "Nepavyko grįžti į pirminį aplanką."
+
+#: main.c:2102
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr ""
+
+#: main.c:2215
+msgid "unlink (temporary file): "
+msgstr ""
+
+#: main.c:2247
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ""
+
+#: main.c:2270
+msgid "No targets specified and no makefile found"
+msgstr "Nenurodyta tikslų ir nerasta „make“ failų"
+
+#: main.c:2272
+msgid "No targets"
+msgstr "Nėra tikslų"
+
+#: main.c:2277
+msgid "Updating goal targets....\n"
+msgstr "Atnaujinami tikslai...\n"
+
+#: main.c:2306
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr ""
+
+#: main.c:2470
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n"
+
+#: main.c:2476
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Ši programa sukompiliuota %s sistemai\n"
+
+#: main.c:2478
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Ši programa sukompiliuota %s (%s) sistemai\n"
+
+#: main.c:2481
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Praneškite apie klaidas adresu <bug-make@gnu.org>\n"
+
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "parametrui „-%c“ reikia netuščio argumento"
+
+#: main.c:2617
+#, fuzzy, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento"
+
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\n"
+msgstr ""
+"\n"
+"%sŠi programa sukompiliuota %s sistemai\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr ""
+"\n"
+"%sŠi programa sukompiliuota %s (%s) sistemai\n"
+
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+
+#: main.c:3096
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+
+#: main.c:3237
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Įeinama į nežinomą aplanką\n"
+
+#: main.c:3239
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Išeinama iš nežinomo aplanko\n"
+
+#: main.c:3242
+#, c-format
+msgid "%s: Entering directory `%s'\n"
+msgstr "%s: Įeinama į aplanką „%s“\n"
+
+#: main.c:3245
+#, c-format
+msgid "%s: Leaving directory `%s'\n"
+msgstr "%s: Išeinama iš aplanko „%s“\n"
+
+#: main.c:3250
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Įeinama į nežinomą aplanką\n"
+
+#: main.c:3253
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Išeinama iš nežinomo aplanko\n"
+
+#: main.c:3257
+#, c-format
+msgid "%s[%u]: Entering directory `%s'\n"
+msgstr "%s[%u]: Įeinama į aplanką „%s“\n"
+
+#: main.c:3260
+#, c-format
+msgid "%s[%u]: Leaving directory `%s'\n"
+msgstr "%s[%u]: Išeinama iš aplanko „%s“\n"
+
+#: misc.c:316
+msgid ".  Stop.\n"
+msgstr ".  Pabaiga.\n"
+
+#: misc.c:337
+#, c-format
+msgid "Unknown error %d"
+msgstr "Nežinoma klaida %d"
+
+#: misc.c:347
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: misc.c:355
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
+msgid "virtual memory exhausted"
+msgstr "baigėsi virtuali atmintis"
+
+#: misc.c:708
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n"
+
+#: misc.c:729
+msgid "Initialized access"
+msgstr ""
+
+#: misc.c:808
+msgid "User access"
+msgstr ""
+
+#: misc.c:856
+msgid "Make access"
+msgstr ""
+
+#: misc.c:890
+msgid "Child access"
+msgstr ""
+
+#: misc.c:954
+#, c-format
+msgid "write error: %s"
+msgstr "rašymo klaida: %s"
+
+#: misc.c:956
+msgid "write error"
+msgstr "rašymo klaida"
+
+#: read.c:179
+msgid "Reading makefiles...\n"
+msgstr "Skaitomi „make“ failai...\n"
+
+#: read.c:333
+#, c-format
+msgid "Reading makefile `%s'"
+msgstr "Skaitomas „make“ failas „%s“"
+
+#: read.c:335
+#, c-format
+msgid " (no default goal)"
+msgstr " (nėra numatytojo tikslo)"
+
+#: read.c:337
+#, c-format
+msgid " (search path)"
+msgstr " (paieškos kelias)"
+
+#: read.c:339
+#, c-format
+msgid " (don't care)"
+msgstr " (nesvarbu)"
+
+#: read.c:341
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (nėra ~ išplėtimo)"
+
+#: read.c:759
+msgid "invalid syntax in conditional"
+msgstr "netaisyklinga sąlygos sintaksė"
+
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
+msgstr "komandos prasideda prieš pirmąjį tikslą"
+
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
+msgstr "trūksta taisyklės prieš komandas"
+
+#: read.c:1027
+#, c-format
+msgid "missing separator%s"
+msgstr "trūksta skirtuko%s"
+
+#: read.c:1029
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (ar norėjote padėti TAB simbolį vietoje 8 tarpų?)"
+
+#: read.c:1163
+msgid "missing target pattern"
+msgstr "trūksta tikslo šablono"
+
+#: read.c:1165
+msgid "multiple target patterns"
+msgstr "keli tikslo šablonai"
+
+#: read.c:1169
+#, c-format
+msgid "target pattern contains no `%%'"
+msgstr "tikslo šablone nėra „%%“"
+
+#: read.c:1293
+msgid "missing `endif'"
+msgstr "trūksta „endif“"
+
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "tuščias kintamojo pavadinimas"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
+msgstr "Perteklinis tekstas po „endef“ direktyvos"
+
+#: read.c:1392
+msgid "missing `endef', unterminated `define'"
+msgstr "trūksta „endef“, nebaigtas „define“"
+
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Perteklinis tekstas po „endef“ direktyvos"
+
+#: read.c:1490
+#, c-format
+msgid "Extraneous text after `%s' directive"
+msgstr "Perteklinis tekstas po „%s“ direktyvos"
+
+#: read.c:1499 read.c:1513
+#, c-format
+msgid "extraneous `%s'"
+msgstr "perteklinis „%s“"
+
+#: read.c:1518
+msgid "only one `else' per conditional"
+msgstr ""
+
+#: read.c:1797
+msgid "Malformed target-specific variable definition"
+msgstr ""
+
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
+msgstr ""
+
+#: read.c:1908
+msgid "mixed implicit and static pattern rules"
+msgstr ""
+
+#: read.c:1931 read.c:2112
+msgid "mixed implicit and normal rules"
+msgstr ""
+
+#: read.c:1976
+#, c-format
+msgid "target `%s' doesn't match the target pattern"
+msgstr ""
+
+#: read.c:1991 read.c:2036
+#, c-format
+msgid "target file `%s' has both : and :: entries"
+msgstr ""
+
+#: read.c:1997
+#, c-format
+msgid "target `%s' given more than once in the same rule."
+msgstr ""
+
+#: read.c:2006
+#, c-format
+msgid "warning: overriding recipe for target `%s'"
+msgstr ""
+
+#: read.c:2009
+#, c-format
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr ""
+
+#: read.c:2392
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr ""
+
+#: remake.c:234
+#, c-format
+msgid "Nothing to be done for `%s'."
+msgstr "Nėra ką daryti su „%s“."
+
+#: remake.c:235
+#, c-format
+msgid "`%s' is up to date."
+msgstr "„%s“ atnaujinti nereikia."
+
+#: remake.c:306
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr ""
+
+#: remake.c:359
+#, c-format
+msgid "%sNo rule to make target `%s'%s"
+msgstr "%sNėra taisyklės pasiekti tikslui „%s“%s"
+
+#: remake.c:361
+#, c-format
+msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s"
+
+#: remake.c:413
+#, c-format
+msgid "Considering target file `%s'.\n"
+msgstr "Svarstomas tikslo failas „%s“.\n"
+
+#: remake.c:420
+#, c-format
+msgid "Recently tried and failed to update file `%s'.\n"
+msgstr "Neseniai bandyta ir nepavyko atnaujinti failo „%s“.\n"
+
+#: remake.c:432
+#, c-format
+msgid "File `%s' was considered already.\n"
+msgstr "Failas „%s“ jau apsvarstytas.\n"
+
+#: remake.c:442
+#, c-format
+msgid "Still updating file `%s'.\n"
+msgstr "Vis dar atnaujinamas failas „%s“.\n"
+
+#: remake.c:445
+#, c-format
+msgid "Finished updating file `%s'.\n"
+msgstr "Baigtas atnaujinti failas „%s“.\n"
+
+#: remake.c:474
+#, c-format
+msgid "File `%s' does not exist.\n"
+msgstr "Failas „%s“ neegzistuoja.\n"
+
+#: remake.c:481
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+msgstr ""
+
+#: remake.c:494 remake.c:1016
+#, c-format
+msgid "Found an implicit rule for `%s'.\n"
+msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
+
+#: remake.c:496 remake.c:1018
+#, c-format
+msgid "No implicit rule found for `%s'.\n"
+msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n"
+
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
+msgstr "Nėra ką daryti su „%s“."
+
+#: remake.c:535 remake.c:1057
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr ""
+
+#: remake.c:651
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
+msgstr ""
+
+#: remake.c:657
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr ""
+
+#: remake.c:670
+#, c-format
+msgid "Giving up on target file `%s'.\n"
+msgstr ""
+
+#: remake.c:675
+#, c-format
+msgid "Target `%s' not remade because of errors."
+msgstr "Tikslas „%s“ neatnaujintas dėl klaidų."
+
+#: remake.c:727
+#, c-format
+msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgstr ""
+
+#: remake.c:732
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr ""
+
+#: remake.c:737
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr ""
+
+#: remake.c:740
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr ""
+
+#: remake.c:758
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgstr ""
+
+#: remake.c:765
+#, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr ""
+
+#: remake.c:770
+#, c-format
+msgid "Making `%s' due to always-make flag.\n"
+msgstr ""
+
+#: remake.c:778
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "Nereikia atnaujinti taikinio „%s“"
+
+#: remake.c:780
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr ""
+
+#: remake.c:800
+#, c-format
+msgid "Must remake target `%s'.\n"
+msgstr "Būtina atnaujinti taikinį „%s“.\n"
+
+#: remake.c:806
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr ""
+
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
+msgstr "Vykdomos „%s“ komandos.\n"
+
+#: remake.c:822
+#, c-format
+msgid "Failed to remake target file `%s'.\n"
+msgstr ""
+
+#: remake.c:825
+#, c-format
+msgid "Successfully remade target file `%s'.\n"
+msgstr ""
+
+#: remake.c:828
+#, c-format
+msgid "Target file `%s' needs remade under -q.\n"
+msgstr ""
+
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr ""
+
+#: remake.c:1357
+#, c-format
+msgid "Warning: File `%s' has modification time in the future"
+msgstr ""
+
+#: remake.c:1370
+#, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr ""
+
+#: remake.c:1569
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr ""
+
+#: remote-cstms.c:125
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr ""
+
+#: rule.c:499
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Neišreikštinės taisyklės"
+
+#: rule.c:514
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Nėra neišreikštinių taisyklių."
+
+#: rule.c:517
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# %u neišreikštinių taisyklių, %u"
+
+#: rule.c:526
+msgid " terminal."
+msgstr ""
+
+#: rule.c:534
+#, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr ""
+
+#: signame.c:86
+msgid "unknown signal"
+msgstr "nežinomas signalas"
+
+#: signame.c:94
+msgid "Hangup"
+msgstr ""
+
+#: signame.c:97
+msgid "Interrupt"
+msgstr "Pertraukimas"
+
+#: signame.c:100
+msgid "Quit"
+msgstr "Išeita"
+
+#: signame.c:103
+msgid "Illegal Instruction"
+msgstr "Neleistina instrukcija"
+
+#: signame.c:106
+msgid "Trace/breakpoint trap"
+msgstr ""
+
+#: signame.c:111
+msgid "Aborted"
+msgstr ""
+
+#: signame.c:114
+#, fuzzy
+msgid "IOT trap"
+msgstr "EMT gaudyklė"
+
+#: signame.c:117
+msgid "EMT trap"
+msgstr "EMT gaudyklė"
+
+#: signame.c:120
+msgid "Floating point exception"
+msgstr "Slankaus kablelio klaida"
+
+#: signame.c:123
+msgid "Killed"
+msgstr "Nutraukta"
+
+#: signame.c:126
+msgid "Bus error"
+msgstr "Magistralės klaida"
+
+#: signame.c:129
+msgid "Segmentation fault"
+msgstr "Segmentacijos klaida"
+
+#: signame.c:132
+msgid "Bad system call"
+msgstr "Blogas sisteminis kvietimas"
+
+#: signame.c:135
+msgid "Broken pipe"
+msgstr ""
+
+#: signame.c:138
+msgid "Alarm clock"
+msgstr "Žadintuvas"
+
+#: signame.c:141
+#, fuzzy
+msgid "Terminated"
+msgstr "apribota"
+
+#: signame.c:144
+#, fuzzy
+msgid "User defined signal 1"
+msgstr "%s: nutrauktas signalo %d"
+
+#: signame.c:147
+#, fuzzy
+msgid "User defined signal 2"
+msgstr "%s: nutrauktas signalo %d"
+
+#: signame.c:152 signame.c:155
+#, fuzzy
+msgid "Child exited"
+msgstr "Failas jau egzistuoja"
+
+#: signame.c:158
+msgid "Power failure"
+msgstr "Elektros maitinimo sutrikimas"
+
+#: signame.c:161
+msgid "Stopped"
+msgstr "Sustabdyta"
+
+#: signame.c:164
+msgid "Stopped (tty input)"
+msgstr "Sustabdyta (tty įvedimas)"
+
+#: signame.c:167
+msgid "Stopped (tty output)"
+msgstr "Sustabdyta (tty išvedimas)"
+
+#: signame.c:170
+msgid "Stopped (signal)"
+msgstr "Sustabdyta (signalas)"
+
+#: signame.c:173
+msgid "CPU time limit exceeded"
+msgstr "Viršytas CPU laiko limitas"
+
+#: signame.c:176
+msgid "File size limit exceeded"
+msgstr "Viršytas failo dydžio limitas"
+
+#: signame.c:179
+msgid "Virtual timer expired"
+msgstr ""
+
+#: signame.c:182
+msgid "Profiling timer expired"
+msgstr ""
+
+#: signame.c:188
+msgid "Window changed"
+msgstr "Langas pakeistas"
+
+#: signame.c:191
+msgid "Continued"
+msgstr "Pratęsta"
+
+#: signame.c:194
+msgid "Urgent I/O condition"
+msgstr ""
+
+#: signame.c:201 signame.c:210
+msgid "I/O possible"
+msgstr "Galimas įvedimas/išvedimas"
+
+#: signame.c:204
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: signame.c:207
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: signame.c:213
+msgid "Resource lost"
+msgstr "Išteklius prarastas"
+
+#: signame.c:216
+msgid "Danger signal"
+msgstr "Pavojaus signalas"
+
+#: signame.c:219
+msgid "Information request"
+msgstr "Informacijos užklausa"
+
+#: signame.c:222
+msgid "Floating point co-processor not available"
+msgstr "Slankaus kablelio koprocesorius neprieinamas"
+
+#: strcache.c:235
+#, c-format
+msgid ""
+"\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+msgstr ""
+
+#: strcache.c:237
+#, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr ""
+
+#: strcache.c:239
+#, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:241
+#, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# failų maišos lentelės statistika:\n"
+"# "
+
+#: variable.c:1541
+msgid "default"
+msgstr ""
+
+#: variable.c:1544
+msgid "environment"
+msgstr ""
+
+#: variable.c:1547
+msgid "makefile"
+msgstr ""
+
+#: variable.c:1550
+msgid "environment under -e"
+msgstr ""
+
+#: variable.c:1553
+#, fuzzy
+msgid "command line"
+msgstr "%s: komanda nerasta"
+
+#: variable.c:1556
+msgid "`override' directive"
+msgstr ""
+
+#: variable.c:1559
+msgid "automatic"
+msgstr ""
+
+#: variable.c:1570
+#, c-format
+msgid " (from `%s', line %lu)"
+msgstr ""
+
+#: variable.c:1612
+msgid "# variable set hash-table stats:\n"
+msgstr ""
+
+#: variable.c:1623
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+
+#: variable.c:1627
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+
+#: variable.c:1641
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+
+#: variable.c:1643
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+
+#: variable.h:219
+#, fuzzy, c-format
+msgid "warning: undefined variable `%.*s'"
+msgstr "%s: neatpažintas argumentas „%c%s“\n"
+
+#: vmsfunctions.c:92
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr ""
+
+#: vmsjobs.c:71
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr ""
+
+#: vmsjobs.c:184
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr ""
+
+#: vmsjobs.c:289
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+
+#: vmsjobs.c:421
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr ""
+
+#: vmsjobs.c:432
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr ""
+
+#: vmsjobs.c:450
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr ""
+
+#: vmsjobs.c:471
+#, fuzzy, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "paskutinė komanda: %s\n"
+
+#: vmsjobs.c:493
+#, c-format
+msgid "Error, empty command\n"
+msgstr ""
+
+#: vmsjobs.c:506
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr ""
+
+#: vmsjobs.c:513
+#, fuzzy, c-format
+msgid "Redirected error to %s\n"
+msgstr "skaitymo klaida: %d: %s"
+
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr ""
+
+#: vmsjobs.c:529
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr ""
+
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
+#, c-format
+msgid "Executing %s instead\n"
+msgstr ""
+
+#: vmsjobs.c:712
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr ""
+
+#: vpath.c:586
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+
+#: vpath.c:603
+msgid "# No `vpath' search paths."
+msgstr ""
+
+#: vpath.c:605
+#, c-format
+msgid ""
+"\n"
+"# %u `vpath' search paths.\n"
+msgstr ""
+
+#: vpath.c:608
+msgid ""
+"\n"
+"# No general (`VPATH' variable) search path."
+msgstr ""
+
+#: vpath.c:614
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "perteklinis „endef“"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "tuščia „override“ direktyva"
+
+#, fuzzy
+#~ msgid "invalid `override' directive"
+#~ msgstr "netaisyklinga „override“ direktyva"
index 7a8083c..175984e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,1489 +16,1505 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr ""
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr ""
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr ""
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr ""
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr ""
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
+msgid "lbr$ini_control() failed with status = %d"
 msgstr ""
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr ""
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr ""
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr ""
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr ""
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr ""
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr ""
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+msgid "#  recipe to execute"
 msgstr ""
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr ""
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr ""
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
 msgstr ""
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr ""
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr ""
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr ""
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr ""
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr ""
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr ""
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr ""
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr ""
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr ""
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr ""
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr ""
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr ""
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr ""
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr ""
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr ""
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr ""
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr ""
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr ""
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+msgid "#  Command line target."
 msgstr ""
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr ""
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr ""
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr ""
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr ""
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr ""
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr ""
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr ""
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr ""
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr ""
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr ""
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr ""
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr ""
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr ""
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr ""
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr ""
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr ""
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr ""
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr ""
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr ""
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr ""
 
-#: function.c:1453
+#: function.c:1458
 #, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1464
+#: function.c:1469
 #, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1469
+#: function.c:1474
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr ""
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2101
+#: function.c:2150
 #, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr ""
 
-#: function.c:2113
+#: function.c:2162
 #, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr ""
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr ""
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr ""
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr ""
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr ""
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr ""
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr ""
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr ""
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr ""
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr ""
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr ""
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr ""
 
-#: implicit.c:667
+#: implicit.c:674
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:668
+#: implicit.c:675
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:678
+#: implicit.c:688
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying rule prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:679
+#: implicit.c:689
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Trying implicit prerequisite `%s'.\n"
 msgstr ""
 
-#: implicit.c:710
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr ""
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr ""
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr ""
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr ""
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr ""
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr ""
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr ""
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr ""
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr ""
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr ""
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr ""
 
-#: job.c:802
+#: job.c:861
 #, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr ""
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr ""
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ""
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr ""
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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
+#: job.c:2127
 #, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr ""
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr ""
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr ""
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr ""
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 
-#: main.c:333
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr ""
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr ""
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr ""
 
-#: main.c:670
+#: main.c:690
 #, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:677
+#: main.c:697
 #, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:685
+#: main.c:705
 #, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:686
+#: main.c:706
 #, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ""
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr ""
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr ""
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr ""
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr ""
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr ""
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr ""
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr ""
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr ""
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr ""
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr ""
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr ""
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr ""
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr ""
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr ""
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr ""
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr ""
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr ""
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 
-#: main.c:2466
+#: main.c:2562
 #, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr ""
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr ""
 
-#: main.c:2942
+#: main.c:3054
 #, 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"
+msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr ""
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr ""
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr ""
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr ""
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr ""
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr ""
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr ""
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr ""
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ""
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr ""
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr ""
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr ""
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr ""
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr ""
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr ""
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr ""
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr ""
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr ""
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr ""
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr ""
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr ""
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr ""
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr ""
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr ""
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr ""
-
-#: read.c:687
-msgid "invalid `override' directive"
+#: read.c:891
+msgid "recipe commences before first target"
 msgstr ""
 
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:940
+msgid "missing rule before recipe"
 msgstr ""
 
-#: read.c:905
-msgid "missing rule before commands"
-msgstr ""
-
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr ""
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr ""
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr ""
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr ""
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr ""
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr ""
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr ""
+
+#: read.c:1367
+msgid "extraneous text after `define' directive"
 msgstr ""
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr ""
 
-#: read.c:1454
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr ""
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr ""
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr ""
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr ""
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr ""
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr ""
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
+msgid "warning: overriding recipe for target `%s'"
 msgstr ""
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr ""
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr ""
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr ""
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr ""
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr ""
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr ""
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr ""
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr ""
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr ""
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr ""
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr ""
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr ""
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr ""
 
-#: remake.c:462 remake.c:970
+#: remake.c:502
 #, c-format
-msgid "Using default commands for `%s'.\n"
+msgid "Using default recipe for `%s'.\n"
 msgstr ""
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr ""
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr ""
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr ""
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr ""
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ""
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr ""
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr ""
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr ""
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr ""
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr ""
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
+msgid "Recipe of `%s' is being run.\n"
 msgstr ""
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr ""
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr ""
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr ""
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr ""
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr ""
 
-#: remake.c:1313
+#: remake.c:1370
 #, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr ""
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ""
@@ -1508,282 +1524,289 @@ msgstr ""
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr ""
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr ""
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr ""
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr ""
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr ""
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr ""
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr ""
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr ""
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr ""
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr ""
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr ""
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr ""
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr ""
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr ""
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr ""
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr ""
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr ""
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr ""
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr ""
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr ""
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr ""
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr ""
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr ""
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr ""
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr ""
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr ""
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr ""
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr ""
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr ""
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr ""
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr ""
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr ""
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr ""
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: variable.c:1369
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+
+#: variable.c:1541
 msgid "default"
 msgstr ""
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr ""
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr ""
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr ""
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr ""
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr ""
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr ""
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr ""
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
+msgid "sys$search() failed with %d\n"
 msgstr ""
 
 #: vmsjobs.c:71
@@ -1791,95 +1814,100 @@ msgstr ""
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr ""
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr ""
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr ""
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr ""
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr ""
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr ""
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr ""
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr ""
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
 "# %u `vpath' search paths.\n"
 msgstr ""
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
index 28adffa..1f15184 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index 5c71066..5235d0c 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
-# Translation of make-3.81-b3 to Dutch.
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Dutch translations for make.
+# Copyright (C) 2010 Free Software Foundation, Inc.
 # This file is distributed under the same license as the make package.
-# Benno Schulenberg <benno@nietvergeten.nl>, 2005.
-# Taco Witte <tcwitte@cs.uu.nl>, 2004.
 #
+# Taco Witte <tcwitte@cs.uu.nl>, 2004.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010.
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81-b3\n"
+"Project-Id-Version: make-3.81.91\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-29 22:55+0200\n"
-"Last-Translator: Benno Schulenberg <benno@nietvergeten.nl>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2010-07-24 11:28+0200\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.10.1\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "poging tot gebruik van niet-ondersteunde functie: '%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "het 'touchen' van een archiefonderdeel is niet mogelijk op VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Archief '%s' bestaat niet"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: '%s' is geen geldig archief"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: Onderdeel '%s' bestaat niet in '%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: ar_member_touch van '%s' is mislukt"
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
-msgstr "uitpakken van module-info door lbr$set_module is mislukt, status = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr ""
+"uitpakken van module-info door lbr$set_module() is mislukt, afsluitwaarde= %d"
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
-msgstr "lbr$ini_control is mislukt, status = %d"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() is mislukt, afsluitwaarde = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "kan bibliotheek '%s' niet openen om onderdeel '%s' op te zoeken"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Onderdeel '%s'%s: %ld bytes bij %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (naam kan afgekapt zijn)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modus = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Afgebroken.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] Archiefonderdeel '%s' kan foutief zijn; niet verwijderd"
+msgstr "*** [%s] Archiefonderdeel '%s' kan verkeerd zijn; niet verwijderd"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Archiefonderdeel '%s' kan foutief zijn; niet verwijderd"
+msgstr "*** Archiefonderdeel '%s' kan verkeerd zijn; niet verwijderd"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Verwijderen van bestand '%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Verwijderen van bestand '%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
-msgstr "#  uit te voeren opdrachten"
+#: commands.c:676
+msgid "#  recipe to execute"
+msgstr "#  uit te voeren recept"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (ingebouwd):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (van '%s', regel %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,225 +127,218 @@ msgstr ""
 "\n"
 "# Mappen\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# kan status van %s niet opvragen.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (sleutel %s, wijzigingstijd %d): kan niet worden geopend.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (apparaat %d, inode [%d,%d,%d]): kan niet worden geopend.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (apparaat %ld, inode %ld): kan niet worden geopend.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (sleutel %s, wijzigingstijd %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (apparaat %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (apparaat %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Geen"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " bestanden, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "geen"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " onmogelijkheden"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " tot nu toe."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " onmogelijkheden in %lu mappen.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)"
+msgstr "Recursieve variabele '%s' verwijst naar zichzelf, uiteindelijk"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "onafgemaakte verwijzing naar variabele"
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
-msgstr "Opdrachten waren opgegeven voor bestand '%s' bij %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu,"
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
-msgstr ""
-"Opdrachten voor bestand '%s' werden gevonden met impliciete regel-"
-"zoekopdracht,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'."
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
-msgstr ""
-"Opdrachten voor '%s' zullen worden genegeerd ten gunste van die voor '%s'."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgstr "Recept voor '%s' zal worden genegeerd ten gunste van die voor '%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
-msgstr ""
-"kan enkele dubbele punt '%s' niet hernoemen tot dubbele dubbele punt '%s'"
+msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
-msgstr ""
-"kan dubbele dubbele punt '%s' niet hernoemen tot enkele dubbele punt '%s'"
+msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Verwijderen van tussentijds bestand '%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Verwijderen van tussentijdse bestanden...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Huidige tijd"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
-msgstr "# Geen doel:"
+msgstr "# Is geen doel:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Waardevol bestand (vereiste van .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Nepdoel (vereiste van .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+msgid "#  Command line target."
 msgstr "#  Doel afkomstig van opdrachtregel."
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Een standaard, of MAKEFILES, of -include/sinclude makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Impliciete regel-zoekopdracht is uitgevoerd."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Impliciete regel-zoekopdracht is niet uitgevoerd."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Impliciete/statische patroonstam: '%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Bestand is een tussentijds vereiste."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Maakt ook:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Wijzigingstijd is nooit gecontroleerd."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Bestand bestaat niet."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Bestand is erg oud."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Laatst gewijzigd %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Bestand is bijgewerkt."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Bestand is niet bijgewerkt."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
-msgstr "#  Op dit moment lopende opdrachten (DIT IS EEN PROGRAMMAFOUT)."
+#: file.c:968
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
-msgstr ""
-"#  Op dit moment lopende afhankelijkheden-opdrachten (DIT IS EEN "
-"PROGRAMMAFOUT)."
+#: file.c:971
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Succesvol bijgewerkt."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Moet worden bijgewerkt (-q is ingesteld)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Bijwerken is mislukt."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Ongeldige waarde in 'update_status'-onderdeel!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Ongeldige waarde in 'command_state'-onderdeel!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -351,7 +346,7 @@ msgstr ""
 "\n"
 "# Bestanden"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -361,261 +356,263 @@ msgstr ""
 "# hashtabel-statistieken van bestanden:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "niet-numeriek eerste argument van 'word'-functie"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "eerste argument van 'word'-functie moet groter zijn dan 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "niet-numeriek eerste argument van 'wordlist'-functie"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "niet-numeriek tweede argument van 'wordlist'-functie"
 
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) is mislukt (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) is mislukt (e=%d)\n"
+#: function.c:1458
+#, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%ld)\n"
 
 #: function.c:1469
-#, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() is mislukt (e=%d)\n"
+#, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() is mislukt\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() is mislukt (e=%ld)\n"
 
-#: function.c:1725
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() is mislukt\n"
+
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Opschonen van tijdelijk batch-bestand %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Onvoldoende aantal argumenten (%d) voor functie '%s'"
+msgstr "onvoldoende aantal argumenten (%d) voor functie '%s'"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Niet-geïmplementeerd op dit platform: functie '%s'"
+msgstr "niet-geïmplementeerd op dit platform: functie '%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: optie '%s' is niet eenduidig\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: optie '--%s' staat geen argument toe\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: optie '%c%s' staat geen argument toe\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: optie '%s' vereist een argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: onbekende optie '--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: onbekende optie '%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: optie vereist een argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: optie '-W %s' is niet eenduidig\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: optie '-W %s' staat geen argument toe\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
-msgstr "kan geen %ld bytes toewijzen voor hashtabel: onvoldoende geheugen"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr ""
+"kan %lu bytes voor hashtabel niet reserveren: onvoldoende geheugen "
+"beschikbaar"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Belasting=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr "Rehash=%d, "
+msgstr "Herhash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Botsingen=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Zoeken naar impliciete regel voor '%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Impliciete regelrecursie wordt ontweken.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Patroonregel wordt geprobeerd met stam '%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Onmogelijke regelvereiste '%s' wordt verworpen.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Proberen van impliciete vereiste '%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Proberen van regelvereiste '%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Proberen van impliciete vereiste '%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "Kan geen tijdelijk bestand aanmaken\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Fout 0x%x (genegeerd)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Fout 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Fout %d (genegeerd)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Fout %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
-msgstr " (coredump gemaakt)"
+msgstr " (geheugendump gemaakt)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Wachten op onvoltooide taken..."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
-msgstr "Levend kind 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Levend kind %p (%s) PID %s %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (ginds)"
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
-msgstr "Beëindigen van verliezend kind 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Beëindigen van verliezend kind %p PID %s %s\n"
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
-msgstr "Beëindigen van winnend kind 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Beëindigen van winnend kind %p PID %s %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Opschonen van tijdelijk batch-bestand %s\n"
 
-#: job.c:802
+#: job.c:861
 #, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "Verwijderen van kind 0x%08lx PID %ld%s uit ketting.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Verwijderen van kind %p PID %s%s uit de ketting.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "schrijven naar taakserver"
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
-msgstr "Token losgelaten voor kind 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
+msgstr "Token vrijgegeven voor kind %p (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() kan geen proces starten (e=%d)\n"
+msgstr "process_easy() kan geen proces starten (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -624,518 +621,549 @@ msgstr ""
 "\n"
 "%d argumenten geteld bij mislukte start\n"
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
-msgstr "Opname van kind 0x%08lx (%s) PID %ld%s in de ketting.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Opname van kind %p (%s) PID %s%s in de ketting.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
-msgstr "Token verkregen voor kind 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Token verkregen voor kind %p (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "lezen van taken-pijp"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr "Recept uit %s:%lu wordt aangeroepen om doel '%s' bij te werken.\n"
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Ingebouwd recept wordt aangeroepen om doel '%s' bij te werken.\n"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "kan belastingsgrens niet afdwingen: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 "geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet "
 "dupliceren\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 "geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet "
 "dupliceren\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr "Kan standaardinvoer niet herstellen\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr "Kan standaarduitvoer niet herstellen\n"
 
-#: job.c:2016
-#, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() kan geen proces starten (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "'make' heeft kind met PID %d verwerkt, wacht nog op PID %d\n"
+#: job.c:2127
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "'make' heeft kind met PID %s verwerkt, maar wacht nog op PID %s\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Opdracht niet gevonden"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell-programma niet gevonden"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Maken van tijdelijk batch-bestand %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Inhoud van batch-bestand:%s\n"
+"\t%s\n"
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
-msgstr "Opties:\n"
+msgstr ""
+"  \n"
+"Opties:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      Genegeerd voor compatibiliteit.\n"
+msgstr ""
+"  -b, -m                       (genegeerd, maar herkend wegens "
+"compatibiliteit)\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr "  -B, --always-make           Onvoorwaardelijk alle doelen maken.\n"
+msgstr "  -B, --always-make            onvoorwaardelijk alle doelen maken\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
-msgstr "  -C MAP, --directory=MAP     Naar MAP gaan alvorens iets te doen.\n"
+msgstr ""
+"  -C MAP, --directory=MAP      naar deze map gaan alvorens iets te doen\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          Veel informatie weergeven voor het debuggen.\n"
+"  -d                           veel informatie weergeven voor het debuggen\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=VLAGGEN]           Verschillende soorten debuginformatie "
-"weergeven.\n"
+"  --debug[=VLAGGEN]            verschillende soorten debuginformatie "
+"weergeven\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
-"  -e, --environment-overrides Omgevingsvariabelen gaan boven makefiles.\n"
+"  -e, --environment-overrides  omgevingsvariabelen gaan boven Makefiles\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+"  --eval=TEKST                 deze TEKST als Makefile-statement evalueren\n"
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 "  -f BESTAND, --file=BESTAND, --makefile=BESTAND\n"
-"                              BESTAND lezen als een makefile.\n"
+"                               het gegeven bestand als Makefile gebruiken\n"
+"\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "  -h, --help                  Dit bericht weergeven en stoppen.\n"
+msgstr "  -h, --help                   deze hulptekst tonen en stoppen\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "  -i, --ignore-errors         Fouten van opdrachten negeren.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors          alle fouten in recepten negeren\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
-"  -I MAP, --include-dir=MAP   MAP doorzoeken naar ingesloten makefiles.\n"
+"  -I MAP, --include-dir=MAP    deze map doorzoeken naar ingevoegde "
+"Makefiles\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          N taken tegelijk toestaan; oneindig bij geen "
-"argument.\n"
+"  -j [N], --jobs[=N]           het uitvoeren van N taken tegelijk toestaan;\n"
+"                               zonder N is het aantal onbeperkt\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
-"  -k, --keep-going            Doorgaan als sommige doelen niet gemaakt "
-"kunnen worden.\n"
+"  -k, --keep-going             doorgaan als een doel niet gemaakt kan "
+"worden\n"
 
-#: main.c:320
+#: main.c:334
 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"
-"                              Niet meerdere taken starten, behalve als "
-"systeembelasting lager is dan N.\n"
+"                               alleen extra taken starten als de\n"
+"                               systeembelasting lager is dan N\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times   De laatste mtime tussen symbolische koppeling "
-"en doel gebruiken.\n"
+"  -L, --check-symlink-times    van een symbolische koppeling en zijn doel "
+"de\n"
+"                               laatste wijzigingstijd gebruiken\n"
+"\n"
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Opdrachten niet uitvoeren, alleen weergeven.\n"
+"                               recepten niet uitvoeren, alleen weergeven\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
 "  -o BESTAND, --old-file=BESTAND, --assume-old=BESTAND\n"
-"                              BESTAND als erg oud beschouwen en niet opnieuw "
-"maken.\n"
+"                               BESTAND als oud beschouwen, niet opnieuw "
+"maken\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
-"  -p, --print-data-base       Interne gegevensbank van 'make' weergeven.\n"
+"  -p, --print-data-base        interne gegevensbank van 'make' weergeven\n"
 
-#: main.c:333
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"  -q, --question              Geen opdrachten uitvoeren; afsluitstatus geeft "
-"aan of alles bijgewerkt is.\n"
+"  -q, --question               geen recepten uitvoeren; de afsluitwaarde\n"
+"                               geeft aan of alles bijgewerkt is\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
-"  -r, --no-builtin-rules      Ingebouwde impliciete regels uitzetten.\n"
+"  -r, --no-builtin-rules       ingebouwde impliciete regels uitzetten\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Ingebouwde variabele-instellingen uitzetten.\n"
+"  -R, --no-builtin-variables   ingebouwde instellingen van variabelen "
+"uitzetten\n"
+"\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
-msgstr "  -s, --silent, --quiet       Opdrachten niet weergeven.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet        recepten niet weergeven\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
-msgstr "  -S, --no-keep-going, --stop Optie -k uitzetten.\n"
+msgstr "  -S, --no-keep-going, --stop  optie '-k' uitzetten\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Doelen aanraken in plaats van opnieuw maken.\n"
+"  -t, --touch                  doelen aanraken in plaats van opnieuw maken\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr ""
-"  -v, --version               Versienummer van 'make' weergeven en stoppen.\n"
+msgstr "  -v, --version                versienummer tonen en stoppen\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       De huidige map weergeven.\n"
+msgstr "  -w, --print-directory        de huidige map weergeven\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        Optie -w uitzetten, zelfs als het impliciet "
-"aangezet was.\n"
+"  --no-print-directory         optie '-w' uitzetten, ook als deze impliciet\n"
+"                               was aangezet\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 "  -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n"
-"                              BESTAND als oneindig nieuw beschouwen.\n"
+"                               BESTAND als oneindig nieuw beschouwen\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  Waarschuwen als naar een ongedefinieerde "
-"variabele wordt verwezen.\n"
+"  --warn-undefined-variables   waarschuwen als naar een ongedefinieerde\n"
+"                               variabele wordt verwezen\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "lege tekenreeks is ongeldig als bestandsnaam"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "onbekende aanduiding '%s' voor debug-niveau"
 
-#: main.c:670
-#, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%x, adres = 0x%x)\n"
+#: main.c:690
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%lx, adres = 0x%p)\n"
 
-#: main.c:677
-#, fuzzy, c-format
+#: main.c:697
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Filter voor onbehandelde uitzondering is aangeroepen vanuit programma %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:685
-#, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Toegangsovertreding: schrijfopdracht op adres %x\n"
+#: main.c:705
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n"
 
-#: main.c:686
-#, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Toegangsovertreding: leesopdracht op adres %x\n"
+#: main.c:706
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n"
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
-msgstr "find_and_set_shell stelt default_shell = %s in\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() stelt default_shell = %s in\n"
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
-msgstr "find_and_set_shell stelt na doorzoeken van pad default_shell = %s in\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+"find_and_set_shell() stelt na doorzoeken van pad default_shell = %s in\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s slaapt gedurende 30 seconden..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "klaar met 30 seconden slapen.  Make gaat verder.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile op standaardinvoer is dubbel opgegeven."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (tijdelijk bestand)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (tijdelijk bestand)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Parallele taken (-j) worden op dit platform niet ondersteund."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Opnieuw instellen op enkele-taakmodus (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
-msgstr "interne fout: meerdere opties --jobserver-fds"
+msgstr "*interne fout*: meerdere opties '--jobserver-fds'"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "interne fout: ongeldige tekenreeks '%s' voor --jobserver-fds"
+msgstr "*interne fout*: ongeldige tekenreeks '%s' voor '--jobserver-fds'"
+
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n"
 
-#: main.c:1674
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
-"Waarschuwing: -jN is afgedwongen in een deelproces: taakserver-modus "
+"Waarschuwing: '-jN' is afgedwongen in een deelproces: taakserver-modus "
 "uitgezet."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dubbele taakserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
-"Waarschuwing: taakserver onbeschikbaar: -j1 wordt gebruikt.  Voeg '+' toe "
-"aan de ouderregel."
+"Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt.  Voeg '+' "
+"toe aan de ouderregel."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "maken van taken-pijp"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "initialiseren van taakserver-pijp"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
-"Symbolische koppelingen worden niet ondersteund: -L wordt uitgeschakeld."
+"Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Bijwerken van makefiles...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Opnieuw maken van makefile '%s' is mislukt."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Ingesloten makefile '%s' is niet gevonden."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefile '%s' is niet gevonden."
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Kan niet terugkeren naar oorspronkelijke map."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Opnieuw uitvoeren[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "verwijderen (van tijdelijk bestand): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL bevat meer dan één doel"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Geen doelen opgegeven en geen makefile gevonden"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Geen doelen"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Bijwerken van doelen...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "Waarschuwing:  Klokafwijking geconstateerd.  Het maken is mogelijk "
 "onvolledig gebeurd."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Gebruik:  %s [opties] [doel] ...\n"
+msgstr "Gebruik:  %s [OPTIES] [DOEL]...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Dit programma is gemaakt voor %s\n"
+"Dit programma is gemaakt voor %s.\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Dit programma is gemaakt voor %s (%s)\n"
+"Dit programma is gemaakt voor %s (%s).\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "Rapporteer programmafouten aan <bug-make@gnu.org>,\n"
-"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+"meld gebreken in de vertaling aan <vertaling@vrijschrift.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "de optie '-%c' vereist een niet-lege tekenreeks als argument"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "de optie '%s%sc' vereist een niet-lege tekenreeks als argument"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "de optie '-%c' vereist een positief, geheel argument"
 
-#: main.c:2942
+#: main.c:3054
 #, 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 ""
-"%sDit is vrije programmatuur; zie de brontekst voor de kopieervoorwaarden.\n"
-"%sEr is GEEN garantie; zelfs niet voor VERHANDELBAARHEID of\n"
-"%sGESCHIKTHEID VOOR EEN BEPAALD DOEL.\n"
+msgid "%sBuilt for %s\n"
+msgstr "%sDit programma is gemaakt voor %s.\n"
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
-msgstr ""
-"\n"
-"%sDit programma is gemaakt voor %s\n"
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sDit programma is gemaakt voor %s (%s).\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sDit programma is gemaakt voor %s (%s)\n"
+"%sLicentie GPLv3+: GNU GPL versie 3 of nieuwer <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sDit is vrije software: u mag het vrijelijk wijzigen en verder "
+"verspreiden.\n"
+"%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1144,7 +1172,7 @@ msgstr ""
 "\n"
 "# Make-gegevensbank, weergegeven op %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1153,305 +1181,297 @@ msgstr ""
 "\n"
 "# Make-gegevensbank voltooid op %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Een onbekende map wordt binnengegaan\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Een onbekende map wordt verlaten\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Map '%s' wordt binnengegaan\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Map '%s' wordt verlaten\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Een onbekende map wordt binnengegaan\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Een onbekende map wordt verlaten\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Map '%s' wordt binnengegaan\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Map '%s' wordt verlaten\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Gestopt.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Onbekende fout %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
-msgstr "onvoldoende virtueel geheugen"
+msgstr "onvoldoende geheugen beschikbaar"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: gebruiker %lu (echt %lu), groep %lu (echt %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Toegang geïnitialiseerd"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Gebruikerstoegang"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Make-toegang"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Kindtoegang"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "schrijffout: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "schrijffout"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Lezen van makefiles...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Lezen van makefile '%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (geen standaarddoel)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (zoekpad)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (maakt niet uit)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (geen ~-expansie)"
+msgstr " (geen expansie van ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "ongeldige syntaxis in voorwaardelijk deel"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "extra 'endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "lege naam van variabele"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "lege 'override'-opdracht"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "ongeldige 'override'-opdracht"
+#: read.c:891
+msgid "recipe commences before first target"
+msgstr "recept begint voor eerste doel"
 
-#: read.c:854
-msgid "commands commence before first target"
-msgstr "opdrachten beginnen voor eerste doel"
+#: read.c:940
+msgid "missing rule before recipe"
+msgstr "ontbrekende regel voor recept"
 
-#: read.c:905
-msgid "missing rule before commands"
-msgstr "ontbrekende regel voor opdrachten"
-
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "ontbrekend scheidingsteken%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (bedoelde u TAB in plaats van 8 spaties?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "ontbrekend doelpatroon"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "meerdere doelpatronen"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "doelpatroon bevat geen '%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "ontbrekende 'endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
-msgstr "Extra tekst na 'endef'-opdracht"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "lege naam van variabele"
 
-#: read.c:1411
+#: read.c:1367
+msgid "extraneous text after `define' directive"
+msgstr "extra tekst na 'define'-opdracht"
+
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "ontbrekende 'endef', onafgemaakte 'define'"
 
-#: read.c:1454
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr "extra tekst na 'endef'-opdracht"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
-msgstr "Extra tekst na '%s'-opdracht"
+msgstr "extra tekst na '%s'-opdracht"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "extra '%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "slechts één 'else' per voorwaardelijk deel"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr "Onjuiste doelspecifieke variabele-definitie"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr "vereisten kunnen niet in opdrachtscripts gedefinieerd worden"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
+msgstr "vereisten kunnen niet in recepten gedefinieerd worden"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "gemengde impliciete en statische patroonregels"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "gemengde impliciete en normale regels"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "doel '%s' komt niet overeen met doelpatroon"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
-msgstr "doelbestand '%s' heeft zowel ':' als '::' ingangen"
+msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel."
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr "Waarschuwing: er wordt voorbijgegaan aan opdrachten voor doel '%s'"
+msgid "warning: overriding recipe for target `%s'"
+msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'"
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
-msgstr "Waarschuwing: oude opdrachten voor doel '%s' worden genegeerd"
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr "Waarschuwing: oud recept voor doel '%s' wordt genegeerd"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Waarschuwing: NUL-teken gezien; de rest van de regel wordt genegeerd"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
-msgstr "Er is niets te doen voor '%s'."
+msgstr "Er hoeft niets gedaan te worden voor '%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "'%s' is bijgewerkt."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Bijknippen van bestand '%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sEr is geen regel om doel '%s' te maken%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sEr is geen regel om doel '%s' te maken, nodig voor '%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Doelbestand '%s' wordt overwogen.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Bijwerken van bestand '%s' is recent geprobeerd en mislukt.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Bestand '%s' was al overwogen.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Bestand '%s' wordt nog bijgewerkt.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Bijwerken van bestand '%s' is voltooid.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Bestand '%s' bestaat niet.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1459,134 +1479,139 @@ msgstr ""
 "*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie "
 "tijdsstempel"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Impliciete regel voor '%s' gevonden.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Geen impliciete regel voor '%s' gevonden.\n"
 
-#: remake.c:462 remake.c:970
+#: remake.c:502
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n"
+msgid "Using default recipe for `%s'.\n"
+msgstr "Standaardrecept wordt gebruikt voor '%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Circulaire afhankelijkheid %s <- %s is verworpen."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "De vereisten van '%s' worden nu gemaakt.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Pogingen voor doelbestand '%s' worden gestaakt.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Vereiste '%s' is alleen-ordenen voor doel '%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Vereiste '%s' van doel '%s' bestaat niet.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Vereiste '%s' is ouder dan doel '%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "Doel '%s' is dubbele dubbele punt en heeft geen vereisten.\n"
+msgstr "Doel '%s' is dubbeldubbelpunts en heeft geen vereisten.\n"
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
-msgstr ""
-"Er zijn geen opdrachten voor '%s' en geen van de vereisten zijn veranderd.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr "Er is geen recept voor '%s' en geen van de vereisten zijn veranderd.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Doel '%s' hoeft niet opnieuw gemaakt te worden"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; VPATH-naam '%s' wordt gebruikt"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "'%s' moet opnieuw gemaakt worden.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  VPATH-naam '%s' wordt genegeerd.\n"
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
-msgstr "Opdrachten van '%s' worden nu uitgevoerd.\n"
+msgid "Recipe of `%s' is being run.\n"
+msgstr "Recept van '%s' wordt nu uitgevoerd.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Doelbestand '%s' is succesvol opnieuw gemaakt.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst"
 
-#: remake.c:1313
+#: remake.c:1370
 #, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr ""
-"Waarschuwing: bestand '%s' heeft een wijzigingstijd %.2g s in de toekomst"
+"Waarschuwing: bestand '%s' heeft een wijzigingstijd %s seconden in de "
+"toekomst"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS-element '%s' is geen patroon"
@@ -1596,7 +1621,7 @@ msgstr ".LIBPATTERNS-element '%s' is geen patroon"
 msgid "Customs won't export: %s\n"
 msgstr "Customs kan niet exporteren: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1604,7 +1629,7 @@ msgstr ""
 "\n"
 "# Impliciete regels"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1612,7 +1637,7 @@ msgstr ""
 "\n"
 "# Geen impliciete regels."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1621,231 +1646,246 @@ msgstr ""
 "\n"
 "# %u impliciete regels, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "PROGRAMMAFOUT: num_pattern_rules is verkeerd!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "onbekend signaal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
-msgstr "Afgebroken (HUP)"
+msgstr "Opgehangen"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
-msgstr "Afgebroken (interrupt)"
+msgstr "Onderbroken"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Afgesloten"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Onjuiste bewerking"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
-msgstr "Breekpunt"
+msgstr "Traceer/breekpunt-instructie"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
-msgstr "Afgebroken (abort)"
+msgstr "Afgebroken"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
-msgstr "Afgebroken (IOT)"
+msgstr "IOT-instructie"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
-msgstr "Ongeïmplementeerde instructie (EMT)"
+msgstr "EMT-instructie"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
-msgstr "Drijvende-komma-berekeningsfout"
+msgstr "Drijvendekomma-berekeningsfout"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
-msgstr "Afgebroken (killed)"
+msgstr "Geëlimineerd"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Busfout"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Segmentatiefout"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Onjuiste systeemaanroep"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Gebroken pijp"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
-msgstr "Alarmklok"
+msgstr "Wekker"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
-msgstr "Afgebroken (terminated)"
+msgstr "Beëindigd"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
-msgstr "Door gebruiker gedefinieerd signaal 1"
+msgstr "Gebruikergedefinieerd signaal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
-msgstr "Door gebruiker gedefinieerd signaal 2"
+msgstr "Gebruikergedefinieerd signaal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
-msgstr "Kind is afgesloten"
+msgstr "Dochter is afgesloten"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Stroomstoring"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
-msgstr "Gestopt"
+msgstr "Gepauzeerd"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
-msgstr "Gestopt (tty-invoer)"
+msgstr "Gepauzeerd (terminalinvoer)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
-msgstr "Gestopt (tty-uitvoer)"
+msgstr "Gepauzeerd (terminaluitvoer)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
-msgstr "Gestopt (signaal)"
+msgstr "Gepauzeerd (signaal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
-msgstr "Processortijdsgrens is overschreden"
+msgstr "Limiet op processortijd is overschreden"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
-msgstr "Bestandsgroottegrens is overschreden"
+msgstr "Limiet op bestandsgrootte is overschreden"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtuele tijdopnemer is verlopen"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
-msgstr "Profilerende tijdopnemer is verlopen"
+msgstr "Tijdopnemer voor analyse is verlopen"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Venster is veranderd"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Doorgegaan"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
-msgstr "Spoedeisende I/O-omstandigheid"
+msgstr "Urgente in-/uitvoertoestand"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
-msgstr "I/O mogelijk"
+msgstr "In-/uitvoer is mogelijk"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Hulpbron verloren"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Gevaarsignaal"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Verzoek om informatie"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
-msgstr "Drijvende-komma-co-processor is niet beschikbaar"
+msgstr "Drijvendekomma-coprocessor is niet beschikbaar"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s Aantal tekenreeksen in strcache: %d / lookups = %lu / treffers = %lu\n"
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s Aantal strcache-buffers: %d (* %d bytes/buffer = %d bytes)\n"
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s Gebruikte strcache: totaal = %d (%d) / max = %d / min = %d / gemiddeld = %"
+"d\n"
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s Vrije strcache: totaal = %d (%d) / max = %d / min = %d / gemiddeld = %d\n"
 
-#: variable.c:1369
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# strcache-hashtabel-statistieken:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
 msgstr "standaard"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "omgeving"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "omgeving onder -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "opdrachtregel"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "'override'-opdracht"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatisch"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (van '%s', regel %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# variabele verzameling van hashtabel-statistieken:\n"
+msgstr "# Statistieken van hashtabel van variabelenverzameling:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1853,7 +1893,7 @@ msgstr ""
 "\n"
 "# Variabelen\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1861,7 +1901,7 @@ msgstr ""
 "\n"
 "# Patroonspecifieke variabelewaarden"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1869,7 +1909,7 @@ msgstr ""
 "\n"
 "# Geen patroonspecifieke variabelewaarden"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1878,89 +1918,94 @@ msgstr ""
 "\n"
 "# %u patroonspecifieke variabelewaarden"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'"
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
-msgstr "sys$search is mislukt met %d\n"
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() is mislukt met afsluitwaarde %d\n"
 
 #: vmsjobs.c:71
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Waarschuwing: lege omleiding\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
-msgstr "interne fout: '%s' command_state"
-
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-waarschuwing: CTRL-Y zal subproces(sen) achterlaten.\n"
+msgstr "*interne fout*: '%s' command_state"
 
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-waarschuwing: mogelijk dient u CTRL-Y-afhandeling opnieuw aan te zetten "
 "vanuit DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INGEBOUWD [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "INGEBOUWDE CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "INGEBOUWDE RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Onbekende ingebouwde opdracht '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fout: lege opdracht\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Invoer wordt omgeleid van %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Foutuitvoer wordt omgeleid naar %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Uitvoer wordt toegevoegd aan %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Uitvoer wordt omgeleid naar %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Toevoegen van %.*s en opschoning\n"
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "In plaats daarvan wordt %s uitgevoerd\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fout bij proces-start, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1968,11 +2013,11 @@ msgstr ""
 "\n"
 "# VPATH-zoekpaden\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Geen 'vpath'-zoekpaden."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1981,7 +2026,7 @@ msgstr ""
 "\n"
 "# %u 'vpath'-zoekpaden.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1989,7 +2034,7 @@ msgstr ""
 "\n"
 "# Geen algemeen zoekpad ('VPATH'-variabele)."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1999,8 +2044,27 @@ msgstr ""
 "# Algemeen zoekpad ('VPATH'-variabele):\n"
 "# "
 
-#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Geef geen -j of --jobs op als sh.exe niet beschikbaar is."
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() kan geen proces starten (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sDit is vrije programmatuur; zie de brontekst voor de "
+#~ "kopieervoorwaarden.\n"
+#~ "%sEr is GEEN garantie; zelfs niet voor VERHANDELBAARHEID of\n"
+#~ "%sGESCHIKTHEID VOOR EEN BEPAALD DOEL.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "extra 'endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "lege 'override'-opdracht"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "ongeldige 'override'-opdracht"
 
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "Make wordt opnieuw ingesteld op enkele-taakmodus."
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-waarschuwing: CTRL-Y zal subproces(sen) achterlaten.\n"
index 8d87298..a054031 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index a8c487e..e81ac11 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
 # Polish translation for GNU make.
-# Copyright (C) 1996, 2002, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2002, 2005, 2006, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 # Pawe³ Krawczyk <kravietz@ceti.pl>, 1996.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2005.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81-b3\n"
+"Project-Id-Version: make 3.81.91\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 18:41+0200\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2010-07-25 22:15+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "próba u¿ycia nieistniej±cej funkcji: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "element biblioteki `touch' jest niedostêpny pod VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Archiwum `%s' nie istnieje"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' nie jest poprawnym archiwum"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: Brak elementu `%s' w `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: B³êdny kod powrotu z ar_member_touch w `%s'"
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
-"Uzyskanie informacji o module przez lnr$set_module nie uda³o siê, status = %d"
+"Uzyskanie informacji o module przez lnr$set_module() nie uda³o siê, status = "
+"%d"
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
-msgstr "lbr$ini_control nie powiod³o siê, status = %d"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() nie powiod³o siê, status = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "b³±d otwarcia biblioteki `%s' podczas szukania elementu `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Element `%s'%s: %ld bajtów pod %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (nazwa mo¿e zostaæ okrojona)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Przerwano.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Element archiwum `%s' mo¿e byæ fa³szywy; nie usuniêty"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Element archiwum `%s' mo¿e byæ fa³szywy; nie usuniêty"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Kasujê plik `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Kasujê plik `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+msgid "#  recipe to execute"
 msgstr "#  polecenia do wykonania"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (wbudowane):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (z `%s', linia %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,221 +126,221 @@ msgstr ""
 "\n"
 "# Katalogi\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: stat() zwraca b³±d.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (klucz %s, czas modyfikacji %d): otwarcie by³o niemo¿liwe.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (urz±dzenie %d, i-wêze³ [%d,%d,%d]): otwarcie by³o niemo¿liwe.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (urz±dzenie %ld, i-wêze³ %ld): otwarcie by³o niemo¿liwe.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (klucz %s, czas modyfikacji %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (urz±dzenie %d, i-wêze³ [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (urz±dzenie %ld, i-wêze³ %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Nie"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " pliki, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "nie"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " niemo¿liwo¶ci"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " jak dot±d."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " niemo¿liwo¶ci w %lu katalogach.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Rekurencyjna zmienna `%s' wskazuje na sam± siebie"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "niezakoñczone odwo³anie do zmiennej"
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Polecenia dla pliku `%s' podano w %s:%lu,"
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr ""
 "Polecenia dla pliku `%s' zosta³y wyznaczone na podstawie regu³ standardowych,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "ale `%s' jest teraz uznawany za ten sam plik co `%s'."
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Polecenia dla `%s' zosta³y zignorowane na rzecz poleceñ dla `%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 "nie mo¿na przemianowaæ `%s' z pojedynczym dwukropkiem na `%s' z podwójnym"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 "nie mo¿na przemianowaæ `%s' z podwójnym dwukropkiem na `%s' z pojedynczym"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Kasowanie pliku po¶redniego `%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Kasowanie plików po¶rednich...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Oznaczenie czasu spoza zakresu; zast±piono %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Aktualny czas"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# To nie jest obiekt:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Cenny plik (zale¿no¶æ .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Obiekt niejawny (zale¿no¶æ .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+msgid "#  Command line target."
 msgstr "#  Obiekt podany w linii poleceñ."
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Makefile domy¶lny, wymieniony w MAKEFILES lub -include/sinclude."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Szukanie regu³ domy¶lnych zosta³o wykonane."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Szukanie regu³ domy¶lnych nie zosta³o wykonane."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Ga³±¼ wzorców domy¶lnych/statycznych: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Plik jest zale¿no¶ci± przej¶ciow±."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Robi równie¿:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Czas modyfikacji nie by³ sprawdzany."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Plik nie istnieje."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Plik jest bardzo stary."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Ostatnio modyfikowany %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Plik zosta³ uaktualniony."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Plik nie zosta³ uaktualniony."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
-msgstr "#  Aktualnie uruchamiane polecenia (TO JEST PLUSKWA)."
+#: file.c:968
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Aktualnie uruchamiane polecenia (TO JEST B£¡D)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
-msgstr "#  Aktualnie uruchamiane polecenia zale¿no¶ci (TO JEST PLUSKWA)."
+#: file.c:971
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Aktualnie uruchamiane polecenia zale¿no¶ci (TO JEST B£¡D)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Uaktualnienie powiod³o siê."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Powinien byæ uaktualniony (-q jest w³±czone)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Uaktualnianie nie powiod³o siê."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  B³êdna warto¶æ w elemencie `update_status'!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  B³êdna warto¶æ w elemencie `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -346,7 +348,7 @@ msgstr ""
 "\n"
 "# Pliki"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -356,262 +358,262 @@ msgstr ""
 "# statystyki tablic haszuj±cych plików:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "pierwszy argument funkcji `word' nie jest numeryczny"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "pierwszy argument funkcji `word' musi byæ wiêkszy od 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "pierwszy argument funkcji `wordlist' nie jest numeryczny"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "drugi argument funkcji `wordlist' nie jest numeryczny"
 
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) nie powiod³o siê (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) nie powiod³o siê (e=%d)\n"
+#: function.c:1458
+#, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) nie powiod³o siê (e=%ld)\n"
 
 #: function.c:1469
-#, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() nie powiod³o siê (e=%d)\n"
+#, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): DuplicateHandle(Err) nie powiod³o siê (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() nie powiod³o siê\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() nie powiod³o siê (e=%ld)\n"
+
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() nie powiod³o siê\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Czyszczê tymczasowy plik wsadowy %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Niewystarczaj±ca liczba argumentów (%d) dla funkcji `%s'"
+msgstr "niewystarczaj±ca liczba argumentów (%d) dla funkcji `%s'"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Funkcja `%s' nie jest zaimplementowana na tej platformie"
+msgstr "funkcja `%s' nie jest zaimplementowana na tej platformie"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "nie dokoñczone wywo³anie funkcji `%s': brak `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: opcja `%s' jest niejednoznaczna\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: opcja `--%s' nie przyjmuje argumentów\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: opcja `%c%s' nie przyjmuje argumentów\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: opcja `%s' wymaga argumentu\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: nierozpoznana opcja `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: nierozpoznan opcja `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: niedozwolona opcja -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: b³êdna opcja -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opcja wymaga argumentu -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: opcja `-W %s' nie przyjmuje argumentów\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
-"nie mo¿na zaalokowaæ %ld bajtów na tablicê haszuj±c±: pamiêæ wyczerpana"
+"nie mo¿na przydzieliæ %lu bajtów na tablicê haszuj±c±: pamiêæ wyczerpana"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Wype³nienie=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Przehaszowania=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Kolizje=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Szukanie standardowej regu³y dla `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Szukanie standardowej regu³y typu archive-member dla `%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Pomijanie rekurencyjnego wywo³ania regu³y standardowej.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Próbowanie regu³y wzorcowej z ga³êzi± `%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Odrzucenie niemo¿liwej zale¿no¶ci domy¶lnej `%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Odrzucenie niemo¿liwej zale¿no¶ci regu³y `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Próbowanie zale¿no¶ci domy¶lnej `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Odrzucenie niemo¿liwej zale¿no¶ci domy¶lnej `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Próbowanie zale¿no¶ci regu³y `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Próbowanie zale¿no¶ci domy¶lnej `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Znaleziono zale¿no¶æ `%s' jako VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Szukanie regu³y zawieraj±cej plik przej¶ciowy `%s'.\n"
 
-#: job.c:321
+#: job.c:335
 msgid "Cannot create a temporary file\n"
 msgstr "Nie mo¿na utworzyæ pliku tymczasowego\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] B³±d 0x%x (zignorowany)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] B³±d 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] B³±d %d (zignorowany)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] B³±d %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (zrzut pamiêci)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Oczekiwanie na niezakoñczone zadania...."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
-msgstr "¯yj±cy potomek 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "¯yj±cy potomek %p (%s) PID %s %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (zdalne)"
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
-msgstr "Zbieranie przegrywaj±cego potomka 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Zbieranie przegrywaj±cego potomka %p PID %s %s\n"
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
-msgstr "Zbieranie wygrywaj±cego potomka 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Zbieranie wygrywaj±cego potomka %p PID %s %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n"
 
-#: job.c:802
+#: job.c:861
 #, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "Usuwanie potomka 0x%08lx PID %ld%s z kolejki.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "pisz±cy serwer zadañ"
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
-msgstr "Zwolniony token dla potomka 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
+msgstr "Zwolniony token dla potomka %p (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() nie móg³ uruchomiæ procesu (e=%d)\n"
+msgstr "process_easy() nie móg³ uruchomiæ procesu (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -620,97 +622,111 @@ msgstr ""
 "\n"
 "Naliczono %d parametrów nieudanego uruchomienia\n"
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
-msgstr "Wstawianie potomka 0x%08lx (%s) PID %ld%s do kolejki.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Wstawianie potomka %p (%s) PID %s%s do kolejki.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
-msgstr "Otrzymano token dla potomka 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Otrzymano token dla potomka %p (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "strumieñ czytaj±cy zadania"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr "Wykonywanie poleceñ z %s:%lu dla uaktualnienia obiektu `%s'.\n"
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Wykonywanie wbudowanych poleceñ dla uaktualnienia obiektu `%s'.\n"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "niemo¿liwe wymuszenie limitów obci±¿enia w tym systemie"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "niemo¿liwe wymuszenie limitu obci±¿enia: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "nie ma wiêcej uchwytów plików: nie mo¿na powieliæ stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "nie ma wiêcej uchwytów plików: nie mo¿na powieliæ stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr "Nie mo¿na odtworzyæ stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr "Nie mo¿na odtworzyæ stdout\n"
 
-#: job.c:2016
-#, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() nie móg³ uruchomiæ procesu (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make usun±³ potomka pid %d, nadal czeka na pid %d\n"
+#: job.c:2127
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make usun±³ potomka pid %s, nadal czeka na pid %s\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Polecenie nie znalezione"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Nie znaleziono programu pow³oki"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: mog³o zabrakn±æ miejsca na ¶rodowisko"
 
-#: job.c:2363
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL siê zmieni³ (by³ `%s', jest `%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Tworzenie tymczasowego pliku wsadowego %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Zawarto¶æ pliku wsadowego:%s\n"
+"\t%s\n"
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (linia %d) Z³y kontekst pow³oki (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opcje:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignorowane dla kompatybilno¶ci.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Bezwarunkowe utworzenie wszystkich obiektów.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -719,19 +735,19 @@ msgstr ""
 "                              Przej¶cie do KATALOGu przed robieniem\n"
 "                              czegokolwiek.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d                          Wy¶wietla du¿o informacji diagnostycznych.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAGI]             Wy¶wietla ró¿ne rodzaje informacji\n"
 "                              diagnostycznych.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -739,7 +755,14 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              Zmienne ¶rodowiska przykrywaj± makefile.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+"  --eval=£AÑCUCH              Wyznacza £AÑCUCH jako instrukcjê pliku "
+"makefile.\n"
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -747,16 +770,16 @@ msgstr ""
 "  -f PLIK, --file=PLIK, --makefile=PLIK\n"
 "                              Czyta PLIK jako makefile.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 "  -h, --help                  Wy¶wietla ten komunikat i koñczy dzia³anie.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Ignoruje b³êdy poleceñ.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -764,7 +787,7 @@ msgstr ""
 "  -I KATALOG, --include-dir=KATALOG\n"
 "                              Szuka do³±czanych makefile w KATALOGu.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -772,14 +795,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Dopuszcza N zadañ naraz; brak N oznacza brak\n"
 "                              ograniczeñ.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Kontynuuj je¶li nie da siê zrobiæ jakich¶\n"
 "                              obiektów.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -790,7 +813,7 @@ msgstr ""
 "jest\n"
 "                              poni¿ej N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -798,16 +821,16 @@ msgstr ""
 "  -L, --check-symlink-times   U¿ywanie ostatniego mtime miêdzy dowi±zaniem a "
 "celem.\n"
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Nie wykonuje poleceñ; jedynie je wy¶wietla.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -818,32 +841,32 @@ msgstr ""
 "go\n"
 "                              ponownie.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Wy¶wietla wewnêtrzn± bazê danych make.\n"
 
-#: main.c:333
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Nie uruchamia ¿adnych poleceñ; status powrotu\n"
 "                              wskazuje aktualno¶æ.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "  -r, --no-builtin-rules      Wy³±cza wbudowane regu³y standardowe.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Wy³±cza ustawianie wbudowanych zmiennych.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Nie wypisuje poleceñ.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -851,21 +874,21 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Wy³±cza -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "  -t, --touch                 Uaktualnia obiekty zamiast je robiæ.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               Wy¶wietla wersjê make i koñczy dzia³anie.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Wy¶wietla aktualny katalog.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -873,7 +896,7 @@ msgstr ""
 "  --no-print-directory        Wy³±cza -w, nawet je¶li by³o ono w³±czone\n"
 "                              domy¶lnie.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -881,7 +904,7 @@ msgstr ""
 "  -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n"
 "                              Uznaje PLIK za nieskoñczenie nowy.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -890,184 +913,189 @@ msgstr ""
 "niezdefiniowanych\n"
 "                              zmiennych.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "pusty ³añcuch nie mo¿e byæ nazw± pliku"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "nieznany poziom diagnostyki `%s'"
 
-#: main.c:670
-#, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s: z³apano Przerwanie/Wyj±tek (kod = 0x%x, adres = 0x%x)\n"
+#: main.c:690
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: z³apano przerwanie/wyj±tek (kod = 0x%lx, adres = 0x%p)\n"
 
-#: main.c:677
-#, fuzzy, c-format
+#: main.c:697
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Nie obs³ugiwany filtr wyj±tku wywo³any z programu %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"Nieobs³ugiwany filtr wyj±tku wywo³any z programu %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:685
-#, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Naruszenie praw dostêpu: zapis pod adresem %x\n"
+#: main.c:705
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Naruszenie praw dostêpu: zapis pod adresem 0x%p\n"
 
-#: main.c:686
-#, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Naruszenie praw dostêpu: odczyt spod adresu %x\n"
+#: main.c:706
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Naruszenie praw dostêpu: odczyt spod adresu 0x%p\n"
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
-msgstr "find_and_set_shell ustawia default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() ustawia default_shell = %s\n"
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
-msgstr "find_and_set_shell ustawia ¶cie¿kê wyszukiwania default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "find_and_set_shell() ustawia ¶cie¿kê wyszukiwania default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s jest zawieszony na 30 sekund..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "zakoñczono sleep(30). Kontynuacja.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile ze standardowego wej¶cia podano dwukrotnie."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (plik tymczasowy)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (plik tymczasowy)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Równoleg³e zadania (-j) nie s± obs³ugiwane na tej platformie"
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Prze³±czanie w tryb jednozadaniowy (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "b³±d wewnêtrzny: wiele opcji --jobserver-fds"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "b³±d wewnêtrzny: b³êdny ³añcuch --jobserver-fds `%s'"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Klient serwera zadañ (fds %d,%d)\n"
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "uwaga: -jN wymuszone w podzadaniu: wy³±czanie trybu serwera zadañ."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "duplikacja serwera zadañ"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "uwaga: serwer zadañ niedostêpny: u¿ywanie -j1.  Nale¿y dodaæ `+' do "
 "nadrzêdnej regu³y make."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "tworzenie potoku zadañ"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "inicjowanie potoku serwera zadañ"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Dowi±zania symboliczne nie s± obs³ugiwane: wy³±czono -L."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Uaktualnianie plików makefile....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefile `%s' mo¿e siê zapêtliæ; nie przetwarzam go.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Nie uda³o siê zrobiæ makefile `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Nie znaleziono w³±czanych makefile `%s'."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Nie znaleziono makefile `%s'"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Niemo¿liwy powrót do katalogu startowego."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Ponowne uruchamianie[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (plik tymczasowy): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL zawiera wiêcej ni¿ jeden cel"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Nie podano obiektów i nie znaleziono makefile"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Brak obiektów"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Uaktualnianie obiektów docelowych....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "uwaga:  Wykryto przestawienie zegara. Budowanie mo¿e byæ niekompletne."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Sk³adnia: %s [opcje] [obiekt] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1076,7 +1104,7 @@ msgstr ""
 "\n"
 "Ten program zosta³ zbudowany dla %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1085,51 +1113,46 @@ msgstr ""
 "\n"
 "Ten program zosta³ zbudowany dla %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "B³êdy proszê zg³aszaæ na adres <bug-make@gnu.org>\n"
 
-#: main.c:2466
+#: main.c:2562
 #, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "opcja `-%c' wymaga niepustego ³añcucha jako argumentu"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "opcja `%s%s' wymaga niepustego ³añcucha jako argumentu"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "opcja `-%c' wymaga argumentu ca³kowitego dodatniego"
 
-#: main.c:2942
+#: main.c:3054
 #, 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 ""
-"%sTen program jest darmowy; warunki kopiowania s± opisane w ¼ród³ach.\n"
-"%sAutorzy nie daj± ¯ADNYCH gwarancji, w tym nawet gwarancji SPRZEDAWALNO¦CI\n"
-"%slub PRZYDATNO¦CI DO KONKRETNYCH CELÓW.\n"
+msgid "%sBuilt for %s\n"
+msgstr "%sTen program zosta³ zbudowany dla systemu %s\n"
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
-msgstr ""
-"\n"
-"%sTen program zosta³ zbudowany dla %s\n"
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sTen program zosta³ zbudowany dla systemu %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sTen program zosta³ zbudowany dla %s (%s)\n"
+"%sLicencja GPLv3+: GNU GPL wersja 3 lub nowsza <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sTo oprogramowanie jest wolnodostêpne: mo¿na je swobodnie zmieniaæ i "
+"rozpowszechniaæ.\n"
+"%sNie ma ¯ADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1138,7 +1161,7 @@ msgstr ""
 "\n"
 "# Baza danych Make, wy¶wietlana na %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1147,305 +1170,297 @@ msgstr ""
 "\n"
 "# Zakoñczono tworzenie bazy danych Make na %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Wej¶cie do nieznanego katalogu\n"
 
-#: main.c:3103
+#: main.c:3239
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Opuszczenie nieznanego katalogu\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Wej¶cie do katalogu `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Opuszczenie katalogu `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Wej¶cie do nieznanego katalogu\n"
 
-#: main.c:3117
+#: main.c:3253
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Wej¶cie do katalogu `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Opuszczenie katalogu `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Stop.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Nieznany b³±d %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "brak pamiêci wirtualnej"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: u¿ytkownik %lu (rzeczywisty %lu), grupa %lu (rzeczywista %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Zainicjalizowany dostêp"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Dostêp u¿ytkownika"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Dostêp make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Dostêp potomka"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "b³±d zapisu: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "b³±d zapisu"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Czytanie makefile...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Czytanie makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (brak celu domy¶lnego)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (przeszukiwana ¶cie¿ka)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (niewa¿ne)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (brak rozszerzenia ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "b³êdna sk³adnia wyra¿enia warunkowego"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "nie zwi±zany `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "pusta nazwa zmiennej"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "pusta dyrektywa `override'"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "b³êdna dyrektywa `override'"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+msgid "recipe commences before first target"
 msgstr "polecenia zaczynaj± siê przed pierwszym obiektem"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+msgid "missing rule before recipe"
 msgstr "brakuje regu³y przed poleceniami"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "brakuj±cy separator%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (czy¿by mia³ byæ TAB zamiast 8 spacji?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "brakuj±cy wzorzec obiektu"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "wielokrotne wzorce obiektu"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "wzorzec obiektu nie zawiera `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "brakuj±cy `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
-msgstr "Niezwi±zany tekst po dyrektywie `endef'"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "pusta nazwa zmiennej"
 
-#: read.c:1411
+#: read.c:1367
+msgid "extraneous text after `define' directive"
+msgstr "nadmiarowy tekst po dyrektywie `define'"
+
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "brakuj±cy `endef', niezakoñczone `define'"
 
-#: read.c:1454
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr "nadmiarowy tekst po dyrektywie `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Niezwi±zany tekst po dyrektywie `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "niezwi±zany `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "tylko jedno `else' w wyra¿eniu warunkowym"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr "¬le sformu³owana definicja zmiennej dla celu"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr "wymagania nie mog± byæ definiowane w skryptach poleceñ"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
+msgstr "wymagania nie mog± byæ definiowane w opisach poleceñ"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "pomieszane standardowe i statyczne regu³y wzorców"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "pomieszane standardowe i normalne regu³y"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "obiekt `%s' nie pasuje do wzorca obiektu"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "plik obiektowy `%s' ma pozycje i : i ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "obiekt `%s' wyspecyfikowany wielokrotnie w tej samej regule"
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
+msgid "warning: overriding recipe for target `%s'"
 msgstr "uwaga: polecenia zakrywaj±ce dla obiektu `%s'"
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "uwaga: ignorujê stare polecenia dla obiektu `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "uwaga: napotka³em na znak NUL; reszta linii zignorowana"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Nie ma nic do zrobienia w `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' jest aktualne."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Czyszczenie pliku `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sBrak regu³ do wykonania obiektu `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sBrak regu³ do zrobienia obiektu `%s', wymaganego przez `%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Przetwarzanie pliku obiektowego `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Ju¿ bez powodzenia próbowa³em uaktualniæ plik `%s'.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Plik `%s' by³ ju¿ przetwarzany.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Wci±¿ uaktualniam plik `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Skoñczy³em uaktualniaæ plik `%s'.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Plik `%s' nie istnieje.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1453,132 +1468,137 @@ msgstr ""
 "*** Uwaga: plik .LOW_RESOLUTION_TIME `%s' ma du¿± rozdzielczo¶æ znacznika "
 "czasu"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Znaleziono standardow± regu³ê dla `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Brak standardowych regu³ dla `%s'.\n"
 
-#: remake.c:462 remake.c:970
+#: remake.c:502
 #, c-format
-msgid "Using default commands for `%s'.\n"
+msgid "Using default recipe for `%s'.\n"
 msgstr "Stosowanie standardowych poleceñ dla `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Okrê¿na dyrektywa %s <- %s porzucona."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Zakoñczono zale¿no¶ci pliku obiektu `%s'.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Zale¿no¶ci `%s' s± wykonywane.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Zaniechany plik obiektowy `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Obiekt `%s' nie zosta³ wykonany z powodu b³êdów."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Zale¿no¶æ `%s' dotyczy tylko kolejno¶ci dla obiektu `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Zale¿no¶æ `%s' obiektu `%s' nie istnieje.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Zale¿no¶æ `%s' jest nowsza od obiektu `%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Zale¿no¶æ `%s' jest starsza od obiektu `%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Obiekt `%s' jest typu double-colon i nie ma ¿adnych zale¿no¶ci.\n"
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Brak poleceñ dla `%s' i brak zmienionych zale¿no¶ci.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Tworzenie `%s' z powodu flagi always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Nie ma potrzeby przerabiaæ obiektu `%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; u¿yto nazwy VPATH `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Konieczne przerobienie obiektu `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Zignorowano nazwê VPATH `%s'.\n"
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Uruchomiono polecenia dla `%s'.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Przerabianie pliku obiektowego `%s' nie powiod³o siê.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Przerabianie pliku obiektowego `%s' powiod³o siê.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Plik obiektowy `%s' powinien byæ przerobiony z opcj± -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Stosowanie standardowych poleceñ dla `%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Uwaga: Plik `%s' ma czas modyfikacji z przysz³o¶ci"
 
-#: remake.c:1313
+#: remake.c:1370
 #, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
-msgstr "Uwaga: Plik `%s' ma czas modyfikacji %.2g s w przysz³o¶ci"
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "Uwaga: Plik `%s' ma czas modyfikacji %s s w przysz³o¶ci"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "element .LIBPATTERNS `%s' nie jest wzorcem"
@@ -1588,7 +1608,7 @@ msgstr "element .LIBPATTERNS `%s' nie jest wzorcem"
 msgid "Customs won't export: %s\n"
 msgstr "Zasady nie eksportowane: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1596,7 +1616,7 @@ msgstr ""
 "\n"
 "# Regu³y stadardowe"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1604,7 +1624,7 @@ msgstr ""
 "\n"
 "# Brak standardowych regu³."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1613,231 +1633,245 @@ msgstr ""
 "\n"
 "# %u standardowych regu³, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
-msgstr "PLUSKWA: z³e num_pattern_rules! %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "B£¡D: z³e num_pattern_rules! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "nieznany sygna³"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Roz³±czenie"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Przerwanie"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Wyj¶cie"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "B³êdna instrukcja"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Pu³apka ¶ledzenia"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Przerwany"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Pu³apka IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Pu³apka EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Wyj±tek zmiennoprzecinkowy"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Zabity"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "B³±d szyny"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Naruszenie ochrony pamiêci"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "B³êdne wywo³anie systemowe"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Przerwany potok"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Budzik"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Zakoñczony"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Sygna³ u¿ytkownika 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Sygna³ u¿ytkownika 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Potomek powróci³"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Przerwa w zasilaniu"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Zatrzymany"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Zatrzymany (wej¶cie z tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Zatrzymany (wyj¶cie na tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Zatrzymany (sygna³)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Przekroczony czas CPU"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Przekroczony limit wielko¶ci pliku"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Wyczerpany stoper wirtualny"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Wyczerpany stoper profiluj±cy"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Zmienione okno"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Kontynuowany"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Nag³a sytuacja I/O"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O mo¿liwe"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Zaginione zasoby"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Sygna³ niebezpieczeñstwa"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "¯±danie informacji"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Koprocesor obliczeñ zmiennoprzecinkowych niedostêpny"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s liczba ³añcuchów w strcache: %d / wyszukiwañ = %lu / trafieñ = %lu\n"
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s liczba buforów strcache: %d (* %d B/bufor = %d B)\n"
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s rozmiar strcache: ca³kowity = %d (%d) / maks = %d / min = %d / ¶r = %d\n"
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+"%s wolne strcache: ca³kowite = %d (%d) / maks = %d / min = %d / ¶r = %d\n"
+
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# statystyki tablic haszuj±cych strcache:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "domy¶lna"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "¶rodowiskowa"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "¶rodowisko pod -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "z linii poleceñ"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "dyrektywa `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatyczna"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (z `%s', linia %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# statystyki tablic haszuj±cych ustawionych zmiennych:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1845,7 +1879,7 @@ msgstr ""
 "\n"
 "# Zmienne\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1853,7 +1887,7 @@ msgstr ""
 "\n"
 "# Warto¶ci zmiennych dla wzorca"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1861,7 +1895,7 @@ msgstr ""
 "\n"
 "# Brak warto¶ci zmiennych dla wzorca."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1870,87 +1904,92 @@ msgstr ""
 "\n"
 "# %u warto¶ci zmiennych dla wzorca"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "uwaga: niezdefiniowana zmienna `%.*s'"
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
-msgstr "sys$search nie powiod³o siê - %d\n"
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() nie powiod³o siê - %d\n"
 
 #: vmsjobs.c:71
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Uwaga: Puste przekierowanie\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "b³±d wewnêtrzny: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-uwaga, CTRL-Y pozostawi podproces(y).\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-uwaga, bêdzie trzeba ponownie umo¿liwiæ obs³ugê CTRL-Y z DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "WBUDOWANE [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "WBUDOWANE CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "WBUDOWANE RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Nieznane polecenie wbudowane '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "B³±d, puste polecenie\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Przekierowane wej¶cie z %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Przekierowane wyj¶cie diagnostyczne do %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Do³±czanie wyj¶cia do %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Przekierowane wyj¶cie do %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Do³±czanie %.*s i czyszczenie\n"
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Zamiast tego wykonywanie %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "B³±d podczas uruchamiania, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1958,11 +1997,11 @@ msgstr ""
 "\n"
 "# ¦cie¿ki przeszukiwania VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Brak ¶cie¿ek przeszukiwania `vpath'"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1971,7 +2010,7 @@ msgstr ""
 "\n"
 "# %u ¶cie¿ek przeszukiwania `vpath'.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1979,7 +2018,7 @@ msgstr ""
 "\n"
 "# Brak ogólnej (zmienna `VPATH') ¶cie¿ki przeszukiwania."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1988,9 +2027,3 @@ msgstr ""
 "\n"
 "# Ogólna (zmienna `VPATH') ¶cie¿ka przeszukiwania:\n"
 "# "
-
-#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Nie nale¿y podawaæ -j lub --jobs je¶li sh.exe nie jest dostêpny."
-
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "Prze³±czanie make w tryb jednozadaniowy."
index 3658679..28ced11 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index 95844ff..e734c06 100644 (file)
+# translation of make-3.80.po to portugues
 # Mensagem do GNU make em Português (Brasil)
-# Copyright (C) 2000 Free Software Foundation, Inc.
-# Fábio Henrique F. Silva <fabiohfs@mail.com>, 2000.
+# Copyright (C) 2000, 2008 Free Software Foundation, Inc.
 #
 # Caso você encontre alguma mensagem que não está bem traduzida, por
 # favor me informe dando sua sugestão.
 #
+# Fábio Henrique F. Silva <fabiohfs@mail.com>, 2000.
+# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2008.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU make 3.80\n"
+"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: 2002-11-16 17:06+0300\n"
-"Last-Translator: Fábio Henrique F. Silva <fabiohfs@mail.com>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2008-01-22 00:45-0200\n"
+"Last-Translator: Fábio Henrique F. Silva <fabiohfs@netscape.net>\n"
 "Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n > 1);\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "característica não suportada: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "o touch não está disponível no VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: Arquivo `%s' não existe"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "touch: `%s' não é um arquivo válido"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "touch: O membro `%s' não existe em `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "touch: O ar_member_touch retornou um código de erro inválido em `%s'"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "o lbr$set_module falhou ao obter informações do módulo, estado = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control falhou com estado = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "erro na abertura da biblioteca `%s' para localizar o membro `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Membro `%s'%s: %ld bytes de %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (o nome pode estar truncado)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Quebra.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "** [%s] O arquivo membro `%s' pode ser falso. Não foi apagado."
+msgstr "*** [%s] O arquivo membro `%s' pode ser falso. Não foi apagado"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "** O arquivo membro `%s' pode ser falso. Não foi apagado."
+msgstr "*** O arquivo membro `%s' pode ser falso. Não foi apagado"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
-msgstr "** [%s] Apagando arquivo `%s'"
+msgstr "** [%s] Apagando arquivo `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
-msgstr "** Apagando arquivo `%s'"
+msgstr "** Apagando arquivo `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "# comandos para executar"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (embutido):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (de `%s', linha %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,219 +130,222 @@ msgstr ""
 "\n"
 "# Diretórios\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: não pôde ser estabelecido.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (chave %s, mtime %d): não pôde ser aberto.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): não pôde ser aberto.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (dispositivo %ld, inode %ld): não pôde ser aberto.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (chave %s, mtime %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Não"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " arquivos, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "não"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " impossibilidades"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " até agora."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilidades em %lu diretórios.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Variável recursiva `%s' faz referência a ela mesma (eventualmente)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
-msgstr "referência a variável não finalizada"
+msgstr "referência a uma variável não finalizada"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Comandos especificados para o arquivo `%s' em %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "Comandos para o arquivo `%s' encontrados por regra implícita,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "mas `%s' é considerado o mesmo arquivo que `%s'."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Comandos para `%s' serão ignorados em favor daqueles para `%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "não pôde renomear de dois-pontos `%s' para dois-pontos duplos `%s'"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
-msgstr "não pôde renomer de dois-pontos duplos `%s' para dois-pontos `%s'"
+msgstr "não pôde renomear de dois-pontos duplos `%s' para dois-pontos `%s'"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
-msgstr "** Apagando arquivo intermediário `%s'"
+msgstr "** Apagando arquivo intermediário `%s'"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Apagando arquivo intermediário...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Data/Hora fora de faixa; substituindo %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Hora atual"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Não é um alvo:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Arquivo importante (prerequisito de .PRECIOUS)."
+msgstr "# Arquivo importante (pre-requisito de .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "# Alvo Falso (prerequisito de .PHONY)."
+msgstr "# Alvo Falso (pre-requisito de .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "# Linha de Comando do Alvo."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# Um Padrão ou arquivo MAKEFILES"
+msgstr "#  Um Padrão ou arquivo MAKEFILES."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
-msgstr "# Pesquisa por regra implícita concluida."
+msgstr "# A pesquisa por regra implícita foi concluida."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
-msgstr "# Pesquisa por regra implícita não concluida."
+msgstr "# A pesquisa por regra implícita não foi concluida."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "# Derivação padrão implícita/estática: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "# O arquivo é um pré-requisito intermediário."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "# Também faz:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "# O Período da modificação nunca foi verificado."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "# O Arquivo não existe."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "# O Arquivo está desatualizado."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "# Última modificação %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "# O Arquivo foi atualizado."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "# O Arquivo não foi atualizado."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "# Comandos em execução (ISTO É UMA FALHA)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "# Atualizado com sucesso."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "# Precisa ser atualizado (-q está definido)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "# Problemas com a atualização."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "# Valor inválido no membro `update_status' !"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "# Valor inválido no membro `command_state' !"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -345,7 +353,7 @@ msgstr ""
 "\n"
 "# Arquivos"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -355,262 +363,263 @@ msgstr ""
 "# tabela hash de arquivos:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "primeiro argumento não numérico para a função `word'"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "o primeiro argumento para a função `word' deve ser maior que 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "primeiro argumento não numérico para a função `wordlist'"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "segundo argumento não numérico para a função `wordlist'"
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) falhou (e=%d)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) falhou (e=%d)\n"
 
-#: function.c:1469
+#: function.c:1474
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() falhou (e=%d)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() falhou\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Apagando o arquivo de lote temporário %s\n"
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "O número de argumentos é insuficiente (%d) para a função `%s'"
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "A função `%s' não foi implementada nesta plataforma"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "Chamada não terminada para a função `%s': faltando `%c'"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: a opção `%s' é ambigua\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: a opção `--%s' não permite um argumento\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: a opção `%c%s' não permite um argumento\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: a opção `%s' requer um argumento\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: a opção é desconhecida `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: a opção é desconhecida `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: a opção é ilegal -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: a opção é inválida -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opção requer um argumento -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: a opção `-W %s' é ambigua\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: a opção `-W %s' não permite um argumento\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "não foi possível alocar %ld bytes para a tabela hash: memória cheia"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Carga=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Colisões=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Procurando por uma regra implícita para `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Procurando por uma regra implícita de arquivo-membro para `%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando recursão em regra implícita.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Tentando padrão para regra com `%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rejeitando pré-requisitos implícitos `%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Rejeitando pré-requisito para regra `%s'.\n"
+msgstr "Rejeitando pré-requisito para regra `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Tentando pré-requisito implícito `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Rejeitando os pré-requisitos implícitos `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Tentanto pré-requisito para a regra `%s'.\n"
+msgstr "Tentando o pré-requisito para a regra `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Tentando o pré-requisito implícito `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Pré-requisito `%s' encontrado como VPATH `%s'\n"
+msgstr "O pré-requisito `%s' foi encontrado como VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Procurando uma regra com o arquivo intermediário `%s'.\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (arquivo temporário)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Erro 0x%x (ignorado)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Erro 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Erro %d (ignorado)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "** [%s] Erro %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (arquivo core criado)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
-msgstr "** Esperando que outros processos terminem."
+msgstr "*** Esperando que os outros processos terminem...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Filho ativo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (remoto)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Descarregando processo filho 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Descarregando processo filho 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Apagando o arquivo de lote temporário: %s\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Removendo o processo filho 0x%08lx PID %ld%s da cadeia.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "gravar jobserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Liberado sinalizador para o processo filho 0x%08lx (%s).\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() falhou ao executar o processo (e=%d)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -619,164 +628,182 @@ msgstr ""
 "\n"
 "Contados %d args na falha de execução\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Colocando o processo filho 0x%08lx (%s) PID %ld%s na cadeia.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Obtido o sinalizador para o processo filho 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "tarefas canalizadas lidas"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Não é necessário reprocessar o alvo `%s'"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "não pôde forçar os limites de carga neste sistema operacional"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "não pôde forçar a carga limite:"
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() falhou ao executar o processo (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "processo filho descarregado: pid %d, aguardando pelo pid %d\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Comando não encontrado"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Interpretador de comandos não encontrado"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL alterado (era `%s' e agora é `%s')"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Criando arquivo de lote temporário %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Opções:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr " -b, -m                      Ignorado para compatibilidade.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 " -B, --always-make           Processa todos os alvos incondicionalmente.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
-" -C DIRETÓRIO, --directory=DIRETÓRIO\n"
-"                              Muda para o DIRETÓRIO antes de fazer algo.\n"
+"-C DIRETÓRIO, --directory= DIRETÓRIO\n"
+"                              muda para o DIRETÓRIO antes de fazer algo.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr " -d                          Imprime muita informação de depuração.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-" --debug[=OPÇÕES]            Imprime vários tipos de informações de "
+"  --debug[=OPÇÕES]             Imprime vários tipos de informações de "
 "depuração.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
-" -e, --environment-overrides\n"
-"                              Assume os valores das variáveis de ambiente.\n"
+"  -e,--envrionment-overrides\n"
+"                              As variáveis de ambiente sobrescrevem os "
+"arquivos make.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
-" -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n"
-"                              Lê o ARQUIVO como se fosse um arquivo make.\n"
+"  -f ARQUIVO, --file=ARQUIVO --makefile=ARQUIVO\n"
+"                               Lê o ARQUIVO com um arquivo make.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr " -h, --help                   Imprime esta mensagem e sai.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr " -i, --ignore-errors         Ignora os erros dos comandos.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
-" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n"
-"                              Pesquisa o DIRETÒRIO por arquivos make a "
-"incluir.\n"
+".. -l DIRETÓRIO, --include-dir= DIRETÓRIO\n"
+"                              Procura no DIRETÓRIO por arquivos make.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-" -j [N], --jobs[=N]          Permite N tarefas de uma vez; tarefas infinitas "
-"sem argumentos.\n"
+"  -j [N], --jobs[=N]          Permite N tarefas de uma vez ou várias sem o "
+"argumento.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 " -k, --keep-going            Continua mesmo que alguns alvos não possam ser "
 "processados.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -786,100 +813,104 @@ msgstr ""
 "                              Não inicia múltiplas tarefas a menos que a "
 "carga seja menor que N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 " -n, --just-print, --dry-run, --recon\n"
 "                              Não executa quaisquer comandos; apenas imprime-"
 "os.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
-" -o ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n"
-"                              Considera o ARQUIVO como muito antigo e não "
-"reprocessá-o.\n"
+"  -o ARQUIVO, --old-file= ARQUIVO, --assume-old ARQUIVO\n"
+"                              Considera o ARQUIVO muito velho e não o "
+"refaz.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 " -p, --print-data-base       Imprime o banco de dados interno do make.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-" -q, --question              Não executa os comandos; O código de saida "
-"indica se está atualizado.\n"
+"  -q, --question               Executa sem comandos, o código de saída "
+"informa se está atualizado.\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr " -r, --no-builtin-rules      Desabilita as regras implícitas.\n"
+msgstr ""
+"  -r, --no-builtin-rules       Desabilita as regras implícitas embutidas.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-" -R, --no-builtin-variables  Desabilita a configuração das variáveis "
+"  -R, --no-builtin-variables  Desabilita as configurações das variávies "
 "embutidas.\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr " -s, --silent, --quiet       Não ecoa os comandos.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              Desativa a opção -k.\n"
+"                               Desativa a opção -k.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 " -t, --touch                 Executa um `touch' nos alvos ao invés de "
 "reprocessá-los.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 " -v, --version               Imprime o número de versão do make e sai.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr " -w, --print-directory       Imprime o diretório atual.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-" --no-print-directory        Desativa a opção -w, mesmo que ela esteja "
-"implicitamente ativada.\n"
+"  --no-print-directory         Desativa a opção -w, mesmo que tenha sido "
+"ativada implicitamente.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
-" -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n"
-"                              Considera o ARQUIVO infinitamente novo.\n"
+"  -W ARQUIVO, --what-if= ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n"
+"                                Considera o ARQUIVO muito novo.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -887,28 +918,28 @@ msgstr ""
 " --warn-undefined-variables  Avisa quando um variável não definida for "
 "referenciada.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "nível de depuração desconhecido: `%s'"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: Interrupção/Exceção capturada (código = 0x%x, endereço = 0x%x)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Não pôde tratar o filtro de exceção chamado por %s\n"
@@ -916,153 +947,158 @@ msgstr ""
 "SinalExceção = %x\n"
 "EndereçoExceção = %x\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Violação de acesso: operação de escrita no endereço %x\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Violação de acesso: operação de leitura no endereço %x\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell definiu o default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell, caminho de pesquisa do default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspenso por 30 segundos..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) concluido. Continuando.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile na entrada padrão especificado duas vezes."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (arquivo temporário)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (arquivo temporário)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Reiniciando no modo de tarefa única (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "erro interno: múltiplas opções --jobserver-fds"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "erro interno: valor `%s' inválido para --jobserver-fds"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "aviso: -jN forçado no submake: desabilitando o modo jobserver."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr "aviso: jobserver indisponível: usando -j1. Inclua `+' na regra pai."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "criando canalização de tarefas"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "inicializando a canalização do jobserver"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Atualizando os arquivos makefiles ...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "O arquivo `%s' pode estar em loop; não reprocessá-lo.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Problemas ao reprocessar o arquivo `%s'."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
-msgstr "Arquivo `%s' incluido não foi encontrado."
+msgstr "O arquivo `%s' incluído não foi encontrado."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
-msgstr "O arquivo `%s' não foi encontrado."
+msgstr "O arquivo `%s' não foi encontrado"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Não foi possível voltar ao diretório original."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-executando:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "desvinculado (arquivos temporário): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Sem alvo"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Atualizando os objetivos finais...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uso: %s [opções] [alvo] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1071,7 +1107,7 @@ msgstr ""
 "\n"
 "Este programa foi compilado para %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1080,51 +1116,45 @@ msgstr ""
 "\n"
 "Este programa foi compilado para %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Informe os problemas para <bug-make@gnu.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "a opção `-%c' requer um argumento inteiro positivo"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "a opção `-%c' requer um argumento inteiro positivo"
 
-#: 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 ""
-"%sEste é um programa livre; veja o fonte para as condições de cópia.\n"
-"%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n"
-"%sFUNÇÃO EM PARTICULAR.\n"
-
-#: main.c:2948
+#: main.c:3054
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Este programa foi compilado para %s\n"
 
-#: main.c:2950
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Este programa foi compilado para %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3066
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1133,7 +1163,7 @@ msgstr ""
 "\n"
 "# Banco de dados do Make, impresso em %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1142,307 +1172,303 @@ msgstr ""
 "\n"
 "# Banco de dados do Make finalizado em %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Entrando em um diretório desconhecido"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Saindo de um diretório desconhecido"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Entrando no diretório `%s'\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Saindo do diretório `%s'\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Entrando em um diretório desconhecido"
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Saindo de um diretório desconhecido"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Entrando no diretório `%s'\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: Saindo do diretório `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Pare.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Erro desconhecido %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "A memória virtual encheu"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Acesso inicializado"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Acesso do usuário"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Acesso do make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Acesso filho"
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "Erro redirecionado para %s\n"
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "gravar jobserver"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Lendo arquivos makefile ...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Lendo arquivos makefile `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (não há objetivo padrão)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (caminho de pesquisa)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (sem importância)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (sem expansão ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "síntaxe inválida na condicional"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "`endef' extranho"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "nome de variável vazio"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "diretiva `override' vazia"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "diretiva `override' inválida"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "comandos começam antes do primeiro alvo"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "falta regra antes dos comandos"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "faltando o separador%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (você pensou em TAB ao invés de 8 espaços?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "faltando o padrão dos alvos"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "múltiplos padrões para o alvo"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "padrão para o alvo não contém `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "faltando `endif'"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "nome de variável vazio"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Texto estranho depois da diretiva `endef'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "faltando `endef', `define' não terminado"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Texto estranho depois da diretiva `endef'"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Texto estranho depois da diretiva `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "`%s' estranho"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "use apenas um `else' por condicional"
 
-#: read.c:1824
+#: read.c:1797
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Definição de variável por alvo mau formada"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "As regras implícitas e de padrão estático misturadas"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "As regras implícitas e normais misturadas"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "O alvo `%s' não coincide com o padrão"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "O arquivo alvo `%s' tem entradas : e ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "O alvo `%s' foi informado mais do que um vez na mesma regra."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "aviso: impondo comandos para o alvo `%s'"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "aviso: ignorando comandos antigos para o alvo `%s'"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "aviso: caracter NUL detetado; o resto da linha foi ignorado"
+msgstr "aviso: caractere NUL detectado; o resto da linha foi ignorado"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Nada a ser feito para `%s'."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' está atualizado."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Atualizando o arquivo `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
-msgstr "%sSem regra para processar o alvo `%s'%s"
+msgstr "%s Sem regra para processar o alvo `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%sSem regra para processar o alvo `%s', necessário por `%s'%s"
+msgstr "%s Sem regra para processar o alvo `%s', necessário por `%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Considerando o arquivo alvo `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Tentativa de atualizar o arquivo `%s' falhou.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "O arquivo `%s' já foi considerado.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Ainda está atualizando o arquivo `%s'.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
-msgstr "Atualização do arquivo `%s' concluida.\n"
+msgstr "Atualização do arquivo `%s' concluída.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "O arquivo `%s' não existe.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1450,132 +1476,137 @@ msgstr ""
 "*** Aviso: arquivo .LOW_RESOLUTION_TIME `%s' tem uma etiqueta de tempo de "
 "alta resolução"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Regra implícita encontrada para `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Nenhuma regra implícita encontrada para `%s'.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Usando os comandos padrões para `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Dependência circular %s <- %s abandonada."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Pré-requisitos do alvo `%s' concluido.\n"
+msgstr "Pré-requisitos do alvo `%s' concluído.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Pré-requisitos do `%s' estão sendo criados.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Desistindo do arquivo `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "O alvo `%s' não foi reprocessado por causa de erros."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Pré-requisito `%s' está ordenado para o alvo `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Pré-requisitos `%s' do alvo `%s' não existem.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Pré-requisito `%s' é mais novo do que o alvo `%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Pré-requisito `%s' é mais antigo do que o alvo `%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "O alvo `%s' é dois-pontos duplos e não tem pré-requisitos.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "Nenhum comando para `%s' e nenhum pré-requisito foi alterado.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Processando `%s' devido a opção always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Não é necessário reprocessar o alvo `%s'"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; usando o nome VPATH `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "O alvo `%s' deve ser reprocessado.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ignorando o nome VPATH `%s'.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Os comandos de `%s' estão rodando.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Falha ao reprocessar o alvo `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Alvo `%s' reprocessado com sucesso.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "O alvo `%s' precisa ser reprocessado sob -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Usando os comandos padrões para `%s'.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "** Aviso: O arquivo `%s' está com a hora adiantada"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "** Aviso: O arquivo `%s' está com a hora %.2g adiantada"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "O elemento .LIBPATTERNS `%s' não é um padrão"
@@ -1585,7 +1616,7 @@ msgstr "O elemento .LIBPATTERNS `%s' n
 msgid "Customs won't export: %s\n"
 msgstr "Customizações não exportadas: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1593,7 +1624,7 @@ msgstr ""
 "\n"
 "# Regras implícitas."
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1601,7 +1632,7 @@ msgstr ""
 "\n"
 "# Faltam as regras implícitas."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1610,231 +1641,242 @@ msgstr ""
 "\n"
 "# %u regras implícitas, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "ERRO: num_pattern_rules errada! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "sinal desconhecido"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Desconectar"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Interrupção"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Sair"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Instrução ilegal"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Aviso Trace/breakpoint"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Abortado"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Aviso IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Aviso EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Exceção de ponto flutuante"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Finalizado"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Erro de barramento"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Falha de segmentação"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Chamada de sistema inválida"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Canalização interrompida"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Despertador"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Terminado"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Sinal 1 definido pelo usuário"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Sinal 2 definido pelo usuário"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "O Filho saiu"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Falha na Energia Elétrica"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Parado"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Parado (entrada tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
-msgstr "Parado (saida tty)"
+msgstr "Parado (saída tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Parado (sinal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "Tempo de CPU excedido"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Tamanho do arquivo excedido"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Temporizador virtual expirou"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Temporizador de perfil expirou"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Janela alterada"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Continuação"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Condição de E/S urgente"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "Possível E/S"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Sinal perigoso"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Solicitação de informação"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Co-processador aritmético indisponível"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# tabela hash de arquivos:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "padrão"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "ambiente"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "ambiente sob -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "linha de comando"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "diretiva `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automático"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (de `%s', linha %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# tabela hash do conjunto de variávies:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1842,7 +1884,7 @@ msgstr ""
 "\n"
 "# Variáveis\n"
 
-#: variable.c:1453
+#: variable.c:1627
 #, fuzzy
 msgid ""
 "\n"
@@ -1851,7 +1893,7 @@ msgstr ""
 "\n"
 "# Valores da variável de padrões específicos"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1859,7 +1901,7 @@ msgstr ""
 "\n"
 "# Faltam valores para variável de padrões específicos"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1868,14 +1910,14 @@ msgstr ""
 "\n"
 "# %u valores para variável de padrões específicos"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
-msgstr "aviso: variável indefinida `%.*s'"
+msgstr ""
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search falhou com %d\n"
 
 #: vmsjobs.c:71
@@ -1883,72 +1925,77 @@ msgstr "sys$search falhou com %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Aviso: Redireção vazia\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "erro interno: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-warning, pode ser preciso reativar o CTRL-Y no DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "EMBUTIDO [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD EMBUTIDO %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM EMBUTIDO %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Comando embutido desconhecido `%s'.\n"
+msgstr "Comandos embutidos desconhecidos `%s'.\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Erro, comando vazio\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada de %s redirecionada\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erro redirecionado para %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Saída redirecionada para %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Saida redirecionada para %s\n"
+msgstr "Saída redirecionada para %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Executando %s ao invés de\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erro de execução, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1956,11 +2003,11 @@ msgstr ""
 "\n"
 "# Caminho VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Sem caminho `vpath'."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1969,7 +2016,7 @@ msgstr ""
 "\n"
 "# %u caminhos `vpath'.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1977,7 +2024,7 @@ msgstr ""
 "\n"
 "# Sem caminho genérico (variável `VPATH')."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1993,94 +2040,35 @@ msgstr ""
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\n"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Não especifique -j ou --jobs se o sh.exe não estiver disponível."
 
 #~ msgid "Resetting make for single job mode."
 #~ msgstr "Reiniciando o make para o modo de trabalho único."
 
-#~ msgid "no file name for `%sinclude'"
-#~ msgstr "sem nome de arquivo para `%sinclude'"
-
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio"
-
 #~ msgid ""
-#~ "\n"
-#~ "# No files."
-#~ msgstr ""
-#~ "\n"
-#~ "# Nenhum arquivo."
-
-# Não traduzi "hash buckets" por não encontrar uma tradução satisfatória.
-# Assim que encontrar farei a atualização.
-#~ msgid ""
-#~ "\n"
-#~ "# %u files in %u hash buckets.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "# %u arquivos em %u hash buckets.\n"
-
-#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr "# média %.3f arquivos por grupo, max %u arquivos em um grupo.\n"
-
-#~ msgid "the `word' function takes a positive index argument"
-#~ msgstr "a função `word' requer um argumento de índice positivo."
-
-#~ msgid " (ignored)"
-#~ msgstr " (ignorado)"
-
-#~ msgid "DIRECTORY"
-#~ msgstr "DIRETÓRIO"
-
-#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "Mudar para o DIRETÓRIO antes de fazer algo"
-
-#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Suspende o processo para permiter o uso do depurador"
-
-#~ msgid "Environment variables override makefiles"
+#~ "%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 ""
-#~ "As variáveis de ambiente têm prioridade em relação aos arquivos make"
-
-#~ msgid "FILE"
-#~ msgstr "ARQUIVO"
-
-#~ msgid "Read FILE as a makefile"
-#~ msgstr "Lê o ARQUIVO como um arquivo make"
-
-#~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "Pesquisa o DIRETÓRIO por arquivos make inclusos"
-
-#~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "Não inicia múltiplas tarefas a menos que a carga esteja abaixo de N"
-
-#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "Não executa quaisquer comandos; apenas imprime-os"
-
-#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "Considera o ARQUIVO muito antigo e não o processa"
+#~ "%sEste é um programa livre; veja o fonte para as condições de cópia.\n"
+#~ "%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n"
+#~ "%sFUNÇÃO EM PARTICULAR.\n"
 
-#~ msgid "Don't echo commands"
-#~ msgstr "Não ecoa os comandos"
+#~ msgid "extraneous `endef'"
+#~ msgstr "`endef' estranho"
 
-#~ msgid "Turns off -k"
-#~ msgstr "Desativa -k"
+#~ msgid "empty `override' directive"
+#~ msgstr "diretiva `override' vazia"
 
-#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Considera o ARQUIVO muito novo"
+#~ msgid "invalid `override' directive"
+#~ msgstr "diretiva `override' inválida"
 
-#~ msgid "Entering"
-#~ msgstr "Entrando no"
-
-#~ msgid "Leaving"
-#~ msgstr "Saindo do"
-
-#~ msgid "# No variables."
-#~ msgstr "# Sem variáveis."
-
-#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# média de %.1f variáveis por grupo, max %u em um grupo.\n"
+#~ msgid "no file name for `%sinclude'"
+#~ msgstr "sem nome de arquivo para `%sinclude'"
 
-#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# média de %d.%d variáveis por grupo, max %u em um grupo.\n"
+#~ msgid "target `%s' leaves prerequisite pattern empty"
+#~ msgstr "O alvo `%s' deixou o pré-requisito padrão vazio"
index e656e32..d868841 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index 131eb16..10c18bf 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
-# ìÏËÁÌÉÚÁÃÉÑ make
-# Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-# Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>, 1998
+# Translation of make messages to Russian
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 # Alexey Mahotkin <alexm@hsys.msk.ru> 2001
-# Denis Perchine <dyp@perchine.com>, 2001, 2002
 #
+# Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>, 1998.
+# Denis Perchine <dyp@perchine.com>, 2001, 2002.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010.
+# Pavel Maryanov <acid_jack@ukr.net>, 2009.
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.79.1\n"
+"Project-Id-Version: make 3.81.91\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
-"PO-Revision-Date: 2002-01-07 19:34GMT+06\n"
-"Last-Translator: Denis Perchine <dyp@perchine.com>\n"
-"Language-Team: Russian <ru@li.org>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2010-07-21 21:46+0400\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=KOI8-R\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 0.9.5\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
-msgstr "ÐÏÐÙÔËÁ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÇÏ ÓÒÅÄÓÔ×Á: `%s'"
+msgstr "попÑ\8bÑ\82ка Ð¸Ñ\81полÑ\8cзованиÑ\8f Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ\80живаемого Ñ\81Ñ\80едÑ\81Ñ\82ва: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ ÞÌÅÎÁ ÁÒÈÉ×Á ÎÅ×ÏÚÍÏÖÎÏ × ÓÉÓÔÅÍÅ VMS"
+msgstr "обновление времени изменения члена архива невозможно в системе VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: áÒÈÉ× `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
+msgstr "обновление времени изменения: Архив `%s' не существует"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: îÅ×ÅÒÎÙÊ ÁÒÈÉ×: `%s'"
+msgstr "обновление времени изменения: Неверный архив: `%s'"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: üÌÅÍÅÎÔ `%s' ÎÅ ÓÏÄÅÒÖÉÔÓÑ × `%s'"
+msgstr "обновление времени изменения: Элемент `%s' не содержится в `%s'"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
-"ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: æÕÎËÃÉÑ ar_member_touch ×ÅÒÎÕÌÁ\n"
-"ÏÛÉÂÏÞÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ `%s'"
+"обновление времени изменения: Функция ar_member_touch вернула\n"
+"ошибочное значение для `%s'"
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
-msgstr "lbr$set_module ÎÅ ÓÍÏÇÌÁ ÉÚ×ÌÅÞØ ÉÎÆÏÒÍÁÃÉÀ Ï ÍÏÄÕÌÅ, ÓÔÁÔÕÓ = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_module() не смогла извлечь информацию о модуле, статус = %d"
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
-msgstr "lbr$init_control ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ %d"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$init_control() вернула код ошибки %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "ïÛÉÂËÁ ÏÔËÒÙÔÉÑ ÂÉÂÌÉÏÔÅËÉ `%s' ÄÌÑ ÐÏÉÓËÁ ÜÌÅÍÅÎÔÁ `%s'"
+msgstr "Ошибка открытия библиотеки `%s' для поиска элемента `%s'"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "üÌÅÍÅÎÔ `%s'%s: %ld ÂÁÊÔ ÐÏ ÁÄÒÅÓÕ %ld (%ld).\n"
+msgstr "Элемент `%s'%s: %ld байт по адресу %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
-msgstr " (ÉÍÑ ÍÏÖÅÔ ÂÙÔØ ÕÓÅÞÅÎÏ)"
+msgstr " (имя может быть усечено)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
-msgstr "  äÁÔÁ %s"
+msgstr "  Дата %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
-msgstr "*** ïÓÔÁÎÏ×.\n"
+msgstr "*** Останов.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] üÌÅÍÅÎÔ ÁÒÈÉ×Á `%s', ËÁÖÅÔÓÑ, ÎÅÄÅÊÓÔ×ÉÔÅÌÅÎ; ÎÅ ÕÄÁÌÅÎ"
+msgstr "*** [%s] Элемент архива `%s', кажется, недействителен; не удалён"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** üÌÅÍÅÎÔ ÁÒÈÉ×Á `%s', ËÁÖÅÔÓÑ, ÎÅÄÅÊÓÔ×ÉÔÅÌÅÎ; ÎÅ ÕÄÁÌÅÎ"
+msgstr "*** Элемент архива `%s', кажется, недействителен; не удалён"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] õÄÁÌÑÅÔÓÑ ÆÁÊÌ `%s'"
+msgstr "*** [%s] Удаляется файл `%s'"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
-msgstr "*** õÄÁÌÑÅÔÓÑ ÆÁÊÌ `%s'"
+msgstr "*** Удаляется файл `%s'"
 
-#: commands.c:599
-msgid "#  commands to execute"
-msgstr "#  ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÓÌÅÄÕÅÔ ×ÙÐÏÌÎÉÔØ"
+#: commands.c:676
+msgid "#  recipe to execute"
+msgstr "#  способ, который следует применить"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
-msgstr " (×ÓÔÒÏÅÎÎÙÅ):"
+msgstr " (встроенные):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
-msgstr "  (ÉÚ `%s', ÓÔÒÏËÁ %lu):\n"
+msgstr "  (из `%s', строка %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
 msgstr ""
 "\n"
-"# ëÁÔÁÌÏÇÉ\n"
+"# Каталоги\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ Ó×ÅÄÅÎÉÑ ×ÙÚÏ×ÏÍ stat.\n"
+msgstr "# %s: невозможно получить сведения вызовом stat.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (ËÌÀÞ %s, ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ %d): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+msgstr "# %s (ключ %s, время модификации %d): невозможно открыть.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %d, inode [%d,%d,%d]): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+msgstr "# %s (устройство %d, inode [%d,%d,%d]): невозможно открыть.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %ld, inode %ld): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+msgstr "# %s (устройство %ld, inode %ld): невозможно открыть.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (ËÌÀÞ %s, ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ %d): "
+msgstr "# %s (ключ %s, время модификации %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %d, inode [%d,%d,%d]): "
+msgstr "# %s (устройство %d, inode [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %ld, inode %ld): "
+msgstr "# %s (устройство %ld, inode %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
-msgstr "îÅÔ"
+msgstr "Нет"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
-msgstr " ÆÁÊÌÏ×,"
+msgstr " файлов,"
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
-msgstr "ÎÅÔ"
+msgstr "нет"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
-msgstr " ÎÅÄÏÓÔÉÖÉÍÙÈ ÃÅÌÅÊ"
+msgstr " недостижимых целей"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
-msgstr " ÎÁ ÔÅËÕÝÉÊ ÍÏÍÅÎÔ."
+msgstr " на текущий момент."
 
-#: dir.c:1079
-#, fuzzy, c-format
+#: dir.c:1092
+#, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " ÎÅÄÏÓÔÉÖÉÍÙÈ ÃÅÌÅÊ × %u ËÁÔÁÌÏÇÁÈ.\n"
+msgstr " недостижимых целей в %lu каталогах.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "òÅËÕÒÓÉ×ÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%s' ÓÓÙÌÁÅÔÓÑ ÓÁÍÁ ÎÁ ÓÅÂÑ (× ÒÅÚÕÌØÔÁÔÅ)"
+msgstr "Рекурсивная переменная `%s' ссылается сама на себя (в результате)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÓÙÌËÁ ÎÁ ÐÅÒÅÍÅÎÎÕÀ"
+msgstr "незавершённая ссылка на переменную"
 
-#: file.c:270
+#: file.c:267
 #, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ ÆÁÊÌÁ `%s' ÂÙÌÉ ÚÁÄÁÎÙ × %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "Способ для файла `%s' был задан в %s:%lu,"
 
-#: file.c:275
+#: file.c:272
 #, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ ÆÁÊÌÁ `%s' ÂÙÌÉ ÎÁÊÄÅÎÙ ÉÚ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ,"
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr "Способ для файла `%s' был найден из неявного правила,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
-msgstr "ÎÏ `%s' É `%s' ÔÅÐÅÒØ ÓÞÉÔÁÀÔÓÑ ÏÄÎÉÍ É ÔÅÍ ÖÅ ÆÁÊÌÏÍ. "
+msgstr "но `%s' и `%s' теперь считаются одним и тем же файлом. "
 
-#: file.c:281
+#: file.c:278
 #, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
-"ëÏÍÁÎÄÙ ÄÌÑ `%s' ÉÇÎÏÒÉÒÕÀÔÓÑ, ×ÍÅÓÔÏ ÎÉÈ ÂÕÄÕÔ ÉÓÐÏÌØÚÏ×ÁÎÙ ËÏÍÁÎÄÙ ÄÌÑ `%"
-"s'."
+"Способ для `%s' игнорируется, вместо него будет использован способ для `%s'."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
-"ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ `%s' Ó ÏÄÎÉÍ Ä×ÏÅÔÏÞÉÅÍ × `%s' Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ"
+"невозможно переименовать `%s' с одним двоеточием в `%s' с двумя двоеточиями"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
-"ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ `%s' Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ × `%s' Ó ÏÄÎÉÍ Ä×ÏÅÔÏÞÉÅÍ"
+"невозможно переименовать `%s' с двумя двоеточиями в `%s' с одним двоеточием"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
-msgstr "*** õÄÁÌÅÎÉÅ ÐÒÏÍÅÖÕÔÏÞÎÏÇÏ ÆÁÊÌÁ `%s'"
+msgstr "*** Удаление промежуточного файла `%s'"
 
-#: file.c:385
-#, fuzzy
+#: file.c:396
 msgid "Removing intermediate files...\n"
-msgstr "*** õÄÁÌÅÎÉÅ ÐÒÏÍÅÖÕÔÏÞÎÏÇÏ ÆÁÊÌÁ `%s'"
+msgstr "Удаление промежуточных файлов...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: ÷ÒÅÍÅÎÎÏÊ ÛÔÁÍР×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÉÁÐÁÚÏÎÁ; ÐÏÄÓÔÁ×ÌÑÅÍ %s"
+msgstr "%s: Временной штамп выходит за пределы диапазона; подставляем %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
-msgstr "ôÅËÕÝÅÅ ×ÒÅÍÑ"
+msgstr "Текущее время"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
-msgstr "# îÅ Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ:"
+msgstr "# Не является целью:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  ãÅÎÎÙÊ ÆÁÊÌ (ÚÁ×ÉÓÉÍÏÓÔØ .PRECIOUS)."
+msgstr "#  Ценный файл (зависимость .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  ðÓÅ×ÄÏÃÅÌØ (ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ .PHONY)."
+msgstr "#  Псевдоцель (зависимость от .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
-msgstr "#  ãÅÌØ, ×ÙÚÙ×ÁÅÍÁÑ ÉÚ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ."
+#: file.c:933
+msgid "#  Command line target."
+msgstr "#  Цель, вызываемая из командной строки."
 
-#: file.c:909
-#, fuzzy
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  makefile ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÌÉ ÉÚ MAKEFILES."
+msgstr "#  По умолчанию, MAKEFILES, или -include/sinclude makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
-msgstr "#  ðÒÏÉÚ×ÏÄÉÌÓÑ ÐÏÉÓË ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ"
+msgstr "#  Производился поиск неявных правил."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
-msgstr "#  ðÏÉÓË ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÎÅ ÐÒÏÉÚ×ÏÄÉÌÓÑ."
+msgstr "#  Поиск неявных правил не производился."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  ïÓÎÏ×Á ÎÅÑ×ÎÏÇÏ ÉÌÉ ÓÔÁÔÉÞÅÓËÏÇÏ ÏÂÒÁÚÃÁ: `%s'\n"
+msgstr "#  Основа неявного или статического образца: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  æÁÊÌ -- ÐÒÏÍÅÖÕÔÏÞÎÁÑ ÚÁ×ÉÓÉÍÏÓÔØ."
+msgstr "#  Файл — промежуточная зависимость."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
-msgstr "#  óÏÂÉÒÁÅÔ ÔÁËÖÅ:"
+msgstr "#  Собирает также:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
-msgstr "#  ÷ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ ÎÉ ÒÁÚÕ ÎÅ ÐÒÏ×ÅÒÑÌÏÓØ."
+msgstr "#  Время изменения ни разу не проверялось."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
-msgstr "#  æÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+msgstr "#  Файл не существует."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
-msgstr "# æÁÊÌ ÏÞÅÎØ ÓÔÁÒÙÊ."
+msgstr "#  Файл очень старый."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ %s\n"
+msgstr "#  Время последнего изменения %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
-msgstr "#  æÁÊÌ ÂÙÌ ÏÂÎÏ×ÌÅÎ."
+msgstr "#  Файл был обновлён."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
-msgstr "#  æÁÊÌ ÎÅ ÂÙÌ ÏÂÎÏ×ÌÅÎ."
+msgstr "#  Файл не был обновлён."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
-msgstr "#  ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ×ÙÐÏÌÎÑÀÔÓÑ ÎÅËÏÔÏÒÙÅ ËÏÍÁÎÄÙ (üôï ïûéâëá)."
+#: file.c:968
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  В данный момент уже применяется некий способ (ЭТО ОШИБКА)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
-"#  ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ×ÙÐÏÌÎÑÀÔÓÑ ËÏÍÁÎÄÙ ÎÅËÏÔÏÒÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ (üôï ïûéâëá)."
+"#  В данный момент уже применяется некий способ по зависимостям (ЭТО ОШИБКА)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
-msgstr "#  õÓÐÅÛÎÏ ÏÂÎÏ×ÌÅÎÏ."
+msgstr "#  Успешно обновлено."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  äÏÌÖÎÏ ÂÙÔØ ÏÂÎÏ×ÌÅÎÏ (ÚÁÄÁΠËÌÀÞ -q)."
+msgstr "#  Должно быть обновлено (задан ключ -q)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
-msgstr "#  ðÏÐÙÔËÁ ÏÂÎÏ×ÌÅÎÉÑ ÂÅÚÕÓÐÅÛÎÁ."
+msgstr "#  Попытка обновления безуспешна."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
-msgstr "#  îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÞÌÅÎÁ `update_status'!"
+msgstr "#  Неверное значение члена `update_status'!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
-msgstr "#  îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÞÌÅÎÁ `command_state'!"
+msgstr "#  Неверное значение члена `command_state'!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 "\n"
-"# æÁÊÌÙ"
+"# Файлы"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
+"\n"
+"# состояние файлов хеш-таблицы:\n"
+"# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
-msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `word'"
+msgstr "нечисловой первый аргумент функции `word'"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
-msgstr "ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `word' ÄÏÌÖÅΠÂÙÔØ ÂÏÌØÛÅ ÎÕÌÑ"
+msgstr "пеÑ\80вÑ\8bй Ð°Ñ\80гÑ\83менÑ\82 Ñ\84Ñ\83нкÑ\86ии `word' Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ\8bÑ\82Ñ\8c Ð±Ð¾Ð»Ñ\8cÑ\88е Ð½Ñ\83лÑ\8f"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
-msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `wordlist'"
+msgstr "нечисловой первый аргумент функции `wordlist'"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
-msgstr "ÎÅÞÉÓÌÏ×ÏÊ ×ÔÏÒÏÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `wordlist'"
+msgstr "нечисловой второй аргумент функции `wordlist'"
 
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: 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: DuplicateHandle(Err) ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ (e=%d)\n"
+#: function.c:1458
+#, c-format
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) вернула код ошибки (e=%ld)\n"
 
 #: function.c:1469
-#, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ (e=%d)\n"
+#, c-format
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+"windows32_open_pipe(): DuplicateHandle(Err) вернула код ошибки (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
-msgstr "windows32_openpipe(): process_init_fd() ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() вернула код ошибки (e=%ld)\n"
+
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() завершилась неудачно\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "ïÞÉÝÁÀ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
+msgstr "Очищаю временный пакетный файл %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÁÒÇÕÍÅÎÔÏ× (×ÓÅÇÏ %d) ÆÕÎËÃÉÉ `%s'"
+msgstr "недостаточно аргументов (всего %d) функции `%s'"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "îÅ ÒÅÁÌÉÚÏ×ÁÎÏ ÎÁ ÜÔÏÊ ÐÌÁÔÆÏÒÍÅ: ÆÕÎËÃÉÑ `%s'"
+msgstr "не реализовано на этой платформе: функция `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ×ÙÚÏ× ÆÕÎËÃÉÉ `%s': ÐÒÏÐÕÝÅÎÏ `%c'"
+msgstr "незавершённый вызов функции `%s': пропущено `%c'"
 
-# óÏÏÂÝÅÎÉÑ getopt ÉÓËÌÀÞÅÎÙ, Ô.Ë. ÏÎÉ ÏÔÎÏÓÑÔÓÑ Ë ÕÖÅ
-# ÕÓÔÁÒÅ×ÛÅÊ ×ÅÒÓÉÉ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÉ, É ÉÓÞÅÚÎÕÔ × ÓÌÅÄÕÀÝÅÊ ×ÅÒÓÉÉ make
+# Сообщения getopt исключены, т.к. они относятся к уже
+# устаревшей версии этой библиотеки, и исчезнут в следующей версии make
 #
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: ËÌÀÞ `%s' ÎÅ ÏÄÎÏÚÎÁÞÅÎ\n"
+msgstr "%s: ключ `%s' не однозначен\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `--%s' ÎÅ ÉÍÅÅÔ ÁÒÇÕÍÅÎÔÁ\n"
+msgstr "%s: ключ `--%s' не имеет аргумента\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `%c%s' ÎÅ ÉÍÅÅÔ ÁÒÇÕÍÅÎÔÁ\n"
+msgstr "%s: ключ `%c%s' не имеет аргумента\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: ËÌÀÞ `%s' ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ\n"
+msgstr "%s: ключ `%s' требует аргумент\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
+msgstr "%s: неизвестный ключ `--%s'\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: ÎÅÉÚ×ÅÓÔ×ÎÙÊ ËÌÀÞ `%c%s'\n"
+msgstr "%s: неизвестный ключ `%c%s'\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
+msgstr "%s: недопустимый ключ -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
+msgstr "%s: неверный ключ -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: ËÌÀÞ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔ -- %c\n"
+msgstr "%s: ключ требует аргумент -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: ËÌÀÞ `-W %s' ÎÅÏÄÎÏÚÎÁÞÅÎ\n"
+msgstr "%s: ключ `-W %s' неоднозначен\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: ËÌÀÞ `-W %s' ÎÅ ÉÍÅÅÔ ÁÒÇÕÍÅÎÔÁ\n"
+msgstr "%s: ключ `-W %s' не имеет аргумента\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
-msgstr ""
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "не удалось выделить %lu байт для хеш-таблицы: закончилась память"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr ""
+msgstr "Загружено=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr ""
+msgstr "Переформулировано=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr ""
+msgstr "Противоречий=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "ðÏÉÓË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ `%s'.\n"
+msgstr "Поиск неявного правила для `%s'.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "ðÏÉÓË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ ÜÌÅÍÅÎÔÁ ÁÒÈÉ×Á `%s'.\n"
+msgstr "Поиск неявного правила для элемента архива `%s'.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "éÚÂÅÖÁÎÉÅ ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÙÚÏ×Á ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ.\n"
+msgstr "Избежание рекурсивного вызова неявного правила.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÐÒÁ×ÉÌÁ Ó ÏÂÒÁÚÃÏÍ, ÏÓÎÏ×Á `%.*s'.\n"
+msgstr "Попытка применения правила с образцом, основа `%.*s'.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "ïÔ×ÅÒÖÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏÊ ÎÅÑ×ÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "ïÔ×ÅÒÖÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÒÁ×ÉÌÁ `%s'.\n"
+msgstr "Отвержение невозможной зависимости правила `%s'.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÎÅÑ×ÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Отвержение невозможной неявной зависимости `%s'.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÐÒÁ×ÉÌÁ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
+msgstr "Попытка применения правила зависимости `%s'.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Попытка применения неявной зависимости `%s'.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "ïÂÎÁÒÕÖÅÎÁ ÚÁ×ÉÓÉÍÏÓÔØ `%s' × ×ÉÄÅ VPATH `%s'\n"
+msgstr "Обнаружена зависимость `%s' в виде VPATH `%s'\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "ðÏÉÓË ÐÒÁ×ÉÌÁ Ó ÐÒÏÍÅÖÕÔÏÞÎÙÍ ÆÁÊÌÏÍ `%s'.\n"
+msgstr "Поиск правила с промежуточным файлом `%s'.\n"
 
-#: job.c:321
-#, fuzzy
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+msgstr "Не удалось создать временный файл\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] ïÛÉÂËÁ 0x%x (ÉÇÎÏÒÉÒÏ×ÁÎÁ)"
+msgstr "*** [%s] Ошибка 0x%x (игнорирована)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] ïÛÉÂËÁ 0x%x"
+msgstr "*** [%s] Ошибка 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
-msgstr "[%s] ïÛÉÂËÁ %d (ÉÇÎÏÒÉÒÏ×ÁÎÁ)"
+msgstr "[%s] Ошибка %d (игнорирована)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
-msgstr "*** [%s] ïÛÉÂËÁ %d"
+msgstr "*** [%s] Ошибка %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
-msgstr " (ÓÄÅÌÁΠÄÁÍРÐÁÍÑÔÉ)"
+msgstr " (сделан дамп памяти)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** ïÖÉÄÁÎÉÅ ÚÁ×ÅÒÛÅÎÉÑ ÚÁÄÁÎÉÊ..."
+msgstr "*** Ожидание завершения заданий..."
 
-#: job.c:518
+#: job.c:579
 #, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
-msgstr "îÅÚÁ×ÅÒÛÅÎÎÙÊ ÐÏÔÏÍÏË 0x%08lx (%s) PID %ld %s\n"
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Незавершённый потомок %p (%s) PID %s %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
-msgstr " (ÕÄÁÌÅÎÎÙÊ)"
+msgstr " (удалённый)"
 
-#: job.c:698
+#: job.c:758
 #, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
-msgstr "ðÏÄÂÉÒÁÀ ÎÅÕÄÁÞÎÏ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Подбирается неудачно завершившийся  потомок %p PID %s %s\n"
 
-#: job.c:699
+#: job.c:759
 #, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
-msgstr "ðÏÄÂÉÒÁÀ ÕÄÁÞÎÏ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Подбирается удачно завершившийся потомок %p PID %s %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "ðÏÄÞÉÝÁÀ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
+msgstr "Подчищаю временный пакетный файл %s\n"
 
-#: job.c:802
-#, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "õÄÁÌÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s ÉÚ ÃÅÐÏÞËÉ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
+#: job.c:861
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Удаляется потомок %p PID %s%s из цепочки.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
-msgstr "ÐÉÛÕ × ÓÅÒ×ÅÒ ÚÁÄÁÞ"
+msgstr "пиÑ\88Ñ\83 Ð² Ñ\81еÑ\80веÑ\80 Ð·Ð°Ð´Ð°Ñ\87"
 
-#: job.c:864
+#: job.c:922
 #, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
-msgstr "ïÓ×ÏÂÏÖÄÁÅÔÓÑ ÔÏËÅΠÄÌÑ ÐÏÔÏÍËÁ 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
+msgstr "Освобождается токен для потомка %p (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() ÎÅ ÓÍÏÇÌÁ ÚÁÐÕÓÔÉÔØ ÐÒÏÃÅÓÓ (e=%d)\n"
+msgstr "process_easy() не смогла запустить процесс (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"ðÒÉ ÎÅÕÓÐÅÛÎÏÍ ÚÁÐÕÓËÅ ÓÏÓÞÉÔÁÎÏ %d ÁÒÇÕÍÅÎÔÏ×\n"
+"При неудачном запуске сосчитано %d аргументов\n"
 
-#: job.c:1455
+#: job.c:1525
 #, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
-msgstr ""
-"ðÏÍÅÝÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx (%s) PID %ld%s × ÃÅÐÏÞËÕ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
-msgstr "ðÏÌÕÞÅΠÔÏËÅΠÄÌÑ ÐÏÔÏÍËÁ 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Получен токен для потомка %p (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
-msgstr "ÞÉÔÁÀ ÚÁÄÁÞÉ ÉÚ ÐÏÔÏËÁ"
+msgstr "читаю задачи из потока"
+
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr "Применяется способ из %s:%lu для обновления цели `%s'.\n"
+
+#: job.c:1802
+#, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Выполняется встроенный способ для обновления цели `%s'.\n"
 
-#: job.c:1832
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
-msgstr "ÜÔÁ ÏÐÅÒÁÃÉÏÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÐÒÅÄÅÌÙ ÚÁÇÒÕÚËÉ"
+msgstr "эта операционная система не позволяет устанавливать пределы загрузки"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
-msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÒÅÄÅÌÙ ÚÁÇÒÕÚËÉ: "
+msgstr "невозможно установить пределы загрузки: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Не удалось восстановить stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 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() ÎÅ ÓÍÏÇÌÁ ÚÁÐÕÓÔÉÔØ ÐÒÏÃÅÓÓ (e=%d)\n"
+msgstr "Не удалось восстановить stdout\n"
 
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make ÎÁÛÌÁ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ pid %d, ×ÓÅ ÅÝÅ ÏÖÉÄÁÅÔ pid %d\n"
+#: job.c:2127
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make нашла завершившегося потомка pid %s, всё ещё ожидает pid %s\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s: ëÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ"
+msgstr "%s: Команда не найдена"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s: ëÏÍÁÎÄÎÙÊ ÐÒÏÃÅÓÓÏÒ ÎÅ ÎÁÊÄÅÎ"
+msgstr "%s: Командный процессор не найден"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: вероятно, закончилось место под окружение"
 
-#: job.c:2363
-#, fuzzy, c-format
+#: job.c:2461
+#, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "ðÅÒÅÍÅÎÎÁÑ $SHELL ÉÚÍÅÎÉÌÁÓØ (ÂÙÌÏ '%s', ÔÅÐÅÒØ '%s')"
+msgstr "Переменная $SHELL изменилась (было '%s', теперь '%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "óÏÚÄÁÅÔÓÑ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
+msgstr "Создаётся временный пакетный файл %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Содержимое файла пакетных заданий:%s\n"
+"\t%s\n"
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
-"%s (ÓÔÒÏËÁ %d) ðÌÏÈÏÊ ËÏÎÔÅËÓÔ ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ (!unixy && !"
+"%s (строка %d) Плохой контекст командного процессора (!unixy && !"
 "batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
-msgstr "ëÌÀÞÉ:\n"
+msgstr "Ключи:\n"
 
-#: main.c:292
-#, fuzzy
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "éÇÎÏÒÉÒÕÅÔÓÑ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ"
+msgstr "  -b, -m                      Игнорируется для совместимости.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr ""
+msgstr "  -B, --always-make           Без условий отрабатывать все цели.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
+"  -C КАТАЛОГ, --directory=КАТАЛОГ\n"
+"                              Перейти в КАТАЛОГ перед выполнением действий.\n"
 
-#: main.c:299
-#, fuzzy
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "÷Ù×ÏÄÉÔØ ÍÁÓÓÕ ÏÔÌÁÄÏÞÎÙÈ ÓÏÏÂÝÅÎÉÊ"
+msgstr "  -d                          Выводить массу отладочных сообщений.\n"
 
-#: main.c:301
-#, fuzzy
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
-msgstr "÷Ù×ÏÄÉÔØ ÒÁÚÌÉÞÎÙÅ ÔÉÐÙ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
+msgstr ""
+"  --debug[=ФЛАГИ]             Выводить различные типы отладочной "
+"информации.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
+"  -e, --environment-overrides\n"
+"                              Переменные окружения заменяют значения "
+"makefile.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+"  --eval=СТРОКА               Вычислить СТРОКУ как предложение makefile.\n"
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
+"  -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n"
+"                              Использовать ФАЙЛ в качестве makefile.\n"
 
-#: main.c:309
-#, fuzzy
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "ðÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ"
+msgstr "  -h, --help                  Показать эту справку и выйти.\n"
 
-#: main.c:311
-#, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "éÇÎÏÒÉÒÏ×ÁÔØ ÏÛÉÂËÉ ËÏÍÁÎÄ"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors         Игнорировать ошибки способов.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
+"  -I КАТАЛОГ, --include-dir=КАТАЛОГ\n"
+"                              Искать включаемые make-файлы в КАТАЛОГЕ.\n"
 
-#: main.c:316
-#, fuzzy
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"úÁÐÕÓËÁÔØ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÄÏ N ÚÁÄÁÎÉÊ; \n"
-"ÅÓÌÉ ÁÒÇÕÍÅÎÔ ÎÅ ÚÁÄÁÎ, ÞÉÓÌÏ ÚÁÄÁÎÉÊ ÎÅÏÇÒÁÎÉÞÅÎÏ"
+"  -j [N], --jobs[=N]          Запускать одновременно до N заданий; \n"
+"                              если N не указано, число заданий "
+"неограничено.\n"
 
-#: main.c:318
-#, fuzzy
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
-"ðÒÏÄÏÌÖÁÔØ ÒÁÂÏÔÕ, ÄÁÖÅ ÅÓÌÉ ÎÅËÏÔÏÒÙÅ ÃÅÌÉ\n"
-"ÎÅ ÍÏÇÕÔ ÂÙÔØ ÄÏÓÔÉÇÎÕÔÙ"
+"  -k, --keep-going            Продолжать работу, даже если некоторые цели\n"
+"                              не могут быть достигнуты.\n"
 
-#: main.c:320
+#: main.c:334
 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.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Использовать последнее mtime при выборе между\n"
+"                              символическими ссылками и целью.\n"
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Не применять способ на самом деле; просто\n"
+"                              напечатать его.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
+"  -o ФАЙЛ, --old-file=ФАЙЛ, --assume-old=ФАЙЛ\n"
+"                              Считать ФАЙЛ очень старым и не переделывать "
+"его.\n"
 
-#: main.c:331
-#, fuzzy
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "îÁÐÅÞÁÔÁÔØ ×ÎÕÔÒÅÎÎÀÀ ÂÁÚÕ ÄÁÎÎÙÈ make"
+msgstr ""
+"  -p, --print-data-base       Напечатать внутреннюю базу данных make.\n"
 
-#: main.c:333
-#, fuzzy
+#: main.c:347
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"îÅ ×ÙÐÏÌÎÑÔØ ËÏÍÁÎÄÙ;\n"
-"ËÏÄ ÚÁ×ÅÒÛÅÎÉÑ ÐÏËÁÚÙ×ÁÅÔ, ×ÓÅ ÌÉ ÕÖÅ ÓÄÅÌÁÎÏ"
+"  -q, --question              Не применять способ;\n"
+"                              код завершения показывает, всё ли уже "
+"сделано.\n"
 
-#: main.c:335
-#, fuzzy
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "îÅ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÓÔÒÏÅÎÎÙÅ ÎÅÑ×ÎÙÅ ÐÒÁ×ÉÌÁ"
+msgstr ""
+"  -r, --no-builtin-rules      Не использовать встроенные неявные правила.\n"
 
-# þÔÏ ÔÁËÏÅ "variable settings"?
-#: main.c:337
-#, fuzzy
+# Что такое "variable settings"?
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
-msgstr "÷ÙËÌÀÞÉÔØ ÎÅ ÚÁÄÁ×ÁÔØ ×ÓÔÒÏÅÎÎÙÅ ÚÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÙÍ"
-
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
 msgstr ""
+"  -R, --no-builtin-variables   Выключить установку встроенных\n"
+"                              значений переменных.\n"
+
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet        Не показывать сами способы.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Отменить ключ -k.\n"
 
-#: main.c:344
-#, fuzzy
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"õÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÄÏÓÔÕÐÁ ÃÅÌÅÊ × ÔÅËÕÝÅÅ,\n"
-"Á ÎÅ ÐÅÒÅÓÏÂÉÒÁÔØ ÉÈ"
+"  -t, --touch                 Установить время доступа целей в текущее,\n"
+"                              а не пересобирать их.\n"
 
-#: main.c:346
-#, fuzzy
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ"
+msgstr "  -v, --version               Показать информацию о версии и выйти.\n"
 
-#: main.c:348
-#, fuzzy
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "îÁÐÅÞÁÔÁÔØ ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ"
+msgstr "  -w, --print-directory       Напечатать текущий каталог.\n"
 
-#: main.c:350
-#, fuzzy
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
-msgstr "ïÔÍÅÎÉÔØ ËÌÀÞ -w, ÄÁÖÅ ÅÓÌÉ ÏΠÂÙÌ Ñ×ÎÏ ÕËÁÚÁÎ"
+msgstr ""
+"  --no-print-directory        Отменить ключ -w, даже если он был явно "
+"указан.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
+"  -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n"
+"                              Считать ФАЙЛ всегда новым.\n"
 
-#: main.c:355
-#, fuzzy
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"÷ÙÄÁ×ÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ ÐÒÉ ÓÓÙÌËÅ\n"
-"ÎÁ ÎÅÏÐÒÅÄÅÌÅÎÎÕÀ ÐÅÒÅÍÅÎÎÕÀ"
+"  --warn-undefined-variables  Выдавать предупреждение при ссылке\n"
+"                              на неопределённую переменную.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
-msgstr "ÐÕÓÔÁÑ ÓÔÒÏËÁ ÎÅÄÏÐÕÓÔÉÍÁ × ËÁÞÅÓÔ×Å ÉÍÅÎÉ ÆÁÊÌÁ"
+msgstr "пÑ\83Ñ\81Ñ\82аÑ\8f Ñ\81Ñ\82Ñ\80ока Ð½ÐµÐ´Ð¾Ð¿Ñ\83Ñ\81Ñ\82има Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¸Ð¼ÐµÐ½Ð¸ Ñ\84айла"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÐÏÓÏ ÚÁÄÁÎÉÑ ÕÒÏ×ÎÑ ÏÔÌÁÄËÉ `%s'"
+msgstr "неизвестный способ задания уровня отладки `%s'"
 
-#: main.c:670
-#, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s: ÐÏÊÍÁÎÏ ÐÒÅÒÙ×ÁÎÉÅ ÉÌÉ ÉÓËÌÀÞÅÎÉÅ (ËÏÄ = 0x%x, ÁÄÒÅÓ = 0x%x)\n"
+#: main.c:690
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Ð¿Ð¾Ð¹Ð¼Ð°Ð½Ð¾ Ð¿Ñ\80еÑ\80Ñ\8bвание Ð¸Ð»Ð¸ Ð¸Ñ\81клÑ\8eÑ\87ение (код = 0x%lx, Ð°Ð´Ñ\80еÑ\81 = 0x%p)\n"
 
-#: main.c:677
-#, fuzzy, c-format
+#: main.c:697
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"îÅÏÂÒÁÂÏÔÁÎÎÏÅ ÉÓËÌÀÞÅÎÉÅ × ÐÒÏÇÒÁÍÍÅ %s\n"
-"ëÏÄ ÉÓËÌÀÞÅÎÉÑ = %x\n"
-"æÌÁÇÉ ÉÓËÌÀÞÅÎÉÑ = %x\n"
-"áÄÒÅÓ ÉÓËÌÀÞÅÎÉÑ = %x\n"
+"Необработанное исключение в программе %s\n"
+"Код исключения = %lx\n"
+"Флаги исключения = %lx\n"
+"Адрес исключения = 0x%p\n"
 
-#: main.c:685
-#, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "îÁÒÕÛÅÎÉÅ ÄÏÓÔÕÐÁ: ÏÐÅÒÁÃÉÑ ÚÁÐÉÓÉ ÐÏ ÁÄÒÅÓÕ %x\n"
+#: main.c:705
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Нарушение доступа: операция записи по адресу 0x%p\n"
 
-#: main.c:686
-#, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "îÁÒÕÛÅÎÉÅ ÄÏÓÔÕÐÁ: ÏÐÅÒÁÃÉÑ ÞÔÅÎÉÑ ÁÄÒÅÓÁ %x\n"
+#: main.c:706
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Нарушение доступа: операция чтения адреса 0x%p\n"
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
-msgstr "find_and_set_shell ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() устанавливает default_shell = %s\n"
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
-msgstr "find_and_set_shell: ÐÏÉÓË × ÐÕÔÑÈ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "find_and_set_shell(): поиск в путях устанавливает default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr "%s ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÎÁ 30 ÓÅËÕÎÄ..."
+msgstr "%s Ð¿Ñ\80иоÑ\81Ñ\82анавливаеÑ\82Ñ\81Ñ\8f Ð½Ð° 30 Ñ\81екÑ\83нд..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) ÚÁ×ÅÒÛÅÎ.  ðÒÏÄÏÌÖÁÅÍ.\n"
+msgstr "sleep(30) завершён. Продолжаем.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
-msgstr "Makefile ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ ÕËÁÚÁΠÄ×ÁÖÄÙ."
+msgstr "Makefile из стандартного ввода указан дважды."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
-msgstr "fopen (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+msgstr "fopen (временный файл)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
-msgstr "fwrite (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+msgstr "fwrite (временный файл)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "ðÁÒÁÌÌÅÌØÎÙÅ ÚÁÄÁÞÉ (-j) ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÎÁ ÜÔÏÊ ÐÌÁÔÆÏÒÍÅ."
+msgstr "Параллельные задачи (-j) не поддерживаются на этой платформе."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
-msgstr "÷ÏÚ×ÒÁÝÁÅÔÓÑ ÒÅÖÉÍ ÏÄÉÎÏÞÎÏÊ ÚÁÄÁÞÉ (-j1)."
+msgstr "Возвращается режим одиночной задачи (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÅÓËÏÌØËÏ ËÌÀÞÅÊ --jobserver-fds"
+msgstr "внутренняя ошибка: несколько ключей --jobserver-fds"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÏËÁ --jobserver-fds: `%s'"
+msgstr "внутренняя ошибка: неправильная строка --jobserver-fds: `%s'"
+
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Клиент сервера заданий (fds %d,%d)\n"
 
-#: main.c:1674
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
-"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: × ÓÕÂ-Makefile ÐÒÉÎÕÄÉÔÅÌØÎÏ ÚÁÄÁΠ-jN; ÒÅÖÉÍ ÓÅÒ×ÅÒÁ ÚÁÄÁÞ "
-"ÚÁÐÒÅÝÅÎ"
+"пÑ\80едÑ\83пÑ\80еждение: Ð² Ñ\81Ñ\83б-Makefile Ð¿Ñ\80инÑ\83диÑ\82елÑ\8cно Ð·Ð°Ð´Ð°Ð½ -jN; Ñ\80ежим Ñ\81еÑ\80веÑ\80а Ð·Ð°Ð´Ð°Ñ\87 "
+"запрещён"
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
-msgstr "ÓÏÚÄÁÀ ËÏÐÉÀ ÓÅÒ×ÅÒÁ ÚÁÄÁÞ"
+msgstr "создаю копию сервера задач"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
-"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÅÒ×ÅÒ ÚÁÄÁÞ ÎÅÄÏÓÔÕÐÅÎ: ÉÓÐÏÌØÚÕÅÔÓÑ -j1.\n"
-"äÏÂÁ×ØÔÅ `+' Ë ÐÒÁ×ÉÌÕ × ÒÏÄÉÔÅÌØÓËÏÍ make."
+"пÑ\80едÑ\83пÑ\80еждение: Ñ\81еÑ\80веÑ\80 Ð·Ð°Ð´Ð°Ñ\87 Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пен: Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f -j1.\n"
+"Добавьте `+' к правилу в родительском make."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
-msgstr "ÓÏÚÄÁÀ ËÁÎÁÌ ÚÁÄÁÞ"
+msgstr "создаю канал задач"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
-msgstr "ÎÁÞÁÌØÎÁÑ ÎÁÓÔÒÏÊËÁ ÓÅÒ×ÅÒÁ ÚÁÄÁÞ"
+msgstr "начальная настройка сервера задач"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Символические ссылки не поддерживаются: отменяется ключ -L."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
-msgstr "ïÂÎÏ×ÌÅÎÉÅ make-ÆÁÊÌÏ×....\n"
+msgstr "Обновление make-файлов....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Make-ÆÁÊÌ `%s', ×ÏÚÍÏÖÎÏ, ÚÁÃÉËÌÅÎ, ÏΠÎÅ ÂÕÄÅÔ ÐÅÒÅÓÏÂÉÒÁÔØÓÑ.\n"
+msgstr "Make-файл `%s', возможно, зациклен, он не будет пересобираться.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
-msgstr "ðÏÐÙÔËÁ ÐÅÒÅÓÏÂÒÁÔØ make-ÆÁÊÌ `%s' ÎÅÕÓÐÅÛÎÁ."
+msgstr "Попытка пересобрать make-файл `%s' завершилась неудачно."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
-msgstr "÷ËÌÀÞÁÅÍÙÊ make-ÆÁÊÌ `%s' ÎÅ ÎÁÊÄÅÎ."
+msgstr "Включаемый make-файл `%s' не найден."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
-msgstr "Make-ÆÁÊÌ `%s' ÎÅ ÎÁÊÄÅÎ"
+msgstr "Make-файл `%s' не найден"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
-msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ÐÅÒ×ÏÎÁÞÁÌØÎÙÊ ËÁÔÁÌÏÇ."
+msgstr "Невозможно перейти в первоначальный каталог."
 
-#: main.c:2024
-#, fuzzy, c-format
+#: main.c:2102
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "ðÏ×ÔÏÒÎÏÅ ×ÙÐÏÌÎÅÎÉÅ:"
+msgstr "Повторное выполнение[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
-msgstr "unlink (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+msgstr "unlink (временный файл)"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL содержит более одной цели"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
-msgstr "îÅ ÚÁÄÁÎÙ ÃÅÌÉ É ÎÅ ÎÁÊÄÅΠmake-ÆÁÊÌ"
+msgstr "Не заданы цели и не найден make-файл"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
-msgstr "îÅÔ ÃÅÌÅÊ"
+msgstr "Нет целей"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
-msgstr "ïÂÎÏ×ÌÅÎÉÅ ÃÅÌÅÊ ÒÅÚÕÌØÔÁÔÁ...\n"
+msgstr "Обновление целей результата...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅÐÒÁ×ÉÌØÎÙÊ ÈÏÄ ÞÁÓÏ×.  óÂÏÒËÁ ÍÏÖÅÔ ÂÙÔØ ÎÅÐÏÌÎÏÊ."
+msgstr "пÑ\80едÑ\83пÑ\80еждение: Ð\9dепÑ\80авилÑ\8cнÑ\8bй Ñ\85од Ñ\87аÑ\81ов.  Ð¡Ð±Ð¾Ñ\80ка Ð¼Ð¾Ð¶ÐµÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð½ÐµÐ¿Ð¾Ð»Ð½Ð¾Ð¹."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ãåìø]...\n"
+msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
+"\n"
+"Эта программа собрана для %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
+"\n"
+"Эта программа собрана для %s (%s)\n"
 
-#: main.c:2394
-#, fuzzy, c-format
+#: main.c:2481
+#, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr ""
-"\n"
-"óÏÏÂÝÁÊÔÅ Ï ÏÛÉÂËÁÈ ÐÏ ÁÄÒÅÓÕ <bug-make@gnu.org>.\n"
+msgstr "Сообщайте об ошибках по адресу <bug-make@gnu.org>\n"
 
-#: main.c:2466
-#, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "ËÌÀÞ `-%c' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ"
+#: main.c:2562
+#, c-format
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "для ключа `%s%s' нужно указать аргументом непустую строку"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
-msgstr "ËÌÀÞ `-%c' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ"
+msgstr "ключ `-%c' должен использоваться с целым положительным аргументом"
 
-#: 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 ""
-", Á×ÔÏÒÙ Richard Stallman É Roland McGrath.\n"
-"%sóÏÂÒÁÎÏ ÄÌÑ %s\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
-"%s\tFree Software Foundation, Inc.\n"
-"%süÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÐÏÄÒÏÂÎÏÓÔÉ Ï ÕÓÌÏ×ÉÑÈ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ\n"
-"%s× ÉÓÈÏÄÎÏÍ ÔÅËÓÔÅ.  íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ; ÄÁÖÅ ÇÁÒÁÎÔÉÊ\n"
-"%sëïííåòþåóëïê ãåîîïóôé ÉÌÉ ðòéçïäîïóôé äìñ ëáëïê-ìéâï ãåìé.\n"
-"\n"
-"%sóÏÏÂÝÁÊÔÅ Ï ÏÛÉÂËÁÈ ÐÏ ÁÄÒÅÓÕ <bug-make@gnu.org>.\n"
-"\n"
+#: main.c:3054
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%sЭта программа собрана для %s\n"
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
-msgstr ""
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sЭта программа собрана для %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
+"%sЛицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sЭто свободное программное обеспечение: вы можете свободно изменять его и\n"
+"%sраспространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# âÁÚÁ ÄÁÎÎÙÈ Make, ÎÁÐÅÞÁÔÁÎÁ %s"
+"# База данных Make, напечатана %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# ðÅÞÁÔØ ÂÁÚÙ ÄÁÎÎÙÈ Make ÚÁ×ÅÒÛÅÎÁ %s\n"
+"# Печать базы данных Make завершена %s\n"
 
-#: main.c:3101
-#, fuzzy, c-format
+#: main.c:3237
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "÷ÈÏÄ × ÎÅÉÚ×ÅÓÔÎÙÊ ËÁÔÁÌÏÇ"
+msgstr "%s: Вход в неизвестный каталог\n"
 
-#: main.c:3103
-#, fuzzy, c-format
+#: main.c:3239
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "÷ÙÈÏÄ ÉÚ ÎÅÉÚ×ÅÓÔÎÏÇÏ ËÁÔÁÌÏÇÁ"
+msgstr "%s: Выход из неизвестного каталога\n"
 
-#: main.c:3106
-#, fuzzy, c-format
+#: main.c:3242
+#, c-format
 msgid "%s: Entering directory `%s'\n"
-msgstr "÷ÈÏÄ × ËÁÔÁÌÏÇ `%s'\n"
+msgstr "%s: Вход в каталог `%s'\n"
 
-#: main.c:3109
-#, fuzzy, c-format
+#: main.c:3245
+#, c-format
 msgid "%s: Leaving directory `%s'\n"
-msgstr "÷ÙÈÏÄ ÉÚ ËÁÔÁÌÏÇÁ `%s'\n"
+msgstr "%s: Выход из каталога `%s'\n"
 
-#: main.c:3114
-#, fuzzy, c-format
+#: main.c:3250
+#, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "÷ÈÏÄ × ÎÅÉÚ×ÅÓÔÎÙÊ ËÁÔÁÌÏÇ"
+msgstr "%s[%u]: Вход в неизвестный каталог\n"
 
-#: main.c:3117
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "÷ÙÈÏÄ ÉÚ ÎÅÉÚ×ÅÓÔÎÏÇÏ ËÁÔÁÌÏÇÁ"
+msgstr "%s[%u]: Выход из неизвестного каталога\n"
 
-#: main.c:3121
-#, fuzzy, c-format
+#: main.c:3257
+#, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "÷ÈÏÄ × ËÁÔÁÌÏÇ `%s'\n"
+msgstr "%s[%u]: Вход в каталог `%s'\n"
 
-#: main.c:3124
-#, fuzzy, c-format
+#: main.c:3260
+#, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "÷ÙÈÏÄ ÉÚ ËÁÔÁÌÏÇÁ `%s'\n"
+msgstr "%s[%u]: Выход из каталога `%s'\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
-msgstr ".  ïÓÔÁÎÏ×.\n"
+msgstr ".  Останов.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ %d"
+msgstr "Неизвестная ошибка %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
-msgstr ""
+msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
-msgstr ""
+msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
-msgstr "×ÉÒÔÕÁÌØÎÁÑ ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+msgstr "закончилась виртуальная память"
 
-#: misc.c:646
-#, fuzzy, c-format
+#: misc.c:708
+#, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
-"ðÒÁ×Á ÄÏÓÔÕÐÁ Ë %s: ÐÏÌØÚÏ×ÁÔÅÌØ %lu (ÄÅÊÓÔ×ÉÔÅÌØÎÙÊ %lu),\n"
-"ÇÒÕÐÐÁ %lu (ÄÅÊÓÔ×ÉÔÅÌØÎÁÑ %lu)\n"
+"%s: пользователь %lu (действительный %lu),\n"
+"группа %lu (действительная %lu)\n"
 
-#: misc.c:667
-#, fuzzy
+#: misc.c:729
 msgid "Initialized access"
-msgstr "éÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ"
+msgstr "Доступ инициализации"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
-msgstr ""
+msgstr "Доступ пользователя"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
-msgstr ""
+msgstr "Доступ make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
-msgstr ""
+msgstr "Доступ потомка"
 
-#: misc.c:892
-#, fuzzy, c-format
+#: misc.c:954
+#, c-format
 msgid "write error: %s"
-msgstr "ðÏÔÏË ÏÛÉÂÏË ÐÅÒÅÎÁÐÒÁ×ÌÅΠנ%s\n"
+msgstr "ошибка записи: %s"
 
-#: misc.c:894
-#, fuzzy
+#: misc.c:956
 msgid "write error"
-msgstr "ÐÉÛÕ × ÓÅÒ×ÅÒ ÚÁÄÁÞ"
+msgstr "оÑ\88ибка Ð·Ð°Ð¿Ð¸Ñ\81и"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
-msgstr "þÔÅÎÉÅ make-ÆÁÊÌÏ×...\n"
+msgstr "Чтение make-файлов...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
-msgstr "þÔÅÎÉÅ make-ÆÁÊÌÁ `%s'"
+msgstr "Чтение make-файла `%s'"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (ÎÅÔ ÃÅÌÉ ÐÏ ÕÍÏÌÞÁÎÉÀ)"
+msgstr " (нет цели по умолчанию)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (ÐÕÔØ ÐÏÉÓËÁ)"
+msgstr " (пÑ\83Ñ\82Ñ\8c Ð¿Ð¾Ð¸Ñ\81ка)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (ÉÇÎÏÒÉÒÏ×ÁÔØ ÏÛÉÂËÉ)"
+msgstr " (игнорировать ошибки)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (ÎÅ ÒÁÓËÒÙ×ÁÔØ ÓÉÍ×ÏÌ `~') "
+msgstr " (не раскрывать символ `~') "
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
-msgstr "ÎÅ×ÅÒÎÙÊ ÓÉÎÔÁËÓÉÓ × ÕÓÌÏ×ÎÏÍ ×ÙÒÁÖÅÎÉÉ"
-
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "ÉÚÌÉÛÎÉÊ `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "ÐÕÓÔÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ"
+msgstr "неверный синтаксис в условном выражении"
 
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "ÐÕÓÔÁÑ ÄÉÒÅËÔÉ×Á `override'"
+#: read.c:891
+msgid "recipe commences before first target"
+msgstr "обнаÑ\80Ñ\83жен Ñ\81поÑ\81об Ð´Ð¾ Ð¿ÐµÑ\80вого Ð¾Ð¿Ñ\80еделениÑ\8f Ñ\86ели"
 
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÄÉÒÅËÔÉ×Á `override'"
+#: read.c:940
+msgid "missing rule before recipe"
+msgstr "перед способом отсутствует правило"
 
-#: read.c:854
-msgid "commands commence before first target"
-msgstr "ËÏÍÁÎÄÙ ×ÓÔÒÅÞÅÎÙ ÄÏ ÐÅÒ×ÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ ÃÅÌÉ"
-
-#: read.c:905
-msgid "missing rule before commands"
-msgstr "ÐÅÒÅÄ ËÏÍÁÎÄÁÍÉ ÐÒÏÐÕÝÅÎÏ ÐÒÁ×ÉÌÏ"
-
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
-msgstr "ÐÒÏÐÕÝÅΠÒÁÚÄÅÌÉÔÅÌØ%s"
+msgstr "пÑ\80опÑ\83Ñ\89ен Ñ\80азделиÑ\82елÑ\8c%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr "(ÎÅ ÉÍÅÌÉ ÌÉ ×Ù × ×ÉÄÕ TAB ×ÍÅÓÔÏ ×ÏÓØÍÉ ÐÒÏÂÅÌÏ×?)"
+msgstr "(не имели ли вы в виду TAB вместо восьми пробелов?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
-msgstr "ÐÒÏÐÕÝÅΠÏÂÒÁÚÅàÃÅÌÉ"
+msgstr "пÑ\80опÑ\83Ñ\89ен Ð¾Ð±Ñ\80азеÑ\86 Ñ\86ели"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
-msgstr "ÎÅÓËÏÌØËÏ ÏÂÒÁÚÃÏ× ÃÅÌÉ"
+msgstr "несколько образцов цели"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
-msgstr "ÏÂÒÁÚÅàÃÅÌÉ ÎÅ ÓÏÄÅÒÖÉÔ `%%'"
+msgstr "образец цели не содержит `%%'"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
-msgstr "ÐÒÏÐÕÝÅÎÁ `endif'"
+msgstr "пропущена `endif'"
+
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "пустое имя переменной"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
-msgstr "éÚÌÉÛÎÉÊ ÔÅËÓÔ ÐÏÓÌÅ ÄÉÒÅËÔÉ×Ù `endef'"
+#: read.c:1367
+msgid "extraneous text after `define' directive"
+msgstr "излишний текст после директивы `define'"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
-msgstr "ÐÒÏÐÕÝÅÎÁ `endif', ÎÅÚÁ×ÅÒÛÅÎÎÁÑ `define'"
+msgstr "пропущена `endif', незавершённая `define'"
+
+#: read.c:1420
+msgid "extraneous text after `endef' directive"
+msgstr "излишний текст после директивы `endef'"
 
-#: read.c:1454
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
-msgstr "éÚÌÉÛÎÉÊ ÔÅËÓÔ ÐÏÓÌÅ ÄÉÒÅËÔÉ×Ù `%s'"
+msgstr "Излишний текст после директивы `%s'"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
-msgstr "ÉÚÌÉÛÎÑÑ `%s'"
+msgstr "излишняя `%s'"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
-msgstr "× ÕÓÌÏ×ÎÏÍ ×ÙÒÁÖÅÎÉÉ ×ÏÚÍÏÖÎÁ ÔÏÌØËÏ ÏÄÎÁ `else'"
+msgstr "в условном выражении возможна только одна `else'"
 
-#: read.c:1824
-#, fuzzy
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÆÏÒÍÁÔ ÚÁÄÁÎÉÑ ÐÅÒÅÍÅÎÎÏÊ ÄÌÑ ÃÅÌÉ"
+msgstr "Неправильный формат задания переменной цели"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr ""
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
+msgstr "в способах не могут задаваться зависимости"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
-msgstr "ÓÍÅÛÁÎÙ ÎÅÑ×ÎÙÅ ÐÒÁ×ÉÌÁ É ÐÒÁ×ÉÌÁ ÓÏ ÓÔÁÔÉÞÅÓËÉÍÉ ÏÂÒÁÚÃÁÍÉ"
+msgstr "смешаны неявные правила и правила со статическими образцами"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
-msgstr "ÓÍÅÛÁÎÙ ÎÅÑ×ÎÙÅ É ÏÂÙÞÎÙÅ ÐÒÁ×ÉÌÁ"
+msgstr "смешаны неявные и обычные правила"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
-msgstr "ÃÅÌØ `%s' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÏÂÒÁÚÃÕ ÃÅÌÅÊ"
+msgstr "цель `%s' не соответствует образцу целей"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
-msgstr "ÃÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÉÍÅÅÔ ×ÈÏÖÄÅÎÉÑ É Ó `:', É Ó `::' "
+msgstr "целевой файл `%s' имеет вхождения и с `:', и с `::' "
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
-msgstr "ÃÅÌØ `%s' ÕËÁÚÁÎÁ ÎÅÓËÏÌØËÏ ÒÁÚ × ÏÄÎÏÍ ÐÒÁ×ÉÌÅ"
+msgstr "цель `%s' указана несколько раз в одном правиле"
 
-#: read.c:1988
+#: read.c:2006
 #, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ËÏÍÁÎÄ ÄÌÑ ÃÅÌÉ `%s'"
+msgid "warning: overriding recipe for target `%s'"
+msgstr "пÑ\80едÑ\83пÑ\80еждение: Ð¿ÐµÑ\80еопÑ\80еделение Ñ\81поÑ\81оба Ð´Ð»Ñ\8f Ñ\86ели `%s'"
 
-#: read.c:1991
+#: read.c:2009
 #, c-format
-msgid "warning: ignoring old commands for target `%s'"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÔÁÒÙÅ ËÏÍÁÎÄÙ ÄÌÑ ÃÅÌÉ `%s' ÉÇÎÏÒÉÒÕÀÔÓÑ"
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr "пÑ\80едÑ\83пÑ\80еждение: Ñ\81Ñ\82аÑ\80Ñ\8bй Ñ\81поÑ\81об Ð´Ð»Ñ\8f Ñ\86ели `%s' Ð¸Ð³Ð½Ð¾Ñ\80иÑ\80Ñ\83Ñ\8eÑ\82Ñ\81Ñ\8f"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÓÔÒÅÞÅΠÓÉÍ×ÏÌ NUL; ÉÇÎÏÒÉÒÕÅÔÓÑ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ"
+msgstr "пÑ\80едÑ\83пÑ\80еждение: Ð²Ñ\81Ñ\82Ñ\80еÑ\87ен Ñ\81имвол NUL; Ð¸Ð³Ð½Ð¾Ñ\80иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ð´Ð¾ ÐºÐ¾Ð½Ñ\86а Ñ\81Ñ\82Ñ\80оки"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
-msgstr "ãÅÌØ `%s' ÎÅ ÔÒÅÂÕÅÔ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄ."
+msgstr "Цель `%s' не требует выполнения команд."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
-msgstr "`%s' ÎÅ ÔÒÅÂÕÅÔ ÏÂÎÏ×ÌÅÎÉÑ."
+msgstr "`%s' не требует обновления."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
-msgstr "ïÂÒÅÚÁÅÔÓÑ ÆÁÊÌ `%s'.\n"
+msgstr "Обрезается файл `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
-msgstr "%sîÅÔ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÂÏÒËÉ ÃÅÌÉ `%s'%s"
+msgstr "%sНет правила для сборки цели `%s'%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%sîÅÔ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÂÏÒËÉ ÃÅÌÉ `%s', ÔÒÅÂÕÅÍÏÊ ÄÌÑ `%s'%s"
+msgstr "%sНет правила для сборки цели `%s', требуемой для `%s'%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
-msgstr "ïÂÒÁÂÏÔËÁ ÃÅÌÅ×ÏÇÏ ÆÁÊÌÁ `%s'.\n"
+msgstr "Обработка целевого файла `%s'.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "ðÒÅÄÙÄÕÝÁÑ ÐÏÐÙÔËÁ ÏÂÎÏ×ÉÔØ ÆÁÊÌ `%s' ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ.\n"
+msgstr "Предыдущая попытка обновить файл `%s' завершилась неудачно.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
-msgstr "æÁÊÌ `%s' ÕÖÅ ÂÙÌ ÏÂÒÁÂÏÔÁÎ.\n"
+msgstr "Файл `%s' уже был обработан.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
-msgstr "æÁÊÌ `%s' ÏÂÎÏ×ÌÑÅÔÓÑ × ÄÁÎÎÙÊ ÍÏÍÅÎÔ.\n"
+msgstr "Файл `%s' обновляется в данный момент.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
-msgstr "ïÂÎÏ×ÌÅÎÉÅ ÆÁÊÌÁ `%s' ÚÁ×ÅÒÛÅÎÏ.\n"
+msgstr "Обновление файла `%s' завершено.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
-msgstr "æÁÊÌ `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
+msgstr "Файл `%s' не существует.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
+"*** Предупреждение: у файла `%s' параметр .LOW_RESOLUTION_TIME содержит "
+"метку времени с высокой точностью"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
-msgstr "îÁÊÄÅÎÏ ÎÅÑ×ÎÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ `%s'.\n"
+msgstr "Найдено неявное правило для `%s'.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
-msgstr "îÅ ÎÁÊÄÅÎÏ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ `%s'.\n"
+msgstr "Не найдено неявного правила для `%s'.\n"
 
-#: remake.c:462 remake.c:970
+#: remake.c:502
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ËÏÍÁÎÄ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ `%s'.\n"
+msgid "Using default recipe for `%s'.\n"
+msgstr "Использование способа по умолчанию для `%s'.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "ãÉËÌÉÞÅÓËÁÑ ÚÁ×ÉÓÉÍÏÓÔØ %s <- %s ÐÒÏÐÕÝÅÎÁ."
+msgstr "Циклическая зависимость %s <- %s пропущена."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "ïÂÎÏ×ÌÅÎÉÅ ÃÅÌÅÊ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ ÃÅÌÅ×ÏÊ ÆÁÊÌ `%s', ÚÁ×ÅÒÛÅÎÏ.\n"
+msgstr "Обновление целей, от которых зависит целевой файл `%s', завершено.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
-msgstr "ãÅÌÉ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ `%s', × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÓÏÂÉÒÁÀÔÓÑ.\n"
+msgstr "Цели, от которых зависит `%s', в настоящий момент собираются.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
-msgstr "á×ÁÒÉÊÎÙÊ ÏÓÔÁÎÏ× ÎÁ ÃÅÌÅ×ÏÍ ÆÁÊÌÅ `%s'.\n"
+msgstr "Аварийный останов на целевом файле `%s'.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
-msgstr "ãÅÌØ `%s' ÎÅ ÂÙÌÁ ÐÅÒÅÓÏÂÒÁÎÁ ÉÚ-ÚÁ ÏÛÉÂÏË."
+msgstr "Цель `%s' не была пересобрана из-за ошибок."
 
-#: remake.c:677
-#, fuzzy, c-format
+#: remake.c:727
+#, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÓÔÁÒÅÅ, ÞÅÍ ÃÅÌØ `%s'.\n"
+msgstr "Зависимость `%s' только для цели `%s'.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÃÅÌÉ `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
+msgstr "Зависимость `%s' цели `%s' не существует.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÎÏ×ÅÅ, ÞÅÍ ÃÅÌØ `%s'.\n"
+msgstr "Зависимость `%s' новее, чем цель `%s'.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÓÔÁÒÅÅ, ÞÅÍ ÃÅÌØ `%s'.\n"
+msgstr "Зависимость `%s' старее, чем цель `%s'.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "ãÅÌØ `%s' ÏÂßÑ×ÌÅÎÁ Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ É ÎÅ ÉÍÅÅÔ ÚÁ×ÉÓÉÍÏÓÔÅÊ.\n"
+msgstr "Цель `%s' объявлена с двумя двоеточиями и не имеет зависимостей.\n"
 
-#: remake.c:715
+#: remake.c:765
 #, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ÎÅ ÚÁÄÁÎÙ, É ÚÁ×ÉÓÉÍÏÓÔÉ ÎÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr "Способ для `%s' не задан, и начальные условия не изменены.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
-msgstr ""
+msgstr "Пересборка `%s' из-за установленного ключа always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
-msgstr "îÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÐÅÒÅÓÏÂÉÒÁÔØ ÃÅÌØ `%s'."
+msgstr "Нет необходимости пересобирать цель `%s'."
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
-msgstr "; ÉÓÐÏÌØÚÕÅÔÓÑ VPATH-ÉÍÑ `%s'"
+msgstr "; используется VPATH-имя `%s'"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
-msgstr "îÅÏÂÈÏÄÉÍÏ ÐÅÒÅÓÏÂÒÁÔØ ÃÅÌØ `%s'.\n"
+msgstr "Необходимо пересобрать цель `%s'.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  éÇÎÏÒÉÒÕÅÔÓÑ VPATH-ÉÍÑ `%s'.\n"
+msgstr "  Игнорируется VPATH-имя `%s'.\n"
 
-#: remake.c:765
+#: remake.c:815
 #, c-format
-msgid "Commands of `%s' are being run.\n"
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ×ÙÐÏÌÎÑÀÔÓÑ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ.\n"
+msgid "Recipe of `%s' is being run.\n"
+msgstr "В настоящее время применяется способ `%s'.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÅÒÅÓÏÚÄÁÎÉÑ ÃÅÌÅ×ÏÇÏ ÆÁÊÌÁ `%s' ÂÅÚÕÓÐÅÛÎÁ.\n"
+msgstr "Не удалось пересоздать файл цели `%s'.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
-msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÕÓÐÅÛÎÏ ÐÅÒÅÓÏÚÄÁÎ.\n"
+msgstr "Целевой файл `%s' успешно пересоздан.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
-msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÔÒÅÂÕÅÔ ÐÅÒÅÓÏÚÄÁÎÉÑ Ó ËÌÀÞÏÍ -q.\n"
+msgstr "Целевой файл `%s' требует пересоздания с ключом -q.\n"
 
-#: remake.c:1306
-#, fuzzy, c-format
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Использование команд по умолчанию для `%s'.\n"
+
+#: remake.c:1357
+#, c-format
 msgid "Warning: File `%s' has modification time in the future"
-msgstr "*** æÁÊÌ `%s' ÂÙÌ ÉÚÍÅÎÅΠנÂÕÄÕÝÅÍ (%s > %s)"
+msgstr "Предупреждение: Время изменения файла `%s' находится в будущем"
 
-#: remake.c:1313
-#, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
-msgstr "*** æÁÊÌ `%s' ÂÙÌ ÉÚÍÅÎÅΠנÂÕÄÕÝÅÍ (%s > %s)"
+#: remake.c:1370
+#, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "Предупреждение: Время изменения файла `%s' находится в будущем (%s)"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "üÌÅÍÅÎÔ .LIBPATTERNS `%s' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÒÁÚÃÏÍ"
+msgstr "Элемент .LIBPATTERNS `%s' не является образцом"
 
 #: remote-cstms.c:125
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "îÅ ÜËÓÐÏÒÔÉÒÕÅÍÙÅ ÎÁÓÔÒÏÊËÉ: %s\n"
+msgstr "Не экспортируемые настройки: %s\n"
 
-#: rule.c:548
-#, fuzzy
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# îÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÎÅÔ."
+"# Неявные правила"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# îÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÎÅÔ."
+"# Неявных правил нет."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 "\n"
-"# îÅÑ×ÎÙÈ ÐÒÁ×ÉÌ: %u, ÔÅÒÍÉÎÁÌØÎÙÈ: %u"
+"# Неявных правил: %u, терминальных: %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
-msgstr "."
+msgstr " терминал."
 
-#: rule.c:583
+#: rule.c:534
 #, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
-msgstr "ïûéâëá: ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ num_pattern_rules! %u != %u"
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "ОШИБКА: неверное значение num_pattern_rules! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ"
+msgstr "неизвестный сигнал"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
-msgstr "ïÂÒÙ× ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ"
+msgstr "Обрыв терминальной линии"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
-msgstr "ðÒÅÒÙ×ÁÎÉÅ"
+msgstr "Прерывание"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
-msgstr "á×ÁÒÉÊÎÏÅ ÐÒÅÒÙ×ÁÎÉÅ"
+msgstr "Аварийное прерывание"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
-msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÉÎÓÔÒÕËÃÉÑ"
+msgstr "Недопустимая инструкция"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
-msgstr "ðÒÅÒÙ×ÁÎÉÅ ÎÁ ËÏÎÔÒÏÌØÎÏÊ ÔÏÞËÅ"
+msgstr "Прерывание на контрольной точке"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
-msgstr "ðÒÅÒ×ÁÎÏ"
+msgstr "Прервано"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
-msgstr "ïÛÉÂËÁ IOT"
+msgstr "Ошибка IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
-msgstr "ïÛÉÂËÁ ÜÍÕÌÑÃÉÉ"
+msgstr "Ошибка эмуляции"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
-msgstr "ïÛÉÂËÁ ÏÐÅÒÁÃÉÉ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ"
+msgstr "Ошибка операции с плавающей точкой"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
-msgstr "õÎÉÞÔÏÖÅÎÉÅ"
+msgstr "Уничтожение"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
-msgstr "îÅ×ÅÒÎÏÅ ÏÂÒÁÝÅÎÉÅ Ë ÐÁÍÑÔÉ"
+msgstr "Неверное обращение к памяти"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
-msgstr "îÁÒÕÛÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ Ë ÐÁÍÑÔÉ"
+msgstr "Нарушение прав доступа к памяти"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
-msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
+msgstr "Неправильный системный вызов"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
-msgstr "ïÂÒÙ× ËÁÎÁÌÁ"
+msgstr "Обрыв канала"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
-msgstr "óÉÇÎÁÌ ÐÏ ÔÁÊÍÅÒÕ"
+msgstr "Сигнал по таймеру"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
-msgstr "úÁ×ÅÒÛÅÎÉÅ"
+msgstr "Завершение"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
-msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 1"
+msgstr "Определяемый пользователем сигнал 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
-msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 2"
+msgstr "Определяемый пользователем сигнал 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
-msgstr "ðÏÔÏÍÏË ÚÁ×ÅÒÛÉÌ ÒÁÂÏÔÕ"
+msgstr "Потомок завершил работу"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
-msgstr "ïÔËÁÚ ÐÉÔÁÎÉÑ"
+msgstr "Отказ питания"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
-msgstr "ïÓÔÁÎÏ×"
+msgstr "Останов"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
-msgstr "ïÓÔÁÎÏ× (××ÏÄ Ó ÔÅÒÍÉÎÁÌÁ) "
+msgstr "Останов (ввод с терминала) "
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
-msgstr "ïÓÔÁÎÏ× (×Ù×ÏÄ ÎÁ ÔÅÒÍÉÎÁÌ)"
+msgstr "Останов (вывод на терминал)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
-msgstr "ïÓÔÁÎÏ× (ÓÉÇÎÁÌ)"
+msgstr "Останов (сигнал)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
-msgstr "ðÒÅ×ÙÛÅΠÐÒÅÄÅÌ ÐÒÏÃÅÓÓÏÒÎÏÇÏ ×ÒÅÍÅÎÉ"
+msgstr "Превышен предел процессорного времени"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
-msgstr "ðÒÅ×ÙÛÅΠÐÒÅÄÅÌ ÒÁÚÍÅÒÁ ÆÁÊÌÁ"
+msgstr "Превышен предел размера файла"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
-msgstr "÷ÉÒÔÕÁÌØÎÏÅ ×ÒÅÍÑ ÉÓÔÅËÌÏ"
+msgstr "Виртуальное время истекло"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
-msgstr "÷ÒÅÍÑ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÉÓÔÅËÌÏ"
+msgstr "Время профилирования истекло"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
-msgstr "ïËÎÏ ÉÚÍÅÎÅÎÏ"
+msgstr "Окно изменено"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
-msgstr "÷ÏÚÏÂÎÏ×ÌÅÎÉÅ"
+msgstr "Возобновление"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
-msgstr "õÓÌÏ×ÉÑ ÜËÓÔÒÅÎÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
+msgstr "Условия экстренного ввода/вывода"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
-msgstr "÷ÏÚÍÏÖÅΠ××ÏÄ/×Ù×ÏÄ"
+msgstr "Возможен ввод/вывод"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
-msgstr "òÅÓÕÒÓ ÐÏÔÅÒÑÎ"
+msgstr "Ресурс потерян"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
-msgstr "óÉÇÎÁÌ ÏÐÁÓÎÏÓÔÉ"
+msgstr "Сигнал опасности"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
-msgstr "úÁÐÒÏÓ ÉÎÆÏÒÍÁÃÉÉ"
+msgstr "Запрос информации"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
-msgstr "óÏÐÒÏÃÅÓÓÏÒ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ ÎÅÄÏÓÔÕÐÅÎ"
+msgstr "Сопроцессор с плавающей точкой недоступен"
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s # строк в strcache: %d / lookups = %lu / hits = %lu\n"
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s # буферов strcache: %d (* %d B/buffer = %d B)\n"
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s размер strcache: всего = %d (%d) / макс = %d / мин = %d / сред = %d\n"
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s свободно в strcache: всего = %d (%d) / макс = %d / мин = %d / сред = %d\n"
 
-#: variable.c:1369
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# состояние хеш-таблицы strcache:\n"
+"# "
+
+#: variable.c:1541
 msgid "default"
-msgstr "ÐÏ ÕÍÏÌÞÁÎÉÀ"
+msgstr "по Ñ\83молÑ\87аниÑ\8e"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
-msgstr "ÏÐÒÅÄÅÌÅÎÁ × ÓÒÅÄÅ"
+msgstr "определена в среде"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
-msgstr "Make-ÆÁÊÌ"
+msgstr "Make-файл"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
-msgstr "ÚÁÄÁΠËÌÀÞ -e"
+msgstr "задан ключ -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
-msgstr "ÏÐÒÅÄÅÌÅÎÁ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ"
+msgstr "определена в командной строке"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
-msgstr "äÉÒÅËÔÉ×Á `override'"
+msgstr "Директива `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
-msgstr "Á×ÔÏÍÁÔÉÞÅÓËÁÑ"
+msgstr "автоматическая"
 
-#: variable.c:1396
-#, fuzzy, c-format
+#: variable.c:1570
+#, c-format
 msgid " (from `%s', line %lu)"
-msgstr "  (ÉÚ `%s', ÓÔÒÏËÁ %lu):\n"
+msgstr " (из `%s', строка %lu)"
 
-#: variable.c:1438
-#, fuzzy
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# %u ÐÅÒÅÍÅÎÎÙÈ × %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ.\n"
+msgstr "# состояние переменных в хеш-таблице:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 "\n"
-"# ðÅÒÅÍÅÎÎÙÅ\n"
+"# Переменные\n"
 
-#: variable.c:1453
-#, fuzzy
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# úÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÙÈ ÏÓÏÂÅÎÎÙÅ ÄÌÑ ÍÁÓËÉ"
+"# Значения переменных особенные для маски"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# îÅÔ ÚÎÁÞÅÎÉÊ ÐÅÒÅÍÅÎÎÙÈ ÏÓÏÂÅÎÎÙÈ ÄÌÑ ÍÁÓËÉ"
+"# Нет значений переменных особенных для маски."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u ÚÎÁÞÅÎÉÊ ÐÅÒÅÍÅÎÎÙÈ ÏÓÏÂÅÎÎÙÈ ÄÌÑ ÍÁÓËÉ"
+"# %u значений переменных особенных для маски"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%.*s'"
+msgstr "пÑ\80едÑ\83пÑ\80еждение: Ð½ÐµÐ¾Ð¿Ñ\80еделÑ\91ннаÑ\8f Ð¿ÐµÑ\80еменнаÑ\8f `%.*s'"
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
-msgstr "sys$search ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ %d\n"
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() вернула код ошибки %d\n"
 
 #: vmsjobs.c:71
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ðÕÓÔÏÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ\n"
+msgstr "Предупреждение: Пустое перенаправление\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: `%s' command_state"
-
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÏÓÌÅ CTRL-Y ÏÓÔÁÎÕÔÓÑ ÓÕÂ-ÐÒÏÃÅÓÓÙ.\n"
+msgstr "внутренняя ошибка: `%s' command_state"
 
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
-"-ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, ×ÏÚÍÏÖÎÏ ×ÁÍ ÐÏÔÒÅÂÕÅÔÓÑ ÐÏ×ÔÏÒÎÏ ÒÁÚÒÅÛÉÔØ\n"
-"ÏÂÒÁÂÏÔËÕ CTRL-Y ÉÚ DCL.\n"
+"-пÑ\80едÑ\83пÑ\80еждение, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð°Ð¼ Ð¿Ð¾Ñ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð¿Ð¾Ð²Ñ\82оÑ\80но Ñ\80азÑ\80еÑ\88иÑ\82Ñ\8c\n"
+"обработку CTRL-Y из DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr "÷óôòïåîîùê [%s][%s]\n"
+msgstr "ВСТРОЕННЫЙ [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr "÷óôòïåîîùê CD %s\n"
+msgstr "ВСТРОЕННЫЙ CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr "÷óôòïåîîùê RM %s\n"
+msgstr "ВСТРОЕННЫЙ RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ×ÓÔÒÏÅÎÎÁÑ ËÏÍÁÎÄÁ '%s'\n"
+msgstr "Неизвестная встроенная команда '%s'\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
-msgstr "ïÛÉÂËÁ, ÐÕÓÔÁÑ ËÏÍÁÎÄÁ\n"
+msgstr "Ошибка, пустая команда\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "óÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÐÅÒÅÎÁÐÒÁ×ÌÅΠÉÚ %s\n"
+msgstr "Стандартный ввод перенаправлен из %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "ðÏÔÏË ÏÛÉÂÏË ÐÅÒÅÎÁÐÒÁ×ÌÅΠנ%s\n"
+msgstr "Поток ошибок перенаправлен в %s\n"
+
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Стандартный вывод добавлен в %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "óÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÐÅÒÅÎÁÐÒÁ×ÌÅΠנ%s\n"
+msgstr "Стандартный вывод перенаправлен в %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Добавить %.*s и очистить\n"
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "÷ÍÅÓÔÏ ÚÁÄÁÎÎÏÇÏ ×ÙÐÏÌÎÑÅÔÓÑ %s\n"
+msgstr "Вместо заданного выполняется %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "ïÛÉÂËÁ ÐÏÒÏÖÄÅÎÉÑ ÐÒÏÃÅÓÓÁ, %d\n"
+msgstr "Ошибка порождения процесса, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# ðÕÔÉ ÐÏÉÓËÁ VPATH\n"
+"# Пути поиска VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
-msgstr "# îÅ ÏÐÒÅÄÅÌÅΠÐÕÔØ ÐÏÉÓËÁ `vpath'."
+msgstr "# Не определён путь поиска `vpath'."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
 "# %u `vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u ÐÕÔÅÊ ÐÏÉÓËÁ ÐÏ `vpath'\n"
+"# %u Ð¿Ñ\83Ñ\82ей Ð¿Ð¾Ð¸Ñ\81ка Ð¿Ð¾ `vpath'\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 "\n"
-"# îÅ ÏÐÒÅÄÅÌÅΠÏÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ."
+"# Не определён общий (переменная `VPATH') путь поиска."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# ïÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ:\n"
+"# Общий (переменная `VPATH') путь поиска:\n"
 "# "
 
-#~ msgid ""
-#~ "\n"
-#~ "# No files."
-#~ msgstr ""
-#~ "\n"
-#~ "# æÁÊÌÏ× ÎÅÔ."
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() не смогла запустить процесс (e=%ld)\n"
 
 #~ msgid ""
-#~ "\n"
-#~ "# %u files in %u hash buckets.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "# %u ÆÁÊÌÏ× in %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ.\n"
-
-#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr "# × ÓÒÅÄÎÅÍ %.3f ÆÁÊÌÏ× × ÑÞÅÊËÅ, ÍÁËÓ. %u ÆÁÊÌÏ× × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
-
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ, ×ÓÅ ÅÝÅ ×ÎÕÔÒÉ '\"'\n"
-
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr ""
-#~ "ðÏÌÕÞÅΠÓÉÇÎÁÌ SIGCHLD; %u ÐÏÔÏÍËÏ× Ó ÎÅÏÂÒÁÂÏÔÁÎÎÙÍÉ ÒÅÚÕÌØÔÁÔÁÍÉ.\n"
-
-#~ msgid "DIRECTORY"
-#~ msgstr "ëáôáìïç"
-
-#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "ðÅÒÅÊÔÉ × ëáôáìïç ÐÅÒÅÄ ÎÁÞÁÌÏÍ ÒÁÂÏÔÙ"
-
-#~ msgid "FLAGS"
-#~ msgstr "æìáçé"
-
-#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "ðÒÉÏÓÔÁÎÏ×ÉÔØ ÐÒÏÃÅÓÓ, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ ÐÒÉÃÅÐÉÔØÓÑ ÏÔÌÁÄÞÉËÕ"
-
-#~ msgid "Environment variables override makefiles"
-#~ msgstr ""
-#~ "ðÅÒÅÍÅÎÎÙÅ ÓÒÅÄÙ ÐÅÒÅËÒÙ×ÁÀÔ ÐÅÒÅÍÅÎÎÙÅ, \n"
-#~ "ÏÐÒÅÄÅÌÅÎÎÙÅ × make-ÆÁÊÌÅ"
-
-#~ msgid "FILE"
-#~ msgstr "æáêì"
-
-#~ msgid "Read FILE as a makefile"
-#~ msgstr "éÓÐÏÌØÚÏ×ÁÔØ æáêì × ËÁÞÅÓÔ×Å make-ÆÁÊÌÁ"
-
-#~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "éÓËÁÔØ ×ËÌÀÞÁÅÍÙÅ make-ÆÁÊÌÙ × ëáôáìïçå"
-
-#~ msgid "Don't start multiple jobs unless load is below N"
+#~ "%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 ""
-#~ "îÅ ÚÁÐÕÓËÁÔØ ÐÁÒÁÌÌÅÌØÎÙÅ ÚÁÄÁÞÉ,\n"
-#~ "ÐÏËÁ ÚÁÇÒÕÚËÁ ÎÅ ÓÎÉÚÉÔÓÑ ÄÏ N"
-
-#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "îÅ ×ÙÐÏÌÎÑÔØ ËÏÍÁÎÄÙ, ÐÒÏÓÔÏ ÎÁÐÅÞÁÔÁÔØ ÉÈ"
-
-#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "óÞÉÔÁÔØ æáêì ÏÞÅÎØ ÓÔÁÒÙÍ É ÎÅ ÐÅÒÅÓÏÂÉÒÁÔØ ÅÇÏ"
-
-#~ msgid "Don't echo commands"
-#~ msgstr "îÅ ÐÅÞÁÔÁÔØ ×ÙÐÏÌÎÑÅÍÙÅ ËÏÍÁÎÄÙ"
-
-#~ msgid "Turns off -k"
-#~ msgstr "ïÔÍÅÎÉÔØ ËÌÀÞ -k"
-
-#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "óÞÉÔÁÔØ æáêì ÎÅÏÇÒÁÎÉÞÅÎÎÏ ÎÏ×ÙÍ"
-
-#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "îÅ ÕËÁÚÙ×ÁÊÔÅ -j ÉÌÉ --jobs, ÅÓÌÉ ÎÅÔÕ sh.exe."
-
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "make ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ × ÒÅÖÉÍÅ ÏÄÉÎÏÞÎÏÊ ÚÁÄÁÞÉ."
-
-#~ msgid "no file name for `%sinclude'"
-#~ msgstr "ÎÅ ÚÁÄÁÎÏ ÉÍÑ ÆÁÊÌÁ ÄÌÑ `%sinclude'"
+#~ "%sЭто свободная программа; подробности об условиях распространения "
+#~ "смотрите\n"
+#~ "%sв исходном коде.  Мы НЕ предоставляем гарантий; даже гарантий\n"
+#~ "%sКОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО ЦЕЛИ.\n"
 
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "ÃÅÌØ `%s' ÏÓÔÁ×ÌÑÅÔ ÐÕÓÔÏÊ ÛÁÂÌÏΠÚÁ×ÉÓÉÍÏÓÔÉ"
+#~ msgid "extraneous `endef'"
+#~ msgstr "излишний `endef'"
 
-#~ msgid "# No variables."
-#~ msgstr "# ðÅÒÅÍÅÎÎÙÈ ÎÅÔ."
+#~ msgid "empty `override' directive"
+#~ msgstr "пустая директива `override'"
 
-#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# × ÓÒÅÄÎÅÍ %.1f ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
+#~ msgid "invalid `override' directive"
+#~ msgstr "неправильная директива `override'"
 
-#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# × ÓÒÅÄÎÅÍ %d.%d ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-предупреждение, после CTRL-Y останутся суб-процессы.\n"
diff --git a/po/rw.gmo b/po/rw.gmo
deleted file mode 100644 (file)
index 3bcd6d4..0000000
Binary files a/po/rw.gmo and /dev/null differ
diff --git a/po/rw.po b/po/rw.po
deleted file mode 100644 (file)
index ab4fe38..0000000
--- a/po/rw.po
+++ /dev/null
@@ -1,2067 +0,0 @@
-# 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 3dfc484..ec5fbf5 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index 0bad803..d183e01 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
-# @(#) Swedish messages v1.15 for make 3.79.1
+# Swedish messages translation of make
 # Copyright (C) 2002 Free Software Foundation, Inc.
 # Tomas Gradin <tg@df.lth.se>, 1996-2002.
+# Christer Andersson <klamm@comhem.se>, 2007.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.79.1\n"
+"Project-Id-Version: make 3.81\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
-"PO-Revision-Date: 2002-08-02 14:28+0200\n"
-"Last-Translator: Tomas Gradin <tg@df.lth.se>\n"
-"Language-Team: Swedish <sv@li.org>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2007-12-19 11:50+0100\n"
+"Last-Translator: Christer Andersson <klamm@comhem.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "försök att använda en funktion som inte stöds: \"%s\""
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "nydatering av arkivmedlem är inte tillgängligt i VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "nydatera: Arkivet \"%s\" finns inte"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "nydatera: \"%s\" är inte något giltigt arkiv"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "nydatera: medlemmen \"%s\" finns inte i \"%s\""
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "nydatera: Felaktig returkod från ar_member_touch på \"%s\""
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 "lbr$set_module misslyckades med att extrahera modulinformation, status = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control misslyckades och gav status = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "kan inte öppna biblioteket \"%s\" för att slå upp medlemmen \"%s\""
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Medlem \"%s\"%s: %ld byte vid %ld (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (namnet kan vara avkortat)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, flaggor = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Avbrott.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Arkivmedlemmen \"%s\" kan vara felaktig; ej borttagen"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Arkivmedlemmen \"%s\" kan vara felaktig; ej borttagen"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Tar bort filen \"%s\""
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Tar bort filen \"%s\""
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  kommandon att utföra"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (inbyggd):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (från \"%s\", rad %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,222 +125,225 @@ msgstr ""
 "\n"
 "# Kataloger\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: kunde inte ta status.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (nyckel %s, mtid %d): kunde inte öppnas.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (enhet %d, inod [%d,%d,%d]): kunde inte öppnas.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (nyckel %s, mtid %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (enhet %d, inod [%d,%d,%d]): "
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (enhet %ld, inod %ld): "
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Inga"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " filer, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "inga"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " omöjligheter"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " hittills."
 
-#: dir.c:1079
-#, fuzzy, c-format
+#: dir.c:1092
+#, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " omöjligheter i %u kataloger.\n"
+msgstr " omöjligheter i %lu kataloger.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Den rekursiva variabeln \"%s\" hänvisar till sig själv (så småningom)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "oavslutad variabelreferens"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "Kommandon angavs för filen \"%s\" på %s:%lu,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "Kommandon för filen \"%s\" hittades genom sökning med implicit regel,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "men \"%s\" anses nu vara samma fil som \"%s\"."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr ""
 "Kommer att bortse från kommandon för \"%s\" till förmån för dem som gäller "
 "\"%s\"."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "kan inte ändra namn från enkelkolon \"%s\" till dubbelkolon \"%s\""
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "kan inte ändra namn från dubbelkolon \"%s\" till enkelkolon \"%s\""
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Tar bort övergångsfilen \"%s\""
 
-#: file.c:385
-#, fuzzy
+#: file.c:396
 msgid "Removing intermediate files...\n"
-msgstr "*** Tar bort övergångsfilen \"%s\""
+msgstr "Tar bort övergångsfiler...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tidsvärde utanför gränser; ersätter med %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Nuvarande tid"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Inte ett mål:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Värdefull fil (nödvändig för .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Låtsasmål (nödvändig för .PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Kommandoradsmål."
 
-#: file.c:909
-#, fuzzy
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  En standardmakefil (eller enligt MAKEFILES)."
+msgstr ""
+"#  En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-"
+"makefil."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Implicit regelsökning har genomförts."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Implicit regelsökning har inte genomförts."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Implicit/statisk mönsterstam: \"%s\"\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Filen är ett övergående beroende."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Skapar också:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Ändringstiden har inte kontrollerats."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Filen finns inte."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Filen är mycket gammal."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Senast ändrad %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Filen har uppdaterats."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Filen har inte uppdaterats."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Kommandokörning pågår (DETTA ÄR ETT FEL)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Beroendekommandon körs (DETTA ÄR ETT FEL)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  Uppdateringen lyckades."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Behöver uppdateras (-q har angivits)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Uppdateringen misslyckades."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  Ogiltigt värde i medlem av \"update_status\"!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  Ogiltigt värde i medlem av \"command_state\"!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -346,269 +351,272 @@ msgstr ""
 "\n"
 "# Filer"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
+"\n"
+"# statistik för filhashtabell:\n"
+"# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "icke-numeriskt första argument till funktionen \"word\""
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "det första argumentet till funktionen \"word\" måste vara större än 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "icke-numeriskt första argument till funktionen \"wordlist\""
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "icke-numeriskt andra argument till funktionen \"wordlist\""
 
-#: function.c:1453
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) misslyckades (e=%d)\n"
-
-#: function.c:1464
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Fel) misslyckades (e=%d)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) misslyckades (e=%ld)\n"
 
 #: function.c:1469
 #, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() misslyckades (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Fel) misslyckades (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() misslyckades (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() misslyckades\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Städar bort tillfällig omgångsfil %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Otillräckligt antal argument (%d) till funktionen \"%s\""
+msgstr "otillräckligt antal argument (%d) till funktionen \"%s\""
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Ej implementerat på denna plattform: funktionen \"%s\""
+msgstr "ej implementerat på denna plattform: funktionen \"%s\""
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "oavslutat funktionsanrop \"%s\": \"%c\" saknas"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: flaggan \"%s\" är tvetydig\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"--%s\" tar inget argument\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: flaggan \"%s\" kräver ett argument\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: okänd flagga \"--%s\"\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: okänd flagga \"%c%s\"\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: otillåten flagga -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ogiltig flagga -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: flaggan kräver ett argument -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
-msgstr ""
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "kan inte allokera %ld byte för hashtabell: minnet slut"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr ""
+msgstr "Fyllnadsgrad=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr ""
+msgstr "Omhash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr ""
+msgstr "Kollisioner=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "Letar efter en implicit regel för \"%s\".\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Letar efter en implicit regel för arkivmedlemmen \"%s\".\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Undviker rekursion orsakad av implicit regel.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Prövar mönsterregel med stammen \"%.*s\".\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Avvisar det omöjliga implicita beroendet \"%s\".\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Avvisar det omöjliga regelbaserade beroendet \"%s\".\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Prövar det implicita beroendet \"%s\".\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Avvisar det omöjliga implicita beroendet \"%s\".\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Prövar det regelbaserade beroendet \"%s\".\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Prövar det implicita beroendet \"%s\".\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Hittade den nödvändiga \"%s\" som VPATH \"%s\"\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Letar efter en regel med övergångsfilen \"%s\".\n"
 
-#: job.c:321
-#, fuzzy
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (tillfällig fil)"
+msgstr "Kan inte skapa en temporärfil\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Fel 0x%x (ignoreras)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Fel 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Fel %d (ignoreras)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Fel %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (minnesdump)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Inväntar oavslutade jobb..."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Levande barnprocess 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (fjärr)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Inhöstar misslyckad barnprocess: 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Inhöstar lyckad barnprocess: 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Städar bort tillfällig omgångsfil %s\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "Tar bort barnprocessen 0x%08lx PID %ld %s från kedjan.\n"
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Tar bort barnprocessen 0x%08lx PID %ld%s från kedjan.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "skriver till jobbserver"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Frigjorde symbol för barnprocessen 0x%08lx (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() misslyckades med processtart (e=%d)\n"
+msgstr "process_easy() misslyckades med processtart (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -617,493 +625,535 @@ msgstr ""
 "\n"
 "Räknade till %d argument vid misslyckad start\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "För upp barnprocessen 0x%08lx (%s) PID %ld%s på kedjan.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Erhöll symbol för barnprocessen 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "läser från jobbledning"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Målet \"%s\" behöver inte återskapas"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "kan inte upprätthålla lastbegränsningar i detta operativsystem"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "kan inte upprätthålla lastbegränsning: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "inga fler filhandtag: kunde inte duplicera stdin\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "inga fler filhandtag: kunde inte duplicera stdout\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Kunde inte återställa stdin\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Kunde inte återställa stdout\n"
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() misslyckades med processtart (e=%d)\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make inhöstade barnprocessen pid %ld, inväntar pid %ld\n"
 
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make inhöstade barnprocessen pid %d, inväntar pid %d\n"
-
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommandot hittades inte"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Skalprogrammet hittades inte"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: miljöutrymmet kanske är slut"
 
-#: job.c:2363
-#, fuzzy, c-format
+#: job.c:2461
+#, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ändrades (var \"%s\", är nu \"%s\")"
+msgstr "$SHELL ändrades (var \"%s\", är nu \"%s\")\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Skapar tillfällig omgångsfil %s\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Flaggor:\n"
 
-#: main.c:292
-#, fuzzy
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "Ignoreras av kompatibilitetsskäl"
+msgstr "  -b, -m                      Ignoreras av kompatibilitetsskäl.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr ""
+msgstr "  -B, --always-make           Bygg ovillkorligen alla mål.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
+"  -C KATALOG, --directory=KATALOG\n"
+"                              Byt katalog till KATALOG innan något görs.\n"
 
-#: main.c:299
-#, fuzzy
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "Skriv ut massor av felsökningsinformation"
+msgstr ""
+"  -d                          Skriv ut massor av felsökningsinformation.\n"
 
-#: main.c:301
-#, fuzzy
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
-msgstr "Skriv ut olika sorters felsökningsinformation"
+msgstr ""
+"  --debug[=FLAGGOR]           Skriv ut olika sorters "
+"felsökningsinformation.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
+"  -e, --environment-overrides\n"
+"                              Miljövariabler åsidosätter makefiler.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
+"  -f FIL, --file=FIL, --makefile=FIL\n"
+"                              Använd FIL som makefil.\n"
 
-#: main.c:309
-#, fuzzy
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "Skriv ut detta meddelande och avsluta"
+msgstr "  -h, --help                  Skriv ut detta meddelande och avsluta.\n"
 
-#: main.c:311
+#: main.c:325
 #, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "Ignorera kommandofel"
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors         Ignorera kommandofel.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
+"  -I KATALOG, --include-dir=KATALOG\n"
+"                              Genomsök KATALOG efter inkluderade makefiler.\n"
 
-#: main.c:316
-#, fuzzy
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
-msgstr "Tillåt N samtidiga jobb; oändligt många om inget antal anges"
+msgstr ""
+"  -j [N], --jobs[=N]          Tillåt N samtidiga jobb; oändligt många om "
+"inget antal anges.\n"
 
-#: main.c:318
-#, fuzzy
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
-msgstr "Fortsätt även om vissa mål inte kan skapas"
+msgstr ""
+"  -k, --keep-going            Fortsätt även om vissa mål inte kan skapas.\n"
 
-#: main.c:320
+#: main.c:334
 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"
+"                              Påbörja fler jobb endast om lasten understiger "
+"N.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Använd den senaste av mtiderna för symboliska "
+"länkar eller mål.\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              Kör inte kommandona, skriv bara ut dem.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
+"  -o FIL, --old-file=FIL, --assume-old=FIL\n"
+"                              Betrakta FIL som mycket gammal och återskapa "
+"den inte.\n"
 
-#: main.c:331
-#, fuzzy
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "Skriv ut makes interna databas"
+msgstr "  -p, --print-data-base       Skriv ut makes interna databas.\n"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
-msgstr "Kör inga kommandon; slutstatus visar färskheten"
+msgstr ""
+"  -q, --question              Kör inga kommandon; slutstatus visar "
+"färskheten.\n"
 
-#: main.c:335
-#, fuzzy
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "Inaktivera de inbyggda implicita reglerna"
+msgstr ""
+"  -r, --no-builtin-rules      Inaktivera de inbyggda implicita reglerna.\n"
 
-#: main.c:337
-#, fuzzy
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
-msgstr "Inaktivera de inbyggda variabelinställningarna"
-
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
 msgstr ""
+"  -R, --no-builtin-variables  Inaktivera de inbyggda "
+"variabelinställningarna.\n"
+
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       Återge inte kommandon.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Stäng av -k.\n"
 
-#: main.c:344
-#, fuzzy
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
-msgstr "Nydatera mål i stället för att återskapa dem"
+msgstr ""
+"  -t, --touch                 Nydatera mål i stället för att återskapa dem.\n"
 
-#: main.c:346
-#, fuzzy
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "Skriv ut makes versionsnummer och avsluta"
+msgstr ""
+"  -v, --version               Skriv ut makes versionsnummer och avsluta.\n"
 
-#: main.c:348
-#, fuzzy
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "Skriv ut aktuell katalog"
+msgstr "  -w, --print-directory       Skriv ut aktuell katalog.\n"
 
-#: main.c:350
-#, fuzzy
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
-msgstr "Stäng av -w, även om det är implicit påslaget"
+msgstr ""
+"  --no-print-directory        Stäng av -w, även om det är implicit "
+"påslaget.\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
+"  -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n"
+"                              Betrakta FIL som hur ny som helst.\n"
 
-#: main.c:355
-#, fuzzy
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
-msgstr "Varna vid användning av en odefinierad variabel"
+msgstr ""
+"  --warn-undefined-variables  Varna vid användning av en odefinierad "
+"variabel.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "en tom sträng är ett ogiltigt filnamn"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "okänd felsökningsnivå \"%s\" angiven"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s: Avbrott/Undantag fångat (kod = 0x%x, adress = 0x%x)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Avbrott/Undantag fångat (kod = 0x%lx, adress = 0x%lx)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "Ett ohanterat undantagsfilter anropades från programmet %s\n"
-"Undantagskod = %x\n"
-"Undantagsflaggor = %x\n"
-"Undantagsadress = %x\n"
+"Undantagskod = %lx\n"
+"Undantagsflaggor = %lx\n"
+"Undantagsadress = %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Åtkomstförseelse: skrivinstruktion på adressen %x\n"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Åtkomstförseelse: skrivinstruktion på adressen %lx\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Åtkomstförseelse: läsinstruktion på adressen %x\n"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Åtkomstförseelse: läsinstruktion på adressen %lx\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell ger default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr "find_and_set_shell-sökvägen gav default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s suspenderas i 30 sekunder..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "färdig med sleep(30). Fortsätter.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
-msgstr "Makefil från standardinkanalen angavs dubbelt."
+msgstr "Makefil från standard in angavs dubbelt."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
-msgstr "fopen (tillfällig fil)"
+msgstr "fopen (temporärfil)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
-msgstr "fwrite (tillfällig fil)"
+msgstr "fwrite (temporärfil)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Parallella jobb (-j) stöds inte på denna plattform."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Återställer till enkeljobbsläge (-j1)."
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "internt fel: flera \"--jobserver-fds\"-flaggor"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "internt fel: ogiltig \"--jobserver-fds\"-sträng \"%s\""
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "varning: -jN framtvingat i del-make: inaktiverar jobbserverläge."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "duplicerar jobbserver"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "varning: jobbserver otillgänglig: använder -j1. Lägg till \"+\" i "
 "föräldraregeln."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "skapar jobbledning"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "iordningställer ledning till jobbserver"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Symboliska länkar stöds inte: inaktiverar -L."
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Uppdaterar makefiler...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Makefilen \"%s\" torde loopa; återskapas inte.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Misslyckades med att återskapa makefilen \"%s\"."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Den inkluderade makefilen \"%s\" hittades inte."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Makefilen \"%s\" hittades inte"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Kunde inte återgå till ursprungskatalogen."
 
-#: main.c:2024
-#, fuzzy, c-format
+#: main.c:2102
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Utför på nytt:"
+msgstr "Utför på nytt[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
-msgstr "avlänka (tillfällig fil): "
+msgstr "avlänka (temporärfil): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL innehåller fler än ett mål"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Inga mål angavs och ingen makefil hittades"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Inga mål"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Uppdaterar slutmål...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "varning:  Klockförskjutning upptäckt.  Bygget kan ha blivit ofullständigt."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Användning: %s [flaggor] [mål] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
+"\n"
+"Detta program byggdes för %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
+"\n"
+"Detta program byggdes för %s (%s)\n"
 
-#: main.c:2394
-#, fuzzy, c-format
+#: main.c:2481
+#, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
-"\n"
 "Anmäl fel till <bug-make@gnu.org>.\n"
 "Skicka synpunkter på översättningen till <sv@li.org>.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "flaggan \"-%c\" kräver ett positivt heltal som argument"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "flaggan \"-%c\" kräver ett strängargument som inte är tomt"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "flaggan \"-%c\" kräver ett positivt heltal som argument"
 
-#: main.c:2942
+#: main.c:3054
 #, 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"
+msgid "%sBuilt for %s\n"
 msgstr ""
-", av Richard Stallman och Roland McGrath.\n"
-"%sByggd för %s\n"
-"%sCopyright © 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
-"%s\tFree Software Foundation, Inc.\n"
-"%sDetta är fri programvara; se källkoden för kopieringsvillkor.\n"
-"%sINGA garantier lämnas, inte ens vid KÖP eller FÖR NÅGOT SPECIFIKT "
-"ÄNDAMÅL.\n"
-"\n"
-"%sAnmäl fel till <bug-make@gnu.org>.\n"
-"%sSkicka synpunkter på översättningen till <sv@li.org>.\n"
 "\n"
+"%sDetta program byggdes för %s\n"
 
-#: main.c:2948
-#, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
+"\n"
+"%sDetta program byggdes för %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1112,7 +1162,7 @@ msgstr ""
 "\n"
 "# Make-databas, utskriven %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1121,440 +1171,441 @@ msgstr ""
 "\n"
 "# Färdigställde Make-databas %s\n"
 
-#: main.c:3101
-#, fuzzy, c-format
+#: main.c:3237
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "en okänd katalog"
+msgstr "%s: Går till en okänd katalog\n"
 
-#: main.c:3103
-#, fuzzy, c-format
+#: main.c:3239
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "en okänd katalog"
+msgstr "%s: Lämnar en okänd katalog\n"
 
-#: main.c:3106
-#, fuzzy, c-format
+#: main.c:3242
+#, c-format
 msgid "%s: Entering directory `%s'\n"
-msgstr "katalogen \"%s\"\n"
+msgstr "%s: Går till katalogen \"%s\"\n"
 
-#: main.c:3109
-#, fuzzy, c-format
+#: main.c:3245
+#, c-format
 msgid "%s: Leaving directory `%s'\n"
-msgstr "katalogen \"%s\"\n"
+msgstr "%s: Lämnar katalogen \"%s\"\n"
 
-#: main.c:3114
-#, fuzzy, c-format
+#: main.c:3250
+#, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "en okänd katalog"
+msgstr "%s[%u]: Går till en okänd katalog\n"
 
-#: main.c:3117
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "en okänd katalog"
+msgstr "%s[%u]: Lämnar en okänd katalog\n"
 
-#: main.c:3121
-#, fuzzy, c-format
+#: main.c:3257
+#, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "katalogen \"%s\"\n"
+msgstr "%s[%u]: Går till katalogen \"%s\"\n"
 
-#: main.c:3124
-#, fuzzy, c-format
+#: main.c:3260
+#, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "katalogen \"%s\"\n"
+msgstr "%s[%u]: Lämnar katalogen \"%s\"\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Stannar.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Okänt fel %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
-msgstr ""
+msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
-msgstr ""
+msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "virtuellt minne uttömt"
 
-#: misc.c:646
-#, fuzzy, c-format
+#: misc.c:708
+#, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s åtkomst: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n"
+msgstr "%s: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n"
 
-#: misc.c:667
-#, fuzzy
+#: misc.c:729
 msgid "Initialized access"
-msgstr "Inledd"
+msgstr "Åtkomst inledd"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
-msgstr ""
+msgstr "Användaråtkomst"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
-msgstr ""
+msgstr "Make-åtkomst"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
-msgstr ""
+msgstr "Barnåtkomst"
 
-#: misc.c:892
-#, fuzzy, c-format
+#: misc.c:954
+#, c-format
 msgid "write error: %s"
-msgstr "Felkanal omdirigerad till %s\n"
+msgstr "skrivfel: %s"
 
-#: misc.c:894
-#, fuzzy
+#: misc.c:956
 msgid "write error"
-msgstr "skriver till jobbserver"
+msgstr "skrivfel"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Läser makefiler...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Läser makefil \"%s\""
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (inget standardmål)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (sökväg)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (oviktigt)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ingen ~-expansion)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "ogiltig syntax i villkorssats"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "överflödigt \"endef\""
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "tomt variabelnamn"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "tomt \"override\"-direktiv"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "ogiltigt \"override\"-direktiv"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "kommandon inleds före första målet"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "regel saknas före kommandon"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "separator saknas%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (var avsikten TAB i stället för 8 mellanslag?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "målmönster saknas"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "flera målmönster"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "målmönstret innehåller inget \"%%\""
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "\"endif\" saknas"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "tomt variabelnamn"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Överflödig text efter direktivet \"endef\""
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "\"endef\" saknas, oavslutat \"define\""
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Överflödig text efter direktivet \"endef\""
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Överflödig text efter direktivet \"%s\""
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "överflödigt \"%s\""
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "endast ett \"else\" per villkor"
 
-#: read.c:1824
-#, fuzzy
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr "Felformad målberoende variabeldefinition"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr ""
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
+msgstr "beroenden kan inte definieras i kommandoskript"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "blandade implicita regler och statiska mönsterregler"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "blandade implicita regler och normala regler"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "målet \"%s\" motsvarar inte målmönstret"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "målfilen \"%s\" har både poster med : och ::"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "målet \"%s\" anges flera gånger i samma regel."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "varning: åsidosätter kommandon för målet \"%s\""
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "varning: bortser från gamla kommandon för målet \"%s\""
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "varning: NUL-tecken upptäckt, bortser från resten av raden"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Inget behöver göras för \"%s\"."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "\"%s\" är färsk."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Beskär filen \"%s\".\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sIngen regel för att skapa målet \"%s\"%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sIngen regel för att skapa målet \"%s\", som behövs till \"%s\"%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Överväger målfilen \"%s\".\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Misslyckades nyligen med att uppdatera filen \"%s\".\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Filen \"%s\" har redan övervägts.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Uppdaterar fortfarande filen \"%s\".\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Slutförde uppdaterandet av filen \"%s\".\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Filen \"%s\" finns inte.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
+"*** Varning: .LOW_RESOLUTION_TIME-filen \"%s\" har en högupplöst tidsstämpel"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Hittade en implicit regel för \"%s\".\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Hittade ingen implicit regel för \"%s\".\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Använder standardkommandon för \"%s\".\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Det cirkulära beroendet %s <- %s släpptes."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Färdigställde de nödvändiga förutsättningarna för målfilen \"%s\".\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "De nödvändiga förutsättningarna för \"%s\" håller på att skapas.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Ger upp med målfilen \"%s\".\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Målet \"%s\" återskapades inte på grund av fel."
 
-#: remake.c:677
-#, fuzzy, c-format
+#: remake.c:727
+#, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Den nödvändiga förutsättningen \"%s\" är äldre än målet \"%s\".\n"
+msgstr ""
+"Den nödvändiga förutsättningen \"%s\" för målet \"%s\" är endast-ordning.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Den nödvändiga förutsättningen \"%s\" för målet \"%s\" finns inte.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Den nödvändiga förutsättningen \"%s\" är nyare än målet \"%s\".\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Den nödvändiga förutsättningen \"%s\" är äldre än målet \"%s\".\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Målet \"%s\" är dubbelkolon och har inga beroenden.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr ""
 "Inga kommandon eller nödvändiga förutsättningar för \"%s\" har förändrats.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
-msgstr ""
+msgstr "Skapar \"%s\" på grund av flaggan always-make.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Målet \"%s\" behöver inte återskapas"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; använder VPATH-namnet \"%s\""
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Måste återskapa målet \"%s\".\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Bortser från VPATH-namnet \"%s\".\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Kommandon för \"%s\" körs.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Misslyckades med att återskapa målfilen \"%s\".\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Målfilen \"%s\" återskapades.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "Målfilen \"%s\" behöver återskapas med -q.\n"
 
-#: remake.c:1306
-#, fuzzy, c-format
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "Använder standardkommandon för \"%s\".\n"
+
+#: remake.c:1357
+#, c-format
 msgid "Warning: File `%s' has modification time in the future"
-msgstr "*** Varning: Filen \"%s\" har ett ändringsdatum i framtiden (%s > %s)"
+msgstr "Varning: Filen \"%s\" har ett ändringsdatum i framtiden."
 
-#: remake.c:1313
+#: remake.c:1370
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
-msgstr "*** Varning: Filen \"%s\" har ett ändringsdatum i framtiden (%s > %s)"
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "Varning: Filen \"%s\" har en ändringstid %.2g sekunder i framtiden"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS-elementet \"%s\" är inte något mönster"
@@ -1564,16 +1615,15 @@ msgstr ".LIBPATTERNS-elementet \"%s\" 
 msgid "Customs won't export: %s\n"
 msgstr "Customs kommer inte att exportera %s\n"
 
-#: rule.c:548
-#, fuzzy
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Inga implicita regler."
+"# Implicita regler"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1581,7 +1631,7 @@ msgstr ""
 "\n"
 "# Inga implicita regler."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1590,232 +1640,244 @@ msgstr ""
 "\n"
 "# %u implicita regler, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " slutregler."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "FEL: num_pattern_rules felaktigt!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "okänd signal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Avringd"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Avbrott"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Avslutad"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Otillåten instruktion"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Spårningsfälla"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Avbruten"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IO-fälla"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Emulatorfälla"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Flyttalsundantag"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Dödad"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Bussfel"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Segmenteringsfel"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Felaktigt systemanrop"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Ledningsbrott"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarmklocka"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Avslutad"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Användarsignal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Användarsignal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Barn avslutades"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Strömavbrott"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Stoppades"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Stoppades (tty-läsning)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Stoppades (tty-utskrift)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Stoppades (signal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU-tidsgräns överskreds"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Filstorleksgräns överskreds"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Virtuellt tidur löpte ut"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Profileringstidur löpte ut"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Fönster ändrat"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Fortsatte"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Brådskande I/O-läge"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "I/O-tillfälle"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Miste resurs"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Farosignal"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Informationsbegäran"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Flyttalsprocessor inte tillgänglig"
 
-#: strcache.c:210
-#, c-format
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s antal strängar i strcache: %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s antal strcache-buffertar: %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
-msgstr ""
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache storlek: total = %d / max = %d / min = %d / snitt = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache ledigt: total = %d / max = %d / min = %d / snitt = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# statistik för filhashtabell:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "normal"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "miljö"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefil"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "miljö enligt -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "kommandorad"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "\"override\"-direktiv"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "automatisk"
 
-#: variable.c:1396
-#, fuzzy, c-format
+#: variable.c:1570
+#, c-format
 msgid " (from `%s', line %lu)"
-msgstr " (från \"%s\", rad %lu):\n"
+msgstr " (från \"%s\", rad %lu)"
 
-#: variable.c:1438
-#, fuzzy
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# %u variabler i %u hashbehållare.\n"
+msgstr "# statistik för variabelmängd-hashtabell:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1823,8 +1885,7 @@ msgstr ""
 "\n"
 "# Variabler\n"
 
-#: variable.c:1453
-#, fuzzy
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1832,7 +1893,7 @@ msgstr ""
 "\n"
 "# Mönsterspecifika variabelvärden"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1840,7 +1901,7 @@ msgstr ""
 "\n"
 "# Inga mönsterspecifika variabelvärden."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1849,14 +1910,14 @@ msgstr ""
 "\n"
 "# %u mönsterspecifika variabelvärden"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "varning: odefinierad variabel \"%.*s\""
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search misslyckades och gav %d\n"
 
 #: vmsjobs.c:71
@@ -1864,72 +1925,77 @@ msgstr "sys$search misslyckades och gav %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Varning: Tom omdirigering\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "internt fel: \"%s\" command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-varning, CTRL-Y lämnar efter sig underprocess(er).\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-varning, CTRL-Y-hantering kanske behöver återställas från DCL.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INBYGGT [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "INBYGGT CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "INBYGGT RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Okänt inbyggt kommando \"%s\"\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fel, tomt kommando\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Inkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Felkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Utkanal omdirigerad till %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Utkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Utför %s i stället\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fel vid avknoppning, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1937,11 +2003,11 @@ msgstr ""
 "\n"
 "# VPATH-sökvägar\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Inga \"vpath\"-sökvägar."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1950,7 +2016,7 @@ msgstr ""
 "\n"
 "# %u \"vpath\"-sökvägar.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1958,7 +2024,7 @@ msgstr ""
 "\n"
 "# Ingen allmän sökväg (enligt \"VPATH\"-variabeln)."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1968,6 +2034,30 @@ msgstr ""
 "# Allmän sökväg (enligt \"VPATH\"-variabeln):\n"
 "# "
 
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() misslyckades med processtart (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sDetta är fri programvara; se källkoden för kopieringsvillkor.\n"
+#~ "%sINGA garantier lämnas, inte ens vid KÖP eller FÖR NÅGOT SPECIFIKT\n"
+#~ "%sÄNDAMÅL.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "överflödigt \"endef\""
+
+#~ msgid "empty `override' directive"
+#~ msgstr "tomt \"override\"-direktiv"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "ogiltigt \"override\"-direktiv"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-varning, CTRL-Y lämnar efter sig underprocess(er).\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "# No files."
index 0717333..002a950 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index 653c585..441e10c 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
 # Turkish translations for GNU Make messages.
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001-2002.
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2001, ..., 2006.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.81\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
-"PO-Revision-Date: 2002-10-05 18:13+0300\n"
-"Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2006-04-23 08:45+0300\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 0.9.6\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "desteklenmeyen özelliği kullanmaya çalışıyor: `%s'"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "VMS'de işe yaramayan arşiv üyesine dokunup geçiyor"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "Dokunulup geçildi: Arşiv `%s' yok"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "Dokunulup geçildi: `%s' geçerli bir arşiv değil"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "Dokunulup geçildi: Üye `%s', `%s' içinde yok"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr "Dokunulup geçildi: `%s' deki ar_member_touch'dan dönen kod hatalı"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_module modül bilgisini çıkarırken başarısız oldu, durum = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control durum =%d ile başarısız oldu"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "`%s' kaynakçası `%s' üyesine bakmak için açılamadı"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Üye `%s'%s: %ld bayt  %ld 'de (%ld).\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr "(isim kırpılmış olmalı)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Tarih %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  Kull-kim = %d, Grup-kim = %d, kip = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Bırakıldı.\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] Arşiv üyesi `%s' sahte olabilir; silinmedi"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** Arşiv üyesi `%s' sahte olabilir; silinmedi"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] `%s' dosyası siliniyor"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** `%s' dosyası siliniyor"
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  çalıştırma komutları"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (paket içinde):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (`%s'den, satır %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,223 +125,224 @@ msgstr ""
 "\n"
 "# Dizin\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: durumlanamadı.\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d): açılamadı.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]): açılamadı.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (aygıt %ld, i-düğüm %ld): açılamadı.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d):"
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):"
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (aygıt %ld, i-düğüm %ld):"
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Hayır"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " dosyaları,"
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "hayır"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr "olanaksızlıklar"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " çok uzak."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " %lu dizinde olanaksızlıklar.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "Çevrimsel değişken `%s' tekrar kendine bağıntılı (sonuçta)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "sonlandırılmamış değişken bağıntısı"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "`%s' dosyası için komutlar örtük kural aramasında bulundu,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "fakat `%s' şimdi `%s' dosyası ile aynı dosya olarak düşünülmeli."
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "`%s' dosyası için komutlar `%s' lehine yoksayılmış olacak."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "tek-sütun `%s', çift-sütun `%s' olarak yeniden adlandırılamaz"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "çift-sütun `%s', tek-sütun `%s' olarak yeniden adlandırılamaz"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Aracı dosya `%s' siliniyor"
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Aracı dosyalar siliniyor...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr "Şu an"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Bir hedef değil:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Kıymetli dosya (.PRECIOUS  önceden gerekliliği)."
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Sahte hedef (.PHONY önceden gerekliliği)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  Komut-satırı hedefi."
 
-#: file.c:909
-#, fuzzy
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr ""
-"#  Bir öntanımlı ya da MAKEFILES çevre değişkeni ile atanmış bir make dosyası"
+msgstr "#  Bir öntanımlı,MAKEFILES veya -include/sinclude makefile."
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "#  Örtük kural araştırması yapılmıştı."
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Örtük kural araştırması yapılmamıştı."
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Örtük/değişmeyen kalıp kökü: `%s'\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 "#  Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara "
 "aracılık eden dosya)"
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  Oluştursa da:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  Değişiklik zamanı hiç kontrol edilmedi."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  Dosya yok."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  Dosya çok eski."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Son değişiklik tarihi %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  Dosya güncelleştirilmişti."
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
 msgstr "#  Dosya güncelleştirilmemişti."
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Komutlar şu an işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 "#  Bağımlılıkların komutları işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#   Tamamen güncellendi."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#   Güncellenmiş olması gerekir (-q verildi)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  Güncellenmiş olamadı."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  `update_status' üyesinde geçersiz değer!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  `command_state' üyesinde geçersiz değer!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -347,7 +350,7 @@ msgstr ""
 "\n"
 "# Dosyalar"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -357,263 +360,262 @@ msgstr ""
 "# dosyaların hash tablosu durumları:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "`word' işlevinde sayısal olmayan ilk argüman"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
 msgstr "`word' işlevinin ilk argümanı sıfırdan büyük olmalı"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "`wordlist' işlevinde sayısal olmayan ilk argüman"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman"
 
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) başarısız (e=%d)\n"
-
-#: function.c:1464
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Err) başarısız (e=%d)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(In) başarısız (e=%ld)\n"
 
 #: function.c:1469
 #, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() başarısız (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "create_child_process: DuplicateHandle(Err) başarısız (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() başarısız (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() başarısız\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Argüman sayısı (%d) `%s' işlevinde yetersiz"
+msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "Bu platformda gerçekleştirilmemiş: işlev `%s'"
+msgstr "bu platformda gerçekleştirilmemiş: işlev `%s'"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "`%s' işlemine çağrı sonlandırılmamış: `%c' kayıp"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: `%s' seçeneği belirsiz\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: `--%s' seçeneği bilinmiyor\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: kuraldışı seçenek -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: geçersiz seçenek -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' seçeneği belirsiz\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr "hash tablosu için %ld bayt ayrılamıyor: bellek tükendi"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Yük=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Rehash=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Çakışmalar=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "`%s' için bir örtük kural arıyor.\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Örtük kural çevrimi görmezden geliniyor.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n"
 
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n"
-
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Örtük önceden gereklilik `%s' deneniyor.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Kural önceden gerekliliği `%s' deneniyor.\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "Örtük önceden gereklilik `%s' deneniyor.\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Aracı dosya `%s' ile bir kural arıyor.\n"
 
-#: job.c:321
-#, fuzzy
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (geçici dosya)"
+msgstr "Bir geçici dosya oluşturulamıyor\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Hata 0x%x (yoksayıldı)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Hata 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Hata %d (yoksayıldı)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Hata %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (bellek kopyası - core dosyası - diske yazıldı)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Bitmemiş işler için bekliyor...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Ast dosya işini sürdürüyor: 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (karşıdan)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Kaybeden ast dosya sağlanıyor: 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Kazanan ast dosya sağlanıyor: 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Geçici komut-listesi dosyası %s temizleniyor\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Ast 0x%08lx PID %ld%s zincirden kaldırılıyor\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr "iş-sunucusu yazıyor"
 
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Ast 0x%08lx (%s) için simge (token) kullanıma sunuldu.\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr ""
-"Başarısız olan süreç oluşturma işlemine process_easy() sebep oldu (e=%d)\n"
+msgstr "Süreci başlatacak process_easy() başarısız oldu (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -622,121 +624,137 @@ msgstr ""
 "\n"
 "Sayılan %d argüman ile başarısız oldu\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Ast 0x%08lx (%s) PID %ld%s zincire konuluyor.\n"
 
-#: job.c:1709
-#, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Ast 0x%08lx (%s) için simge (token) sağlandı.\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "görev listesi okunuyor"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr "işletim sisteminde yük sınırlarına ulaşılamadı "
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "ulaşılamayan yük sınırı: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "başka dosya tutucu yok: standart çıktı kopyalanamadı\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Standart girdi eski haline getirilemedi\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Standart çıktı eski haline getirilemedi\n"
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr ""
-"Başarısız olan süreç oluşturma işlemine process_easy() sebep oldu (e=%d)\n"
-
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make pid %d ast süreci kaldırdı ama hala pid %d için bekliyor\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make %ld pid'li ast süreci kaldırdı ama hala pid %ld için bekliyor\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Komut bulunamadı"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Kabuk uygulaması bulunamadı"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: ortam alanı tükenmiş olabilir"
 
-#: job.c:2363
-#, fuzzy, c-format
+#: job.c:2461
+#, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL değişti (`%s' idi, şimdi `%s')"
+msgstr "$SHELL değişti (`%s' idi, şimdi `%s')\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "%s geçici komut-liste dosyasını oluşturuyor\n"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (satır %d) kabuk bağlamı hatalı (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "Seçenekler:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Uyumluluk için yoksayıldı.\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Tüm hedefler koşulsuz olarak oluşturulur.\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr "  -C DİZİN, --directory=DIZIN Birşey yapmadan önce DİZİNe geçilir.\n"
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -b, -m                      Bir sürü hata ayıklama bilgisi basar.\n"
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=SEÇENEKLER]        Çeşitli türde hata ayıklama bilgileri basar.\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides Ortam değişkenleri makefile'ları değiştirir.\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -744,15 +762,16 @@ msgstr ""
 "  -f DOSYA, --file=DOSYA, --makefile=DOSYA\n"
 "                              DOSYAyı bir makefile olarak okur.\n"
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Bu iletiyi basar ve çıkar.\n"
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Komutların ürettiği hataları yoksayar.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -760,7 +779,7 @@ msgstr ""
 "  -I DİZİN, --include-dir=DİZİN\n"
 "                              Eklenecek makefile'ları DİZİNde arar.\n"
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -768,13 +787,13 @@ msgstr ""
 "  -j [N], --jobs[=N]          Bir defada N işe izin verir; argumansız iş\n"
 "                              sayısı sınırsızdır.\n"
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Bazı hedefler yapılmadığında devam eder.\n"
 
-#: main.c:320
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -784,22 +803,25 @@ msgstr ""
 "                              Yük N'den az olmadıkça çoklu işler "
 "başlatılmaz.\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   sembolik bağlarla hedef arasında en son mtime\n"
+"                              kullanılır\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Gerçekte komutlar çalıştırılmaz, gösterilir.\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -809,54 +831,56 @@ msgstr ""
 "                              DOSYAnın çok eski olduğu varsayılır ve\n"
 "                              yeniden işlem yapılmaz.\n"
 
-#: main.c:331
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       make'in içsel veritabanını basar.\n"
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question              Komut çalıştırmaz; güncelse çıkışta belirtir\n"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Oluşumiçi örtük kuralları etkisizleştirir.\n"
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Oluşumiçi değişken ayarlarını etkisizleştirir\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet     Komutlar işlenirken gösterilmez.\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop Bazı hedefler yapılmadığında devam etmez.\n"
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Yeniden derlemek yerine hedeflere bakıp "
 "geçer.\n"
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               make sürüm numarasını basar ve çıkar.\n"
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Kullanılan dizini basar.\n"
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -864,7 +888,7 @@ msgstr ""
 "  --no-print-directory        Dolaylı olarak açılmış olsa bile -w 'yi "
 "kapatır\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -872,7 +896,7 @@ msgstr ""
 "  -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n"
 "                              DOSYA sonsuz yeni varsayılır.\n"
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -880,185 +904,190 @@ msgstr ""
 "  --warn-undefined-variables  Atanmamış bir değişkene bağıntı yapıldığında\n"
 "                              uyarır.\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "dosyaismi olarak boş dizge geçersiz"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "Hata ayıklama düzeyi özelliği `%s' bilinmiyor"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s: Kesinti/Olağandışı durum saptandı (kod = 0x%x, adres = 0x%x)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Kesinti/Olağandışı durum saptandı (kod = 0x%lx, adres = 0x%lx)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
 "program %s tarafından elde edilmemiş olağandışı-durum süzgeci çağrıldı\n"
-"OlağandışılıkKodu = %x\n"
-"OlağandışılıkBayrakları = %x\n"
-"OlağandışılıkAdresi = %x\n"
+"OlağandışılıkKodu = %lx\n"
+"OlağandışılıkBayrakları = %lx\n"
+"OlağandışılıkAdresi = %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "Erişim uyumsuzluğu: %x adresine yazma işlemi\n"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Erişim uyumsuzluğu: %lx adresinde yazma işlemi\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "Erişim uyumsuzluğu: %x adresinden okuma işlemi\n"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Erişim uyumsuzluğu: %lx adresinde okuma işlemi\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell default_shell = %s olarak belirliyor\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 "find_and_set_shell yol aramasını default_shell = %s olarak belirliyor\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s 30 saniyeliğine askıya alınıyor..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) bitti. Devam ediliyor.\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile standart girdiden iki kez belirtildi."
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (geçici dosya)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (geçici dosya)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Bu platformda paralel işler (-j) desteklenmiyor."
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr "Tek iş kipi (-j1) için make'i başlatma konumuna alıyor"
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "içsel hata: çok sayıda --jobserver-fds seçeneği"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz"
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor."
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "çift iş sunucusu"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 "uyarı: iş sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' "
 "ekle."
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "işleri yaratıyor"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr "işleri hazırlıyor"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Sembolik bağlar desteklenmiyor: -L iptal ediliyor"
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "makefile'ları güncelliyor...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "`%s' make dosyası yeniden derlenemiyor."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "İçerilen make dosyası `%s' bulunamadı."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "`%s' make dosyası bulunamadı"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Geriye, özgün dizine geçilemiyor."
 
-#: main.c:2024
-#, fuzzy, c-format
+#: main.c:2102
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Yeniden çalıştırılıyor:"
+msgstr "Yeniden çalıştırılıyor[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (geçici dosya): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "Hedefler belirtilmediğinden make dosyası yok"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "Hedef yok"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Amaçlanan hedefler güncelleniyor...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "uyarı:  Clock skew saptandı. Derleme tamamlanamayabilir."
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Kullanım: %s [seçenekler] [hedef] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1067,7 +1096,7 @@ msgstr ""
 "\n"
 "Bu program %s için kurgulanmış\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1076,54 +1105,47 @@ msgstr ""
 "\n"
 "Bu program %s için kurgulanmış (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "Yazılım hatalarını <bug-make@gnu.org> adresine,\n"
-"çeviri hatalarını <gnu-tr-u12a@lists.sourceforge.net> adresine bildiriniz.\n"
+"çeviri hatalarını <gnu-tr@belgeler.org> adresine bildiriniz.\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "`-%c' seçeneği bir boş olmayan dizge argüman gerektirir"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır"
 
-#: 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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\n"
 msgstr ""
-"%sBu bir serbest yazılımdır; kopyalama koşulları için kaynak koduna "
-"bakınız.\n"
-"%sHiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ KULLANIMINIZA\n"
-"%sUYGUNLUĞU için bile garanti verilmez.\n"
+"\n"
+"%sBu program %s için derlenmiş\n"
 
-#: main.c:2948
+#: main.c:3056
 #, fuzzy, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
-"Bu program %s için kurgulanmış\n"
+"%sBu program %s için derlenmiş (%s)\n"
 
-#: main.c:2950
-#, fuzzy, c-format
+#: main.c:3066
+#, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"Bu program %s için kurgulanmış (%s)\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1132,7 +1154,7 @@ msgstr ""
 "\n"
 "# Make veri tabanı, %s üzerine basıldı"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1141,309 +1163,304 @@ msgstr ""
 "\n"
 "# %s üzerindeki Make veri tabanı tamamlandı\n"
 
-#: main.c:3101
-#, fuzzy, c-format
+#: main.c:3237
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: bilinmeyen bir dizine giriliyor"
+msgstr "%s: bilinmeyen bir dizine giriliyor\n"
 
-#: main.c:3103
-#, fuzzy, c-format
+#: main.c:3239
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: bilinmeyen dizinden çıkılıyor"
+msgstr "%s: bilinmeyen dizinden çıkılıyor\n"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: `%s' dizine giriliyor\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: `%s' dizininden çıkılıyor\n"
 
-#: main.c:3114
-#, fuzzy, c-format
+#: main.c:3250
+#, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor"
+msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor\n"
 
-#: main.c:3117
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor"
+msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]:`%s' dizinine giriliyor\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: `%s' dizininden çıkılıyor\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ". Durdu.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "Bilinmeyen hata %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "sanal bellek tükendi"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: kullanıcı %lu (gerçekte %lu), grup %lu (gerçekte %lu)\n"
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr "İlklendirilmiş erişim"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Kullanıcı erişimi"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Make erişimi"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Asta erişim"
 
-#: misc.c:892
-#, fuzzy, c-format
+#: misc.c:954
+#, c-format
 msgid "write error: %s"
-msgstr "%s e yönlendirilmiş hata\n"
+msgstr "yazma hatası: %s"
 
-#: misc.c:894
-#, fuzzy
+#: misc.c:956
 msgid "write error"
-msgstr "iş-sunucusu yazıyor"
+msgstr "yazma hatası"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Makefile'lar okunuyor...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "`%s' make dosyası okunuyor"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (öntanımlı amaç yok)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (arama yolu)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (umurunda değil)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr "( ~ uzantısı yok)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "şartlı ifade de yazılış hatası"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "yersiz `endef'"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "boş değişken ismi"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "boş `override' yönergesi"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "`override' yönergesi geçersiz"
-
-#: read.c:854
-msgid "commands commence before first target"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "komutlar ilk hedeften önce başlıyor"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "komutlardan önceki kural kayıp"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "kayıp ayraç%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr "(8 boşluğu TAB'mı zannettiniz?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "hedef kalıp kayıp"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "çok sayıda hedef kalıp"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "hedef kalıp `%%' içermiyor"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "`endif' kayıp"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "boş değişken ismi"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "`endef' yönergesinden sonraki metin yersiz"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "`endef' kayıp, `define' sonlandırılmamış"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "`endef' yönergesinden sonraki metin yersiz"
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "`%s' yönergesinden sonraki metin yersiz"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "`%s' yersiz"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "her şartlı ifade de sadece bir `else'"
 
-#: read.c:1824
-#, fuzzy
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
-msgstr "per-target değişken ataması bozuk"
+msgstr "Hedefe özgü değişken tanımı bozuk"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr ""
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
+msgstr "öngereksinimler komut betiklerinde tanımlanamaz"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "örtük ve durağan kalıp kuralları karışmış"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "örtük ve normal kurallar karışmış"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "hedef `%s' hedef kalıpla eşleşmiyor"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "hedef dosya `%s'hem : hem de :: girdilerine sahip"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "hedef `%s' aynı kuralda birden fazla belirtilmiş."
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "uyarı: hedef `%s' için eski komutlar yoksayılıyor"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "uyarı: NUL karakteri görüldü; satırın geri kalanı yoksayılıyor"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "`%s' için hiçbir şey yapılmadı."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' güncel"
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Budanmış dosya `%s'.\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sHedef `%s' i derlemek için  hiçbir kural yok%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr ""
 "%sHedef `%s' i derlemek için  hiçbir kural yok, `%s' tarafından gereksinim "
 "duyuluyor%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "hedef dosya `%s' hesaba katılıyor.\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "En son `%s'dosyasının güncellenmesi denendi ve başarısız oldu.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "`%s' dosyası zaten hesaba katıldı.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "`%s' dosyası hala güncelleniyor.\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "`%s' dosyasının güncellenmesi tamamlandı.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "`%s' dosyası yok.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
@@ -1451,132 +1468,137 @@ msgstr ""
 "*** Uyarı: .LOW_RESOLUTION_TIME dosyası `%s' yüksek çözünürlüklü bir zaman "
 "damgası içeriyor"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "`%s' için bir örtük kural bulundu.\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "`%s' için bir örtük kural yok.\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi."
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "`%s' için önceden gereklilikler derlenmeye devam ediyor.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "`%s' hedef dosyasında umut kesiliyor.\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Hedef `%s' hatalardan dolayı yeniden derlenemez."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' için şart.\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' den daha yeni.\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' den daha eski.\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "Hedef `%s' çift-sütunlu ve önceden gereklilikler gerektirmiyor.\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "`%s' için komutlar ve  önceden gerekliliklerde bir değişiklik yok.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr "Daima derle seçeneğinden dolayı `%s' derleniyor.\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; VPATH ismi `%s' kullanılıyor"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Hedef `%s' yeniden derlenmeli.\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr " VPATH ismi `%s' yoksayılıyor.\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "`%s' nin komutları çalışmaya devam ediyor.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Hedef dosya `%s' yeniden derlenirken hata oluştu.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "Hedef dosya `%s' yeniden derlenmesi başarıyla tamamlandı.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "`%s' hedef dosyasının -q ile yeniden derlenmesi gerekir.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "Uyarı: `%s' dosyası gelecekteki bir değişiklik tarihini içeriyor"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "Uyarı: `%s' dosyasının  değişiklik tarihi %.2g s kadar gelecekte"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ".LIBPATTERNS elemanı `%s' bir kalıp değil"
@@ -1586,7 +1608,7 @@ msgstr ".LIBPATTERNS elemanı `%s' bir kalıp değil"
 msgid "Customs won't export: %s\n"
 msgstr "Özelleştirilmiş olanlar dışarı aktarılmayacak: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1594,7 +1616,7 @@ msgstr ""
 "\n"
 "# Örtük Kurallar"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1602,7 +1624,7 @@ msgstr ""
 "\n"
 "# Örtük kural yok."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1611,231 +1633,244 @@ msgstr ""
 "\n"
 "# %u örtük kural, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "YAZILIM HATASI: num_pattern_rules yanlış!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "bilinmeyen sinyal"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Tıkanma"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Kesme"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Çık"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Yönergeler uygun değil"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "İzleme/kesmenoktası yakalayıcı"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "İptal edildi"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "IOT tuzağı"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "EMT tuzağı"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Gerçek sayı olağandışı durumu"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Süreç durduruldu"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Veri yolu hatası"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Parçalama arızası"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Sistem çağrısı hatalı"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Veri alınamıyor"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Alarm saati"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Sonlandırıldı"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Kullanıcı tanımlı sinyal 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Kullanıcı tanımlı sinyal 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Ast bıraktı"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Güç kesilmesi"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Durduruldu"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Durduruldu (konsol girdisi)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Durduruldu (konsol çıktısı)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Durduruldu (sinyal)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "CPU zaman sınırı aşıldı"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Dosya uzunluğu sınırı aşıldı"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Sanal süreölçer kullanım süresi doldu"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "Tanıtım süreölçer kullanım süresi doldu"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "Pencere boyutları değiştirildi"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Devam ediliyor"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "Acil G/Ç koşulu"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "G/Ç mümkün"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Kaynak kaybı"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Tehlike sinyali"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Bilgi isteği"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr "Aritmetik işlemci kullanılabilir değil"
 
-#: strcache.c:210
-#, c-format
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s dizge belleğindeki dizgelerin sayısı: %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s dizge belleği tamponlarının sayısı: %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
-msgstr ""
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s dizge belleği boyu: toplam = %d / max = %d / min = %d / ort = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s dizge belleği boş: toplam = %d / max = %d / min = %d / ort = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# dosyaların hash tablosu durumları:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "öntanımlı"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "çevre"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "derleme dosyası"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "çevre -e altında"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "komut satırı"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "`override' yönergesi"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "otomatik"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (`%s'den, satır %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# değişken kümesi hash tablosunun durumu:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1843,16 +1878,15 @@ msgstr ""
 "\n"
 "# Değişkenler\n"
 
-#: variable.c:1453
-#, fuzzy
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Örneğe duyarlı değişken değeri"
+"# Kalıba özgü Değişken Değerleri"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1860,7 +1894,7 @@ msgstr ""
 "\n"
 "# Örneğe duyarlı değişken değeri yok."
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1869,14 +1903,14 @@ msgstr ""
 "\n"
 "# %u örneğe duyarlı değişken değeri"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "uyarı: `%.*s' değişkeni atanmamış"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
 msgstr "sys$search %d ile başarısız\n"
 
 #: vmsjobs.c:71
@@ -1884,74 +1918,79 @@ msgstr "sys$search %d ile başarısız\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Uyarı: Boş yönlendirme\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "içsel hata: `%s' command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr "-uyarı, CTRL-Y etraftaki alt-süreç(ler)i bıraktıracak.\n"
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-uyarı, DCL den yönetimi almak için CTRL-Y'yi yeniden "
 "etkinleştirebilirsiniz.\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "OLUŞUMİÇİ [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "OLUŞUMİÇİ CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "OLUŞUMİÇİ RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Oluşumiçi komut '%s' bilinmiyor\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Hata, boş komut\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s den yönlendirilmiş girdi\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s e yönlendirilmiş hata\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "%s e yönlendirilmiş çıktı\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s e yönlendirilmiş çıktı\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s yerine çalıştırılıyor\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "doğum hatası, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1959,11 +1998,11 @@ msgstr ""
 "\n"
 "# VPATH Arama yolu\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# `vpath' arama yolları yok"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1972,7 +2011,7 @@ msgstr ""
 "\n"
 "# %u `vpath' arama yolu.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1980,7 +2019,7 @@ msgstr ""
 "\n"
 "# Genel arama yolu (`VPATH' çevre değişkeni) yok."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1990,6 +2029,32 @@ msgstr ""
 "# Genel (`VPATH' çevre değişkeni) arama yolu:\n"
 "# "
 
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "Süreci başlatmada process_easy() başarısız oldu (e=%ld)\n"
+
+#~ 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 ""
+#~ "%sBu bir serbest yazılımdır; kopyalama koşulları için kaynak koduna "
+#~ "bakınız.\n"
+#~ "%sHiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ "
+#~ "KULLANIMINIZA\n"
+#~ "%sUYGUNLUĞU için bile garanti verilmez.\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "yersiz `endef'"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "boş `override' yönergesi"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "`override' yönergesi geçersiz"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-uyarı, CTRL-Y etraftaki alt-süreç(ler)i bıraktıracak.\n"
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "Dosyada hala yazılış hatası var: '\"'\n"
 
index ed1f2c2..e24a088 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index 580d69e..ebf1fd6 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ 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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
 "PO-Revision-Date: 2002-12-05 20:07+0200\n"
 "Last-Translator: Volodymyr M. Lisivka <lvm@mystery.lviv.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -14,31 +14,31 @@ msgstr ""
 "Content-Type: text/plain; charset=koi8-u\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "ÓÐÒÏÂÁ ×ÖÉÔÉ ÍÏÖÌÉצÓÔØ, ÑËÁ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ: \"%s\""
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
 msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ ÞÌÅÎÁ ÁÒȦ×Õ ÎÅÍÏÖÌÉ×Ï Õ ÓÉÓÔÅͦ VMS"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: áÒȦנ\"%s\" ÎÅ ¦ÓÎÕ¤"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: îÅצÒÎÉÊ ÁÒȦ×: \"%s\""
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
 msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: þÌÅΠ\"%s\" ÎŠͦÓÔÉÔØÓÑ Õ \"%s\""
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
@@ -47,76 +47,77 @@ msgstr ""
 
 #: arscan.c:69
 #, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
+msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:154
+#: arscan.c:175
 #, c-format
-msgid "lbr$ini_control failed with status = %d"
+msgid "lbr$ini_control() failed with status = %d"
 msgstr ""
 
-#: arscan.c:165
+#: arscan.c:187
 #, fuzzy, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "ðÏÍÉÌËÁ ×¦ÄËÒÉ×ÁÎÎѠ¦Â̦ÏÔÅËÉ %s ÄÌÑ ÐÏÛÕËÕ ÞÌÅÎÁ %s; %d\n"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
 msgstr " (¦Í'Ñ ÍÏÖÅ ÂÕÔÉ ÕÓ¦ÞÅÎÅ)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  äÁÔÁ %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr ""
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] ÷ÉÄÁÌÅÎÎÑ ÆÁÊÌÕ \"%s\""
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** ÷ÉÄÁÌÅÎÎÑ ÆÁÊÌÕ \"%s\""
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "#  ËÏÍÁÎÄÉ ÄÏ ×ÉËÏÎÁÎÎÑ"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (×ÂÕÄÏ×ÁÎÅ):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (Ú \"%s\", ÒÑÄÏË %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,229 +125,232 @@ msgstr ""
 "\n"
 "# ëÁÔÁÌÏÇÉ\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: ÎÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ (stat).\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, fuzzy, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ [%d,%d,%d]): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, fuzzy, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (ËÌÀÞ %s, ÞÁÓ ÍÏÄÉƦËÁ槠%d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, fuzzy, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ [%d,%d,%d]): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
 
-#: dir.c:1044
+#: dir.c:1057
 #, fuzzy, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "î¦"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " ÆÁÊ̦×, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "Φ"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " ÎÅÄÏÓÑÖÎÉȠæÌÅÊ"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " ÎÁ ÐÏÔÏÞÎÉÊ ÍÏÍÅÎÔ."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " ÎÅÄÏÓÑÖÎÉȠæÌÅÊ Õ %lu ËÁÔÁÌÏÇÁÈ.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "òÅËÕÒÓÉ×ÎÁ ÚͦÎÎÁ \"%s\" ÐÏÓÉÌÁ¤ÔØÓÑ ÓÁÍÁ ÎÁ ÓÅÂÅ (Õ ÒÅÚÕÌØÔÁÔ¦)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
 msgstr "ÎÅÚÁ×ÅÒÛÅÎÁ ÐÏÓÉÌÁÎÎÑ ÎÁ ÚͦÎÎÕ"
 
-#: file.c:270
+#: file.c:267
 #, fuzzy, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file `%s' at %s:%lu,"
 msgstr "ëÏÍÁÎÄÉ ÄÌÑ ÆÁÊÌÕ \"%s\" ÂÕÌÉ ÚÁÄÁΦ %s:%u,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
 msgstr "ëÏÍÁÎÄÉ ÄÌÑ ÆÁÊÌÕ \"%s\" ÂÕÌÉ ÚÎÁÊÄÅΦ Ú ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "ÁÌÅ \"%s\" ¦ \"%s\" ÔÅÐÅÒ ××ÁÖÁÀÔØÓÑ ÏÄÎÉÍ ¦ ÔÉÍ ÖÅ Ö ÆÁÊÌÏÍ. "
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "ëÏÍÁÎÄÉ ÄÌÑ \"%s\" ¦ÇÎÏÒÏ×ÁΦ, ÂÕÄÕÔØ ×ÉËÏÒÉÓÔÁΦ ËÏÍÁÎÄÉ ÄÌÑ \"%s\"."
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr ""
 "ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÊÍÅÎÕ×ÁÔÉ \"%s\" Ú ÏÄΦ¤À Ä×ÏËÒÁÐËÏÀ Õ \"%s\" Ú Ä×ÏÍÁ "
 "Ä×ÏËÒÁÐËÁÍÉ"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr ""
 "ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÊÍÅÎÕ×ÁÔÉ \"%s\" Ú Ä×ÏÍÁ Ä×ÏËÒÁÐËÁÍÉ Õ \"%s\" Ú ÏÄΦ¤À "
 "Ä×ÏËÒÁÐËÏÀ"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** ÷ÉÄÁÌÅÎÎÑ ÐÒÏͦÖÎÏÇÏ ÆÁÊÌÕ \"%s\""
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "÷ÉÄÁÌÑÀ ÐÒÏͦÖΦ ÆÁÊÌÉ...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr ""
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
 msgstr ""
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# îÅ ¤ ÍÅÔÏÀ:"
 
-#: file.c:903
+#: file.c:929
 #, fuzzy
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ëÏÛÔÏ×ÎÉÊ ÆÁÊÌ (ÚÁÌÅÖΦÓÔØ .PRECIOUS)."
 
-#: file.c:905
+#: file.c:931
 #, fuzzy
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  ðÓÅ×ÄÏæÌØ (ÚÁÌÅÖΦÓÔؠצĠ.PHONY)."
 
-#: file.c:907
-msgid "#  Command-line target."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "#  ã¦ÌØ ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÁ."
 
-#: file.c:909
+#: file.c:935
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Makefile ÚÁ ÚÁÍÏ×ÞÕ×ÁÎÎÑÍ ÁÂÏ Ú MAKEFILES."
 
-#: file.c:911
+#: file.c:937
 #, fuzzy
 msgid "#  Implicit rule search has been done."
 msgstr "#  ðÏÛÕË ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ%s ÚÁ×ÅÒÛÉ×ÓÑ.\n"
 
-#: file.c:912
+#: file.c:938
 #, fuzzy
 msgid "#  Implicit rule search has not been done."
 msgstr "#  ðÏÛÕË ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ%s ÚÁ×ÅÒÛÉ×ÓÑ.\n"
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  ïÓÎÏ×Á ÎÅÑ×ÎÏÇÏ ÁÂÏ ÓÔÁÔÉÞÎÏÇÏ ÛÁÂÌÏÎÕ: \"%s\"\n"
 
-#: file.c:916
+#: file.c:942
 #, fuzzy
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  æÁÊÌ -- ÐÒÏͦÖÎÁ ÚÁÌÅÖΦÓÔØ."
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "#  úÂÉÒÁ¤ ÔÁËÏÖ:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "#  þÁÓ ÚͦÎɠΦËÏÌÉ ÎÅ ÐÅÒÅצÒÑ×ÓÑ."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "#  æÁÊÌ ÎÅ ¦ÓÎÕ¤."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "#  æÁÊÌ ÄÕÖÅ ÓÔÁÒÉÊ."
 
-#: file.c:934
+#: file.c:961
 #, fuzzy, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  þÁÓ ÏÓÔÁÎÎØϧ ÚͦÎÉ %.24s (%ld)\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "#  æÁÊÌ ÂÕ× ÏÎÏ×ÌÅÎÉÊ."
 
-#: file.c:937
+#: file.c:964
 #, fuzzy
 msgid "#  File has not been updated."
 msgstr "#  æÁÊÌ%s ÏÎÏ×ÌÅÎÏ.\n"
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  úÁÐÕÝÅΦ ÚÁÒÁÚ ËÏÍÁÎÄÉ (ãå ðïíéìëá)."
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  úÁÐÕÝÅΦ ÚÁÒÁÚ ËÏÍÁÎÄÉ ÄÅÑËϧ ÚÁÌÅÖÎÏÓÔ¦ (ãå ðïíéìëá)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "#  õÓЦÛÎÏ ÏÎÏ×ÌÅÎÏ."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  ðÏ×ÉÎÎÏ ÂÕÔÉ ÏÎÏ×ÌÅÎÏ (×ÓÔÁÎÏ×ÌÅÎÉÊ ËÌÀÞ -q)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "#  óÐÒÏÂÁ ÏÎÏ×ÌÅÎÎÑ ÂÅÚÕÓЦÛÎÁ."
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  îÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÞÌÅÎÁ \"update_status\"!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  îÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÞÌÅÎÁ \"command_state\"!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -354,727 +358,747 @@ msgstr ""
 "\n"
 "# æÁÊÌÉ"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
 msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
 
-#: function.c:764
+#: function.c:763
 #, fuzzy
 msgid "first argument to `word' function must be greater than 0"
 msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
 msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"wordlist\""
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
 msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÄÒÕÇÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"wordlist\""
 
-#: function.c:1453
+#: function.c:1458
 #, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1464
+#: function.c:1469
 #, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1469
+#: function.c:1474
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr ""
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2101
+#: function.c:2150
 #, fuzzy, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
 msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
 
-#: function.c:2113
+#: function.c:2162
 #, fuzzy, c-format
 msgid "unimplemented on this platform: function `%s'"
 msgstr "îÅ ÒÅÁ̦ÚÏ×ÁÎÏ ÎÁ Ã¦Ê ÐÌÁÔÆÏÒͦ: ÆÕÎËæѠ\"%s\""
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "ÎÅÚÁ×ÅÒÛÅÎÉÊ ×ÉËÌÉË ÆÕÎË槠\"%s\"; ÐÒÏÐÕÝÅÎÏ \"%c\""
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒ \"%s\" - ÎÅÏÄÎÏÚÎÁÞÎÉÊ\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒ \"--%s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒ \"%c%s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒÕ \"%s\" ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: ÎÅ ÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ \"--%s\"\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: ÎÅ ÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ \"%c%s\"\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒÕ ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒ \"-W %s\" ÎÅÏÄÎÏÚÎÁÞÎÉÊ\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: ÐÁÒÁÍÅÔÒ \"-W %s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
 
-#: hash.c:51
+#: hash.c:49
 #, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr ""
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr ""
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "ðÏÛÕË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ \"%s\".\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "ðÏÛÕË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ ÞÌÅÎÁ ÁÒȦ×Õ \"%s\".\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "úÁÐϦÇÁÎÎÑ ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÉËÌÉËÕ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "óÐÒÏÂÁ ÚÁÓÔÏÓÕ×ÁÎÎÑ ÐÒÁ×ÉÌÁ Ú¦ ÚÒÁÚËÏÍ, ÏÓÎÏ×Á \"%.*s\".\n"
 
-#: implicit.c:667
+#: implicit.c:674
 #, fuzzy, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "÷¦ÄËÉÄÁÎÎÑ ÎÅÍÏÖÌÉ×ϧ %s ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
 
-#: implicit.c:668
+#: implicit.c:675
 #, fuzzy, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
 msgstr "÷¦ÄËÉÄÁÎÎÑ ÎÅÍÏÖÌÉ×ϧ %s ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
 
-#: implicit.c:678
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "ðÒÏÂÕÀ ÎÅÑ×Φ ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
-
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "ðÒÏÂÕÀ ÚÁÌÅÖΦÓÔØ ÐÒÁ×ÉÌÏ \"%s\".\n"
 
-#: implicit.c:710
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "ðÒÏÂÕÀ ÎÅÑ×Φ ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
+
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr ""
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "ðÏÛÕË ÐÒÁ×ÉÌÁ Ú ÐÒÏͦÖÎÉÍ ÆÁÊÌÏÍ \"%s\".\n"
 
-#: job.c:321
+#: job.c:335
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "[%s] ðÏÍÉÌËÁ 0x%x (ÐÒϦÇÎÏÒÏ×ÁÎÁ)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] ðÏÍÉÌËÁ 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] ðÏÍÉÌËÁ %d (¦ÇÎÏÒÏ×ÁÎÁ)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] ðÏÍÉÌËÁ %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (ÚÒÏÂÌÅÎÉÊ ÄÁÍРÐÁÍ'ÑÔ¦)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ïÞ¦ËÕ×ÁÎÎÑ ÚÁ×ÅÒÛÅÎÎÑ ÚÁ×ÄÁÎØ..."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
 msgstr "îÅÚÁ×ÅÒÛÅÎÉÊ ÎÁÝÁÄÏË 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (צÄÄÁÌÅÎÉÊ)"
 
-#: job.c:698
+#: job.c:758
 #, fuzzy, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
 msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
 
-#: job.c:699
+#: job.c:759
 #, fuzzy, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "úÎÉÝÅÎÎÑ ÔÉÍÞÁÓÏ×ÏÇÏ ËÏÍÁÎÄÎÏÇÏ ÆÁÊÌÕ %s\n"
 
-#: job.c:802
-#, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr ""
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "÷ÉÄÁÌÅÎÎÑ ÎÁÝÁÄËÁ 0x%08lx PID %d%s Ú ÌÁÎÃÀÖËÁ ÁËÔÉ×ÎÉÈ ÎÁÝÁÄ˦×.\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
 msgstr ""
 
-#: job.c:864
+#: job.c:922
 #, fuzzy, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
+msgid "Released token for child %p (%s).\n"
 msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
 
-#: job.c:1383
+#: job.c:1453 job.c:2094
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1455
+#: job.c:1525
 #, fuzzy, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "÷ÓÔÁ×ÌÑÀ ÎÁÝÁÄËÁ 0x%08lx PID %d%s Õ ÌÁÎÃÀÖÏË ÁËÔÉ×ÎÉÈ ÎÁÝÁÄ˦×.\n"
 
-#: job.c:1709
+#: job.c:1778
 #, fuzzy, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+msgid "Obtained token for child %p (%s).\n"
 msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "îÅÍÁ ÎÅÏÂȦÄÎÏÓÔ¦ ÐÅÒÅÚÂÉÒÁÔɠæÌØ \"%s\".\n"
+
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 "ÃÑ ÏÐÅÒÁæÊÎÁ ÓÉÓÔÅÍÁ ÎÅ ÄÏÚ×ÏÌѤ ×ÓÔÁÎÏ×ÌÀ×ÁÔÉ ÏÂÍÅÖÅÎÎÑ ÎÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "ÎÅÍÏÖÌÉ×Ï ×ÓÔÁÎÏ×ÉÔÉ ÏÂÍÅÖÅÎÎÑ ÎÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ: "
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:1945
+#: job.c:2023
 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
+#: job.c:2127
 #, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: ëÏÍÁÎÄÁ ÎÅ ÚÎÁÊÄÅÎÁ"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ëÏÍÁÎÄÎÉÊ ÐÒÏÃÅÓÏÒ ÎÅ ÚÎÁÊÄÅÎÉÊ"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2363
+#: job.c:2461
 #, fuzzy, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL ÚͦÎÅÎÏ (ÂÕÌÏ \"%s\", ÔÅÐÅÒ \"%s\")"
 
-#: job.c:2789
+#: job.c:2951
 #, fuzzy, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
 
-#: job.c:2902
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (ÒÑÄÏË %d) ðÏÇÁÎÉÊ ËÏÎÔÅËÓÔ ÏÂÏÌÎÉË (!unixy && !batch_mode_shell)\n"
 
-#: main.c:291
+#: main.c:303
 msgid "Options:\n"
 msgstr "ëÌÀÞ¦:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:299
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:301
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:309
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 
-#: main.c:311
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
+#: main.c:325
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:316
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:334
 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
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:339
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:328
+#: main.c:342
 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
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 
-#: main.c:333
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
-msgstr ""
+msgstr "îÅ ×ÉËÏÎÕ×ÁÔÉ ËÏÍÁÎÄÉ, ËÏÄ ÚÁ×ÅÒÛÅÎÎÑ ÐÏËÁÖÅ ÞÉ ÏÎÏ×ÌÅÎÏ"
 
-#: main.c:335
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:337
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
+#: main.c:353
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:344
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:346
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:348
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr ""
 
-#: main.c:350
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
 msgstr "ÐÏÒÏÖΦʠÒÑÄÏË ÎÅÐÒÉÐÕÓÔÉÍÉÊ Õ ÑËÏÓÔ¦ ¦ÍÅΦ ÆÁÊÌÕ"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr ""
 
-#: main.c:670
+#: main.c:690
 #, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:677
+#: main.c:697
 #, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:685
+#: main.c:705
 #, c-format
-msgid "Access violation: write operation at address %lx\n"
+msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:686
+#: main.c:706
 #, c-format
-msgid "Access violation: read operation at address %lx\n"
+msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:762 main.c:773
+#: main.c:781 main.c:792
 #, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:814
+#: main.c:834
 #, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
+msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ""
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr ""
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
 msgstr ""
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr "fwrite (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
 msgstr ""
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr ""
 
-#: main.c:1674
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1684
+#: main.c:1750
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr ""
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr ""
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "ïÎÏ×ÌÅÎÎÑ make-ÆÁÊ̦×...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Make-ÆÁÊÌ \"%s\", ÍÏÖÌÉ×Ï, ÚÁÃÉËÌÅÎÉÊ, ×¦Î ÎÅ ÐÅÒÅÚÂÉÒÁÔÉÍÅÔØÓÑ.\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "óÐÒÏÂÁ ÐÅÒÅÚ¦ÂÒÁÔÉ make-ÆÁÊÌ \"%s\" ÂÅÚÕÓЦÛÎÁ."
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Make-ÆÁÊÌ \"%s\", ÑËÉÊ ×ËÌÀÞÁ¤ÔØÓÑ, ÎÅ ÂÕÌÏ ÚÎÁÊÄÅÎÏ."
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Make-ÆÁÊÌ \"%s\" ÎÅ ÂÕÌÏ ÚÎÁÊÄÅÎÏ"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "îÅÍÏÖÌÉ×Ï ÐÅÒÅÊÔÉ Õ ÐÅÒצÓÎÉÊ ËÁÔÁÌÏÇ."
 
-#: main.c:2024
+#: main.c:2102
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "ðÏ×ÔÏÒÎÅ ×ÉËÏÎÁÎÎÑ:"
 
-#: main.c:2140
+#: main.c:2215
 #, fuzzy
 msgid "unlink (temporary file): "
 msgstr "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
 msgstr "îÅ ÚÁÄÁΦ Ã¦Ì¦ ¦ ÎÅ ÚÎÁÊÄÅÎÉÊ make-ÆÁÊÌ"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
 msgstr "îÅÍÁ Ã¦ÌÅÊ"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "ïÎÏ×ÌÅÎÎѠæÌÅÊ ÍÅÔÉ...\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ëìàþ¶]... [ã¶ìø]...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2394
+#: main.c:2481
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "ðÏצÄÏÍÌÀÊÔÅ ÐÒÏ ÐÏÍÉÌËÉ ÄÏ <bug-make@gnu.org>\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
+msgid "the `%s%s' option requires a non-empty string argument"
 msgstr "ËÌÀÞ \"-%c\" ÐÏ×ÉÎÅΠ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉÓѠڠæÌÉÍ ÐÏÚÉÔÉ×ÎÉÍ ÁÒÇÕÍÅÎÔÏÍ"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "ËÌÀÞ \"-%c\" ÐÏ×ÉÎÅΠ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉÓѠڠæÌÉÍ ÐÏÚÉÔÉ×ÎÉÍ ÁÒÇÕÍÅÎÔÏÍ"
 
-#: main.c:2942
+#: main.c:3054
 #, 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"
+msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:2948
+#: main.c:3056
 #, c-format
-msgid ""
-"\n"
-"%sThis program built for %s\n"
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1083,7 +1107,7 @@ msgstr ""
 "\n"
 "# âÁÚÁ ÄÁÎÉÈ Make, ÎÁÄÒÕËÏ×ÁÎÁ %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1092,439 +1116,439 @@ msgstr ""
 "\n"
 "# äÒÕË ÂÁÚÉ ÄÁÎÉÈ Make ÚÁ×ÅÒÛÅÎÏ %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: ÷ÈÏÖÕ Õ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
 
-#: main.c:3103
+#: main.c:3239
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: úÁÌÉÛÁÀ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
 
-#: main.c:3106
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: ÷ÈÏÖÕ Õ ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: úÁÌÉÛÁÀ ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: main.c:3114
+#: main.c:3250
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: ÷ÈÏÖÕ Õ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ "
 
-#: main.c:3117
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: úÁÌÉÛÁÀ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
 
-#: main.c:3121
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: ÷ÈÏÖÕ Õ ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: main.c:3124
+#: main.c:3260
 #, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
 msgstr "%s[%u]: úÁÌÉÛÁÀ ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  úÕÐÉÎËÁ.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
 msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "צÒÔÕÁÌØÎÁ ÐÁÍ'ÑÔØ ×ÉÞÅÒÐÁÎÁ"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
 
-#: misc.c:667
+#: misc.c:729
 msgid "Initialized access"
 msgstr ""
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "äÏÓÔÕРËÏÒÉÓÔÕ×ÁÞÁ"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr ""
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr ""
 
-#: misc.c:892
+#: misc.c:954
 #, fuzzy, c-format
 msgid "write error: %s"
 msgstr "ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: misc.c:894
+#: misc.c:956
 #, fuzzy
 msgid "write error"
 msgstr "ðÏÍÉÌËÁ ÎÁ ÛÉΦ"
 
-#: read.c:160
+#: read.c:179
 #, fuzzy
 msgid "Reading makefiles...\n"
 msgstr "þÉÔÁÎÎÑ make-ÆÁÊ̦×..."
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "þÉÔÁÎÎÑ make-ÆÁÊÌÕ \"%s\""
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (ÎÅÍÁ¤ ÍÅÔÉ ÚÁ ÚÁÍÏ×ÞÕ×ÁÎÎÑÍ)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (ÛÌÑÈ ÐÏÛÕËÕ)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (ÎÅ Ú×ÁÖÁÔÉ)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ÎÅ ÒÏÚÛÉÒÀ×ÁÔÉ ~)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
 msgstr "ÎÅצÒÎÉÊ ÓÉÎÔÁËÓÉÓ Õ ÕÍÏ×ÎÏÍÕ ×ÉÒÁÖÅÎΦ"
 
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "ÚÁÊ×ÉÊ \"endef\""
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "ÐÏÒÏÖΤ ¦Í'Ñ ÚͦÎÎϧ"
-
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "ÐÏÒÏÖÎÑ ÄÉÒÅËÔÉ×Á `override'"
-
-#: read.c:687
+#: read.c:891
 #, fuzzy
-msgid "invalid `override' directive"
-msgstr "äÉÒÅËÔÉ×Á `override'"
-
-#: read.c:854
-msgid "commands commence before first target"
+msgid "recipe commences before first target"
 msgstr "ËÏÍÁÎÄÉ ÚÕÓÔÒ¦ÎÕÔ¦ ÄÏ ÐÅÒÛÏÇÏ ×ÉÚÎÁÞÅÎÎѠæ̦"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "ÐÅÒÅÄ ËÏÍÁÎÄÁÍÉ ÐÒÏÐÕÝÅÎÅ ÐÒÁ×ÉÌÏ"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "ÐÒÏÐÕÝÅÎÉÊ ÒÏÚĦÌÀ×ÁÞ%s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr ""
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "ÐÒÏÐÕÝÅÎÉÊ ÛÁÂÌÏΠæ̦"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "ÎÅ ÏÄÉΠÛÁÂÌÏΠæ̦"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "ÛÁÂÌÏΠæ̦ ÎŠͦÓÔÉÔØ \"%%\""
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "ÐÒÏÐÕÝÅÎÁ \"endif\""
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "ÐÏÒÏÖΤ ¦Í'Ñ ÚͦÎÎϧ"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"endef\""
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "ÐÒÏÐÕÝÅÎÁ \"endif\", ÎÅÚÁ×ÅÒÛÅÎÁ \"define\""
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"endef\""
+
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"%s\""
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "ÚÁÊ×Á \"%s\""
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
 msgstr "× ÕÍÏ×ÎÏÍÕ ×ÉÒÁÚ¦ ÍÏÖÌÉ×Á ÌÉÛÅ ÏÄÎÁ ÄÉÒÅËÔÉ×Á `else'"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
+#: read.c:1855
+msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
 msgstr "ÚͦÛÁΦ ÎÅÑ×Φ ÐÒÁ×ÉÌÁ ¦ ÐÒÁ×ÉÌÁ Ú¦ ÓÔÁÔÉÞÎÉÍÉ ÚÒÁÚËÁÍÉ"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
 msgstr "ÚͦÛÁΦ ÎÅÑ×Φ ¦ Ú×ÉÞÁÊΦ ÐÒÁ×ÉÌÁ"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "æÌØ \"%s\" ÎŠצÄÐÏצÄÁ¤ ÚÒÁÚËՠæÌÅÊ"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "æÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÍÁ¤ ×ÈÏÄÖÅÎÎÑ ¦ Ú \":\", ¦ Ú \"::\" "
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "æÌØ \"%s\" ÚÁÚÎÁÞÅÎÁ ÄÅ˦ÌØËÁ ÒÁÚ × ÏÄÎÏÍÕ ÐÒÁ×É̦"
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
 msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÐÅÒÅËÒÉÔÔÑ ËÏÍÁÎÄ ÄÌѠæ̦ \"%s\""
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ¦ÇÎÏÒÕ×ÁÎÎÑ ÓÔÁÒÉÈ ËÏÍÁÎÄ ÄÌѠæ̦ \"%s\""
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÚÕÓÔÒ¦ÎÕÔÉÊ ÓÉÍ×ÏÌ NUL; ¦ÇÎÏÒÕ¤ÔØÓÑ ÄϠ˦ÎÃÑ ÒÑÄËÉ"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "ã¦ÌØ \"%s\" ÎÅ ×ÉÍÁÇÁ¤ ×ÉËÏÎÁÎÎÑ ËÏÍÁÎÄ."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "\"%s\" ÎÅ ×ÉÍÁÇÁ¤ ÏÎÏ×ÌÅÎÎÑ."
 
-#: remake.c:297
+#: remake.c:306
 #, fuzzy, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "÷ÓÅ ÝÅ ÏÎÏ×ÌÀ¤ÔØÓÑ ÆÁÊÌ \"%s\".\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sîÅÍÁ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÔ×ÏÒÅÎÎѠæ̦ \"%s\"%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sîÅÍÁ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÔ×ÏÒÅÎÎѠæ̦ \"%s\", ÎÅÏÂȦÄÎϧ ÄÌÑ \"%s\"%s"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "ïÂÒÏÂËÁ Ã¦ÌØÏ×ÏÇÏ ÆÁÊÌÕ \"%s\".\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "ðÏÐÅÒÅÄÎÑ ÓÐÒÏÂÁ ÏÎÏ×ÉÔÉ ÆÁÊÌ \"%s\" ÚÁ×ÅÒÛÉÌÁÓÑ ÂÅÚÕÓЦÛÎÏ.\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "æÁÊÌ \"%s\" ×ÖÅ ÂÕÌÏ ÏÂÒÏÂÌÅÎÏ.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "÷ÓÅ ÝÅ ÏÎÏ×ÌÀ¤ÔØÓÑ ÆÁÊÌ \"%s\".\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "ïÎÏ×ÌÅÎÎÑ ÆÁÊÌÕ \"%s\" ÚÁ×ÅÒÛÅÎÏ.\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "æÁÊÌ \"%s\" ÎÅ ¦ÓÎÕ¤.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "úÎÁÊÄÅÎÏ ÎÅÑ×ÎÅ ÐÒÁ×ÉÌÏ ÄÌÑ \"%s\".\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "îÅ ÚÎÁÊÄÅÎÏ ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ ÄÌÑ \"%s\".\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ËÏÍÁÎÄ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ ÄÌÑ \"%s\".\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "ãÉË̦ÞÎÁ ÚÁÌÅÖΦÓÔØ %s <- %s ÐÒÏÐÕÝÅÎÁ."
 
-#: remake.c:601
+#: remake.c:651
 #, fuzzy, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "ïÎÏ×ÌÅÎÎѠæÌÅÊ, ×¦Ä ÑËÉÈ ÚÁÌÅÖÉÔؠæÌØÏ×ÉÊ ÆÁÊÌ \"%s\", ÄÏ×ÅÒÛÅÎÏ.\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "ã¦Ì¦, ×¦Ä ÑËÉÈ ÚÁÌÅÖÉÔØ \"%s\", ÚÂÉÒÁÀÔØÓÑ.\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "á×ÁÒ¦ÊÎÉÊ ÚÕÐÉÎËÁ ÎÁ Ã¦ÌØÏ×ÏÍÕ ÆÁÊ̦ \"%s\".\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "ã¦ÌØ \"%s\" ÎÅ ÂÕÌÁ ÐÅÒÅÚ¦ÂÒÁÎÁ ÞÅÒÅÚ ÐÏÍÉÌËÉ."
 
-#: remake.c:677
+#: remake.c:727
 #, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
 msgstr ""
 
-#: remake.c:682
+#: remake.c:732
 #, fuzzy, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "æÁÊÌ \"%s\" ÎÅ ¦ÓÎÕ¤.\n"
 
-#: remake.c:687
+#: remake.c:737
 #, fuzzy, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "úÁÌÅÖÎÁ Ã¦ÌØ \"%s\" ÏÎÏ×ÌÑÌÁÓÑ %s Î¦Ö ÚÁÌÅÖÎÁ ×¦Ä Îŧ \"%s\".\n"
 
-#: remake.c:690
+#: remake.c:740
 #, fuzzy, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "úÁÌÅÖÎÁ Ã¦ÌØ \"%s\" ÏÎÏ×ÌÑÌÁÓÑ %s Î¦Ö ÚÁÌÅÖÎÁ ×¦Ä Îŧ \"%s\".\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "ã¦ÌØ \"%s\" ÏÇÏÌÏÛÅÎÁ Ú Ä×ÏÍÁ Ä×ÏËÒÁÐËÁÍÉ ¦ ÎÅ ÍÁ¤ ÚÁÌÅÖÎÏÓÔÅÊ.\n"
 
-#: remake.c:715
+#: remake.c:765
 #, fuzzy, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
 msgstr "ëÏÍÁÎÄÉ ÄÌÑ \"%s\" ÎÅ ÚÁÄÁΦ, ¦ ÚÁÌÅÖÎÏÓÔ¦ ÎÅ ÂÕÌÉ ÚͦÎÅΦ.\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:728
+#: remake.c:778
 #, fuzzy, c-format
 msgid "No need to remake target `%s'"
 msgstr "îÅÍÁ ÎÅÏÂȦÄÎÏÓÔ¦ ÐÅÒÅÚÂÉÒÁÔɠæÌØ \"%s\".\n"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr ""
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "îÅÏÂȦÄÎÏ ÐÅÒÅÚ¦ÂÒÁÔɠæÌØ \"%s\".\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr ""
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "ëÏÍÁÎÄÉ ÄÌÑ \"%s\" ÚÁÒÁÚ ×ÉËÏÎÕÀÔØÓÑ.\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "óÐÒÏÂÁ ÐÅÒÅÚ¦ÂÒÁÔɠæÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÂÅÚÕÓЦÛÎÁ.\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "ã¦ÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÕÓЦÛÎÏ ÐÅÒÅÚ¦ÂÒÁÎÉÊ.\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "ã¦ÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ×ÉÍÁÇÁ¤ ÐÅÒÅÚ¦ÒËÉ Ú ËÌÀÞÏÍ -q.\n"
 
-#: remake.c:1306
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ËÏÍÁÎÄ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ ÄÌÑ \"%s\".\n"
+
+#: remake.c:1357
 #, c-format
 msgid "Warning: File `%s' has modification time in the future"
 msgstr "õ×ÁÇÁ: æÁÊÌ \"%s\" ÍÁ¤ ÍÁÊÂÕÔΦʠÞÁÓ ÚͦÎÉ"
 
-#: remake.c:1313
-#, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s s in the future"
 msgstr "õ×ÁÇÁ: æÁÊÌ \"%s\" ÍÁ¤ ÞÁÓ ÚͦÎÉ %.2g Ó × ÍÁÊÂÕÔÎØÏÍÕ"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr ""
@@ -1534,13 +1558,13 @@ msgstr ""
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1548,7 +1572,7 @@ msgstr ""
 "\n"
 "# îÅÑ×ÎÉÈ ÐÒÁ×ÉÌ ÎÅÍÁ."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1557,231 +1581,238 @@ msgstr ""
 "\n"
 "# îÅÑ×ÎÉÈ ÐÒÁ×ÉÌ: %u, ÔÅÒͦÎÁÌØÎÉÈ: %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr "."
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "ðïíéìëá: ÎÅצÒÎÅ ÚÎÁÞÅÎÎÑ num_pattern_rules! %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "ÎÅצÄÏÍÉÊ ÓÉÇÎÁÌ"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "ïÂÒÉ×"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "ðÅÒÅÒÉ×ÁÎÎÑ"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "÷ÉȦÄ"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "îÅÐÒÉÐÕÓÔÉÍÁ ¦ÎÓÔÒÕËæÑ"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "ðÁÓÔËÁ ÔÒÁÓÕ×ÁÎÎÑ ÞÉ ÔÏÞËÉ ÚÕÐÉÎËÉ"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "ðÒÉÐÉÎÅÎÏ"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "ðÁÓÔËÁ IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "ðÁÓÔËÁ EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "ðÏÍÉÌËÁ ÏÐÅÒÁ槠ڠËÒÁÐËÏÀ, ÝÏ ÐÌÁ×Á¤"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "úÎÉÝÅÎÎÑ"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "ðÏÍÉÌËÁ ÎÁ ÛÉΦ"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "ú¦ʠÓÅÇÍÅÎÔÁæ§"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "ðÏÇÁÎÉÊ ÓÉÓÔÅÍÎÉÊ ×ÉËÌÉË"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "ïÂÒÉ× ËÁÎÁÌÕ"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "óÉÇÎÁÌ ÐÏ ÔÁÊÍÅÒÕ"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "úÁ×ÅÒÛÅÎÏ"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "ïÂÕÍÏ×ÌÅÎÉÊ ËÏÒÉÓÔÕ×ÁÞÅÍ ÓÉÇÎÁÌ 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "ïÂÕÍÏ×ÌÅÎÉÊ ËÏÒÉÓÔÕ×ÁÞÅÍ ÓÉÇÎÁÌ 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "îÁÝÁÄÏË ÚÁ×ÅÒÛÉ× ÒÏÂÏÔÕ"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "ú¦ʠÖÉ×ÌÅÎÎÑ"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "úÕÐÉÎÅÎÏ"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "úÕÐÉÎÅÎÏ (×צĠڠÔÅÒͦÎÁÌÁ) "
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "úÕÐÉÎÅÎÏ (×ÉצĠÎÁ ÔÅÒͦÎÁÌ)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "úÕÐÉÎÅÎÏ (ÓÉÇÎÁÌ)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
 msgstr "ðÅÒÅ×ÉÝÅÎÅ ÏÂÍÅÖÅÎÎÑ ÎÁ ÐÒÏÃÅÓÏÒÎÉÊ ÞÁÓ"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "ðÅÒÅ×ÉÝÅÎÉÊ ÍÅÖÁ ÒÏÚͦÒÕ ÆÁÊÌÕ"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "÷¦ÒÔÕÁÌØÎÉÊ ÞÁÓ ÍÉÎÕ×"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
 msgstr "þÁÓ ÐÒÏƦÌÀ×ÁÎÎÑ ÍÉÎÕ×"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
 msgstr "÷¦ËÎÏ ÚͦÎÅÎÏ"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "ðÒÏÄÏ×ÖÅÎÏ"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
 msgstr "õÍÏ×Á ÅËÓÔÒÅÎÏÇÏ ××ÏÄÕ/×É×ÏÄÕ"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
 msgstr "íÏÖÌÉ×ÉÊ ×צÄ/×ÉצÄ"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "òÅÓÕÒÓ ×ÔÒÁÞÅÎÏ"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "óÉÇÎÁÌ ÎÅÂÅÚÐÅËÉ"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "úÁÐÉÔ ¦ÎÆÏÒÍÁæ§"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: strcache.c:210
+#: strcache.c:235
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
 
-#: strcache.c:211
+#: strcache.c:237
 #, c-format
-msgid "%s # of strcache buffers: %d\n"
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
 msgstr ""
 
-#: strcache.c:212
+#: strcache.c:239
 #, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
 
-#: strcache.c:214
+#: strcache.c:241
 #, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr ""
+
+#: strcache.c:244
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "×ÉÚÎÁÞÅÎÁ Õ ÓÅÒÅÄÏ×Éݦ"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "ÆÁÊÌ make"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "ÚÁÄÁÎÉÊ ËÌÀÞ -e"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "×ÉÚÎÁÞÅÎÁ Õ ËÏÍÁÎÄÎÏÍÕ ÒÑÄËÕ"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "äÉÒÅËÔÉ×Á `override'"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "Á×ÔÏÍÁÔÉÞÎÁ"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (Ú \"%s\", ÒÑÄÏË %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1789,33 +1820,33 @@ msgstr ""
 "\n"
 "# úͦÎΦ\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÎÅ×ÉÚÎÁÞÅÎÁ ÚͦÎÎÁ \"%.*s\""
 
-#: vmsfunctions.c:94
+#: vmsfunctions.c:92
 #, c-format
-msgid "sys$search failed with %d\n"
+msgid "sys$search() failed with %d\n"
 msgstr ""
 
 #: vmsjobs.c:71
@@ -1823,72 +1854,77 @@ msgstr ""
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, fuzzy, c-format
 msgid "internal error: `%s' command_state"
 msgstr "×ÎÕÔÒ¦ÛÎÑ ÐÏÍÉÌËÁ: \"%s\" command_state %d Õ child_handler"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr ""
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "îÅצÄÏÍÁ ×ÂÕÄÏ×ÁÎÁ ËÏÍÁÎÄÁ \"%s\".\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr ""
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr ""
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, fuzzy, c-format
 msgid "Redirected error to %s\n"
 msgstr "ËÁÔÁÌÏÇ \"%s\"\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, c-format
+msgid "Append output to %s\n"
+msgstr ""
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "úÁͦÓÔØ ÚÁÄÁÎÏÇÏ ×ÉËÏÎÕ¤ÔØÓÑ %s\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "ðÏÍÉÌËÁ ÐÏÒÏÄÖÅÎÎÑ ÐÒÏÃÅÓÕ, %d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1896,11 +1932,11 @@ msgstr ""
 "\n"
 "# ûÌÑÈÉ ÐÏÛÕËÕ VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# îÅ ×ÉÚÎÁÞÅÎÉÊ ÛÌÑÈ ÐÏÛÕËÕ \"vpath\"."
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -1909,7 +1945,7 @@ msgstr ""
 "\n"
 "# %u \"vpath\" ÛÌÑÈÉ ÐÏÛÕËÕ.\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -1917,7 +1953,7 @@ msgstr ""
 "\n"
 "# îÅ ×ÉÚÎÁÞÅÎÉÊ ÚÁÇÁÌØÎÉÊ (ÚͦÎÎÁ \"VPATH\") ÛÌÑÈ ÐÏÛÕËÕ."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1935,6 +1971,16 @@ msgstr ""
 #~ msgstr ""
 #~ "ïÔÒÉÍÁÎÉÊ ÓÉÇÎÁÌ SIGCHLD; ÎÁÝÁÄ˦נڠÎÅÏÐÒÁÃØÏ×ÁÎÉÍÉ ÒÅÚÕÌØÔÁÔÁÍÉ %d.\n"
 
+#~ msgid "extraneous `endef'"
+#~ msgstr "ÚÁÊ×ÉÊ \"endef\""
+
+#~ msgid "empty `override' directive"
+#~ msgstr "ÐÏÒÏÖÎÑ ÄÉÒÅËÔÉ×Á `override'"
+
+#, fuzzy
+#~ msgid "invalid `override' directive"
+#~ msgstr "äÉÒÅËÔÉ×Á `override'"
+
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "ÎÅ ×ËÁÚÁÎÏ ¦Í'Ñ ÆÁÊÌÕ ÄÌÑ \"%sinclude\""
 
@@ -2078,13 +2124,6 @@ msgstr ""
 #~ msgid "Read FILE as a makefile"
 #~ msgstr "ðÒÏÞÉÔÁÔÉ æáêì ÑË make-ÆÁÊÌ"
 
-#, fuzzy
-#~ msgid "Removing child 0x%08lx PID %ld %s from chain.\n"
-#~ msgstr "÷ÉÄÁÌÅÎÎÑ ÎÁÝÁÄËÁ 0x%08lx PID %d%s Ú ÌÁÎÃÀÖËÁ ÁËÔÉ×ÎÉÈ ÎÁÝÁÄ˦×.\n"
-
-#~ msgid "Run no commands; exit status says if up to date"
-#~ msgstr "îÅ ×ÉËÏÎÕ×ÁÔÉ ËÏÍÁÎÄÉ, ËÏÄ ÚÁ×ÅÒÛÅÎÎÑ ÐÏËÁÖÅ ÞÉ ÏÎÏ×ÌÅÎÏ"
-
 #~ msgid "Search DIRECTORY for included makefiles"
 #~ msgstr "ûÕËÁÔÉ make-ÆÁÊÌÉ, Ñ˦ ÎÅÏÂȦÄÎÏ ×ËÌÀÞÉÔÉ, Õ ÃØÏÍÕ ëáôáìïú¶"
 
index a3c334d..acfdd46 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index 7664c9f..94b3402 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
 # 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"
+"Project-Id-Version: make 3.81\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"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2006-05-04 20:26+0930\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-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
+#: ar.c:48
 #, 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
+#: ar.c:125
 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
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "touch: kho « %s » không tồn tại"
 
-#: ar.c:171
+#: ar.c:152
 #, 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
+#: ar.c:159
 #, 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
+#: ar.c:166
 #, 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"
+#, fuzzy, 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"
+#: arscan.c:175
+#, fuzzy, 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
+#: arscan.c:187
 #, 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
+#: arscan.c:850
 #, 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
+#: arscan.c:851
 msgid " (name might be truncated)"
-msgstr "(có lẽ tên bị cụt)"
+msgstr " (có lẽ tên bị cụt)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
 msgstr "  Ngày %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, chế độ = 0%o.\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
 msgstr "*** Ngắt\n"
 
-#: commands.c:545
+#: commands.c:622
 #, 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
+#: commands.c:625
 #, 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
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Đang xóa bỏ tập tin « %s »..."
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Đang xóa bỏ tập tin « %s »..."
 
-#: commands.c:599
-msgid "#  commands to execute"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
 msgstr "# các lệnh cần thi hành"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
 msgstr " (sẵn có):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (từ « %s », dòng %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,226 +125,228 @@ msgstr ""
 "\n"
 "# Thư mục\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, 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
+#: dir.c:1012
 #, 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
+#: dir.c:1016
 #, 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
+#: dir.c:1021
 #, 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
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (khóa %s, giờ_m %d): "
 
-#: dir.c:1039
+#: dir.c:1052
 #, 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
+#: dir.c:1057
 #, 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
+#: dir.c:1063 dir.c:1084
 msgid "No"
 msgstr "Không"
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
 msgstr " tập tin, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
 msgstr "không"
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
 msgstr " điều không thể"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
 msgstr " cho đến đây."
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " điều không thể trong %lu thư mục.\n"
 
-#: expand.c:128
+#: expand.c:127
 #, 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
+#: expand.c:276
 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,"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was 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,"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was 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
+#: file.c:275
 #, 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'."
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
 msgstr "Các lệnh cho « %s » sẽ bị bỏ qua để ủng hộ các điều cho « %s »."
 
-#: file.c:301
+#: file.c:298
 #, 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
+#: file.c:303
 #, 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
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Đang xóa bỏ tập tin trung cấp « %s »..."
 
-#: file.c:385
+#: file.c:396
 msgid "Removing intermediate files...\n"
 msgstr "Đang gỡ bỏ các tập tin trung cấp...\n"
 
-#: file.c:781
+#: file.c:803
 #, 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
+#: file.c:804
 msgid "Current time"
 msgstr "Giờ hiện thời"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
 msgstr "# Không phải là đĩch:"
 
-#: file.c:903
+#: file.c:929
 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
+#: file.c:931
 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."
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
 msgstr "# Đích dòng lệnh."
 
-#: file.c:909
+#: file.c:935
 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
+#: file.c:937
 msgid "#  Implicit rule search has been done."
 msgstr "# Mới tìm kiếm kiểu quy tắc ngầm."
 
-#: file.c:912
+#: file.c:938
 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
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "# Cuống mẫu ngầm/tĩnh: « %s »\n"
 
-#: file.c:916
+#: file.c:942
 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
+#: file.c:946
 msgid "#  Also makes:"
 msgstr "# Cũng tạo :"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
 msgstr "# Chưa bao giờ kiểm tra giờ sửa đổi."
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
 msgstr "# Tập tin không tồn tại."
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
 msgstr "# Tập tin rất cũ."
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "# Sửa đổi cuối cùng %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
 msgstr "# Tập tin đã được cập nhật."
 
-#: file.c:937
+#: file.c:964
 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)."
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe 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)."
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "# Các lệnh phụ thuộc đang chạy (ĐÂY LÀ LỖI)."
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
 msgstr "# Đã được cập nhật."
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
 msgstr "# Cần thiết cập nhật (« -q » đã lập)."
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
 msgstr "# Việc cập nhật bị lỗi."
 
-#: file.c:963
+#: file.c:990
 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)!"
+"#  Giá trị không hợp lệ trong bộ phạn « update_status » (trạng thái cập nhật)!"
 
-#: file.c:970
+#: file.c:997
 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
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
@@ -351,7 +354,7 @@ msgstr ""
 "\n"
 "# Tập tin"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -361,269 +364,270 @@ msgstr ""
 "# thống kê bảng băm các tập tin:\n"
 "# "
 
-#: function.c:759
+#: function.c:758
 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
+#: function.c:763
 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
+#: function.c:783
 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
+#: function.c:785
 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
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe(): 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"
+"quản lý trùng) bị lỗi (e=%ld)\n"
 
-#: function.c:1464
+#: function.c:1469
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_open_pipe(): 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"
+"quản lý trùng(lỗi)) bị lỗi (e=%ld)\n"
 
-#: function.c:1469
-#, fuzzy, c-format
+#: function.c:1474
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "Việc « CreatePipe() » (tạo ống dẫn) bị lỗi (e=%d)\n"
+msgstr "Việc « CreatePipe() » (tạo ống dẫn) bị lỗi (e=%ld)\n"
 
-#: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
+#: function.c:1479
+#, fuzzy
+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"
+"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
+#: function.c:1728
 #, 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
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Không có đủ đối số (%d) đối với hàm « %s »"
+msgstr "Không có đủ đối số (%d) tới hàm « %s »"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, 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 »"
+msgstr "chưa được thực hiện trên nền tảng này: hàm « %s »"
 
-#: function.c:2163
+#: function.c:2212
 #, 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
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: tùy chọn « %s » là mơ hồ\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, 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
+#: getopt.c:690
 #, 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
+#: getopt.c:707 getopt.c:880
 #, 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
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: không nhận ra tùy chọn « --%s »\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, 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
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: không cho phép tùy chọn « -- %c »\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, 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
+#: getopt.c:799 getopt.c:929
 #, 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
+#: getopt.c:846
 #, 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
+#: getopt.c:864
 #, 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"
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu 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
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
 msgstr "Trọng tải=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
 msgstr "Băm lại=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Xung đột=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, 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
+#: implicit.c:56
 #, 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
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Đang tránh sự đệ qui quy tắc ngầm.\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, 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
+#: implicit.c:674
 #, 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
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Đang thử điều kiện tiên quyết ngầm « %s ».\n"
+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:679
+#: implicit.c:688
 #, 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
+#: implicit.c:689
+#, 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:728
 #, 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
+#: implicit.c:742
 #, 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
+#: job.c:335
 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
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
 msgstr "*** [%s] Lỗi 0x%x (bị bỏ qua)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
 msgstr "*** [%s] Lỗi 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] Lỗi %d (bị bỏ qua)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] Lỗi %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (lõi bị đổ)"
 
-#: job.c:488
+#: job.c:549
 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"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %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
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
 msgstr " (từ xa)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %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"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Đang bắt điều con thắng 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, 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"
+#: job.c:861
+#, fuzzy, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Đang gỡ bỏ điều con 0x%08lx PID %ld%s ra dây.\n"
 
-#: job.c:862
+#: job.c:920
 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"
+#: job.c:922
+#, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
 msgstr "Mới nhả hiệu bài cho điều con 0x%08lx (%s).\n"
 
-#: job.c:1383
-#, fuzzy, c-format
+#: job.c:1453 job.c:2094
+#, 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"
+"Việc « process_easy() » (tiến trình dễ) bị lỗi khi cố khởi chạy tiến trình (e="
+"%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
@@ -632,101 +636,111 @@ 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"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%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"
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
 msgstr "Đã lấy hiệu bài cho điều con 0x%08lx (%s).\n"
 
-#: job.c:1718
+#: job.c:1787
 msgid "read jobs pipe"
 msgstr "đọc ống dẫn của các cộng việc"
 
-#: job.c:1832
+#: job.c:1798
+#, c-format
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgstr ""
+
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "Không cần tạo lại đích « %s »."
+
+#: job.c:1910
 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
+#: job.c:1912
 msgid "cannot enforce load limit: "
 msgstr "không thể buộc hạn chế trọng tải: "
 
-#: job.c:1907
+#: job.c:1985
 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
+#: job.c:1987
 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
+#: job.c:2015
 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
+#: job.c:2023
 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
+#: job.c:2127
 #, 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"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "đặt điều con đã bắt là PID %ld, vẫn còn đợi PID %ld\n"
 
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Không tìm thấy lệnh."
 
-#: job.c:2145
+#: job.c:2228
 #, 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
+#: job.c:2237
 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
+#: job.c:2461
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
 msgstr "$SHELL đã thay đổi (đã « %s », là « %s »)\n"
 
-#: job.c:2789
+#: job.c:2951
 #, 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
+#: job.c:2963
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+
+#: job.c:3065
 #, 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
+#: main.c:303
 msgid "Options:\n"
 msgstr "Tùy chọn:\n"
 
-#: main.c:292
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Bị bỏ qua để tương thích.\n"
 
-#: main.c:294
+#: main.c:306
 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
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -734,17 +748,17 @@ 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
+#: main.c:311
 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
+#: main.c:313
 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
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -753,7 +767,12 @@ msgstr ""
 "                              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
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -761,15 +780,16 @@ 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
+#: main.c:323
 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"
+#: main.c:325
+#, fuzzy
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         _Bỏ qua các lỗi_ từ các lệnh.\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -778,7 +798,7 @@ msgstr ""
 "                              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
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -786,13 +806,13 @@ 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
+#: main.c:332
 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
+#: main.c:334
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -802,7 +822,7 @@ msgstr ""
 "                       Đừng khởi chạy nhiều công việc, trừ trọng tải dưới N "
 "(số).\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -811,17 +831,18 @@ msgstr ""
 "\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
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; 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
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -831,39 +852,41 @@ msgstr ""
 "                             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
+#: main.c:345
 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
+#: main.c:347
+#, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; 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
+#: main.c:349
 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
+#: main.c:351
 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"
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 "  -s, --silent, --quiet       Đừng vọng (hiển thị) lệnh.\n"
 "\t(_câm, im_)\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -871,24 +894,24 @@ msgstr ""
 "  -S, --no-keep-going, --stop\t\tTắt « -k ».\n"
 "\t(không cứ làm, dừng)\n"
 
-#: main.c:344
+#: main.c:358
 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
+#: main.c:360
 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
+#: main.c:362
 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
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -896,7 +919,7 @@ 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
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -908,7 +931,7 @@ msgstr ""
 "                              \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
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -916,202 +939,207 @@ 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
+#: main.c:564
 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
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
 msgstr "không biết đặc tả cấp gỡ lỗi « %s »"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
-"%s: Mới bắt Interrupt/Exception (ngắt/ngoài lệ) (mã = 0x%x, địa chỉ = 0x%x)\n"
+"%s: Mới bắt Interrupt/Exception (ngắt/ngoài lệ) (mã = 0x%lx, địa chỉ = 0x%"
+"lx)\n"
 
-#: main.c:677
+#: main.c:697
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\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"
+"Bộ lọc ngoại lệ không đã quản lý được gọi từ chương trình %s\n"
+"ExceptionCode \t\tmã ngoại lệ\t       %lx\n"
+"ExceptionFlags \t\tcác cờ ngoại lệ      %lx\n"
+"ExceptionAddress \t\tđịa chỉ ngoại lệ     %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, 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"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Vi phạm truy cập: thao tác ghi tại địa chỉ %lx\n"
 
-#: main.c:686
+#: main.c:706
 #, 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"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Vi phạm truy cập: thao tác đọc tại địa chỉ %lx\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
+#: main.c:781 main.c:792
+#, fuzzy, 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"
+#: main.c:834
+#, fuzzy, 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
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s đang ngưng được 30 giây..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "đã ngủ(30). Đang tiếp tục.\n"
 
-#: main.c:1466
+#: main.c:1501
 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
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
 msgstr ""
 "fopen (tập tin tạm thời)\n"
 "  (_mở tập tin_)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
 msgstr ""
 "fwrite (tập tin tạm thời)\n"
 "  (_ghi tập tin_)"
 
-#: main.c:1640
+#: main.c:1703
 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
+#: main.c:1704
 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
+#: main.c:1719
 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
+#: main.c:1727
 #, 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
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1740
 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
+#: main.c:1750
 msgid "dup jobserver"
 msgstr "dup jobserver (sao lục trình phục vụ công việc)"
 
-#: main.c:1687
+#: main.c:1753
 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ẹ."
+"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
+#: main.c:1777
 msgid "creating jobs pipe"
 msgstr "đang tạo ống dẫn công việc"
 
-#: main.c:1725
+#: main.c:1792
 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
+#: main.c:1812
 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
+#: main.c:1892
 msgid "Updating makefiles....\n"
 msgstr "Đạng cập nhật các tập tin tạo (makefile)...\n"
 
-#: main.c:1845
+#: main.c:1917
 #, 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"
+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
+#: main.c:1996
 #, 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
+#: main.c:2013
 #, 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
+#: main.c:2018
 #, 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
+#: main.c:2086
 msgid "Couldn't change back to original directory."
 msgstr "Không thể chuyển đổi về thư mục gốc."
 
-#: main.c:2024
+#: main.c:2102
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Đang thực hiện lại[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
 msgstr "unlink (bỏ liên kết) (tập tin tạm thời): "
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr "« .DEFAULT_GOAL » (đích mặc định) chứa nhiều đích."
 
-#: main.c:2189
+#: main.c:2270
 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
+#: main.c:2272
 msgid "No targets"
 msgstr "Không có đích"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
 msgstr "Đạng cập nhật các đích mục tiêu...\n"
 
-#: main.c:2222
+#: main.c:2306
 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
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Cách sử dụng: %s [tùy_chọn...] [đích] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
@@ -1120,7 +1148,7 @@ msgstr ""
 "\n"
 "Chương trình này đã được xây dụng cho %s\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
@@ -1129,51 +1157,45 @@ msgstr ""
 "\n"
 "Chương trình này đã được xây dụng cho %s (%s)\n"
 
-#: main.c:2394
+#: main.c:2481
 #, 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"
+#: main.c:2562
+#, fuzzy, c-format
+msgid "the `%s%s' 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
+#: main.c:2617
 #, 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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\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"
+"%sChương trình này đã được xây dụng cho %s\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
-"%sChương trình này đã được xây dụng cho %s\n"
+"%sChương trình này đã được xây dụng cho %s (%s)\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
-"\n"
-"%sChương trình này đã được xây dụng cho %s (%s)\n"
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
@@ -1182,7 +1204,7 @@ msgstr ""
 "\n"
 "# Cơ sở dữ liệu Make, được in ra vào %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
@@ -1191,444 +1213,445 @@ msgstr ""
 "\n"
 "# Mới xong cơ sở dữ liệu Make vào %s\n"
 
-#: main.c:3101
+#: main.c:3237
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Đang vào một thư mục lạ\n"
 
-#: main.c:3103
+#: main.c:3239
 #, 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
+#: main.c:3242
 #, c-format
 msgid "%s: Entering directory `%s'\n"
 msgstr "%s: Đang vào thư mục « %s »\n"
 
-#: main.c:3109
+#: main.c:3245
 #, c-format
 msgid "%s: Leaving directory `%s'\n"
 msgstr "%s: Đang rời khỏi thư mục « %s »\n"
 
-#: main.c:3114
+#: main.c:3250
 #, 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
+#: main.c:3253
 #, 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
+#: main.c:3257
 #, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
 msgstr "%s[%u]: Đang vào thư mục « %s »\n"
 
-#: main.c:3124
+#: main.c:3260
 #, 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
+#: misc.c:316
 msgid ".  Stop.\n"
 msgstr ".  Dừng.\n"
 
-#: misc.c:306
+#: misc.c:337
 #, 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
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
 # Variable: do not translate/ biến: đừng dịch
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
 msgstr "hết bộ nhớ ảo hoàn toàn"
 
-#: misc.c:646
+#: misc.c:708
 #, 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
+#: misc.c:729
 msgid "Initialized access"
 msgstr "Truy cấp đã sở khởi"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
 msgstr "Truy cập người dùng"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
 msgstr "Truy cập Make"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
 msgstr "Truy cập điều con"
 
-#: misc.c:892
+#: misc.c:954
 #, c-format
 msgid "write error: %s"
 msgstr "lỗi ghi: %s"
 
-#: misc.c:894
+#: misc.c:956
 msgid "write error"
 msgstr "lỗi ghi"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
 msgstr "Đạng đọc các tập tin tạo (makefile)...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Đạng đọc tập tin tạo (makefile) « %s »..."
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
 msgstr " (không có mục tiêu mặc định)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
 msgstr " (đường dẫn tìm kiếm)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
 msgstr " (cũng được)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (không mở rộng ~)"
 
-#: read.c:623
+#: read.c:759
 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"
+msgstr "gặp cú pháp không hợp lệ trong đồ điều kiện"
 
-#: 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"
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
 msgstr "lệnh bắt đầu trước đích thứ nhất"
 
-#: read.c:905
-msgid "missing rule before commands"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
 msgstr "thiếu quy tắc trước các lệnh"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
 msgstr "thiếu bộ phân cách%s"
 
-#: read.c:994
+#: read.c:1029
 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
+#: read.c:1163
 msgid "missing target pattern"
 msgstr "thiếu mẫu đích"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
 msgstr "nhiều mẫu đích"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
 msgstr "mẫu đích không chứa « %% »"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
 msgstr "thiếu « endif »"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "tên biến rỗng"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
 msgstr "Gặp chuỗi chữ bắt nguồn ở ngoài sau chi thị « endef »"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
 msgstr "thiếu « endef », « define » (định nghĩa) chưa kết thúc"
 
-#: read.c:1454
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "Gặp chuỗi chữ bắt nguồn ở ngoài sau chi thị « endef »"
+
+#: read.c:1490
 #, 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
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
 msgstr "gặp « %s » bắt nguồn ở ngoài"
 
-#: read.c:1482
+#: read.c:1518
 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
+#: read.c:1797
 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"
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
 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
+#: read.c:1908
 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
+#: read.c:1931 read.c:2112
 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
+#: read.c:1976
 #, 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
+#: read.c:1991 read.c:2036
 #, 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
+#: read.c:1997
 #, 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'"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe 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'"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
 msgstr "cảnh báo : đang bỏ qua các lệnh cũ cho đích « %s »"
 
-#: read.c:2575
+#: read.c:2392
 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
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Không có gì cần làm cho « %s »."
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
 msgstr "« %s » là hiện thời."
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Đang xén bớt tập tin « %s ».\n"
 
-#: remake.c:349
+#: remake.c:359
 #, 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
+#: remake.c:361
 #, 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
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Đang suy nghĩ tập tin đích « %s ».\n"
 
-#: remake.c:385
+#: remake.c:420
 #, 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
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "Tập tin « %s » đã được suy nghĩ.\n"
 
-#: remake.c:410
+#: remake.c:442
 #, 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
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Mới cập nhật xong tập tin « %s ».\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "Tập tin « %s » không tồn tại.\n"
 
-#: remake.c:441
+#: remake.c:481
 #, 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"
+"*** 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
+#: remake.c:494 remake.c:1016
 #, 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
+#: remake.c:496 remake.c:1018
 #, 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"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
 msgstr "Đang dùng các lệnh mặc định cho « %s ».\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, 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
+#: remake.c:651
 #, 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
+#: remake.c:657
 #, 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
+#: remake.c:670
 #, 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
+#: remake.c:675
 #, 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
+#: remake.c:727
 #, 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
+#: remake.c:732
 #, 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
+#: remake.c:737
 #, 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
+#: remake.c:740
 #, 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
+#: remake.c:758
 #, 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"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe 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"
+"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
+#: remake.c:770
 #, 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
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Không cần tạo lại đích « %s »."
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; đang dùng tên VPATH (đường dẫn V) « %s »"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Phải tạo lại đích « %s ».\n"
 
-#: remake.c:756
+#: remake.c:806
 #, 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"
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
 msgstr "Đang chạy các lệnh của « %s ».\n"
 
-#: remake.c:772
+#: remake.c:822
 #, 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
+#: remake.c:825
 #, 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
+#: remake.c:828
 #, 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
+#: remake.c:1024
+#, 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:1357
 #, 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"
+#: remake.c:1370
+#, fuzzy, c-format
+msgid "Warning: File `%s' has modification time %s 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
+#: remake.c:1569
 #, 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"
@@ -1638,7 +1661,7 @@ msgstr "Yếu tố « .LIBPATTERNS » (các mẫu thư viên) « %s » không ph
 msgid "Customs won't export: %s\n"
 msgstr "Thuế quan không xuất được: %s\n"
 
-#: rule.c:548
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1646,7 +1669,7 @@ msgstr ""
 "\n"
 "# Quy tắc ngầm"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1654,7 +1677,7 @@ msgstr ""
 "\n"
 "# Không có quy tắc ngầm."
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
@@ -1663,233 +1686,248 @@ msgstr ""
 "\n"
 "# %u quy tắc ngầm, %u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
 msgstr " thiết bị cuối"
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "LỖI: « num_pattern_rules » (số quy tắc mẫu) không đúng!  %u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
 msgstr "tín hiệu lạ"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
 msgstr "Ngừng nói"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
 msgstr "Ngắt"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
 msgstr "Thoát"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
 msgstr "Lệnh cấm"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
 msgstr "Bẫy vết/điểm ngắt"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
 msgstr "Bị hủy bỏ"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
 msgstr "Bẫy IOT"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
 msgstr "Bẫy EMT"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
 msgstr "Ngoại lệ điểm phù động"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
 msgstr "Bị buộc kết thúc"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
 msgstr "Lỗi mạch nối"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
 msgstr "Lỗi phân đoạn"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
 msgstr "Cuộc gọi hệ thống sai"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
 msgstr "Ống dẫn bị ngắt"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
 msgstr "Đồng hồ báo động"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
 msgstr "Bị kết thúc"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
 msgstr "Tín hiệu tự định nghĩa 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
 msgstr "Tín hiệu tự định nghĩa 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
 msgstr "Tiến trình con đã thoát"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
 msgstr "Bị cúp điện đột ngột"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
 msgstr "Bị ngừng"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
 msgstr "Bị ngừng (kết nhập tty)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
 msgstr "Bị ngừng (kết xuất tty)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
 msgstr "Bị ngừng (tín hiệu)"
 
-#: signame.c:172
+#: signame.c:173
 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
+#: signame.c:176
 msgid "File size limit exceeded"
 msgstr "Giới hạn kích cỡ tập tin bị vượt quá"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
 msgstr "Bộ đếm thời gian ảo đã mãn hạn"
 
-#: signame.c:181
+#: signame.c:182
 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
+#: signame.c:188
 msgid "Window changed"
 msgstr "Cửa sổ đã thay đổi"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
 msgstr "Đã tiếp tục"
 
-#: signame.c:193
+#: signame.c:194
 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
+#: signame.c:201 signame.c:210
 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
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
 # Literal: don't translate / Nghĩa chữ: đừng dịch
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
 msgstr "Tài nguyên bị mất"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
 msgstr "Tín hiệu nguy hiểm"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
 msgstr "Yêu cầu thông tin"
 
-#: signame.c:221
+#: signame.c:222
 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
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s # chuỗi trong bộ nhớ tạm chuỗi : %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s # bộ đệm nhớ tạm chuỗi: %d\n"
+
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s cỡ bộ nhớ tạm chuỗi: tổng = %d / đa = %d / thiểu = %d / tbình = %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
 msgstr ""
+"%s rảnh bộ nhớ tạm chuỗi: tổng = %d / đa = %d / thiểu = %d / tbình = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# thống kê bảng băm các tập tin:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
 msgstr "mặc định"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
 msgstr "môi trường"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "tập tin tạo"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
 msgstr "môi trường dưới « -e »"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
 msgstr "dòng lệnh"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
 msgstr "chỉ thị « override » (đè)"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
 msgstr "tự động"
 
-#: variable.c:1396
+#: variable.c:1570
 #, c-format
 msgid " (from `%s', line %lu)"
 msgstr " (từ « %s », dòng %lu)"
 
-#: variable.c:1438
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
 msgstr "# thống kê bảng băm lập biến:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
@@ -1897,7 +1935,7 @@ msgstr ""
 "\n"
 "# Biến\n"
 
-#: variable.c:1453
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1905,7 +1943,7 @@ msgstr ""
 "\n"
 "# Giá trị biến đặc trưng cho mẫu"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1913,7 +1951,7 @@ msgstr ""
 "\n"
 "# Không có giá trị biến đặc trưng cho mẫu"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
@@ -1922,14 +1960,14 @@ msgstr ""
 "\n"
 "# %u giá trị biến đặc trưng cho mẫu"
 
-#: variable.h:189
+#: variable.h:219
 #, 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"
+#: vmsfunctions.c:92
+#, fuzzy, 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
@@ -1937,73 +1975,78 @@ msgstr "việc « search » (tìm kiếm hệ thống) bị lỗi với %d\n"
 msgid "Warning: Empty redirection\n"
 msgstr "Cảnh báo : việc chuyển hướng rỗng\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, 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
+#: vmsjobs.c:289
 #, 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
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Không biết lệnh builtin (có sẵn) « %s »\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Lỗi, lệnh rỗng\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Kết nhập đã được chuyển hướng từ %s\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Lỗi đã được chuyển hướng đến %s\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "Kết xuất đã được chuyển hướng đến %s\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Kết xuất đã được chuyển hướng đến %s\n"
 
-#: vmsjobs.c:568
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
+
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Đang thực hiện %s thay thế\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, 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
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2011,11 +2054,11 @@ msgstr ""
 "\n"
 "# Đường dẫn tìm kiếm VPATH\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
 msgstr "# Không có đường dẫn tìm kiếm VPATH nào"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
@@ -2024,7 +2067,7 @@ msgstr ""
 "\n"
 "# %u Đường dẫn tìm kiếm « vpath ».\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
@@ -2032,7 +2075,7 @@ msgstr ""
 "\n"
 "# Không có đường dẫn tìm kiếm chung (biến « VPATH »)."
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -2042,6 +2085,32 @@ msgstr ""
 "# Đường dẫn tìm kiếm chung (biến « VPATH »).\n"
 "# "
 
+#~ 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=%ld)\n"
+
+#~ 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"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "gặp « endef » bắt nguồn ở ngoài"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "chỉ thị « override » (đè) rỗng"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "chỉ thị « override » (đè) không hợp lệ"
+
+#~ 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"
+
 #~ 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."
 
index 2342719..61cffca 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index 15b149b..657264f 100644 (file)
 # Copyright (C) 2002 Free Software Foundation, Inc.
 # This file is distributed under the same license as the make package.
 # Wang Li <charles@linux.net.cn>, 2002.
+# LI Daobing <lidaobing@gmail.com>, 2008.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.79.1\n"
+"Project-Id-Version: make 3.81\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2006-04-01 01:40-0500\n"
-"PO-Revision-Date: 2002-07-22 15:02+0800\n"
-"Last-Translator: Wang Li <charles@linux.net.cn>\n"
-"Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
+"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"PO-Revision-Date: 2008-02-05 23:44+0800\n"
+"Last-Translator: LI Daobing <lidaobing@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=gb2312\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:53
+#: ar.c:48
 #, c-format
 msgid "attempt to use unsupported feature: `%s'"
-msgstr "ÊÔͼʹÓò»Ö§³ÖµÄ¹¦ÄÜ£º¡°%s¡±"
+msgstr "试图使用不支持的功能:“%s”"
 
-#: ar.c:137
+#: ar.c:125
 msgid "touch archive member is not available on VMS"
-msgstr "VMS ÏµÍ³Éϲ»Ö§³Ö touch ¹éµµ³ÉÔ±"
+msgstr "VMS 系统上不支持 touch 归档成员"
 
-#: ar.c:168
+#: ar.c:149
 #, c-format
 msgid "touch: Archive `%s' does not exist"
-msgstr "touch£º¹éµµÎļþ¡°%s¡±²»´æÔÚ"
+msgstr "touch:归档文件“%s”不存在"
 
-#: ar.c:171
+#: ar.c:152
 #, c-format
 msgid "touch: `%s' is not a valid archive"
-msgstr "touch£º¡°%s¡±²»ÊǺϷ¨µÄ¹éµµÎļþ"
+msgstr "touch:“%s”不是合法的归档文件"
 
-#: ar.c:178
+#: ar.c:159
 #, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch£ºÔÚ¡°%2$s¡±Öв»´æÔÚ³ÉÔ±¡°%1$s¡±"
+msgstr "touch:在“%2$s”中不存在成员“%1$s”"
 
-#: ar.c:185
+#: ar.c:166
 #, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
-msgstr "touch£ºÀ´×Ô¡°%s¡±ÉϵĠar_member_touch µÄ´íÎó·µ»ØÂë"
+msgstr "touch:来自“%s”上的 ar_member_touch 的错误返回码"
 
 #: arscan.c:69
-#, c-format
-msgid "lbr$set_module failed to extract module info, status = %d"
-msgstr "lbr$set_modules »ñÈ¡Ä£¿éÐÅϢʧ°Ü£¬·µ»Ø״̬ = %d"
+#, fuzzy, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_modules 获取模块信息失败,返回状态 = %d"
 
-#: arscan.c:154
-#, c-format
-msgid "lbr$ini_control failed with status = %d"
-msgstr "lbr$ini_control Ê§°Ü£¬·µ»Ø״̬ = %d"
+#: arscan.c:175
+#, fuzzy, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control 失败,返回状态 = %d"
 
-#: arscan.c:165
+#: arscan.c:187
 #, c-format
 msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "ÎÞ·¨´ò¿ª¿â¡°%s¡±ÒÔÑ°ÕÒ³ÉÔ±¡°%s¡±"
+msgstr "无法打开库“%s”以寻找成员“%s”"
 
-#: arscan.c:825
+#: arscan.c:850
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr ""
+msgstr "成员“%s”%s: %ld 字节在 %ld (%ld)。\n"
 
-#: arscan.c:826
+#: arscan.c:851
 msgid " (name might be truncated)"
-msgstr " (Ãû³Æ¿ÉÄܱ»½Ø¶Ì)"
+msgstr " (名称可能被截短)"
 
-#: arscan.c:828
+#: arscan.c:853
 #, c-format
 msgid "  Date %s"
-msgstr "  ÈÕÆÚ %s"
+msgstr "  日期 %s"
 
-#: arscan.c:829
+#: arscan.c:854
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
-msgstr "  uid = %d£¬gid = %d£¬mode = 0%o¡£\n"
+msgstr "  uid = %d,gid = %d,mode = 0%o。\n"
 
-#: commands.c:422
+#: commands.c:499
 msgid "*** Break.\n"
-msgstr "*** Öжϡ£\n"
+msgstr "*** 中断。\n"
 
-#: commands.c:545
+#: commands.c:622
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] ¹éµµ³ÉÔ±¡°%s¡±¿ÉÄÜÊǼٵģ»Î´É¾³ý"
+msgstr "*** [%s] 归档成员“%s”可能是假的;未删除"
 
-#: commands.c:548
+#: commands.c:625
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** ¹éµµ³ÉÔ±¡°%s¡±¿ÉÄÜÊǼٵģ»Î´É¾³ý"
+msgstr "*** 归档成员“%s”可能是假的;未删除"
 
-#: commands.c:561
+#: commands.c:638
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] ÕýÔÚɾ³ýÎļþ¡°%s¡±"
+msgstr "*** [%s] 正在删除文件“%s”"
 
-#: commands.c:563
+#: commands.c:640
 #, c-format
 msgid "*** Deleting file `%s'"
-msgstr "*** ÕýÔÚɾ³ýÎļþ¡°%s¡±"
+msgstr "*** 正在删除文件“%s”"
 
-#: commands.c:599
-msgid "#  commands to execute"
-msgstr "#  ÒªÖ´ÐеÄÃüÁî"
+#: commands.c:676
+#, fuzzy
+msgid "#  recipe to execute"
+msgstr "#  要执行的命令"
 
-#: commands.c:602
+#: commands.c:679
 msgid " (built-in):"
-msgstr " (ÄÚÖÃ)£º"
+msgstr " (内置):"
 
-#: commands.c:604
+#: commands.c:681
 #, c-format
 msgid " (from `%s', line %lu):\n"
-msgstr " (´Ó¡°%s¡±£¬ÐР%lu)£º\n"
+msgstr " (从“%s”,行 %lu):\n"
 
-#: dir.c:983
+#: dir.c:996
 msgid ""
 "\n"
 "# Directories\n"
 msgstr ""
 "\n"
-"# Ŀ¼\n"
+"# 目录\n"
 
-#: dir.c:995
+#: dir.c:1008
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s£ºÎÞ·¨¶ÔÆä½øÐРstat ²Ù×÷¡£\n"
+msgstr "# %s:无法对其进行 stat 操作。\n"
 
-#: dir.c:999
+#: dir.c:1012
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (¹Ø¼ü×Ö %s£¬ÐÞ¸Äʱ¼ä %d)£ºÎÞ·¨´ò¿ª¡£\n"
+msgstr "# %s (关键字 %s,修改时间 %d):无法打开。\n"
 
-#: dir.c:1003
+#: dir.c:1016
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (É豸 %d£¬i-½Úµã [%d,%d,%d])£ºÎÞ·¨´ò¿ª¡£\n"
+msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n"
 
-#: dir.c:1008
+#: dir.c:1021
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (É豸 %ld£¬i-½Úµã %ld)£ºÎÞ·¨´ò¿ª¡£\n"
+msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n"
 
-#: dir.c:1035
+#: dir.c:1048
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (¹Ø¼ü×Ö %s£¬ÐÞ¸Äʱ¼ä %d)£º"
+msgstr "# %s (关键字 %s,修改时间 %d):"
 
-#: dir.c:1039
+#: dir.c:1052
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (É豸 %d£¬i-½Úµã [%d,%d,%d])£º"
+msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):"
 
-#: dir.c:1044
+#: dir.c:1057
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (É豸 %ld£¬i-½Úµã %ld)£º"
+msgstr "# %s (设备 %ld,i-节点 %ld):"
 
-#: dir.c:1050 dir.c:1071
+#: dir.c:1063 dir.c:1084
 msgid "No"
-msgstr "ÎÞ"
+msgstr ""
 
-#: dir.c:1053 dir.c:1074
+#: dir.c:1066 dir.c:1087
 msgid " files, "
-msgstr " Îļþ£¬ "
+msgstr " 文件, "
 
-#: dir.c:1055 dir.c:1076
+#: dir.c:1068 dir.c:1089
 msgid "no"
-msgstr "ÎÞ"
+msgstr ""
 
-#: dir.c:1058
+#: dir.c:1071
 msgid " impossibilities"
-msgstr ""
+msgstr " 不可能"
 
-#: dir.c:1062
+#: dir.c:1075
 msgid " so far."
-msgstr " Æù½ñΪֹ¡£"
+msgstr " 迄今为止。"
 
-#: dir.c:1079
+#: dir.c:1092
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr ""
+msgstr " 不可能在 %lu 目录中。\n"
 
-#: expand.c:128
+#: expand.c:127
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
-msgstr ""
+msgstr "递归变量“%s”应用自身 (最终)"
 
-#: expand.c:266
+#: expand.c:276
 msgid "unterminated variable reference"
-msgstr "δÖÕÖ¹µÄ±äÁ¿ÒýÓÃ"
+msgstr "未终止的变量引用"
 
-#: file.c:270
-#, c-format
-msgid "Commands were specified for file `%s' at %s:%lu,"
-msgstr "¹ØÓÚÎļþ¡°%s¡±µÄÃüÁîÔÚ %s:%lu ´¦Ö¸¶¨£¬"
+#: file.c:267
+#, fuzzy, c-format
+msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgstr "关于文件“%s”的命令在 %s:%lu 处指定,"
 
-#: file.c:275
-#, c-format
-msgid "Commands for file `%s' were found by implicit rule search,"
-msgstr "¹ØÓÚÎļþ¡°%s¡±µÄÃüÁîͨ¹ýÒþº¬¹æÔòËÑË÷¶øÕÒµ½£¬"
+#: file.c:272
+#, fuzzy, c-format
+msgid "Recipe for file `%s' was found by implicit rule search,"
+msgstr "关于文件“%s”的命令通过隐含规则搜索而找到,"
 
-#: file.c:278
+#: file.c:275
 #, c-format
 msgid "but `%s' is now considered the same file as `%s'."
-msgstr "µ«¡°%s¡±ÏÖÔÚ±»¿´×ö¡°%s¡±µÄͬһ¸öÎļþ¡£"
+msgstr "但“%s”现在被看做“%s”的同一个文件。"
 
-#: file.c:281
-#, c-format
-msgid "Commands for `%s' will be ignored in favor of those for `%s'."
-msgstr ""
+#: file.c:278
+#, fuzzy, c-format
+msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgstr "“%2$s”更优先,“%1$s”的命令被忽略。"
 
-#: file.c:301
+#: file.c:298
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
-msgstr "ÎÞ·¨½«µ¥Ã°ºÅ¡°%s¡±ÖØÃüÃûΪ˫ðºÅ¡°%s¡±"
+msgstr "无法将单冒号“%s”重命名为双冒号“%s”"
 
-#: file.c:306
+#: file.c:303
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
-msgstr "ÎÞ·¨½«Ë«Ã°ºÅ¡°%s¡±ÖØÃüÃûΪµ¥Ã°ºÅ¡°%s¡±"
+msgstr "无法将双冒号“%s”重命名为单冒号“%s”"
 
-#: file.c:381
+#: file.c:392
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
-msgstr "*** ÕýÔÚɾ³ýÖмäÎļþ¡°%s¡±"
+msgstr "*** 正在删除中间文件“%s”"
 
-#: file.c:385
-#, fuzzy
+#: file.c:396
 msgid "Removing intermediate files...\n"
-msgstr "*** ÕýÔÚɾ³ýÖмäÎļþ¡°%s¡±"
+msgstr "正在删除中间文件...\n"
 
-#: file.c:781
+#: file.c:803
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s£ºÊ±¼ä±ê¼Ç³¬³ö·¶Î§£»ÕýÔÚÌæ»» %s"
+msgstr "%s:时间标记超出范围;正在替换 %s"
 
-#: file.c:782
+#: file.c:804
 msgid "Current time"
-msgstr "µ±Ç°Ê±¼ä"
+msgstr "当前时间"
 
-#: file.c:881
+#: file.c:924
 msgid "# Not a target:"
-msgstr "# ²»ÊÇÒ»¸öÄ¿±ê£º"
+msgstr "# 不是一个目标:"
 
-#: file.c:903
+#: file.c:929
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr ""
+msgstr "#  重要文件 (.PRECIOUS的前提)。"
 
-#: file.c:905
+#: file.c:931
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr ""
+msgstr "#  假目标 (.PHONY的前提)。"
 
-#: file.c:907
-msgid "#  Command-line target."
-msgstr "#  ÃüÁîÐÐÄ¿±ê¡£"
+#: file.c:933
+#, fuzzy
+msgid "#  Command line target."
+msgstr "#  命令行目标。"
 
-#: file.c:909
+#: file.c:935
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr ""
+msgstr "#  缺省的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。"
 
-#: file.c:911
+#: file.c:937
 msgid "#  Implicit rule search has been done."
-msgstr "#  ¶ÔÒþº¬¹æÔòµÄËÑË÷ÒÑÍê³É¡£"
+msgstr "#  对隐含规则的搜索已完成。"
 
-#: file.c:912
+#: file.c:938
 msgid "#  Implicit rule search has not been done."
-msgstr "#  ¶ÔÒþº¬¹æÔòµÄËÑË÷ÉÐδÍê³É¡£"
+msgstr "#  对隐含规则的搜索尚未完成。"
 
-#: file.c:914
+#: file.c:940
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Òþº¬/¾²Ì¬Ä£Ê½Ö÷¸É£º¡°%s¡±\n"
+msgstr "#  隐含/静态模式主干:“%s”\n"
 
-#: file.c:916
+#: file.c:942
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  ÎļþÊÇÒ»¸öÖмäÇ°Ìá¡£"
+msgstr "#  文件是一个中间前提。"
 
-#: file.c:919
+#: file.c:946
 msgid "#  Also makes:"
-msgstr "#  »¹Òª´´½¨£º"
+msgstr "#  还要创建:"
 
-#: file.c:925
+#: file.c:952
 msgid "#  Modification time never checked."
-msgstr "#  ´Ó²»¼ì²éÐÞ¸Äʱ¼ä¡£"
+msgstr "#  从不检查修改时间。"
 
-#: file.c:927
+#: file.c:954
 msgid "#  File does not exist."
-msgstr "#  Îļþ²»´æÔÚ¡£"
+msgstr "#  文件不存在。"
 
-#: file.c:929
+#: file.c:956
 msgid "#  File is very old."
-msgstr "#  Îļþ·Ç³£³Â¾É¡£"
+msgstr "#  文件非常陈旧。"
 
-#: file.c:934
+#: file.c:961
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  ×î½ü¸üР%s\n"
+msgstr "#  最近更新 %s\n"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has been updated."
-msgstr "#  ÎļþÒѾ­±»¸üС£"
+msgstr "#  文件已经被更新。"
 
-#: file.c:937
+#: file.c:964
 msgid "#  File has not been updated."
-msgstr "#  ÎļþÉÐδ±»¸üС£"
+msgstr "#  文件尚未被更新。"
 
-#: file.c:941
-msgid "#  Commands currently running (THIS IS A BUG)."
-msgstr "#  ÕýÔÚÔËÐеÄÃüÁî (ÕâÊǸö´íÎó)¡£"
+#: file.c:968
+#, fuzzy
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  正在运行的命令 (这是个错误)。"
 
-#: file.c:944
-msgid "#  Dependencies commands running (THIS IS A BUG)."
-msgstr "#  ÕýÔÚÔËÐеÄÒÀÀµÐÔÃüÁî (ÕâÊǸö´íÎó)¡£"
+#: file.c:971
+#, fuzzy
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  正在运行的依赖性命令 (这是个错误)。"
 
-#: file.c:953
+#: file.c:980
 msgid "#  Successfully updated."
-msgstr "#  ¸üгɹ¦¡£"
+msgstr "#  更新成功。"
 
-#: file.c:957
+#: file.c:984
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  ÐèÒª¸üР(Óà-q É趨)¡£"
+msgstr "#  需要更新 (用 -q 设定)。"
 
-#: file.c:960
+#: file.c:987
 msgid "#  Failed to be updated."
-msgstr "#  ¸üÐÂʧ°Ü¡£"
+msgstr "#  更新失败。"
 
-#: file.c:963
+#: file.c:990
 msgid "#  Invalid value in `update_status' member!"
-msgstr "#  ¡°update_status¡±³ÉÔ±ÖÐÎÞЧµÄÖµ£¡"
+msgstr "#  “update_status”成员中无效的值!"
 
-#: file.c:970
+#: file.c:997
 msgid "#  Invalid value in `command_state' member!"
-msgstr "#  ¡°command_state¡±³ÉÔ±ÖÐÎÞЧµÄÖµ£¡"
+msgstr "#  “command_state”成员中无效的值!"
 
-#: file.c:989
+#: file.c:1016
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 "\n"
-"# Îļþ"
+"# 文件"
 
-#: file.c:993
+#: file.c:1020
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
+"\n"
+"# 文件杂凑表状态:\n"
+"# "
 
-#: function.c:759
+#: function.c:758
 msgid "non-numeric first argument to `word' function"
-msgstr "¡°word¡±º¯ÊýµÄµÚÒ»¸ö²ÎÊý²»ÊÇÊýÖµ²ÎÊý"
+msgstr "“word”函数的第一个参数不是数值参数"
 
-#: function.c:764
+#: function.c:763
 msgid "first argument to `word' function must be greater than 0"
-msgstr "¡°word¡±º¯ÊýµÄµÚÒ»¸ö²ÎÊý±ØÐë´óÓÚ 0"
+msgstr "“word”函数的第一个参数必须大于 0"
 
-#: function.c:785
+#: function.c:783
 msgid "non-numeric first argument to `wordlist' function"
-msgstr "¡°wordlist¡±º¯ÊýµÄµÚÒ»¸ö²ÎÊý²»ÊÇÊýÖµ²ÎÊý"
+msgstr "“wordlist”函数的第一个参数不是数值参数"
 
-#: function.c:787
+#: function.c:785
 msgid "non-numeric second argument to `wordlist' function"
-msgstr "¡°wordlist¡±º¯ÊýµÄµÚ¶þ¸ö²ÎÊý²»ÊÇÊýÖµ²ÎÊý"
-
-#: function.c:1453
-#, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "´´½¨×Ó½ø³Ì£º¸´Öƾä±ú(In)ʧ°Ü (e=%d)\n"
+msgstr "“wordlist”函数的第二个参数不是数值参数"
 
-#: function.c:1464
+#: function.c:1458
 #, fuzzy, c-format
-msgid "create_child_process: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "´´½¨×Ó½ø³Ì£º¸´Öƾä±ú(Err)ʧ°Ü (e=%d)\n"
+msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "创建子进程:复制句柄(In)失败 (e=%ld)\n"
 
 #: function.c:1469
 #, fuzzy, c-format
-msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() Ê§°Ü (e=%d)\n"
+msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "创建子进程:复制句柄(Err)失败 (e=%ld)\n"
 
 #: function.c:1474
-msgid "windows32_openpipe (): process_init_fd() failed\n"
-msgstr "windows32_openpipe ()£ºprocess_init_fd() Ê§°Ü\n"
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() 失败 (e=%ld)\n"
+
+#: function.c:1479
+#, fuzzy
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe ():process_init_fd() 失败\n"
 
-#: function.c:1725
+#: function.c:1728
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "ÕýÔÚÇå³ýÁÙʱÅú´¦ÀíÎļþ %s\n"
+msgstr "正在清除临时批处理文件 %s\n"
 
-#: function.c:2101
-#, fuzzy, c-format
+#: function.c:2150
+#, c-format
 msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "º¯Êý¡°%2$s¡±µÄ²ÎÊýÊýÁ¿²»¹» (%1$d)"
+msgstr "函数“%2$s”的参数数量(%1$d)不够"
 
-#: function.c:2113
-#, fuzzy, c-format
+#: function.c:2162
+#, c-format
 msgid "unimplemented on this platform: function `%s'"
-msgstr "ÔÚ±¾Æ½Ì¨ÉÏδʵÏÖ£ºº¯Êý¡°%s¡±"
+msgstr "在本平台上未实现:函数“%s”"
 
-#: function.c:2163
+#: function.c:2212
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
-msgstr "¶Ôº¯Êý¡°%s¡±µÄδÖÕÖ¹µÄµ÷ÓãºÒÅ©¡°%c¡±"
+msgstr "对函数“%s”的未终止的调用:遗漏“%c”"
 
-#: getopt.c:663
+#: getopt.c:661
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s£ºÑ¡Ïî¡°%s¡±º¬Òå²»Çå\n"
+msgstr "%s:选项“%s”含义不清\n"
 
-#: getopt.c:687
+#: getopt.c:685
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s£ºÑ¡Ïî¡°--%s¡±²»ÐèÒª²ÎÊý\n"
+msgstr "%s:选项“--%s”不需要参数\n"
 
-#: getopt.c:692
+#: getopt.c:690
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s£ºÑ¡Ïî¡°%c%s¡±²»ÐèÒª²ÎÊý\n"
+msgstr "%s:选项“%c%s”不需要参数\n"
 
-#: getopt.c:709 getopt.c:882
+#: getopt.c:707 getopt.c:880
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
-msgstr "%s£ºÑ¡Ïî¡°%s¡±ÐèÒªÒ»¸ö²ÎÊý\n"
+msgstr "%s:选项“%s”需要一个参数\n"
 
-#: getopt.c:738
+#: getopt.c:736
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°--%s¡±\n"
+msgstr "%s:无法识别的选项“--%s”\n"
 
-#: getopt.c:742
+#: getopt.c:740
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°%c%s¡±\n"
+msgstr "%s:无法识别的选项“%c%s”\n"
 
-#: getopt.c:768
+#: getopt.c:766
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s£º·Ç·¨Ñ¡Ïî -- %c\n"
+msgstr "%s:非法选项 -- %c\n"
 
-#: getopt.c:771
+#: getopt.c:769
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s£º·Ç·¨Ñ¡Ïî -- %c\n"
+msgstr "%s:非法选项 -- %c\n"
 
-#: getopt.c:801 getopt.c:931
+#: getopt.c:799 getopt.c:929
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s£ºÑ¡ÏîÐèÒªÒ»¸ö²ÎÊý -- %c\n"
+msgstr "%s:选项需要一个参数 -- %c\n"
 
-#: getopt.c:848
+#: getopt.c:846
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s£ºÑ¡Ïî¡°-W %s¡±º¬Òå²»Çå\n"
+msgstr "%s:选项“-W %s”含义不清\n"
 
-#: getopt.c:866
+#: getopt.c:864
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s£ºÑ¡Ïî¡°-W %s¡±²»ÔÊÐí¸ø³ö²ÎÊý\n"
+msgstr "%s:选项“-W %s”不允许给出参数\n"
 
-#: hash.c:51
-#, c-format
-msgid "can't allocate %ld bytes for hash table: memory exhausted"
-msgstr ""
+#: hash.c:49
+#, fuzzy, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "无法为杂凑表分配 %ld 字节: 内存耗尽"
 
-#: hash.c:282
+#: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr ""
+msgstr "负载=%ld/%ld=%.0f%%, "
 
-#: hash.c:284
+#: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr ""
+msgstr "重新杂凑=%d, "
 
-#: hash.c:285
+#: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr ""
+msgstr "碰撞=%ld/%ld=%.0f%%"
 
-#: implicit.c:41
+#: implicit.c:40
 #, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "ÕýÔÚΪ¡°%s¡±Ñ°ÕÒÒþº¬¹æÔò¡£\n"
+msgstr "正在为“%s”寻找隐含规则。\n"
 
-#: implicit.c:57
+#: implicit.c:56
 #, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "ÕýÔÚΪ¡°%s¡±Ñ°Õҹ鵵³ÉÔ±Òþº¬¹æÔò¡£\n"
+msgstr "正在为“%s”寻找归档成员隐含规则。\n"
 
-#: implicit.c:319
+#: implicit.c:317
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "±ÜÃâÒþº¬¹æÔòµÝ¹é¡£\n"
+msgstr "避免隐含规则递归。\n"
 
-#: implicit.c:476
+#: implicit.c:491
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "ÒÔÖ÷¸É¡°%.*s¡±³¢ÊÔÆ¥Åäģʽ¹æÔò¡£\n"
-
-#: implicit.c:667
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "¾Ü¾ø²»¿ÉÄܵÄÒþº¬Ç°Ìá¡°%s¡±¡£\n"
+msgstr "以主干“%.*s”尝试匹配模式规则。\n"
 
-#: implicit.c:668
+#: implicit.c:674
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "¾Ü¾ø²»¿ÉÄܵĹæÔòÇ°Ìá¡°%s¡±¡£\n"
+msgstr "拒绝不可能的规则前提“%s”。\n"
 
-#: implicit.c:678
+#: implicit.c:675
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "³¢ÊÔÒþº¬Ç°Ìá¡°%s¡±¡£\n"
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "拒绝不可能的隐含前提“%s”。\n"
 
-#: implicit.c:679
+#: implicit.c:688
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
-msgstr "³¢ÊÔ¹æÔòÇ°Ìá¡°%s¡±¡£\n"
+msgstr "尝试规则前提“%s”。\n"
+
+#: implicit.c:689
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "尝试隐含前提“%s”。\n"
 
-#: implicit.c:710
+#: implicit.c:728
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr ""
+msgstr "前提“%s”在 VPATH “%s” 中发现\n"
 
-#: implicit.c:730
+#: implicit.c:742
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "ÕýÔÚÑ°ÕÒʹÓÃÖмäÎļþ¡°%s¡±µÄ¹æÔò¡£\n"
+msgstr "正在寻找使用中间文件“%s”的规则。\n"
 
-#: job.c:321
-#, fuzzy
+#: job.c:335
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (ÁÙʱÎļþ)"
+msgstr "无法创建临时文件\n"
 
-#: job.c:388
+#: job.c:449
 #, c-format
 msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] ´íÎó 0x%x (ºöÂÔ)"
+msgstr "*** [%s] 错误 0x%x (忽略)"
 
-#: job.c:389
+#: job.c:450
 #, c-format
 msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] ´íÎó 0x%x"
+msgstr "*** [%s] 错误 0x%x"
 
-#: job.c:393
+#: job.c:454
 #, c-format
 msgid "[%s] Error %d (ignored)"
-msgstr "[%s] ´íÎó %d (ºöÂÔ)"
+msgstr "[%s] 错误 %d (忽略)"
 
-#: job.c:394
+#: job.c:455
 #, c-format
 msgid "*** [%s] Error %d"
-msgstr "*** [%s] ´íÎó %d"
+msgstr "*** [%s] 错误 %d"
 
-#: job.c:399
+#: job.c:460
 msgid " (core dumped)"
 msgstr " (core dumped)"
 
-#: job.c:488
+#: job.c:549
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** ÕýÔڵȴýδÍê³ÉµÄÈÎÎñ...."
+msgstr "*** 正在等待未完成的任务...."
 
-#: job.c:518
-#, c-format
-msgid "Live child 0x%08lx (%s) PID %ld %s\n"
-msgstr "»îÔ¾×Ó½ø³Ì 0x%08lx (%s) PID %ld %s\n"
+#: job.c:579
+#, fuzzy, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "活跃子进程 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:520 job.c:701 job.c:804 job.c:1457
+#: job.c:581 job.c:760 job.c:862 job.c:1527
 msgid " (remote)"
-msgstr " (Ô¶³Ì)"
+msgstr " (远程)"
 
-#: job.c:698
-#, c-format
-msgid "Reaping losing child 0x%08lx PID %ld %s\n"
-msgstr "ÕýÔÚÖÐֹʧ°ÜµÄ×Ó½ø³Ì 0x%08lx PID %ld %s\n"
+#: job.c:758
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "正在中止失败的子进程 0x%08lx PID %ld %s\n"
 
-#: job.c:699
-#, c-format
-msgid "Reaping winning child 0x%08lx PID %ld %s\n"
-msgstr "ÕýÔÚÖÐÖ¹»ñʤµÄ×Ó½ø³Ì 0x%08lx PID %ld %s\n"
+#: job.c:759
+#, fuzzy, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "正在中止获胜的子进程 0x%08lx PID %ld %s\n"
 
-#: job.c:704
+#: job.c:763
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "ÕýÔÚÇå³ýÁÙʱÅúÎļþ %s\n"
+msgstr "正在清除临时批文件 %s\n"
 
-#: job.c:802
+#: job.c:861
 #, fuzzy, c-format
-msgid "Removing child 0x%08lx PID %ld%s from chain.\n"
-msgstr "´ÓÁ´ÖÐɾ³ý×Ó½ø³Ì 0x%08lx PID %ld %s¡£\n"
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "从链中删除子进程 0x%08lx PID %ld%s。\n"
 
-#: job.c:862
+#: job.c:920
 msgid "write jobserver"
-msgstr "дÈëÈÎÎñ·þÎñÆ÷"
-
-#: job.c:864
-#, c-format
-msgid "Released token for child 0x%08lx (%s).\n"
-msgstr "Ϊ×Ó½ø³Ì 0x%08lx (%s) ÊÍ·ÅÁîÅÆ(token)¡£\n"
+msgstr "写入任务服务器"
 
-#: job.c:1383
+#: job.c:922
 #, fuzzy, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "为子进程 0x%08lx (%s) 释放令牌(token)。\n"
+
+#: job.c:1453 job.c:2094
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() Æô¶¯½ø³Ìʧ°Ü (e=%d)\n"
+msgstr "process_easy() 启动进程失败 (e=%ld)\n"
 
-#: job.c:1387 job.c:2020
+#: job.c:1457 job.c:2098
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
+"\n"
+"失败执行中共有 %d 个参数。\n"
 
-#: job.c:1455
-#, c-format
-msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
-msgstr "½«×Ó½ø³Ì 0x%08lx (%s) PID %ld%s ·ÅÈëÁ´¡£\n"
+#: job.c:1525
+#, fuzzy, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "将子进程 0x%08lx (%s) PID %ld%s 放入链。\n"
 
-#: job.c:1709
+#: job.c:1778
+#, fuzzy, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "获得至进程 0x%08lx (%s) 的标记。\n"
+
+#: job.c:1787
+msgid "read jobs pipe"
+msgstr "读取任务管道"
+
+#: job.c:1798
 #, c-format
-msgid "Obtained token for child 0x%08lx (%s).\n"
+msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
 msgstr ""
 
-#: job.c:1718
-msgid "read jobs pipe"
-msgstr "¶ÁÈ¡ÈÎÎñ¹ÜµÀ"
+#: job.c:1802
+#, fuzzy, c-format
+msgid "Invoking builtin recipe to update target `%s'.\n"
+msgstr "不需要重新创建目标“%s”"
 
-#: job.c:1832
+#: job.c:1910
 msgid "cannot enforce load limits on this operating system"
-msgstr "ÎÞ·¨ÔÚ±¾²Ù×÷ϵͳÖÐʵʩ¸ºÔØÏÞÖÆ"
+msgstr "无法在本操作系统中实施负载限制"
 
-#: job.c:1834
+#: job.c:1912
 msgid "cannot enforce load limit: "
-msgstr "ÎÞ·¨ÊµÊ©¸ºÔØÏÞÖÆ£º"
+msgstr "无法实施负载限制:"
 
-#: job.c:1907
+#: job.c:1985
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "没有剩余的文件句柄: 无法复制标准输入\n"
 
-#: job.c:1909
+#: job.c:1987
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "没有剩余的文件句柄: 无法复制标准输出\n"
 
-#: job.c:1937
+#: job.c:2015
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "无法还原标准输入\n"
 
-#: job.c:1945
+#: job.c:2023
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "无法还原标准输出\n"
 
-#: job.c:2016
+#: job.c:2127
 #, fuzzy, c-format
-msgid "process_easy() failed failed to launch process (e=%ld)\n"
-msgstr "process_easy() Æô¶¯½ø³Ìʧ°Ü (e=%d)\n"
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make 已中止的子进程 pid %ld,仍在等待 pid %ld\n"
 
-#: job.c:2046
-#, fuzzy, c-format
-msgid "make reaped child pid %ld, still waiting for pid %ld\n"
-msgstr "make ÒÑÖÐÖ¹µÄ×Ó½ø³Ì pid %d£¬ÈÔÔڵȴý pid %d\n"
-
-#: job.c:2085
+#: job.c:2168
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s£ºÃüÁîδÕÒµ½"
+msgstr "%s:命令未找到"
 
-#: job.c:2145
+#: job.c:2228
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s£ºÎ´ÕÒµ½ shell ³ÌÐò"
+msgstr "%s:未找到 shell 程序"
 
-#: job.c:2154
+#: job.c:2237
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: 环境变量空间可能会耗尽"
 
-#: job.c:2363
-#, fuzzy, c-format
+#: job.c:2461
+#, c-format
 msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ÒѸıä (ԭΪ¡°%s¡±£¬ÏÖΪ¡°%s¡±)"
+msgstr "$SHELL 已改变 (原为“%s”,现为“%s”)\n"
 
-#: job.c:2789
+#: job.c:2951
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "ÕýÔÚ´´½¨ÁÙʱÅúÎļþ %s\n"
+msgstr "正在创建临时批文件 %s\n"
 
-#: job.c:2902
+#: job.c:2963
 #, c-format
-msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
 msgstr ""
 
-#: main.c:291
+#: job.c:3065
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n"
+
+#: main.c:303
 msgid "Options:\n"
-msgstr "Ñ¡Ï\n"
+msgstr "选项:\n"
 
-#: main.c:292
-#, fuzzy
+#: main.c:304
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "ºöÂÔ¼æÈÝÐÔ"
+msgstr "  -b, -m                      忽略兼容性。\n"
 
-#: main.c:294
+#: main.c:306
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr ""
+msgstr "  -B, --always-make           无条件 make 所有目标。\n"
 
-#: main.c:296
+#: main.c:308
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              在执行钱先切换到 DIRECTORY 目录。\n"
 
-#: main.c:299
-#, fuzzy
+#: main.c:311
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "´òÓ¡´óÁ¿µ÷ÊÔÐÅÏ¢"
+msgstr "  -d                          打印大量调试信息。\n"
 
-#: main.c:301
-#, fuzzy
+#: main.c:313
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
-msgstr "´òÓ¡¸÷ÖÖµ÷ÊÔÐÅÏ¢"
+msgstr "  --debug[=FLAGS]             打印各种调试信息。\n"
 
-#: main.c:303
+#: main.c:315
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
+"  -e, --environment-overrides\n"
+"                              环境变量覆盖 makefile 中的变量。\n"
 
-#: main.c:306
+#: main.c:318
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr ""
+
+#: main.c:320
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              从 FILE 中读入 makefile。\n"
 
-#: main.c:309
-#, fuzzy
+#: main.c:323
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "´òÓ¡¸ÃÏûÏ¢²¢Í˳ö"
+msgstr "  -h, --help                  打印该消息并退出。\n"
 
-#: main.c:311
+#: main.c:325
 #, fuzzy
-msgid "  -i, --ignore-errors         Ignore errors from commands.\n"
-msgstr "ºöÂÔÀ´×ÔÃüÁîµÄ´íÎó"
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors         忽略来自命令的错误。\n"
 
-#: main.c:313
+#: main.c:327
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              在 DIRECTORY 中搜索被包含的 makefile。\n"
 
-#: main.c:316
-#, fuzzy
+#: main.c:330
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
-msgstr "ͬʱÔÊÐí N ¸öÈÎÎñ£»ÎÞ²ÎÊý±íÃ÷ÔÊÐíÎÞÏÞ¸öÈÎÎñ"
+msgstr ""
+"  -j [N], --jobs[=N]          同时允许 N 个任务;无参数表明允许无限个任务。\n"
 
-#: main.c:318
-#, fuzzy
+#: main.c:332
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
-msgstr "µ±Ä³Ð©Ä¿±êÎÞ·¨´´½¨Ê±ÈÔÈ»¼ÌÐø"
+msgstr "  -k, --keep-going            当某些目标无法创建时仍然继续。\n"
 
-#: main.c:320
+#: main.c:334
 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 时不启动多任务。\n"
 
-#: main.c:323
+#: main.c:337
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   使用软链接及软链接目标中修改时间较晚的一个。\n"
 
-#: main.c:325
+#: main.c:339
+#, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Don't actually run any commands; just print "
+"                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
+"  -n, --just-print, --dry-run, --recon\n"
+"                              只打印命令,不实际执行。\n"
 
-#: main.c:328
+#: main.c:342
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              将 FILE 当做很旧,不必重新生成。\n"
 
-#: main.c:331
-#, fuzzy
+#: main.c:345
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "´òÓ¡ make µÄÄÚ²¿Êý¾Ý¿â"
+msgstr "  -p, --print-data-base       打印 make 的内部数据库。\n"
 
-#: main.c:333
+#: main.c:347
 #, fuzzy
 msgid ""
-"  -q, --question              Run no commands; exit status says if up to "
+"  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
-msgstr "²»ÔËÐÐÈκÎÃüÁÍ˳ö״̬˵Ã÷ÊÇ·ñÒÑÈ«²¿¸üÐÂ"
+msgstr ""
+"  -q, --question              不运行任何命令;退出状态说明是否已全部更新。\n"
 
-#: main.c:335
-#, fuzzy
+#: main.c:349
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "½ûÓÃÄÚÖÃÒþº¬¹æÔò"
+msgstr "  -r, --no-builtin-rules      禁用内置隐含规则。\n"
 
-#: main.c:337
-#, fuzzy
+#: main.c:351
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
-msgstr "½ûÓÃÄÚÖñäÁ¿ÉèÖÃ"
+msgstr "  -R, --no-builtin-variables  禁用内置变量设置。\n"
 
-#: main.c:339
-msgid "  -s, --silent, --quiet       Don't echo commands.\n"
-msgstr ""
+#: main.c:353
+#, fuzzy
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       不输出命令。\n"
 
-#: main.c:341
+#: main.c:355
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              关闭 -k。\n"
 
-#: main.c:344
-#, fuzzy
+#: main.c:358
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
-msgstr "touch Ä¿±ê¶ø²»ÊÇÖØд´½¨ËüÃÇ"
+msgstr "  -t, --touch                 touch 目标而不是重新创建它们。\n"
 
-#: main.c:346
-#, fuzzy
+#: main.c:360
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "´òÓ¡ make µÄ°æ±¾ºÅ²¢Í˳ö"
+msgstr "  -v, --version               打印 make 的版本号并退出。\n"
 
-#: main.c:348
-#, fuzzy
+#: main.c:362
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "´òÓ¡µ±Ç°Ä¿Â¼"
+msgstr "  -w, --print-directory       打印当前目录。\n"
 
-#: main.c:350
-#, fuzzy
+#: main.c:364
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
-msgstr "¼´Ê¹ -w Ä¬ÈÏ¿ªÆô£¬Ò²Òª¹Ø±Õ -w"
+msgstr "  --no-print-directory        关闭 -w,即使 -w 默认开启。\n"
 
-#: main.c:352
+#: main.c:366
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              将 FILE 当做最新。\n"
 
-#: main.c:355
-#, fuzzy
+#: main.c:369
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
-msgstr "µ±ÒýÓÃ䶨Òå±äÁ¿µÄʱºò·¢³ö¾¯¸æ"
+msgstr "  --warn-undefined-variables  当引用未定义变量的时候发出警告。\n"
 
-#: main.c:549
+#: main.c:564
 msgid "empty string invalid as file name"
-msgstr "¿Õ×Ö·û´®ÊÇÎÞЧµÄÎļþÃû"
+msgstr "空字符串是无效的文件名"
 
-#: main.c:630
+#: main.c:650
 #, c-format
 msgid "unknown debug level specification `%s'"
-msgstr "δ֪µÄµ÷ÊÔ¼¶±ð¡°%s¡±"
+msgstr "未知的调试级别“%s”"
 
-#: main.c:670
+#: main.c:690
 #, fuzzy, c-format
-msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%lx)\n"
-msgstr "%s£º²¶»ñÖжÏ/Òì³£ (´úÂë = 0x%x, µØÖ· = 0x%x)\n"
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s:捕获中断/异常 (代码 = 0x%lx, 地址 = 0x%lx)\n"
 
-#: main.c:677
-#, c-format
+#: main.c:697
+#, fuzzy, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 msgstr ""
+"\n"
+"从程序 %s 产生的未处理的异常过滤器\n"
+"异常码 = %lx\n"
+"异常标志 = %lx\n"
+"异常地址 = %lx\n"
 
-#: main.c:685
+#: main.c:705
 #, fuzzy, c-format
-msgid "Access violation: write operation at address %lx\n"
-msgstr "·ÃÎʳåÍ»£ºµØÖ· %x ´¦µÄд²Ù×÷\n"
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "访问冲突:地址 %lx 处的写操作\n"
 
-#: main.c:686
+#: main.c:706
 #, fuzzy, c-format
-msgid "Access violation: read operation at address %lx\n"
-msgstr "·ÃÎʳåÍ»£ºµØÖ· %x´¦µÄ¶Á²Ù×÷\n"
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "访问冲突:地址 %lx处的读操作\n"
 
-#: main.c:762 main.c:773
-#, c-format
-msgid "find_and_set_shell setting default_shell = %s\n"
-msgstr ""
+#: main.c:781 main.c:792
+#, fuzzy, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell 设置 default_shell = %s\n"
 
-#: main.c:814
-#, c-format
-msgid "find_and_set_shell path search set default_shell = %s\n"
-msgstr ""
+#: main.c:834
+#, fuzzy, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "find_and_set_shell 路径搜索结果设置 default_shell = %s\n"
 
-#: main.c:1236
+#: main.c:1273
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr "%s ÕýÔÚ¹ÒÆð 30 Ãë..."
+msgstr "%s 正在挂起 30 秒..."
 
-#: main.c:1238
+#: main.c:1275
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "˯ÃßÍê³É(30)¡£¼ÌÐø¡£\n"
+msgstr "睡眠完成(30)。继续。\n"
 
-#: main.c:1466
+#: main.c:1501
 msgid "Makefile from standard input specified twice."
-msgstr "Á½´ÎÖ¸Ã÷À´×Ô±ê×¼ÊäÈëµÄ makefile¡£"
+msgstr "两次指明来自标准输入的 makefile。"
 
-#: main.c:1505 vmsjobs.c:486
+#: main.c:1539 vmsjobs.c:500
 msgid "fopen (temporary file)"
-msgstr "fopen (ÁÙʱÎļþ)"
+msgstr "fopen (临时文件)"
 
-#: main.c:1511
+#: main.c:1545
 msgid "fwrite (temporary file)"
-msgstr "fwrite (ÁÙʱÎļþ)"
+msgstr "fwrite (临时文件)"
 
-#: main.c:1640
+#: main.c:1703
 msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "±¾Æ½Ì¨²»Ö§³Ö²¢ÐÐÈÎÎñ (-j)¡£"
+msgstr "本平台不支持并行任务 (-j)。"
 
-#: main.c:1641
+#: main.c:1704
 msgid "Resetting to single job (-j1) mode."
-msgstr "ÖØÖÃΪµ¥ÈÎÎñģʽ (-j1)¡£"
+msgstr "重置为单任务模式 (-j1)。"
 
-#: main.c:1656
+#: main.c:1719
 msgid "internal error: multiple --jobserver-fds options"
-msgstr "ÄÚ²¿´íÎ󣺶à¸ö --jobserver-fds Ñ¡Ïî"
+msgstr "内部错误:多个 --jobserver-fds 选项"
 
-#: main.c:1664
+#: main.c:1727
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "ÄÚ²¿´íÎ󣺷Ƿ¨ --jobserver-fds ×Ö·û´®¡°%s¡±"
+msgstr "内部错误:非法 --jobserver-fds 字符串“%s”"
 
-#: main.c:1674
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: main.c:1730
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1684
+#: main.c:1740
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "警告: 子 make 中强制 -jN: 关闭 jobserver 模式。"
+
+#: main.c:1750
 msgid "dup jobserver"
-msgstr "¸´ÖÆÈÎÎñ·þÎñÆ÷"
+msgstr "复制任务服务器"
 
-#: main.c:1687
+#: main.c:1753
 msgid ""
 "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
-msgstr ""
+msgstr "警告: jobserver 不存在: 使用 -j1。添加 “+” 到父 make 的规则。"
 
-#: main.c:1710
+#: main.c:1777
 msgid "creating jobs pipe"
-msgstr "ÕýÔÚ´´½¨ÈÎÎñ¹ÜµÀ"
+msgstr "正在创建任务管道"
 
-#: main.c:1725
+#: main.c:1792
 msgid "init jobserver pipe"
-msgstr "´´Ê¼»¯ÈÎÎñ·þÎñÆ÷¹ÜµÀ"
+msgstr "创始化任务服务器管道"
 
-#: main.c:1744
+#: main.c:1812
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "不支持软链接: 关闭 -L"
 
-#: main.c:1820
+#: main.c:1892
 msgid "Updating makefiles....\n"
-msgstr "ÕýÔÚ¸üРmakefile....\n"
+msgstr "正在更新 makefile....\n"
 
-#: main.c:1845
+#: main.c:1917
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Makefile ¡°%s¡±¿ÉÄÜÑ­»·£»²»»áÖØд´½¨Ëü¡£\n"
+msgstr "Makefile “%s”可能循环;不会重新创建它。\n"
 
-#: main.c:1924
+#: main.c:1996
 #, c-format
 msgid "Failed to remake makefile `%s'."
-msgstr "ÖØд´½¨ makefile ¡°%s¡± Ê§°Ü¡£"
+msgstr "重新创建 makefile “%s” 失败。"
 
-#: main.c:1941
+#: main.c:2013
 #, c-format
 msgid "Included makefile `%s' was not found."
-msgstr "ÕÒ²»µ½±»ÒýÈëµÄ makefile ¡°%s¡±"
+msgstr "找不到被引入的 makefile “%s”"
 
-#: main.c:1946
+#: main.c:2018
 #, c-format
 msgid "Makefile `%s' was not found"
-msgstr "ÕÒ²»µ½ makefile ¡°%s¡±"
+msgstr "找不到 makefile “%s”"
 
-#: main.c:2016
+#: main.c:2086
 msgid "Couldn't change back to original directory."
-msgstr "ÎÞ·¨»Øµ½Ô­Ê¼Ä¿Â¼¡£"
+msgstr "无法回到原始目录。"
 
-#: main.c:2024
-#, fuzzy, c-format
+#: main.c:2102
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "ÖØÐÂÖ´ÐУº"
+msgstr "重新执行[%u]:"
 
-#: main.c:2140
+#: main.c:2215
 msgid "unlink (temporary file): "
-msgstr "ɾ³ý (ÁÙʱÎļþ)£º"
+msgstr "删除 (临时文件):"
 
-#: main.c:2169
+#: main.c:2247
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL 包含多余一个目标"
 
-#: main.c:2189
+#: main.c:2270
 msgid "No targets specified and no makefile found"
-msgstr "ûÓÐÖ¸Ã÷Ä¿±ê²¢ÇÒÕÒ²»µ½ makefile"
+msgstr "没有指明目标并且找不到 makefile"
 
-#: main.c:2191
+#: main.c:2272
 msgid "No targets"
-msgstr "ÎÞÄ¿±ê"
+msgstr "无目标"
 
-#: main.c:2196
+#: main.c:2277
 msgid "Updating goal targets....\n"
-msgstr ""
+msgstr "更新目标....\n"
 
-#: main.c:2222
+#: main.c:2306
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
-msgstr "¾¯¸æ£º¼ì²âµ½Ê±ÖÓ´íÎó¡£ÄúµÄ´´½¨¿ÉÄÜÊDz»ÍêÕûµÄ¡£"
+msgstr "警告:检测到时钟错误。您的创建可能是不完整的。"
 
-#: main.c:2383
+#: main.c:2470
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Ó÷¨£º%s [Ñ¡Ïî] [Ä¿±ê] ...\n"
+msgstr "用法:%s [选项] [目标] ...\n"
 
-#: main.c:2389
+#: main.c:2476
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
+"\n"
+"该程序为 %s 编译\n"
 
-#: main.c:2391
+#: main.c:2478
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
+"\n"
+"该程序为 %s (%s) 编译\n"
 
-#: main.c:2394
-#, fuzzy, c-format
+#: main.c:2481
+#, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr ""
-"\n"
-"´íÎ󱨸浽 <bug-make@gnu.org>¡£\n"
+msgstr "报告错误到 <bug-make@gnu.org>\n"
 
-#: main.c:2466
+#: main.c:2562
 #, fuzzy, c-format
-msgid "the `-%c' option requires a non-empty string argument"
-msgstr "¡°-%c¡±Ñ¡ÏîÐèÒªÕýÕûÊý²ÎÊý"
+msgid "the `%s%s' option requires a non-empty string argument"
+msgstr "“-%c”选项需要非空字符串参数"
 
-#: main.c:2518
+#: main.c:2617
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
-msgstr "¡°-%c¡±Ñ¡ÏîÐèÒªÕýÕûÊý²ÎÊý"
+msgstr "“-%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"
+#: main.c:3054
+#, fuzzy, c-format
+msgid "%sBuilt for %s\n"
 msgstr ""
-
-#: main.c:2948
-#, c-format
-msgid ""
 "\n"
-"%sThis program built for %s\n"
+"%s该程序为 %s 编译\n"
+
+#: main.c:3056
+#, fuzzy, c-format
+msgid "%sBuilt for %s (%s)\n"
 msgstr ""
+"\n"
+"%s该程序为 %s (%s) 编译\n"
 
-#: main.c:2950
+#: main.c:3066
 #, c-format
 msgid ""
-"\n"
-"%sThis program built for %s (%s)\n"
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:2968
+#: main.c:3086
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
+"\n"
+"# make 数据基础,打印在 %s"
 
-#: main.c:2978
+#: main.c:3096
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
+"\n"
+"# 在 %s 上完成 make 数据基础\n"
 
-#: main.c:3101
-#, fuzzy, c-format
+#: main.c:3237
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "Ò»¸öδ֪µÄĿ¼"
+msgstr "%s: 进入一个未知的目录\n"
 
-#: main.c:3103
-#, fuzzy, c-format
+#: main.c:3239
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "Ò»¸öδ֪µÄĿ¼"
+msgstr "%s: 离开一个未知的目录\n"
 
-#: main.c:3106
-#, fuzzy, c-format
+#: main.c:3242
+#, c-format
 msgid "%s: Entering directory `%s'\n"
-msgstr "Ŀ¼¡°%s¡±\n"
+msgstr "%s: 进入目录“%s”\n"
 
-#: main.c:3109
-#, fuzzy, c-format
+#: main.c:3245
+#, c-format
 msgid "%s: Leaving directory `%s'\n"
-msgstr "Ŀ¼¡°%s¡±\n"
+msgstr "%s: 离开目录“%s”\n"
 
-#: main.c:3114
-#, fuzzy, c-format
+#: main.c:3250
+#, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "Ò»¸öδ֪µÄĿ¼"
+msgstr "%s[%u]: 进入一个未知的目录\n"
 
-#: main.c:3117
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "Ò»¸öδ֪µÄĿ¼"
+msgstr "%s[%u]: 离开一个未知的目录\n"
 
-#: main.c:3121
-#, fuzzy, c-format
+#: main.c:3257
+#, c-format
 msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "Ŀ¼¡°%s¡±\n"
+msgstr "%s[%u]: 进入目录“%s”\n"
 
-#: main.c:3124
-#, fuzzy, c-format
+#: main.c:3260
+#, c-format
 msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "Ŀ¼¡°%s¡±\n"
+msgstr "%s[%u]: 离开目录“%s”\n"
 
-#: misc.c:285
+#: misc.c:316
 msgid ".  Stop.\n"
-msgstr "¡£ Í£Ö¹¡£\n"
+msgstr "。 停止。\n"
 
-#: misc.c:306
+#: misc.c:337
 #, c-format
 msgid "Unknown error %d"
-msgstr "δ֪´íÎó %d"
+msgstr "未知错误 %d"
 
-#: misc.c:316
+#: misc.c:347
 #, c-format
 msgid "%s%s: %s"
-msgstr ""
+msgstr "%s%s: %s"
 
-#: misc.c:324
+#: misc.c:355
 #, c-format
 msgid "%s: %s"
-msgstr ""
+msgstr "%s: %s"
 
-#: misc.c:344 misc.c:359 misc.c:376 read.c:3127
+#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
 msgid "virtual memory exhausted"
-msgstr "ÐéÄâÄÚ´æºÄ¾¡"
+msgstr "虚拟内存耗尽"
 
-#: misc.c:646
+#: misc.c:708
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr ""
+msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n"
 
-#: misc.c:667
-#, fuzzy
+#: misc.c:729
 msgid "Initialized access"
-msgstr "Òѳõʼ»¯"
+msgstr "初始化成功"
 
-#: misc.c:746
+#: misc.c:808
 msgid "User access"
-msgstr ""
+msgstr "用户权限"
 
-#: misc.c:794
+#: misc.c:856
 msgid "Make access"
-msgstr ""
+msgstr "Make 权限"
 
-#: misc.c:828
+#: misc.c:890
 msgid "Child access"
-msgstr ""
+msgstr "子进程 权限"
 
-#: misc.c:892
-#, fuzzy, c-format
+#: misc.c:954
+#, c-format
 msgid "write error: %s"
-msgstr "µ½ %s µÄÖض¨Ïò´íÎóÊä³ö\n"
+msgstr "写错误: %s"
 
-#: misc.c:894
-#, fuzzy
+#: misc.c:956
 msgid "write error"
-msgstr "дÈëÈÎÎñ·þÎñÆ÷"
+msgstr "写错误"
 
-#: read.c:160
+#: read.c:179
 msgid "Reading makefiles...\n"
-msgstr "ÕýÔÚ¶ÁÈë makefiles...\n"
+msgstr "正在读入 makefiles...\n"
 
-#: read.c:315
+#: read.c:333
 #, c-format
 msgid "Reading makefile `%s'"
-msgstr "ÕýÔÚ¶ÁÈë makefile ¡°%s¡±"
+msgstr "正在读入 makefile “%s”"
 
-#: read.c:317
+#: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr ""
+msgstr " (没有缺省目标)"
 
-#: read.c:319
+#: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (ËÑË÷·¾¶)"
+msgstr " (搜索路径)"
 
-#: read.c:321
+#: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr ""
+msgstr " (不用理)"
 
-#: read.c:323
+#: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr ""
+msgstr " (没有 ~ 扩展)"
 
-#: read.c:623
+#: read.c:759
 msgid "invalid syntax in conditional"
-msgstr "Ìõ¼þÖк¬ÓÐÎÞЧÓï·¨"
-
-#: read.c:633
-msgid "extraneous `endef'"
-msgstr "¶àÓڵġ°endef¡±"
-
-#: read.c:645 read.c:673 variable.c:1316
-msgid "empty variable name"
-msgstr "¿Õ±äÁ¿Ãû"
+msgstr "条件中含有无效语法"
 
-#: read.c:662
-msgid "empty `override' directive"
-msgstr "¿Õ¡°override¡±Ö¸Áî"
-
-#: read.c:687
-msgid "invalid `override' directive"
-msgstr "ÎÞЧµÄ¡°override¡±Ö¸Áî"
-
-#: read.c:854
-msgid "commands commence before first target"
-msgstr ""
+#: read.c:891
+#, fuzzy
+msgid "recipe commences before first target"
+msgstr "命令在第一个目标前开始"
 
-#: read.c:905
-msgid "missing rule before commands"
-msgstr "ÃüÁî֮ǰÒÅ©Á˹æÔò"
+#: read.c:940
+#, fuzzy
+msgid "missing rule before recipe"
+msgstr "命令之前遗漏了规则"
 
-#: read.c:992
+#: read.c:1027
 #, c-format
 msgid "missing separator%s"
-msgstr "ÒÅ©·Ö¸ô·û %s"
+msgstr "遗漏分隔符 %s"
 
-#: read.c:994
+#: read.c:1029
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (ÄúµÄÒâ˼ÊÇÓàTAB ´úÌæ 8 ¸ö¿Õ¸ñ£¿)"
+msgstr " (您的意思是用 TAB 代替 8 个空格?)"
 
-#: read.c:1152
+#: read.c:1163
 msgid "missing target pattern"
-msgstr "ÎÞÄ¿±êÆ¥Åä"
+msgstr "无目标匹配"
 
-#: read.c:1154
+#: read.c:1165
 msgid "multiple target patterns"
-msgstr "¶à¸öÄ¿±êÆ¥Åä"
+msgstr "多个目标匹配"
 
-#: read.c:1158
+#: read.c:1169
 #, c-format
 msgid "target pattern contains no `%%'"
-msgstr "Ä¿±êģʽ²»º¬ÓС°%%¡±"
+msgstr "目标模式不含有“%%”"
 
-#: read.c:1286
+#: read.c:1293
 msgid "missing `endif'"
-msgstr "ÒÅ©¡°endif¡±"
+msgstr "遗漏“endif”"
 
-#: read.c:1377
-msgid "Extraneous text after `endef' directive"
-msgstr "¡°endef¡±Ö¸Áîºóº¬Óв»¸Ã³öÏÖµÄÎÄ×Ö"
+#: read.c:1332 read.c:1377 variable.c:1488
+msgid "empty variable name"
+msgstr "空变量名"
+
+#: read.c:1367
+#, fuzzy
+msgid "extraneous text after `define' directive"
+msgstr "“endef”指令后含有不该出现的文字"
 
-#: read.c:1411
+#: read.c:1392
 msgid "missing `endef', unterminated `define'"
-msgstr "ÒÅ©¡°endef¡±£¬Î´ÖÕÖ¹µÄ¡°define¡±"
+msgstr "遗漏“endef”,未终止的“define”"
+
+#: read.c:1420
+#, fuzzy
+msgid "extraneous text after `endef' directive"
+msgstr "“endef”指令后含有不该出现的文字"
 
-#: read.c:1454
+#: read.c:1490
 #, c-format
 msgid "Extraneous text after `%s' directive"
-msgstr "ÔÚ¡°%s¡±Ö¸ÁîÖ®ºóº¬Óв»¸Ã³öÏÖµÄÎÄ×Ö"
+msgstr "在“%s”指令之后含有不该出现的文字"
 
-#: read.c:1463 read.c:1477
+#: read.c:1499 read.c:1513
 #, c-format
 msgid "extraneous `%s'"
-msgstr "²»¸Ã³öÏֵġ°%s¡±"
+msgstr "不该出现的“%s”"
 
-#: read.c:1482
+#: read.c:1518
 msgid "only one `else' per conditional"
-msgstr "ÿ¸öÌõ¼þÖ»ÄÜÓÐÒ»¸ö¡°else¡±"
+msgstr "每个条件只能有一个“else”"
 
-#: read.c:1824
+#: read.c:1797
 msgid "Malformed target-specific variable definition"
-msgstr ""
+msgstr "畸形的针对目标的标量定义"
 
-#: read.c:1886
-msgid "prerequisites cannot be defined in command scripts"
-msgstr ""
+#: read.c:1855
+#, fuzzy
+msgid "prerequisites cannot be defined in recipes"
+msgstr "依赖无法在命令脚本中定义"
 
-#: read.c:1921
+#: read.c:1908
 msgid "mixed implicit and static pattern rules"
-msgstr "»ìºÍµÄÒþº¬ºÍ¾²Ì¬Ä£Ê½¹æÔò"
+msgstr "混和的隐含和静态模式规则"
 
-#: read.c:1924
+#: read.c:1931 read.c:2112
 msgid "mixed implicit and normal rules"
-msgstr "»ìºÍµÄÒþº¬ºÍÆÕͨ¹æÔò"
+msgstr "混和的隐含和普通规则"
 
-#: read.c:1954
+#: read.c:1976
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
-msgstr "Ä¿±ê¡°%s¡±²»Æ¥ÅäÄ¿±êģʽ"
+msgstr "目标“%s”不匹配目标模式"
 
-#: read.c:1973 read.c:2074
+#: read.c:1991 read.c:2036
 #, c-format
 msgid "target file `%s' has both : and :: entries"
-msgstr "Ä¿±êÎļþ¡°%s¡±º¬ÓР: ºÍ :: Á½ÖÖÌõÄ¿"
+msgstr "目标文件“%s”含有 : 和 :: 两种条目"
 
-#: read.c:1979
+#: read.c:1997
 #, c-format
 msgid "target `%s' given more than once in the same rule."
-msgstr "Ä¿±ê¡°%s¡±ÔÚͬһ¸ö¹æÔòÖиø³öÁ˶à´Î¡£"
+msgstr "目标“%s”在同一个规则中给出了多次。"
 
-#: read.c:1988
-#, c-format
-msgid "warning: overriding commands for target `%s'"
-msgstr "¾¯¸æ£º¸²¸Ç¹ØÓÚÄ¿±ê¡°%s¡±µÄÃüÁî"
+#: read.c:2006
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target `%s'"
+msgstr "警告:覆盖关于目标“%s”的命令"
 
-#: read.c:1991
-#, c-format
-msgid "warning: ignoring old commands for target `%s'"
-msgstr "¾¯¸æ£ººöÂÔ¹ØÓÚÄ¿±ê¡°%s¡±µÄ¾ÉÃüÁî"
+#: read.c:2009
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target `%s'"
+msgstr "警告:忽略关于目标“%s”的旧命令"
 
-#: read.c:2575
+#: read.c:2392
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "¾¯¸æ£ºÓöµ½ÁË NUL ×Ö·û£»ºöÂÔÐеÄÊ£Óಿ·Ö"
+msgstr "警告:遇到了 NUL 字符;忽略行的剩余部分"
 
-#: remake.c:229
+#: remake.c:234
 #, c-format
 msgid "Nothing to be done for `%s'."
-msgstr ""
+msgstr "对“%s”无需做任何事。"
 
-#: remake.c:230
+#: remake.c:235
 #, c-format
 msgid "`%s' is up to date."
-msgstr "¡°%s¡±ÊÇ×îеġ£"
+msgstr "“%s”是最新的。"
 
-#: remake.c:297
+#: remake.c:306
 #, c-format
 msgid "Pruning file `%s'.\n"
-msgstr "ÕýÔÚɾ³ýÎļþ¡°%s¡±¡£\n"
+msgstr "正在删除文件“%s”。\n"
 
-#: remake.c:349
+#: remake.c:359
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
-msgstr "%sûÓйæÔò¿ÉÒÔ´´½¨Ä¿±ê¡°%s¡±%s"
+msgstr "%s没有规则可以创建目标“%s”%s"
 
-#: remake.c:351
+#: remake.c:361
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%1$sûÓйæÔò¿ÉÒÔ´´½¨¡°%3$s¡±%4$sÐèÒªµÄÄ¿±ê¡°%2$s¡±"
+msgstr "%1$s没有规则可以创建“%3$s”%4$s需要的目标“%2$s”"
 
-#: remake.c:378
+#: remake.c:413
 #, c-format
 msgid "Considering target file `%s'.\n"
-msgstr "ÕýÔÚ¿¼ÂÇÄ¿±êÎļþ¡°%s¡±¡£\n"
+msgstr "正在考虑目标文件“%s”。\n"
 
-#: remake.c:385
+#: remake.c:420
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "×î½üÒѳ¢ÊÔ¹ý¸üÐÂÎļþ¡°%s¡±²¢Ê§°Ü¡£\n"
+msgstr "最近已尝试过更新文件“%s”并失败。\n"
 
-#: remake.c:400
+#: remake.c:432
 #, c-format
 msgid "File `%s' was considered already.\n"
-msgstr "ÒÑ¿¼ÂǹýÎļþ¡°%s¡±¡£\n"
+msgstr "已考虑过文件“%s”。\n"
 
-#: remake.c:410
+#: remake.c:442
 #, c-format
 msgid "Still updating file `%s'.\n"
-msgstr "ÈÔÈ»ÔÚ¸üÐÂÎļþ¡°%s¡±¡£\n"
+msgstr "仍然在更新文件“%s”。\n"
 
-#: remake.c:413
+#: remake.c:445
 #, c-format
 msgid "Finished updating file `%s'.\n"
-msgstr "¸üÐÂÎļþ¡°%s¡±Íê³É¡£\n"
+msgstr "更新文件“%s”完成。\n"
 
-#: remake.c:434
+#: remake.c:474
 #, c-format
 msgid "File `%s' does not exist.\n"
-msgstr "Îļþ¡°%s¡±²»´æÔÚ¡£\n"
+msgstr "文件“%s”不存在。\n"
 
-#: remake.c:441
+#: remake.c:481
 #, c-format
 msgid ""
 "*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
-msgstr ""
+msgstr "*** 警告: .LOW_RESOLUTION_TIME 文件 `%s' 有一个精细的时间标志"
 
-#: remake.c:454 remake.c:962
+#: remake.c:494 remake.c:1016
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
-msgstr "ÕÒµ½Ò»Ìõ¹ØÓÚ¡°%s¡±µÄÒþº¬¹æÔò¡£\n"
+msgstr "找到一条关于“%s”的隐含规则。\n"
 
-#: remake.c:456 remake.c:964
+#: remake.c:496 remake.c:1018
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
-msgstr "ÕÒ²»µ½¹ØÓÚ¡°%s¡±µÄÒþº¬¹æÔò¡£\n"
+msgstr "找不到关于“%s”的隐含规则。\n"
 
-#: remake.c:462 remake.c:970
-#, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "ʹÓùØÓÚ¡°%s¡±µÄĬÈÏÃüÁî¡£\n"
+#: remake.c:502
+#, fuzzy, c-format
+msgid "Using default recipe for `%s'.\n"
+msgstr "使用关于“%s”的默认命令。\n"
 
-#: remake.c:484 remake.c:996
+#: remake.c:535 remake.c:1057
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "·ÅÆúÑ­»·ÒÀÀµ %s <- %s ¡£"
+msgstr "放弃循环依赖 %s <- %s 。"
 
-#: remake.c:601
+#: remake.c:651
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Ä¿±êÎļþ¡°%s¡±µÄÇ°ÌáÒÑÍê³É¡£\n"
+msgstr "目标文件“%s”的前提已完成。\n"
 
-#: remake.c:607
+#: remake.c:657
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
-msgstr "ÕýÔÚ´´½¨¡°%s¡±µÄÇ°Ìá¡£\n"
+msgstr "正在创建“%s”的前提。\n"
 
-#: remake.c:620
+#: remake.c:670
 #, c-format
 msgid "Giving up on target file `%s'.\n"
-msgstr "·ÅÆúÄ¿±êÎļþ¡°%s¡±¡£\n"
+msgstr "放弃目标文件“%s”。\n"
 
-#: remake.c:625
+#: remake.c:675
 #, c-format
 msgid "Target `%s' not remade because of errors."
-msgstr "ÓÉÓÚ´íÎóÄ¿±ê¡°%s¡±²¢Î´ÖØд´½¨¡£"
+msgstr "由于错误目标“%s”并未重新创建。"
 
-#: remake.c:677
-#, fuzzy, c-format
+#: remake.c:727
+#, c-format
 msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Ç°Ìá¡°%s¡±±ÈÄ¿±ê¡°%s¡±¾É¡£\n"
+msgstr "“%s”是目标“%s”的一个仅用于指定执行顺序(order-only)的前提。\n"
 
-#: remake.c:682
+#: remake.c:732
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "Ä¿±ê¡°%2$s¡±µÄÇ°Ìá¡°%1$s¡±²»´æÔÚ¡£\n"
+msgstr "目标“%2$s”的前提“%1$s”不存在。\n"
 
-#: remake.c:687
+#: remake.c:737
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "Ç°Ìá¡°%s¡±±ÈÄ¿±ê¡°%s¡±Ð¡£\n"
+msgstr "前提“%s”比目标“%s”新。\n"
 
-#: remake.c:690
+#: remake.c:740
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "Ç°Ìá¡°%s¡±±ÈÄ¿±ê¡°%s¡±¾É¡£\n"
+msgstr "前提“%s”比目标“%s”旧。\n"
 
-#: remake.c:708
+#: remake.c:758
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "Ä¿±ê¡°%s¡±ÊÇ˫ðºÅÄ¿±ê²¢ÇÒûÓÐÇ°Ìá¡£\n"
+msgstr "目标“%s”是双冒号目标并且没有前提。\n"
 
-#: remake.c:715
-#, c-format
-msgid "No commands for `%s' and no prerequisites actually changed.\n"
-msgstr "ûÓйØÓÚ¡°%s¡±µÄÃüÁ²¢ÇÒʵ¼ÊÉϸıäÁ˵ÄÇ°Ìá¡£\n"
+#: remake.c:765
+#, fuzzy, c-format
+msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgstr "没有关于“%s”的命令,并且实际上改变了的前提。\n"
 
-#: remake.c:720
+#: remake.c:770
 #, c-format
 msgid "Making `%s' due to always-make flag.\n"
-msgstr ""
+msgstr "由于 always-make 标志所以 make “%s”。\n"
 
-#: remake.c:728
+#: remake.c:778
 #, c-format
 msgid "No need to remake target `%s'"
-msgstr "²»ÐèÒªÖØд´½¨Ä¿±ê¡°%s¡±"
+msgstr "不需要重新创建目标“%s”"
 
-#: remake.c:730
+#: remake.c:780
 #, c-format
 msgid "; using VPATH name `%s'"
-msgstr "£»Ê¹ÓàVPATH Ãû³Æ¡°%s¡±"
+msgstr ";使用 VPATH 名称“%s”"
 
-#: remake.c:750
+#: remake.c:800
 #, c-format
 msgid "Must remake target `%s'.\n"
-msgstr "±ØÐëÖØд´½¨Ä¿±ê¡°%s¡±¡£\n"
+msgstr "必须重新创建目标“%s”。\n"
 
-#: remake.c:756
+#: remake.c:806
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  ºöÂÔ VPATH Ãû³Æ `%s'¡£\n"
+msgstr "  忽略 VPATH 名称 `%s'。\n"
 
-#: remake.c:765
-#, c-format
-msgid "Commands of `%s' are being run.\n"
-msgstr ""
+#: remake.c:815
+#, fuzzy, c-format
+msgid "Recipe of `%s' is being run.\n"
+msgstr "“%s”的命令正在被执行。\n"
 
-#: remake.c:772
+#: remake.c:822
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
-msgstr "ÖØд´½¨Ä¿±êÎļþ¡°%s¡±Ê§°Ü¡£\n"
+msgstr "重新创建目标文件“%s”失败。\n"
 
-#: remake.c:775
+#: remake.c:825
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
-msgstr "ÖØд´½¨Ä¿±êÎļþ¡°%s¡±³É¹¦¡£\n"
+msgstr "重新创建目标文件“%s”成功。\n"
 
-#: remake.c:778
+#: remake.c:828
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Ä¿±êÎļþ¡°%s¡±ÐèÒªÒÔ -q Ñ¡ÏîÖØд´½¨¡£\n"
+msgstr "目标文件“%s”需要以 -q 选项重新创建。\n"
 
-#: remake.c:1306
-#, fuzzy, c-format
+#: remake.c:1024
+#, c-format
+msgid "Using default commands for `%s'.\n"
+msgstr "使用关于“%s”的默认命令。\n"
+
+#: remake.c:1357
+#, c-format
 msgid "Warning: File `%s' has modification time in the future"
-msgstr "*** ¾¯¸æ£ºÎļþ¡°%s¡±µÄÐÞ¸Äʱ¼äÔÚ½«À´ (%s > %s)"
+msgstr "警告:文件“%s”的修改时间在未来"
 
-#: remake.c:1313
+#: remake.c:1370
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %.2g s in the future"
-msgstr "*** ¾¯¸æ£ºÎļþ¡°%s¡±µÄÐÞ¸Äʱ¼äÔÚ½«À´ (%s > %s)"
+msgid "Warning: File `%s' has modification time %s s in the future"
+msgstr "警告:文件“%s”的修改时间在 %.2g 秒后"
 
-#: remake.c:1511
+#: remake.c:1569
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr ".LIBPATTERNS µÄÔªËØ¡°%s¡±²»ÊÇÒ»¸öģʽ"
+msgstr ".LIBPATTERNS 的元素“%s”不是一个模式"
 
 #: remote-cstms.c:125
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "Óû§²»Ï£Íûµ¼³ö£º%s\n"
+msgstr "用户不希望导出:%s\n"
 
-#: rule.c:548
-#, fuzzy
+#: rule.c:499
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Ã»ÓÐÒþº¬¹æÔò¡£"
+"# 隐含规则。"
 
-#: rule.c:563
+#: rule.c:514
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# Ã»ÓÐÒþº¬¹æÔò¡£"
+"# 没有隐含规则。"
 
-#: rule.c:566
+#: rule.c:517
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 "\n"
-"# %u ÌõÒþº¬¹æÔò£¬%u"
+"# %u 条隐含规则,%u"
 
-#: rule.c:575
+#: rule.c:526
 msgid " terminal."
-msgstr " Öնˡ£"
+msgstr " 终端。"
 
-#: rule.c:583
-#, c-format
-msgid "BUG: num_pattern_rules wrong!  %u != %u"
-msgstr "´íÎó£ºnum_pattern_rules ³ö´í£¡%u != %u"
+#: rule.c:534
+#, fuzzy, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "错误:num_pattern_rules 出错!%u != %u"
 
-#: signame.c:85
+#: signame.c:86
 msgid "unknown signal"
-msgstr "δ֪µÄÐźÅ"
+msgstr "未知的信号"
 
-#: signame.c:93
+#: signame.c:94
 msgid "Hangup"
-msgstr "¹ÒÆð"
+msgstr "挂起"
 
-#: signame.c:96
+#: signame.c:97
 msgid "Interrupt"
-msgstr "ÖжÏ"
+msgstr "中断"
 
-#: signame.c:99
+#: signame.c:100
 msgid "Quit"
-msgstr "Í˳ö"
+msgstr "退出"
 
-#: signame.c:102
+#: signame.c:103
 msgid "Illegal Instruction"
-msgstr "·Ç·¨Ö¸Áî"
+msgstr "非法指令"
 
-#: signame.c:105
+#: signame.c:106
 msgid "Trace/breakpoint trap"
-msgstr "¸ú×Ù/¶ÏµãÏÝÚå"
+msgstr "跟踪/断点陷阱"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Aborted"
-msgstr "ÒÑʧ°Ü"
+msgstr "已失败"
 
-#: signame.c:113
+#: signame.c:114
 msgid "IOT trap"
-msgstr "IOT ÏÝÚå"
+msgstr "IOT 陷阱"
 
-#: signame.c:116
+#: signame.c:117
 msgid "EMT trap"
-msgstr "EMT ÏÝÚå"
+msgstr "EMT 陷阱"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Floating point exception"
-msgstr "¸¡µãÊýÒì³£"
+msgstr "浮点数异常"
 
-#: signame.c:122
+#: signame.c:123
 msgid "Killed"
-msgstr "ÒÑɱËÀ"
+msgstr "已杀死"
 
-#: signame.c:125
+#: signame.c:126
 msgid "Bus error"
-msgstr "×ÜÏß´íÎó"
+msgstr "总线错误"
 
-#: signame.c:128
+#: signame.c:129
 msgid "Segmentation fault"
-msgstr "¶Î´íÎó"
+msgstr "段错误"
 
-#: signame.c:131
+#: signame.c:132
 msgid "Bad system call"
-msgstr "´íÎóµÄϵͳµ÷ÓÃ"
+msgstr "错误的系统调用"
 
-#: signame.c:134
+#: signame.c:135
 msgid "Broken pipe"
-msgstr "¶Ï¿ªµÄ¹ÜµÀ"
+msgstr "断开的管道"
 
-#: signame.c:137
+#: signame.c:138
 msgid "Alarm clock"
-msgstr "ÄÖÖÓ"
+msgstr "闹钟"
 
-#: signame.c:140
+#: signame.c:141
 msgid "Terminated"
-msgstr "ÒÑÖÕÖ¹"
+msgstr "已终止"
 
-#: signame.c:143
+#: signame.c:144
 msgid "User defined signal 1"
-msgstr "Óû§¶¨ÒåÐźŠ1"
+msgstr "用户定义信号 1"
 
-#: signame.c:146
+#: signame.c:147
 msgid "User defined signal 2"
-msgstr "Óû§¶¨ÒåÐźŠ2"
+msgstr "用户定义信号 2"
 
-#: signame.c:151 signame.c:154
+#: signame.c:152 signame.c:155
 msgid "Child exited"
-msgstr "×Ó½ø³ÌÒÑÍ˳ö"
+msgstr "子进程已退出"
 
-#: signame.c:157
+#: signame.c:158
 msgid "Power failure"
-msgstr "µçԴʧЧ"
+msgstr "电源失效"
 
-#: signame.c:160
+#: signame.c:161
 msgid "Stopped"
-msgstr "ÒÑÍ£Ö¹"
+msgstr "已停止"
 
-#: signame.c:163
+#: signame.c:164
 msgid "Stopped (tty input)"
-msgstr "ÒÑÍ£Ö¹ (tty ÊäÈë)"
+msgstr "已停止 (tty 输入)"
 
-#: signame.c:166
+#: signame.c:167
 msgid "Stopped (tty output)"
-msgstr "ÒÑÍ£Ö¹ (tty Êä³ö)"
+msgstr "已停止 (tty 输出)"
 
-#: signame.c:169
+#: signame.c:170
 msgid "Stopped (signal)"
-msgstr "ÒÑÍ£Ö¹ (ÐźÅ)"
+msgstr "已停止 (信号)"
 
-#: signame.c:172
+#: signame.c:173
 msgid "CPU time limit exceeded"
-msgstr "CPU Ê±¼ä³¬³öÏÞÖÆ"
+msgstr "CPU 时间超出限制"
 
-#: signame.c:175
+#: signame.c:176
 msgid "File size limit exceeded"
-msgstr "Îļþ´óС³¬³öÏÞÖÆ"
+msgstr "文件大小超出限制"
 
-#: signame.c:178
+#: signame.c:179
 msgid "Virtual timer expired"
-msgstr "ÐéÄâʱÖÓ³¬Ê±"
+msgstr "虚拟时钟超时"
 
-#: signame.c:181
+#: signame.c:182
 msgid "Profiling timer expired"
-msgstr ""
+msgstr "测试时钟超市"
 
-#: signame.c:187
+#: signame.c:188
 msgid "Window changed"
-msgstr "´°¿ÚÒѸıä"
+msgstr "窗口已改变"
 
-#: signame.c:190
+#: signame.c:191
 msgid "Continued"
-msgstr ""
+msgstr "继续"
 
-#: signame.c:193
+#: signame.c:194
 msgid "Urgent I/O condition"
-msgstr ""
+msgstr "紧急 I/O 条件"
 
-#: signame.c:200 signame.c:209
+#: signame.c:201 signame.c:210
 msgid "I/O possible"
-msgstr ""
+msgstr "I/O 可行"
 
-#: signame.c:203
+#: signame.c:204
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:206
+#: signame.c:207
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:212
+#: signame.c:213
 msgid "Resource lost"
-msgstr "×ÊÔ´¶ªÊ§"
+msgstr "资源丢失"
 
-#: signame.c:215
+#: signame.c:216
 msgid "Danger signal"
-msgstr "ΣÏÕÐźÅ"
+msgstr "危险信号"
 
-#: signame.c:218
+#: signame.c:219
 msgid "Information request"
-msgstr "ÐÅÏ¢ÇëÇó"
+msgstr "信息请求"
 
-#: signame.c:221
+#: signame.c:222
 msgid "Floating point co-processor not available"
-msgstr "¸¡µãÊýЭ´¦ÀíÆ÷²»¿ÉÓÃ"
+msgstr "浮点数协处理器不可用"
 
-#: strcache.c:210
-#, c-format
+#: strcache.c:235
+#, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d\n"
+"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
 msgstr ""
+"\n"
+"%s strcache 中的字符串数量: %d\n"
 
-#: strcache.c:211
-#, c-format
-msgid "%s # of strcache buffers: %d\n"
-msgstr ""
+#: strcache.c:237
+#, fuzzy, c-format
+msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgstr "%s strcache 缓冲区数量: %d\n"
 
-#: strcache.c:212
-#, c-format
-msgid "%s strcache size: total = %d / max = %d / min = %d / avg = %d\n"
-msgstr ""
+#: strcache.c:239
+#, fuzzy, c-format
+msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache 大小: 总共 = %d / 最大 = %d / 最小 = %d / 平均 = %d\n"
 
-#: strcache.c:214
-#, c-format
-msgid "%s strcache free: total = %d / max = %d / min = %d / avg = %d\n"
+#: strcache.c:241
+#, fuzzy, c-format
+msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgstr "%s strcache 剩余: 总共 = %d / 最大 = %d / 最小 = %d / 平均 = %d\n"
+
+#: strcache.c:244
+#, fuzzy
+msgid ""
+"\n"
+"# strcache hash-table stats:\n"
+"# "
 msgstr ""
+"\n"
+"# 文件杂凑表状态:\n"
+"# "
 
-#: variable.c:1369
+#: variable.c:1541
 msgid "default"
-msgstr "ĬÈÏ"
+msgstr "默认"
 
-#: variable.c:1372
+#: variable.c:1544
 msgid "environment"
-msgstr "»·¾³"
+msgstr "环境"
 
-#: variable.c:1375
+#: variable.c:1547
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1378
+#: variable.c:1550
 msgid "environment under -e"
-msgstr ""
+msgstr "-e 指定的环境变量"
 
-#: variable.c:1381
+#: variable.c:1553
 msgid "command line"
-msgstr "ÃüÁîÐÐ"
+msgstr "命令行"
 
-#: variable.c:1384
+#: variable.c:1556
 msgid "`override' directive"
-msgstr "¡°override¡±Ö¸Áî"
+msgstr "“override”指令"
 
-#: variable.c:1387
+#: variable.c:1559
 msgid "automatic"
-msgstr "×Ô¶¯"
+msgstr "自动"
 
-#: variable.c:1396
-#, fuzzy, c-format
+#: variable.c:1570
+#, c-format
 msgid " (from `%s', line %lu)"
-msgstr " (´Ó¡°%s¡±£¬ÐР%lu)£º\n"
+msgstr " (从“%s”,行 %lu)"
 
-#: variable.c:1438
-#, fuzzy
+#: variable.c:1612
 msgid "# variable set hash-table stats:\n"
-msgstr "# ¹²ÓР%u ¸ö±äÁ¿´æ´¢ÓÚ %u ¸öÔÓ´Õµ¥ÔªÖС£\n"
+msgstr "# 变量的杂凑表状态:\n"
 
-#: variable.c:1449
+#: variable.c:1623
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 "\n"
-"# ±äÁ¿\n"
+"# 变量\n"
 
-#: variable.c:1453
-#, fuzzy
+#: variable.c:1627
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Pattern-specific ±äÁ¿µÄÖµ"
+"# Pattern-specific 变量值"
 
-#: variable.c:1467
+#: variable.c:1641
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Ã»ÓРpattern-specific ±äÁ¿µÄÖµ¡£"
+"# 没有 pattern-specific 变量的值。"
 
-#: variable.c:1469
+#: variable.c:1643
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u ¸ö pattern-specific ±äÁ¿µÄÖµ"
+"# %u 个 pattern-specific 变量的值"
 
-#: variable.h:189
+#: variable.h:219
 #, c-format
 msgid "warning: undefined variable `%.*s'"
-msgstr "¾¯¸æ£ºÎ´¶¨ÒåµÄ±äÁ¿¡°%.*s¡±"
+msgstr "警告:未定义的变量“%.*s”"
 
-#: vmsfunctions.c:94
-#, c-format
-msgid "sys$search failed with %d\n"
-msgstr "sys$search Ê§°Ü²¢·µ»Ø %d\n"
+#: vmsfunctions.c:92
+#, fuzzy, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search 失败并返回 %d\n"
 
 #: vmsjobs.c:71
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "¾¯¸æ£º¿ÕµÄÖض¨Ïò\n"
+msgstr "警告:空的重定向\n"
 
-#: vmsjobs.c:175
+#: vmsjobs.c:184
 #, c-format
 msgid "internal error: `%s' command_state"
-msgstr "ÄÚ²¿´íÎ󣺡°%s¡± command_state"
+msgstr "内部错误:“%s” command_state"
 
-#: vmsjobs.c:268
-#, c-format
-msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-msgstr ""
-
-#: vmsjobs.c:284
+#: vmsjobs.c:289
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
-msgstr ""
+msgstr "-警告, 你可能必须从 DCL 重新启用 CTRL-Y。\n"
 
-#: vmsjobs.c:407
+#: vmsjobs.c:421
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr ""
+msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:418
+#: vmsjobs.c:432
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr ""
+msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:436
+#: vmsjobs.c:450
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr ""
+msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:457
+#: vmsjobs.c:471
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "δ֪µÄÄÚÖÃÃüÁî¡°%s¡±\n"
+msgstr "未知的内置命令“%s”\n"
 
-#: vmsjobs.c:479
+#: vmsjobs.c:493
 #, c-format
 msgid "Error, empty command\n"
-msgstr "´íÎ󣬿ÕÃüÁî\n"
+msgstr "错误,空命令\n"
 
-#: vmsjobs.c:491
+#: vmsjobs.c:506
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "À´×Ô %s µÄÖض¨ÏòÊäÈë\n"
+msgstr "来自 %s 的重定向输入\n"
 
-#: vmsjobs.c:498
+#: vmsjobs.c:513
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "µ½ %s µÄÖض¨Ïò´íÎóÊä³ö\n"
+msgstr "到 %s 的重定向错误输出\n"
 
-#: vmsjobs.c:505
+#: vmsjobs.c:523
+#, fuzzy, c-format
+msgid "Append output to %s\n"
+msgstr "到 %s 的重定向输出\n"
+
+#: vmsjobs.c:529
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "µ½ %s µÄÖض¨ÏòÊä³ö\n"
+msgstr "到 %s 的重定向输出\n"
+
+#: vmsjobs.c:599
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr ""
 
-#: vmsjobs.c:568
+#: vmsjobs.c:606
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "Ö´ÐР%s ×÷ΪÌæ´ú\n"
+msgstr "执行 %s 作为替代\n"
 
-#: vmsjobs.c:668
+#: vmsjobs.c:712
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr ""
+msgstr "错误产生,%d\n"
 
-#: vpath.c:571
+#: vpath.c:586
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# VPATH ËÑË÷·¾¶\n"
+"# VPATH 搜索路径\n"
 
-#: vpath.c:588
+#: vpath.c:603
 msgid "# No `vpath' search paths."
-msgstr "# Ã»ÓС°vpath¡±ËÑË÷·¾¶¡£"
+msgstr "# 没有“vpath”搜索路径。"
 
-#: vpath.c:590
+#: vpath.c:605
 #, c-format
 msgid ""
 "\n"
 "# %u `vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u ¡°vpath¡±ËÑË÷·¾¶¡£\n"
+"# %u “vpath”搜索路径。\n"
 
-#: vpath.c:593
+#: vpath.c:608
 msgid ""
 "\n"
 "# No general (`VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Ã»ÓÐͨÓÃËÑË÷·¾¶(¡°VPATH¡±±äÁ¿)¡£"
+"# 没有通用搜索路径(“VPATH”变量)。"
 
-#: vpath.c:599
+#: vpath.c:614
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Í¨ÓÃËÑË÷·¾¶(¡°VPATH¡±±äÁ¿)£º\n"
+"# 通用搜索路径(“VPATH”变量):\n"
 "# "
 
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() 启动进程失败 (e=%ld)\n"
+
+#~ 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 ""
+#~ "%s该程序为自由软件,详情可参阅版权条款。在法律允许的范围内\n"
+#~ "%s我们不作任何担保,这包含但不限于任何商业适售性以及针对特\n"
+#~ "%s定目的的适用性的担保。\n"
+
+#~ msgid "extraneous `endef'"
+#~ msgstr "多于的“endef”"
+
+#~ msgid "empty `override' directive"
+#~ msgstr "空“override”指令"
+
+#~ msgid "invalid `override' directive"
+#~ msgstr "无效的“override”指令"
+
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-警告, CTRL-Y 将利刀子进程环境。\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "# No files."
 #~ msgstr ""
 #~ "\n"
-#~ "# ÎÞÎļþ¡£"
+#~ "# 无文件。"
 
 #~ msgid ""
 #~ "\n"
 #~ "# %u files in %u hash buckets.\n"
 #~ msgstr ""
 #~ "\n"
-#~ "# ÓР%u ¸öÎļþ´æ´¢ÔÚ %u ¸öÔÓ´Õµ¥ÔªÖС£\n"
+#~ "# 有 %u 个文件存储在 %u 个杂凑单元中。\n"
 
 #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr "# Ã¿¸öµ¥ÔªÆ½¾ùº¬ÓР%.3f ¸öÎļþ£¬Ò»¸öµ¥Ôª×î¶àº¬ÓР%u ¸öÎļþ¡£\n"
+#~ msgstr "# 每个单元平均含有 %.3f 个文件,一个单元最多含有 %u 个文件。\n"
 
 #~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Óï·¨´íÎó£¬ÈÔÈ»ÔÚ¡°\"¡±Ö®ÖÐ\n"
+#~ msgstr "语法错误,仍然在“\"”之中\n"
 
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "ÊÕµ½ SIGCHLD Ðźţ»ÉÐÓР%u ¸ö×Ó½ø³Ì´æÔÚ¡£\n"
+#~ msgstr "收到 SIGCHLD 信号;尚有 %u 个子进程存在。\n"
 
 #~ msgid "DIRECTORY"
 #~ msgstr "DIRECTORY"
 
 #~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "ÔÚ×öÈκÎÊÂ֮ǰתÒƵ½ DIRECTORY ÖÐ"
+#~ msgstr "在做任何事之前转移到 DIRECTORY 中"
 
 #~ msgid "FLAGS"
-#~ msgstr "±êÖ¾"
+#~ msgstr "标志"
 
 #~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "¹ÒÆð½ø³ÌÒÔ±ãµ÷ÊÔÆ÷½øÐÐÁ¬½Ó"
+#~ msgstr "挂起进程以便调试器进行连接"
 
 #~ msgid "Environment variables override makefiles"
-#~ msgstr "»·¾³±äÁ¿¸²¸Ç makefile"
+#~ msgstr "环境变量覆盖 makefile"
 
 #~ msgid "FILE"
 #~ msgstr "FILE"
 
 #~ msgid "Read FILE as a makefile"
-#~ msgstr "½« FILE ×÷Ϊ makefile ¶ÁÈë"
+#~ msgstr "将 FILE 作为 makefile 读入"
 
 #~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "ÔÚ DIRECTORY ÖÐËÑË÷ÒýÈëµÄ makefile"
+#~ msgstr "在 DIRECTORY 中搜索引入的 makefile"
 
 #~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "³ý·Ç¸ºÔصÍÓÚ N ·ñÔò¾Í²»Æô¶¯¶à¸öÈÎÎñ"
+#~ msgstr "除非负载低于 N 否则就不启动多个任务"
 
 #~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "²»»áʵ¼ÊÔËÐÐÈκÎÃüÁֻÊÇ´òÓ¡ËüÃÇ"
+#~ msgstr "不会实际运行任何命令;只是打印它们"
 
 #~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "½« FILE È϶¨Îª¹ýÓڳ¾ɶø²»ÖØÏÖ´´½¨Ëü"
+#~ msgstr "将 FILE 认定为过于陈旧而不重现创建它"
 
 #~ msgid "Don't echo commands"
-#~ msgstr "²»Òª»ØÏÔÃüÁî"
+#~ msgstr "不要回显命令"
 
 #~ msgid "Turns off -k"
-#~ msgstr "¹Ø±Õ -k"
+#~ msgstr "关闭 -k"
 
 #~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "½« FILE ¿´×öÎÞÏÞÐÂ"
+#~ msgstr "将 FILE 看做无限新"
 
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Èç¹û sh.exe ²»¿ÉÓ㬾Ͳ»Òª¸ø³ö -j »ò --jobs¡£"
+#~ msgstr "如果 sh.exe 不可用,就不要给出 -j 或 --jobs。"
 
 #~ msgid "Resetting make for single job mode."
-#~ msgstr "½« make ÖØÖÃΪµ¥ÈÎÎñģʽ¡£"
+#~ msgstr "将 make 重置为单任务模式。"
 
 #~ msgid "Entering"
-#~ msgstr "ÕýÔÚ½øÈë"
+#~ msgstr "正在进入"
 
 #~ msgid "Leaving"
-#~ msgstr "ÕýÔÚÀ뿪"
+#~ msgstr "正在离开"
 
 #~ msgid "no file name for `%sinclude'"
-#~ msgstr "¡°%sinclude¡± Ã»ÓÐÎļþÃû"
+#~ msgstr "“%sinclude” 没有文件名"
 
 #~ msgid "# No variables."
-#~ msgstr "# Ã»ÓбäÁ¿¡£"
+#~ msgstr "# 没有变量。"
 
 #~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# Ã¿¸öÔÓ´Õµ¥ÔªÆ½¾ù´æ´¢ %.1f ¸ö±äÁ¿£¬Ò»¸öµ¥Ôª×î¶à´æ´¢ %u ¸ö¡£\n"
+#~ msgstr "# 每个杂凑单元平均存储 %.1f 个变量,一个单元最多存储 %u 个。\n"
 
 #~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# Ã¿¸öÔÓ´Õµ¥ÔªÆ½¾ù´æ´¢ %d.%d ¸ö±äÁ¿£¬Ò»¸öµ¥Ôª×î¶à´æ´¢ %u ¸ö¡£\n"
+#~ msgstr "# 每个杂凑单元平均存储 %d.%d 个变量,一个单元最多存储 %u 个。\n"
diff --git a/read.c b/read.c
index f6e8986..a3ad88e 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1,20 +1,20 @@
 /* Reading and parsing of makefiles 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -37,7 +37,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #ifndef VMS
 #include <pwd.h>
 #else
-struct passwd *getpwnam PARAMS ((char *name));
+struct passwd *getpwnam (char *name);
 #endif
 #endif
 #endif /* !WINDOWS32 */
@@ -56,6 +56,18 @@ struct ebuffer
     struct floc floc;   /* Info on the file in fp (if any).  */
   };
 
+/* Track the modifiers we can have on variable assignments */
+
+struct vmodifiers
+  {
+    unsigned int assign_v:1;
+    unsigned int define_v:1;
+    unsigned int undefine_v:1;
+    unsigned int export_v:1;
+    unsigned int override_v:1;
+    unsigned int private_v:1;
+  };
+
 /* Types of "words" that can be read in a makefile.  */
 enum make_word_type
   {
@@ -88,14 +100,12 @@ static struct conditionals *conditionals = &toplevel_conditionals;
 
 /* Default directories to search for include files in  */
 
-static char *default_include_directories[] =
+static const char *default_include_directories[] =
   {
 #if defined(WINDOWS32) && !defined(INCLUDEDIR)
-/*
- * This completely up to the user when they install MSVC or other packages.
- * This is defined as a placeholder.
- */
-#define INCLUDEDIR "."
+/* This completely up to the user when they install MSVC or other packages.
+   This is defined as a placeholder.  */
+# define INCLUDEDIR "."
 #endif
     INCLUDEDIR,
 #ifndef _AMIGA
@@ -108,7 +118,7 @@ static char *default_include_directories[] =
 
 /* List of directories to search for include files in  */
 
-static char **include_directories;
+static const char **include_directories;
 
 /* Maximum length of an element of the above.  */
 
@@ -123,39 +133,48 @@ const struct floc *reading_file = 0;
 
 static struct dep *read_makefiles = 0;
 
-static int eval_makefile PARAMS ((char *filename, int flags));
-static int eval PARAMS ((struct ebuffer *buffer, int flags));
-
-static long readline PARAMS ((struct ebuffer *ebuf));
-static void do_define PARAMS ((char *name, unsigned int namelen,
+static int eval_makefile (const char *filename, int flags);
+static void eval (struct ebuffer *buffer, int flags);
+
+static long readline (struct ebuffer *ebuf);
+static void do_undefine (char *name, enum variable_origin origin,
+                         struct ebuffer *ebuf);
+static struct variable *do_define (char *name, enum variable_origin origin,
+                                   struct ebuffer *ebuf);
+static int conditional_line (char *line, int len, const struct floc *flocp);
+static void record_files (struct nameseq *filenames, const char *pattern,
+                          const char *pattern_percent, char *depstr,
+                          unsigned int cmds_started, char *commands,
+                          unsigned int commands_idx, int two_colon,
+                          const struct floc *flocp);
+static void record_target_var (struct nameseq *filenames, char *defn,
                                enum variable_origin origin,
-                               struct ebuffer *ebuf));
-static int conditional_line PARAMS ((char *line, int len, const struct floc *flocp));
-static void record_files PARAMS ((struct nameseq *filenames, char *pattern, char *pattern_percent,
-                       struct dep *deps, unsigned int cmds_started, char *commands,
-                       unsigned int commands_idx, int two_colon,
-                        const struct floc *flocp));
-static void record_target_var PARAMS ((struct nameseq *filenames, char *defn,
-                                       enum variable_origin origin,
-                                       int enabled,
-                                       const struct floc *flocp));
-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));
+                               struct vmodifiers *vmod,
+                               const struct floc *flocp);
+static enum make_word_type get_next_mword (char *buffer, char *delim,
+                                           char **startp, unsigned int *length);
+static void remove_comments (char *line);
+static char *find_char_unquote (char *string, int stop1, int stop2,
+                                int blank, int ignorevars);
+
+
+/* Compare a word, both length and contents.
+   P must point to the word to be tested, and WLEN must be the length.
+*/
+#define        word1eq(s)      (wlen == sizeof(s)-1 && strneq (s, p, sizeof(s)-1))
+
 \f
 /* Read in all the makefiles and return the chain of their names.  */
 
 struct dep *
-read_all_makefiles (char **makefiles)
+read_all_makefiles (const char **makefiles)
 {
   unsigned int num_makefiles = 0;
 
   /* Create *_LIST variables, to hold the makefiles, targets, and variables
      we will be reading. */
 
-  define_variable ("MAKEFILE_LIST", sizeof ("MAKEFILE_LIST")-1, "", o_file, 0);
+  define_variable_cname ("MAKEFILE_LIST", "", o_file, 0);
 
   DB (DB_BASIC, (_("Reading makefiles...\n")));
 
@@ -182,7 +201,7 @@ read_all_makefiles (char **makefiles)
        MAKEFILES is updated for finding remaining tokens.  */
     p = value;
 
-    while ((name = find_next_token (&p, &length)) != 0)
+    while ((name = find_next_token ((const char **)&p, &length)) != 0)
       {
        if (*p != '\0')
          *p++ = '\0';
@@ -249,8 +268,8 @@ read_all_makefiles (char **makefiles)
          for (p = default_makefiles; *p != 0; ++p)
            {
              struct dep *d = alloc_dep ();
-             d->file = enter_file (*p);
-             d->file->dontcare = 1;
+             d->file = enter_file (strcache_add (*p));
+             d->dontcare = 1;
              /* 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.  */
              d->changed = RM_DONTCARE;
@@ -275,7 +294,7 @@ install_conditionals (struct conditionals *new)
 {
   struct conditionals *save = conditionals;
 
-  bzero ((char *) new, sizeof (*new));
+  memset (new, '\0', sizeof (*new));
   conditionals = new;
 
   return save;
@@ -297,17 +316,16 @@ restore_conditionals (struct conditionals *saved)
 }
 \f
 static int
-eval_makefile (char *filename, int flags)
+eval_makefile (const char *filename, int flags)
 {
   struct dep *deps;
   struct ebuffer ebuf;
   const struct floc *curfile;
   char *expanded = 0;
-  char *included = 0;
   int makefile_errno;
-  int r;
 
-  ebuf.floc.filenm = strcache_add (filename);
+  filename = strcache_add (filename);
+  ebuf.floc.filenm = filename;
   ebuf.floc.lineno = 1;
 
   if (ISDB (DB_VERBOSE))
@@ -344,21 +362,18 @@ eval_makefile (char *filename, int flags)
      search the included makefile search path for this makefile.  */
   if (ebuf.fp == 0 && (flags & RM_INCLUDED) && *filename != '/')
     {
-      register unsigned int i;
+      unsigned int i;
       for (i = 0; include_directories[i] != 0; ++i)
        {
-         included = concat (include_directories[i], "/", filename);
+         const char *included = concat (3, include_directories[i],
+                                         "/", filename);
          ebuf.fp = fopen (included, "r");
          if (ebuf.fp)
            {
-             filename = included;
+             filename = strcache_add (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.  */
@@ -367,16 +382,14 @@ eval_makefile (char *filename, int flags)
   read_makefiles = deps;
   deps->file = lookup_file (filename);
   if (deps->file == 0)
-    deps->file = enter_file (xstrdup (filename));
+    deps->file = enter_file (filename);
   filename = deps->file->name;
   deps->changed = flags;
   if (flags & RM_DONTCARE)
-    deps->file->dontcare = 1;
+    deps->dontcare = 1;
 
   if (expanded)
     free (expanded);
-  if (included)
-    free (included);
 
   /* If the makefile can't be found at all, give up entirely.  */
 
@@ -389,6 +402,12 @@ eval_makefile (char *filename, int flags)
       return 0;
     }
 
+  /* Set close-on-exec to avoid leaking the makefile to children, such as
+     $(shell ...).  */
+#ifdef HAVE_FILENO
+  CLOSE_ON_EXEC (fileno (ebuf.fp));
+#endif
+
   /* Add this makefile to the list. */
   do_variable_definition (&ebuf.floc, "MAKEFILE_LIST", filename, o_file,
                           f_append, 0);
@@ -401,7 +420,7 @@ eval_makefile (char *filename, int flags)
   curfile = reading_file;
   reading_file = &ebuf.floc;
 
-  r = eval (&ebuf, !(flags & RM_NO_DEFAULT_GOAL));
+  eval (&ebuf, !(flags & RM_NO_DEFAULT_GOAL));
 
   reading_file = curfile;
 
@@ -409,17 +428,17 @@ eval_makefile (char *filename, int flags)
 
   free (ebuf.bufstart);
   alloca (0);
-  return r;
+
+  return 1;
 }
 
-int
+void
 eval_buffer (char *buffer)
 {
   struct ebuffer ebuf;
   struct conditionals *saved;
   struct conditionals new;
   const struct floc *curfile;
-  int r;
 
   /* Evaluate the buffer */
 
@@ -427,30 +446,105 @@ eval_buffer (char *buffer)
   ebuf.buffer = ebuf.bufnext = ebuf.bufstart = buffer;
   ebuf.fp = NULL;
 
-  ebuf.floc = *reading_file;
+  if (reading_file)
+    ebuf.floc = *reading_file;
+  else
+    ebuf.floc.filenm = NULL;
 
   curfile = reading_file;
   reading_file = &ebuf.floc;
 
   saved = install_conditionals (&new);
 
-  r = eval (&ebuf, 1);
+  eval (&ebuf, 1);
 
   restore_conditionals (saved);
 
   reading_file = curfile;
 
   alloca (0);
-  return r;
 }
+\f
+/* Check LINE to see if it's a variable assignment or undefine.
+
+   It might use one of the modifiers "export", "override", "private", or it
+   might be one of the conditional tokens like "ifdef", "include", etc.
+
+   If it's not a variable assignment or undefine, VMOD.V_ASSIGN is 0.
+   Returns LINE.
+
+   Returns a pointer to the first non-modifier character, and sets VMOD
+   based on the modifiers found if any, plus V_ASSIGN is 1.
+ */
+static char *
+parse_var_assignment (const char *line, struct vmodifiers *vmod)
+{
+  const char *p;
+  memset (vmod, '\0', sizeof (*vmod));
+
+  /* Find the start of the next token.  If there isn't one we're done.  */
+  line = next_token (line);
+  if (*line == '\0')
+    return (char *)line;
+
+  p = line;
+  while (1)
+    {
+      int wlen;
+      const char *p2;
+      enum variable_flavor flavor;
+
+      p2 = parse_variable_definition (p, &flavor);
+
+      /* If this is a variable assignment, we're done.  */
+      if (p2)
+        break;
+
+      /* It's not a variable; see if it's a modifier.  */
+      p2 = end_of_token (p);
+      wlen = p2 - p;
+
+      if (word1eq ("export"))
+        vmod->export_v = 1;
+      else if (word1eq ("override"))
+        vmod->override_v = 1;
+      else if (word1eq ("private"))
+        vmod->private_v = 1;
+      else if (word1eq ("define"))
+        {
+          /* We can't have modifiers after 'define' */
+          vmod->define_v = 1;
+          p = next_token (p2);
+          break;
+        }
+      else if (word1eq ("undefine"))
+        {
+          /* We can't have modifiers after 'undefine' */
+          vmod->undefine_v = 1;
+          p = next_token (p2);
+          break;
+        }
+      else
+        /* Not a variable or modifier: this is not a variable assignment.  */
+        return (char *)line;
 
+      /* It was a modifier.  Try the next word.  */
+      p = next_token (p2);
+      if (*p == '\0')
+        return (char *)line;
+    }
+
+  /* Found a variable assignment or undefine.  */
+  vmod->assign_v = 1;
+  return (char *)p;
+}
 \f
+
 /* Read file FILENAME as a makefile and add its contents to the data base.
 
    SET_DEFAULT is true if we are allowed to set the default goal.  */
 
-
-static int
+static void
 eval (struct ebuffer *ebuf, int set_default)
 {
   char *collapsed = 0;
@@ -462,27 +556,28 @@ eval (struct ebuffer *ebuf, int set_default)
   int ignoring = 0, in_ignored_define = 0;
   int no_targets = 0;          /* Set when reading a rule without targets.  */
   struct nameseq *filenames = 0;
-  struct dep *deps = 0;
+  char *depstr = 0;
   long nlines = 0;
   int two_colon = 0;
-  char *pattern = 0, *pattern_percent;
+  const char *pattern = 0;
+  const char *pattern_percent;
   struct floc *fstart;
   struct floc fi;
 
 #define record_waiting_files()                                               \
   do                                                                         \
-    {                                                                        \
+    {                                                                        \
       if (filenames != 0)                                                    \
         {                                                                     \
          fi.lineno = tgts_started;                                           \
-         record_files (filenames, pattern, pattern_percent, deps,            \
+         record_files (filenames, pattern, pattern_percent, depstr,          \
                         cmds_started, commands, commands_idx, two_colon,      \
                         &fi);                                                 \
+          filenames = 0;                                                     \
         }                                                                     \
-      filenames = 0;                                                         \
       commands_idx = 0;                                                              \
       no_targets = 0;                                                         \
-      if (pattern) { free(pattern); pattern = 0; }                            \
+      pattern = 0;                                                            \
     } while (0)
 
   pattern_percent = 0;
@@ -507,10 +602,12 @@ eval (struct ebuffer *ebuf, int set_default)
     {
       unsigned int linelen;
       char *line;
-      int len;
+      unsigned int wlen;
       char *p;
       char *p2;
+      struct vmodifiers vmod;
 
+      /* At the top of this loop, we are starting a brand new line.  */
       /* Grab the next line to be evaluated */
       ebuf->floc.lineno += nlines;
       nlines = readline (ebuf);
@@ -528,14 +625,14 @@ eval (struct ebuffer *ebuf, int set_default)
 
       /* Check for a shell command line first.
         If it is not one, we can stop treating tab specially.  */
-      if (line[0] == '\t')
+      if (line[0] == cmd_prefix)
        {
          if (no_targets)
            /* Ignore the commands in a rule with no targets.  */
            continue;
 
          /* If there is no preceding rule line, don't treat this line
-            as a command, even though it begins with a tab character.
+            as a command, even though it begins with a recipe prefix.
             SunOS 4 make appears to behave this way.  */
 
          if (filenames != 0)
@@ -544,24 +641,37 @@ eval (struct ebuffer *ebuf, int set_default)
                /* Yep, this is a shell command, and we don't care.  */
                continue;
 
-             /* Append this command line to the line being accumulated.  */
+             /* Append this command line to the line being accumulated.
+                 Strip command prefix chars that appear after newlines.  */
              if (commands_idx == 0)
                cmds_started = ebuf->floc.lineno;
 
-             if (linelen + 1 + commands_idx > commands_len)
+             if (linelen + commands_idx > commands_len)
                {
-                 commands_len = (linelen + 1 + commands_idx) * 2;
+                 commands_len = (linelen + commands_idx) * 2;
                  commands = xrealloc (commands, commands_len);
                }
-             bcopy (line, &commands[commands_idx], linelen);
-             commands_idx += linelen;
-             commands[commands_idx++] = '\n';
+              p = &commands[commands_idx];
+              p2 = line + 1;
+              while (--linelen)
+                {
+                  ++commands_idx;
+                  *(p++) = *p2;
+                  if (p2[0] == '\n' && p2[1] == cmd_prefix)
+                    {
+                      ++p2;
+                      --linelen;
+                    }
+                  ++p2;
+                }
+              *p = '\n';
+              ++commands_idx;
 
              continue;
            }
        }
 
-      /* This line is not a shell command line.  Don't worry about tabs.
+      /* This line is not a shell command line.  Don't worry about whitespace.
          Get more space if we need it; we don't need to preserve the current
          contents of the buffer.  */
 
@@ -569,190 +679,120 @@ eval (struct ebuffer *ebuf, int set_default)
        {
          collapsed_length = linelen+1;
           if (collapsed)
-            free ((char *)collapsed);
-         collapsed = (char *) xmalloc (collapsed_length);
+            free (collapsed);
+          /* Don't need xrealloc: we don't need to preserve the content.  */
+         collapsed = xmalloc (collapsed_length);
        }
       strcpy (collapsed, line);
       /* Collapse continuation lines.  */
       collapse_continuations (collapsed);
       remove_comments (collapsed);
 
-      /* Compare a word, both length and contents. */
-#define        word1eq(s)      (len == sizeof(s)-1 && strneq (s, p, sizeof(s)-1))
+      /* Get rid if starting space (including formfeed, vtab, etc.)  */
       p = collapsed;
       while (isspace ((unsigned char)*p))
-       ++p;
-
-      if (*p == '\0')
-       /* This line is completely empty--ignore it.  */
-       continue;
+        ++p;
 
-      /* Find the end of the first token.  Note we don't need to worry about
-       * ":" here since we compare tokens by length (so "export" will never
-       * be equal to "export:").
-       */
-      for (p2 = p+1; *p2 != '\0' && !isspace ((unsigned char)*p2); ++p2)
-        ;
-      len = p2 - p;
-
-      /* Find the start of the second token.  If it looks like a target or
-         variable definition it can't be a preprocessor token so skip
-         them--this allows variables/targets named `ifdef', `export', etc. */
-      while (isspace ((unsigned char)*p2))
-        ++p2;
-
-      if ((p2[0] == ':' || p2[0] == '+' || p2[0] == '=') && p2[1] == '\0')
+      /* See if this is a variable assignment.  We need to do this early, to
+         allow variables with names like 'ifdef', 'export', 'private', etc.  */
+      p = parse_var_assignment(p, &vmod);
+      if (vmod.assign_v)
         {
-          /* It can't be a preprocessor token so skip it if we're ignoring */
-          if (ignoring)
-            continue;
-
-          goto skip_conditionals;
-        }
-
-      /* We must first check for conditional and `define' directives before
-        ignoring anything, since they control what we will do with
-        following lines.  */
+          struct variable *v;
+          enum variable_origin origin = vmod.override_v ? o_override : o_file;
 
-      if (!in_ignored_define)
-       {
-         int i = conditional_line (p, len, fstart);
-          if (i != -2)
+          /* If we're ignoring then we're done now.  */
+         if (ignoring)
             {
-              if (i == -1)
-                fatal (fstart, _("invalid syntax in conditional"));
-
-              ignoring = i;
+              if (vmod.define_v)
+                in_ignored_define = 1;
               continue;
             }
-       }
 
-      if (word1eq ("endef"))
-       {
-         if (!in_ignored_define)
-           fatal (fstart, _("extraneous `endef'"));
-          in_ignored_define = 0;
-         continue;
-       }
+          if (vmod.undefine_v)
+          {
+            do_undefine (p, origin, ebuf);
 
-      if (word1eq ("define"))
-       {
-         if (ignoring)
-           in_ignored_define = 1;
-         else
-           {
-              if (*p2 == '\0')
-                fatal (fstart, _("empty variable name"));
-
-             /* Let the variable name be the whole rest of the line,
-                with trailing blanks stripped (comments have already been
-                removed), so it could be a complex variable/function
-                reference that might contain blanks.  */
-             p = strchr (p2, '\0');
-             while (isblank ((unsigned char)p[-1]))
-               --p;
-             do_define (p2, p - p2, o_file, ebuf);
-           }
-         continue;
-       }
+            /* This line has been dealt with.  */
+            goto rule_complete;
+          }
+          else if (vmod.define_v)
+            v = do_define (p, origin, ebuf);
+          else
+            v = try_variable_definition (fstart, p, origin, 0);
 
-      if (word1eq ("override"))
-        {
-         if (*p2 == '\0')
-           error (fstart, _("empty `override' directive"));
+          assert (v != NULL);
 
-         if (strneq (p2, "define", 6)
-             && (isblank ((unsigned char)p2[6]) || p2[6] == '\0'))
-           {
-             if (ignoring)
-               in_ignored_define = 1;
-             else
-               {
-                 p2 = next_token (p2 + 6);
-                  if (*p2 == '\0')
-                    fatal (fstart, _("empty variable name"));
-
-                 /* Let the variable name be the whole rest of the line,
-                    with trailing blanks stripped (comments have already been
-                    removed), so it could be a complex variable/function
-                    reference that might contain blanks.  */
-                 p = strchr (p2, '\0');
-                 while (isblank ((unsigned char)p[-1]))
-                   --p;
-                 do_define (p2, p - p2, o_override, ebuf);
-               }
-           }
-         else if (!ignoring
-                  && !try_variable_definition (fstart, p2, o_override, 0))
-           error (fstart, _("invalid `override' directive"));
+          if (vmod.export_v)
+            v->export = v_export;
+          if (vmod.private_v)
+            v->private_var = 1;
 
-         continue;
-       }
+          /* This line has been dealt with.  */
+          goto rule_complete;
+        }
 
-      if (ignoring)
-       /* Ignore the line.  We continue here so conditionals
-          can appear in the middle of a rule.  */
+      /* If this line is completely empty, ignore it.  */
+      if (*p == '\0')
        continue;
 
-      if (word1eq ("export"))
+      p2 = end_of_token (p);
+      wlen = p2 - p;
+      p2 = next_token (p2);
+
+      /* If we're in an ignored define, skip this line (but maybe get out).  */
+      if (in_ignored_define)
        {
-          /* 'export' by itself causes everything to be exported. */
-         if (*p2 == '\0')
-            export_all_variables = 1;
-          else
-            {
-              struct variable *v;
+          /* See if this is an endef line (plus optional comment).  */
+          if (word1eq ("endef") && (*p2 == '\0' || *p2 == '#'))
+            in_ignored_define = 0;
 
-              v = try_variable_definition (fstart, p2, o_file, 0);
-              if (v != 0)
-                v->export = v_export;
-              else
-                {
-                  unsigned int len;
-                  char *ap;
+         continue;
+       }
 
-                  /* Expand the line so we can use indirect and constructed
-                     variable names in an export command.  */
-                  p2 = ap = allocated_variable_expand (p2);
+      /* Check for conditional state changes.  */
+      {
+        int i = conditional_line (p, wlen, fstart);
+        if (i != -2)
+          {
+            if (i == -1)
+              fatal (fstart, _("invalid syntax in conditional"));
 
-                  for (p = find_next_token (&p2, &len); p != 0;
-                       p = find_next_token (&p2, &len))
-                    {
-                      v = lookup_variable (p, len);
-                      if (v == 0)
-                        v = define_variable_loc (p, len, "", o_file, 0,
-                                                 fstart);
-                      v->export = v_export;
-                    }
+            ignoring = i;
+            continue;
+          }
+      }
 
-                  free (ap);
-                }
-            }
-          goto rule_complete;
-       }
+      /* Nothing to see here... move along.  */
+      if (ignoring)
+       continue;
 
-      if (word1eq ("unexport"))
+      /* Manage the "export" keyword used outside of variable assignment
+         as well as "unexport".  */
+      if (word1eq ("export") || word1eq ("unexport"))
        {
+          int exporting = *p == 'u' ? 0 : 1;
+
+          /* (un)export by itself causes everything to be (un)exported. */
          if (*p2 == '\0')
-           export_all_variables = 0;
+            export_all_variables = exporting;
           else
             {
-              unsigned int len;
-              struct variable *v;
+              unsigned int l;
+              const char *cp;
               char *ap;
 
               /* Expand the line so we can use indirect and constructed
-                 variable names in an unexport command.  */
-              p2 = ap = allocated_variable_expand (p2);
+                 variable names in an (un)export command.  */
+              cp = ap = allocated_variable_expand (p2);
 
-              for (p = find_next_token (&p2, &len); p != 0;
-                   p = find_next_token (&p2, &len))
+              for (p = find_next_token (&cp, &l); p != 0;
+                   p = find_next_token (&cp, &l))
                 {
-                  v = lookup_variable (p, len);
+                  struct variable *v = lookup_variable (p, l);
                   if (v == 0)
-                    v = define_variable_loc (p, len, "", o_file, 0, fstart);
-
-                  v->export = v_noexport;
+                    v = define_variable_loc (p, l, "", o_file, 0, fstart);
+                  v->export = exporting ? v_export : v_noexport;
                 }
 
               free (ap);
@@ -760,30 +800,32 @@ eval (struct ebuffer *ebuf, int set_default)
           goto rule_complete;
        }
 
- skip_conditionals:
+      /* Handle the special syntax for vpath.  */
       if (word1eq ("vpath"))
        {
-         char *pattern;
-         unsigned int len;
-         p2 = variable_expand (p2);
-         p = find_next_token (&p2, &len);
+          const char *cp;
+         char *vpat;
+         unsigned int l;
+         cp = variable_expand (p2);
+         p = find_next_token (&cp, &l);
          if (p != 0)
            {
-             pattern = savestring (p, len);
-             p = find_next_token (&p2, &len);
+             vpat = xstrndup (p, l);
+             p = find_next_token (&cp, &l);
              /* No searchpath means remove all previous
                 selective VPATH's with the same pattern.  */
            }
          else
            /* No pattern means remove all previous selective VPATH's.  */
-           pattern = 0;
-         construct_vpath_list (pattern, p);
-         if (pattern != 0)
-           free (pattern);
+           vpat = 0;
+         construct_vpath_list (vpat, p);
+         if (vpat != 0)
+           free (vpat);
 
           goto rule_complete;
        }
 
+      /* Handle include and variants.  */
       if (word1eq ("include") || word1eq ("-include") || word1eq ("sinclude"))
        {
          /* We have found an `include' line specifying a nested
@@ -804,12 +846,10 @@ eval (struct ebuffer *ebuf, int set_default)
               continue;
             }
 
-         /* Parse the list of file names.  */
+         /* Parse the list of file names.  Don't expand archive references!  */
          p2 = p;
-         files = multi_glob (parse_file_seq (&p2, '\0',
-                                             sizeof (struct nameseq),
-                                             1),
-                             sizeof (struct nameseq));
+         files = PARSE_FILE_SEQ (&p2, struct nameseq, '\0', NULL,
+                                  PARSEFS_NOAR);
          free (p);
 
          /* Save the state of conditionals and start
@@ -824,17 +864,18 @@ eval (struct ebuffer *ebuf, int set_default)
          while (files != 0)
            {
              struct nameseq *next = files->next;
-             char *name = files->name;
+             const char *name = files->name;
               int r;
 
-             free ((char *)files);
+             free_ns (files);
              files = next;
 
-              r = eval_makefile (name, (RM_INCLUDED | RM_NO_TILDE
-                                        | (noerror ? RM_DONTCARE : 0)));
+              r = eval_makefile (name,
+                                 (RM_INCLUDED | RM_NO_TILDE
+                                  | (noerror ? RM_DONTCARE : 0)
+                                  | (set_default ? 0 : RM_NO_DEFAULT_GOAL)));
              if (!r && !noerror)
                 error (fstart, "%s: %s", name, strerror (errno));
-              free (name);
            }
 
          /* Restore conditional state.  */
@@ -843,15 +884,11 @@ eval (struct ebuffer *ebuf, int set_default)
           goto rule_complete;
        }
 
-      if (try_variable_definition (fstart, p, o_file, 0))
-       /* This line has been dealt with.  */
-       goto rule_complete;
-
       /* This line starts with a tab but was not caught above because there
          was no preceding target, and the line might have been usable as a
          variable definition.  But now we know it is definitely lossage.  */
-      if (line[0] == '\t')
-        fatal(fstart, _("commands commence before first target"));
+      if (line[0] == cmd_prefix)
+        fatal(fstart, _("recipe commences before first target"));
 
       /* This line describes some target files.  This is complicated by
          the existence of target-specific variables, because we can't
@@ -865,10 +902,8 @@ eval (struct ebuffer *ebuf, int set_default)
 
       {
         enum make_word_type wtype;
-        enum variable_origin v_origin;
-        int exported;
         char *cmdleft, *semip, *lb_next;
-        unsigned int len, plen = 0;
+        unsigned int plen = 0;
         char *colonp;
         const char *end, *beg; /* Helpers for whitespace stripping. */
 
@@ -897,12 +932,12 @@ eval (struct ebuffer *ebuf, int set_default)
            variable we don't want to expand it.  So, walk from the
            beginning, expanding as we go, and looking for "interesting"
            chars.  The first word is always expandable.  */
-        wtype = get_next_mword(line, NULL, &lb_next, &len);
+        wtype = get_next_mword(line, NULL, &lb_next, &wlen);
         switch (wtype)
           {
           case w_eol:
             if (cmdleft != 0)
-              fatal(fstart, _("missing rule before commands"));
+              fatal(fstart, _("missing rule before recipe"));
             /* This line contained something but turned out to be nothing
                but whitespace (a comment?).  */
             continue;
@@ -918,11 +953,11 @@ eval (struct ebuffer *ebuf, int set_default)
             break;
           }
 
-        p2 = variable_expand_string(NULL, lb_next, len);
+        p2 = variable_expand_string(NULL, lb_next, wlen);
 
         while (1)
           {
-            lb_next += len;
+            lb_next += wlen;
             if (cmdleft == 0)
               {
                 /* Look for a semicolon in the expanded line.  */
@@ -967,13 +1002,13 @@ eval (struct ebuffer *ebuf, int set_default)
             if (colonp != 0)
               break;
 
-            wtype = get_next_mword(lb_next, NULL, &lb_next, &len);
+            wtype = get_next_mword(lb_next, NULL, &lb_next, &wlen);
             if (wtype == w_eol)
               break;
 
             p2 += strlen(p2);
             *(p2++) = ' ';
-            p2 = variable_expand_string(p2, lb_next, len);
+            p2 = variable_expand_string(p2, lb_next, wlen);
             /* We don't need to worry about cmdleft here, because if it was
                found in the variable_buffer the entire buffer has already
                been expanded... we'll never get here.  */
@@ -990,18 +1025,15 @@ eval (struct ebuffer *ebuf, int set_default)
               /* There's no need to be ivory-tower about this: check for
                  one of the most common bugs found in makefiles...  */
               fatal (fstart, _("missing separator%s"),
-                     !strneq(line, "        ", 8) ? ""
-                     : _(" (did you mean TAB instead of 8 spaces?)"));
+                     (cmd_prefix == '\t' && !strneq(line, "        ", 8))
+                     ? "" : _(" (did you mean TAB instead of 8 spaces?)"));
             continue;
           }
 
         /* Make the colon the end-of-string so we know where to stop
            looking for targets.  */
         *colonp = '\0';
-        filenames = multi_glob (parse_file_seq (&p2, '\0',
-                                                sizeof (struct nameseq),
-                                                1),
-                                sizeof (struct nameseq));
+        filenames = PARSE_FILE_SEQ (&p2, struct nameseq, '\0', NULL, 0);
         *p2 = ':';
 
         if (!filenames)
@@ -1028,36 +1060,12 @@ eval (struct ebuffer *ebuf, int set_default)
           {
             unsigned int l = p2 - variable_buffer;
             plen = strlen (p2);
-            (void) variable_buffer_output (p2+plen,
-                                           lb_next, strlen (lb_next)+1);
+            variable_buffer_output (p2+plen, lb_next, strlen (lb_next)+1);
             p2 = variable_buffer + l;
           }
 
-        /* See if it's an "override" or "export" keyword; if so see if what
-           comes after it looks like a variable definition.  */
-
-        wtype = get_next_mword (p2, NULL, &p, &len);
-
-        v_origin = o_file;
-        exported = 0;
-        if (wtype == w_static)
-          {
-            if (word1eq ("override"))
-              {
-                v_origin = o_override;
-                wtype = get_next_mword (p+len, NULL, &p, &len);
-              }
-            else if (word1eq ("export"))
-              {
-                exported = 1;
-                wtype = get_next_mword (p+len, NULL, &p, &len);
-              }
-          }
-
-        if (wtype != w_eol)
-          wtype = get_next_mword (p+len, NULL, NULL, NULL);
-
-        if (wtype == w_varassign)
+        p2 = parse_var_assignment (p2, &vmod);
+        if (vmod.assign_v)
           {
             /* If there was a semicolon found, add it back, plus anything
                after it.  */
@@ -1065,11 +1073,14 @@ eval (struct ebuffer *ebuf, int set_default)
               {
                 unsigned int l = p - variable_buffer;
                 *(--semip) = ';';
+                collapse_continuations (semip);
                 variable_buffer_output (p2 + strlen (p2),
                                         semip, strlen (semip)+1);
                 p = variable_buffer + l;
               }
-            record_target_var (filenames, p, v_origin, exported, fstart);
+            record_target_var (filenames, p2,
+                               vmod.override_v ? o_override : o_file,
+                               &vmod, fstart);
             filenames = 0;
             continue;
           }
@@ -1101,8 +1112,8 @@ eval (struct ebuffer *ebuf, int set_default)
         p = strchr (p2, ':');
         while (p != 0 && p[-1] == '\\')
           {
-            register char *q = &p[-1];
-            register int backslash = 0;
+            char *q = &p[-1];
+            int backslash = 0;
             while (*q-- == '\\')
               backslash = !backslash;
             if (backslash)
@@ -1130,7 +1141,6 @@ eval (struct ebuffer *ebuf, int set_default)
 #ifdef HAVE_DOS_PATHS
         {
           int check_again;
-
           do {
             check_again = 0;
             /* For DOS-style paths, skip a "C:\..." or a "C:/..." */
@@ -1146,17 +1156,18 @@ eval (struct ebuffer *ebuf, int set_default)
         if (p != 0)
           {
             struct nameseq *target;
-            target = parse_file_seq (&p2, ':', sizeof (struct nameseq), 1);
+            target = PARSE_FILE_SEQ (&p2, struct nameseq, ':', NULL,
+                                     PARSEFS_NOGLOB);
             ++p2;
             if (target == 0)
               fatal (fstart, _("missing target pattern"));
             else if (target->next != 0)
               fatal (fstart, _("multiple target patterns"));
+            pattern_percent = find_percent_cached (&target->name);
             pattern = target->name;
-            pattern_percent = find_percent (pattern);
             if (pattern_percent == 0)
               fatal (fstart, _("target pattern contains no `%%'"));
-            free ((char *)target);
+            free_ns (target);
           }
         else
           pattern = 0;
@@ -1166,31 +1177,28 @@ eval (struct ebuffer *ebuf, int set_default)
         end = beg + strlen (beg) - 1;
         strip_whitespace (&beg, &end);
 
+        /* Put all the prerequisites here; they'll be parsed later.  */
         if (beg <= end && *beg != '\0')
-          {
-            /* Put all the prerequisites here; they'll be parsed later.  */
-            deps = alloc_dep ();
-            deps->name = savestring (beg, end - beg + 1);
-          }
+          depstr = xstrndup (beg, end - beg + 1);
         else
-          deps = 0;
+          depstr = 0;
 
         commands_idx = 0;
         if (cmdleft != 0)
           {
             /* Semicolon means rest of line is a command.  */
-            unsigned int len = strlen (cmdleft);
+            unsigned int l = strlen (cmdleft);
 
             cmds_started = fstart->lineno;
 
             /* Add this command line to the buffer.  */
-            if (len + 2 > commands_len)
+            if (l + 2 > commands_len)
               {
-                commands_len = (len + 2) * 2;
-                commands = (char *) xrealloc (commands, commands_len);
+                commands_len = (l + 2) * 2;
+                commands = xrealloc (commands, commands_len);
               }
-            bcopy (cmdleft, commands, len);
-            commands_idx += len;
+            memcpy (commands, cmdleft, l);
+            commands_idx += l;
             commands[commands_idx++] = '\n';
           }
 
@@ -1207,12 +1215,11 @@ eval (struct ebuffer *ebuf, int set_default)
 
            Because the target is not recorded until after ifeq directive is
            evaluated the .DEFAULT_GOAL does not contain foo yet as one
-           would expect. Because of this we have to move some of the logic
-           here.  */
+           would expect. Because of this we have to move the logic here.  */
 
-        if (**default_goal_name == '\0' && set_default)
+        if (set_default && default_goal_var->value[0] == '\0')
           {
-            char* name;
+            const char *name;
             struct dep *d;
             struct nameseq *t = filenames;
 
@@ -1247,10 +1254,10 @@ eval (struct ebuffer *ebuf, int set_default)
                       }
                     for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
                       {
-                        register unsigned int len = strlen (dep_name (d2));
-                        if (!strneq (name, dep_name (d2), len))
+                        unsigned int l = strlen (dep_name (d2));
+                        if (!strneq (name, dep_name (d2), l))
                           continue;
-                        if (streq (name + len, dep_name (d)))
+                        if (streq (name + l, dep_name (d)))
                           {
                             reject = 1;
                             break;
@@ -1289,10 +1296,8 @@ eval (struct ebuffer *ebuf, int set_default)
   record_waiting_files ();
 
   if (collapsed)
-    free ((char *) collapsed);
-  free ((char *) commands);
-
-  return 1;
+    free (collapsed);
+  free (commands);
 }
 \f
 
@@ -1311,51 +1316,89 @@ remove_comments (char *line)
     *comment = '\0';
 }
 
+/* Execute a `undefine' directive.
+   The undefine line has already been read, and NAME is the name of
+   the variable to be undefined. */
+
+static void
+do_undefine (char *name, enum variable_origin origin, struct ebuffer *ebuf)
+{
+  char *p, *var;
+
+  /* Expand the variable name and find the beginning (NAME) and end.  */
+  var = allocated_variable_expand (name);
+  name = next_token (var);
+  if (*name == '\0')
+    fatal (&ebuf->floc, _("empty variable name"));
+  p = name + strlen (name) - 1;
+  while (p > name && isblank ((unsigned char)*p))
+    --p;
+  p[1] = '\0';
+
+  undefine_variable_global (name, p - name + 1, origin);
+  free (var);
+}
+
 /* Execute a `define' directive.
    The first line has already been read, and NAME is the name of
    the variable to be defined.  The following lines remain to be read.  */
 
-static void
-do_define (char *name, unsigned int namelen,
-           enum variable_origin origin, struct ebuffer *ebuf)
+static struct variable *
+do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
 {
+  struct variable *v;
+  enum variable_flavor flavor;
   struct floc defstart;
-  long nlines = 0;
   int nlevels = 1;
   unsigned int length = 100;
-  char *definition = (char *) xmalloc (length);
+  char *definition = xmalloc (length);
   unsigned int idx = 0;
-  char *p;
-
-  /* Expand the variable name.  */
-  char *var = (char *) alloca (namelen + 1);
-  bcopy (name, var, namelen);
-  var[namelen] = '\0';
-  var = variable_expand (var);
+  char *p, *var;
 
   defstart = ebuf->floc;
 
+  p = parse_variable_definition (name, &flavor);
+  if (p == NULL)
+    /* No assignment token, so assume recursive.  */
+    flavor = f_recursive;
+  else
+    {
+      if (*(next_token (p)) != '\0')
+        error (&defstart, _("extraneous text after `define' directive"));
+
+      /* Chop the string before the assignment token to get the name.  */
+      p[flavor == f_recursive ? -1 : -2] = '\0';
+    }
+
+  /* Expand the variable name and find the beginning (NAME) and end.  */
+  var = allocated_variable_expand (name);
+  name = next_token (var);
+  if (*name == '\0')
+    fatal (&defstart, _("empty variable name"));
+  p = name + strlen (name) - 1;
+  while (p > name && isblank ((unsigned char)*p))
+    --p;
+  p[1] = '\0';
+
+  /* Now read the value of the variable.  */
   while (1)
     {
       unsigned int len;
       char *line;
+      long nlines = readline (ebuf);
 
-      nlines = readline (ebuf);
-      ebuf->floc.lineno += nlines;
-
-      /* If there is nothing left to eval, we're done. */
+      /* If there is nothing left to be eval'd, there's no 'endef'!!  */
       if (nlines < 0)
-        break;
+        fatal (&defstart, _("missing `endef', unterminated `define'"));
 
+      ebuf->floc.lineno += nlines;
       line = ebuf->buffer;
 
       collapse_continuations (line);
 
       /* If the line doesn't begin with a tab, test to see if it introduces
-         another define, or ends one.  */
-
-      /* Stop if we find an 'endef' */
-      if (line[0] != '\t')
+         another define, or ends one.  Stop if we find an 'endef' */
+      if (line[0] != cmd_prefix)
         {
           p = next_token (line);
           len = strlen (p);
@@ -1372,46 +1415,39 @@ do_define (char *name, unsigned int namelen,
             {
               p += 5;
               remove_comments (p);
-              if (*next_token (p) != '\0')
+              if (*(next_token (p)) != '\0')
                 error (&ebuf->floc,
-                       _("Extraneous text after `endef' directive"));
+                       _("extraneous text after `endef' directive"));
 
               if (--nlevels == 0)
-                {
-                  /* Define the variable.  */
-                  if (idx == 0)
-                    definition[0] = '\0';
-                  else
-                    definition[idx - 1] = '\0';
-
-                  /* Always define these variables in the global set.  */
-                  define_variable_global (var, strlen (var), definition,
-                                          origin, 1, &defstart);
-                  free (definition);
-                  return;
-                }
+                break;
             }
         }
 
-      /* Otherwise add this line to the variable definition.  */
+      /* Add this line to the variable definition.  */
       len = strlen (line);
       if (idx + len + 1 > length)
         {
           length = (idx + len) * 2;
-          definition = (char *) xrealloc (definition, length + 1);
+          definition = xrealloc (definition, length + 1);
         }
 
-      bcopy (line, &definition[idx], len);
+      memcpy (&definition[idx], line, len);
       idx += len;
       /* Separate lines with a newline.  */
       definition[idx++] = '\n';
     }
 
-  /* No `endef'!!  */
-  fatal (&defstart, _("missing `endef', unterminated `define'"));
+  /* We've got what we need; define the variable.  */
+  if (idx == 0)
+    definition[0] = '\0';
+  else
+    definition[idx - 1] = '\0';
 
-  /* NOTREACHED */
-  return;
+  v = do_variable_definition (&defstart, name, definition, origin, flavor, 0);
+  free (definition);
+  free (var);
+  return (v);
 }
 \f
 /* Interpret conditional commands "ifdef", "ifndef", "ifeq",
@@ -1528,18 +1564,18 @@ conditional_line (char *line, int len, const struct floc *flocp)
   if (conditionals->allocated == 0)
     {
       conditionals->allocated = 5;
-      conditionals->ignoring = (char *) xmalloc (conditionals->allocated);
-      conditionals->seen_else = (char *) xmalloc (conditionals->allocated);
+      conditionals->ignoring = xmalloc (conditionals->allocated);
+      conditionals->seen_else = xmalloc (conditionals->allocated);
     }
 
   o = conditionals->if_cmds++;
   if (conditionals->if_cmds > conditionals->allocated)
     {
       conditionals->allocated += 5;
-      conditionals->ignoring = (char *)
-       xrealloc (conditionals->ignoring, conditionals->allocated);
-      conditionals->seen_else = (char *)
-       xrealloc (conditionals->seen_else, conditionals->allocated);
+      conditionals->ignoring = xrealloc (conditionals->ignoring,
+                                         conditionals->allocated);
+      conditionals->seen_else = xrealloc (conditionals->seen_else,
+                                          conditionals->allocated);
     }
 
   /* Record that we have seen an `if...' but no `else' so far.  */
@@ -1583,9 +1619,9 @@ conditional_line (char *line, int len, const struct floc *flocp)
     }
   else
     {
-      /* "Ifeq" or "ifneq".  */
+      /* "ifeq" or "ifneq".  */
       char *s1, *s2;
-      unsigned int len;
+      unsigned int l;
       char termin = *line == '(' ? ',' : *line;
 
       if (termin != ',' && termin != '"' && termin != '\'')
@@ -1625,9 +1661,9 @@ conditional_line (char *line, int len, const struct floc *flocp)
       s2 = variable_expand (s1);
       /* We must allocate a new copy of the expanded string because
         variable_expand re-uses the same buffer.  */
-      len = strlen (s2);
-      s1 = (char *) alloca (len + 1);
-      bcopy (s2, s1, len + 1);
+      l = strlen (s2);
+      s1 = alloca (l + 1);
+      memcpy (s1, s2, l + 1);
 
       if (termin != ',')
        /* Find the start of the second string.  */
@@ -1640,7 +1676,7 @@ conditional_line (char *line, int len, const struct floc *flocp)
       /* Find the end of the second string.  */
       if (termin == ')')
        {
-         register int count = 0;
+         int count = 0;
          s2 = next_token (line);
          for (line = s2; *line != '\0'; ++line)
            {
@@ -1683,71 +1719,7 @@ conditional_line (char *line, int len, const struct floc *flocp)
   return 0;
 }
 \f
-/* Remove duplicate dependencies in CHAIN.  */
 
-static unsigned long
-dep_hash_1 (const void *key)
-{
-  return_STRING_HASH_1 (dep_name ((struct dep const *) key));
-}
-
-static unsigned long
-dep_hash_2 (const void *key)
-{
-  return_STRING_HASH_2 (dep_name ((struct dep const *) key));
-}
-
-static int
-dep_hash_cmp (const void *x, const void *y)
-{
-  struct dep *dx = (struct dep *) x;
-  struct dep *dy = (struct dep *) y;
-  int cmp = strcmp (dep_name (dx), dep_name (dy));
-
-  /* If the names are the same but ignore_mtimes are not equal, one of these
-     is an order-only prerequisite and one isn't.  That means that we should
-     remove the one that isn't and keep the one that is.  */
-
-  if (!cmp && dx->ignore_mtime != dy->ignore_mtime)
-    dx->ignore_mtime = dy->ignore_mtime = 0;
-
-  return cmp;
-}
-
-
-void
-uniquize_deps (struct dep *chain)
-{
-  struct hash_table deps;
-  register struct dep **depp;
-
-  hash_init (&deps, 500, dep_hash_1, dep_hash_2, dep_hash_cmp);
-
-  /* Make sure that no dependencies are repeated.  This does not
-     really matter for the purpose of updating targets, but it
-     might make some names be listed twice for $^ and $?.  */
-
-  depp = &chain;
-  while (*depp)
-    {
-      struct dep *dep = *depp;
-      struct dep **dep_slot = (struct dep **) hash_find_slot (&deps, dep);
-      if (HASH_VACANT (*dep_slot))
-       {
-         hash_insert_at (&deps, dep, dep_slot);
-         depp = &dep->next;
-       }
-      else
-       {
-         /* Don't bother freeing duplicates.
-            It's dangerous and little benefit accrues.  */
-         *depp = dep->next;
-       }
-    }
-
-  hash_free (&deps, 0);
-}
-\f
 /* Record target-specific variable values for files FILENAMES.
    TWO_COLON is nonzero if a double colon was used.
 
@@ -1759,7 +1731,7 @@ uniquize_deps (struct dep *chain)
 
 static void
 record_target_var (struct nameseq *filenames, char *defn,
-                   enum variable_origin origin, int exported,
+                   enum variable_origin origin, struct vmodifiers *vmod,
                    const struct floc *flocp)
 {
   struct nameseq *nextf;
@@ -1773,17 +1745,17 @@ record_target_var (struct nameseq *filenames, char *defn,
   for (; filenames != 0; filenames = nextf)
     {
       struct variable *v;
-      register char *name = filenames->name;
-      char *fname;
-      char *percent;
+      const char *name = filenames->name;
+      const char *fname;
+      const char *percent;
       struct pattern_var *p;
 
       nextf = filenames->next;
-      free ((char *) filenames);
+      free_ns (filenames);
 
       /* If it's a pattern target, then add it to the pattern-specific
          variable list.  */
-      percent = find_percent (name);
+      percent = find_percent_cached (&name);
       if (percent)
         {
           /* Get a reference for this pattern-specific variable struct.  */
@@ -1791,9 +1763,10 @@ record_target_var (struct nameseq *filenames, char *defn,
           p->variable.fileinfo = *flocp;
           /* I don't think this can fail since we already determined it was a
              variable definition.  */
-          v = parse_variable_definition (&p->variable, defn);
+          v = assign_variable_definition (&p->variable, defn);
           assert (v != 0);
 
+          v->origin = origin;
           if (v->flavor == f_simple)
             v->value = allocated_variable_expand (v->value);
           else
@@ -1811,7 +1784,7 @@ record_target_var (struct nameseq *filenames, char *defn,
              this situation.  */
           f = lookup_file (name);
           if (!f)
-            f = enter_file (name);
+            f = enter_file (strcache_add (name));
           else if (f->double_colon)
             f = f->double_colon;
 
@@ -1821,18 +1794,18 @@ record_target_var (struct nameseq *filenames, char *defn,
           current_variable_set_list = f->variables;
           v = try_variable_definition (flocp, defn, origin, 1);
           if (!v)
-            error (flocp, _("Malformed target-specific variable definition"));
+            fatal (flocp, _("Malformed target-specific variable definition"));
           current_variable_set_list = global;
         }
 
       /* Set up the variable to be *-specific.  */
-      v->origin = origin;
       v->per_target = 1;
-      v->export = exported ? v_export : v_default;
+      v->private_var = vmod->private_v;
+      v->export = vmod->export_v ? v_export : v_default;
 
       /* If it's not an override, check to see if there was a command-line
          setting.  If so, reset the value.  */
-      if (origin != o_override)
+      if (v->origin != o_override)
         {
           struct variable *gv;
           int len = strlen(v->name);
@@ -1848,10 +1821,6 @@ record_target_var (struct nameseq *filenames, char *defn,
               v->append = 0;
             }
         }
-
-      /* Free name if not needed further.  */
-      if (name != fname && (name < fname || name > fname + strlen (fname)))
-        free (name);
     }
 }
 \f
@@ -1867,107 +1836,156 @@ record_target_var (struct nameseq *filenames, char *defn,
    that are not incorporated into other data structures.  */
 
 static void
-record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
-              struct dep *deps, unsigned int cmds_started, char *commands,
+record_files (struct nameseq *filenames, const char *pattern,
+              const char *pattern_percent, char *depstr,
+              unsigned int cmds_started, char *commands,
               unsigned int commands_idx, int two_colon,
               const struct floc *flocp)
 {
-  struct nameseq *nextf;
-  int implicit = 0;
-  unsigned int max_targets = 0, target_idx = 0;
-  char **targets = 0, **target_percents = 0;
   struct commands *cmds;
+  struct dep *deps;
+  const char *implicit_percent;
+  const char *name;
 
   /* If we've already snapped deps, that means we're in an eval being
      resolved after the makefiles have been read in.  We can't add more rules
      at this time, since they won't get snapped and we'll get core dumps.
      See Savannah bug # 12124.  */
   if (snapped_deps)
-    fatal (flocp, _("prerequisites cannot be defined in command scripts"));
+    fatal (flocp, _("prerequisites cannot be defined in recipes"));
 
+  /* Determine if this is a pattern rule or not.  */
+  name = filenames->name;
+  implicit_percent = find_percent_cached (&name);
+
+  /* If there's a recipe, set up a struct for it.  */
   if (commands_idx > 0)
     {
-      cmds = (struct commands *) xmalloc (sizeof (struct commands));
+      cmds = xmalloc (sizeof (struct commands));
       cmds->fileinfo.filenm = flocp->filenm;
       cmds->fileinfo.lineno = cmds_started;
-      cmds->commands = savestring (commands, commands_idx);
+      cmds->commands = xstrndup (commands, commands_idx);
       cmds->command_lines = 0;
     }
   else
-    cmds = 0;
+     cmds = 0;
 
-  for (; filenames != 0; filenames = nextf)
+  /* If there's a prereq string then parse it--unless it's eligible for 2nd
+     expansion: if so, snap_deps() will do it.  */
+  if (depstr == 0)
+    deps = 0;
+  else if (second_expansion && strchr (depstr, '$'))
+    {
+      deps = alloc_dep ();
+      deps->name = depstr;
+      deps->need_2nd_expansion = 1;
+      deps->staticpattern = pattern != 0;
+    }
+  else
+    {
+      deps = split_prereqs (depstr);
+      free (depstr);
+
+      /* We'll enter static pattern prereqs later when we have the stem.  We
+         don't want to enter pattern rules at all so that we don't think that
+         they ought to exist (make manual "Implicit Rule Search Algorithm",
+         item 5c).  */
+      if (! pattern && ! implicit_percent)
+        deps = enter_prereqs (deps, NULL);
+    }
+
+  /* For implicit rules, _all_ the targets must have a pattern.  That means we
+     can test the first one to see if we're working with an implicit rule; if
+     so we handle it specially. */
+
+  if (implicit_percent)
+    {
+      struct nameseq *nextf;
+      const char **targets, **target_pats;
+      unsigned int c;
+
+      if (pattern != 0)
+        fatal (flocp, _("mixed implicit and static pattern rules"));
+
+      /* Count the targets to create an array of target names.
+         We already have the first one.  */
+      nextf = filenames->next;
+      free_ns (filenames);
+      filenames = nextf;
+
+      for (c = 1; nextf; ++c, nextf = nextf->next)
+        ;
+      targets = xmalloc (c * sizeof (const char *));
+      target_pats = xmalloc (c * sizeof (const char *));
+
+      targets[0] = name;
+      target_pats[0] = implicit_percent;
+
+      c = 1;
+      while (filenames)
+        {
+          name = filenames->name;
+          implicit_percent = find_percent_cached (&name);
+
+          if (implicit_percent == 0)
+            fatal (flocp, _("mixed implicit and normal rules"));
+
+         targets[c] = name;
+         target_pats[c] = implicit_percent;
+          ++c;
+
+          nextf = filenames->next;
+          free_ns (filenames);
+          filenames = nextf;
+        }
+
+      create_pattern_rule (targets, target_pats, c, two_colon, deps, cmds, 1);
+
+      return;
+    }
+
+
+  /* Walk through each target and create it in the database.
+     We already set up the first target, above.  */
+  while (1)
     {
-      char *name = filenames->name;
+      struct nameseq *nextf = filenames->next;
       struct file *f;
       struct dep *this = 0;
-      char *implicit_percent;
 
-      nextf = filenames->next;
-      free (filenames);
+      free_ns (filenames);
 
       /* 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;
+        {
+          posix_pedantic = 1;
+          define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0);
+        }
       else if (streq (name, ".SECONDEXPANSION"))
         second_expansion = 1;
-
-      implicit_percent = find_percent (name);
-      implicit |= implicit_percent != 0;
-
-      if (implicit && pattern != 0)
-       fatal (flocp, _("mixed implicit and static pattern rules"));
-
-      if (implicit && implicit_percent == 0)
-       fatal (flocp, _("mixed implicit and normal rules"));
-
-      if (implicit)
-       {
-         if (targets == 0)
-           {
-             max_targets = 5;
-             targets = (char **) xmalloc (5 * sizeof (char *));
-             target_percents = (char **) xmalloc (5 * sizeof (char *));
-             target_idx = 0;
-           }
-         else if (target_idx == max_targets - 1)
-           {
-             max_targets += 5;
-             targets = (char **) xrealloc ((char *) targets,
-                                           max_targets * sizeof (char *));
-             target_percents
-               = (char **) xrealloc ((char *) target_percents,
-                                     max_targets * sizeof (char *));
-           }
-         targets[target_idx] = name;
-         target_percents[target_idx] = implicit_percent;
-         ++target_idx;
-         continue;
-       }
+#if !defined(WINDOWS32) && !defined (__MSDOS__) && !defined (__EMX__)
+      else if (streq (name, ".ONESHELL"))
+        one_shell = 1;
+#endif
 
       /* If this is a static pattern rule:
-         `targets: target%pattern: dep%pattern; cmds',
+         `targets: target%pattern: prereq%pattern; recipe',
          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 there are multiple targets, 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;
 
+      /* Find or create an entry in the file database for this target.  */
       if (!two_colon)
        {
-         /* Single-colon.  Combine these dependencies
-            with others in file's existing record, if any.  */
-         f = enter_file (name);
-
+         /* Single-colon.  Combine this rule with the file's existing record,
+            if any.  */
+         f = enter_file (strcache_add (name));
          if (f->double_colon)
            fatal (flocp,
                    _("target file `%s' has both : and :: entries"), f->name);
@@ -1985,15 +2003,13 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
          else if (cmds != 0 && f->cmds != 0 && f->is_target)
            {
              error (&cmds->fileinfo,
-                     _("warning: overriding commands for target `%s'"),
+                     _("warning: overriding recipe for target `%s'"),
                      f->name);
              error (&f->cmds->fileinfo,
-                     _("warning: ignoring old commands for target `%s'"),
+                     _("warning: ignoring old recipe for target `%s'"),
                      f->name);
            }
 
-         f->is_target = 1;
-
          /* Defining .DEFAULT with no deps or cmds clears it.  */
          if (f == default_file && this == 0 && cmds == 0)
            f->cmds = 0;
@@ -2007,72 +2023,19 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
               free_dep_chain (f->deps);
              f->deps = 0;
            }
-          else if (this != 0)
-           {
-             /* Add the file's old deps and the new ones in THIS together.  */
-
-              if (f->deps != 0)
-                {
-                  struct dep **d_ptr = &f->deps;
-
-                  while ((*d_ptr)->next != 0)
-                    d_ptr = &(*d_ptr)->next;
-
-                  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;
-                  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.  */
-
-                      if (f->cmds != 0)
-                        {
-                          this->next = *d_ptr;
-                          *d_ptr = this;
-                        }
-                      else
-                        (*d_ptr)->next = this;
-                    }
-                }
-              else
-                f->deps = this;
-
-              /* This is a hack. I need a way to communicate to snap_deps()
-                 that the last dependency line in this file came with commands
-                 (so that logic in snap_deps() can put it in front and all
-                 this $< -logic works). I cannot simply rely on file->cmds
-                 being not 0 because of the cases like the following:
-
-                 foo: bar
-                 foo:
-                     ...
-
-                 I am going to temporarily "borrow" UPDATING member in
-                 `struct file' for this.   */
-
-              if (cmds != 0)
-                f->updating = 1;
-           }
        }
       else
        {
          /* 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.  */
+         /* Check for both : and :: rules.  Check is_target so we don't lose
+            on default suffix rules or makefiles.  */
          if (f != 0 && f->is_target && !f->double_colon)
            fatal (flocp,
                    _("target file `%s' has both : and :: entries"), f->name);
-         f = enter_file (name);
+
+         f = enter_file (strcache_add (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
@@ -2081,51 +2044,72 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
            /* 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;
-         f->deps = this;
+
          f->cmds = cmds;
        }
 
+      f->is_target = 1;
+
       /* 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.  */
+         commands.  If we didn't do it before, enter the prereqs now.  */
       if (pattern)
         {
-          static char *percent = "%";
+          static const 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);
+          char *o = patsubst_expand_pat (buffer, name, pattern, percent,
+                                         pattern_percent+1, percent+1);
+          f->stem = strcache_add_len (buffer, o - buffer);
           if (this)
             {
-              this->staticpattern = 1;
-              this->stem = xstrdup (f->stem);
+              if (! this->need_2nd_expansion)
+                this = enter_prereqs (this, f->stem);
+              else
+                this->stem = f->stem;
             }
         }
 
-      /* Free name if not needed further.  */
-      if (f != 0 && name != f->name
-         && (name < f->name || name > f->name + strlen (f->name)))
-       {
-         free (name);
-         name = f->name;
-       }
+      /* Add the dependencies to this file entry.  */
+      if (this != 0)
+        {
+          /* Add the file's old deps and the new ones in THIS together.  */
+          if (f->deps == 0)
+            f->deps = this;
+          else if (cmds != 0)
+            {
+              struct dep *d = this;
 
-      /* If this target is a default target, update DEFAULT_GOAL_FILE.  */
-      if (streq (*default_goal_name, name)
-          && (default_goal_file == 0
-              || ! streq (default_goal_file->name, name)))
-        default_goal_file = f;
-    }
+              /* If this rule has commands, put these deps first.  */
+              while (d->next != 0)
+                d = d->next;
 
-  if (implicit)
-    {
-      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);
+              d->next = f->deps;
+              f->deps = this;
+            }
+          else
+            {
+              struct dep *d = f->deps;
+
+              /* A rule without commands: put its prereqs at the end.  */
+              while (d->next != 0)
+                d = d->next;
+
+              d->next = this;
+            }
+        }
+
+      name = f->name;
+
+      /* All done!  Set up for the next one.  */
+      if (nextf == 0)
+        break;
+
+      filenames = nextf;
+
+      /* Reduce escaped percents.  If there are any unescaped it's an error  */
+      name = filenames->name;
+      if (find_percent_cached (&name))
+        fatal (flocp, _("mixed implicit and normal rules"));
     }
 }
 \f
@@ -2143,7 +2127,7 @@ find_char_unquote (char *string, int stop1, int stop2, int blank,
                    int ignorevars)
 {
   unsigned int string_len = 0;
-  register char *p = string;
+  char *p = string;
 
   if (ignorevars)
     ignorevars = '$';
@@ -2202,7 +2186,7 @@ find_char_unquote (char *string, int stop1, int stop2, int blank,
       if (p > string && p[-1] == '\\')
        {
          /* Search for more backslashes.  */
-         register int i = -2;
+         int i = -2;
          while (&p[i] >= string && p[i] == '\\')
            --i;
          ++i;
@@ -2211,8 +2195,8 @@ find_char_unquote (char *string, int stop1, int stop2, int blank,
            string_len = strlen (string);
          /* The number of backslashes is now -I.
             Copy P over itself to swallow half of them.  */
-         bcopy (&p[i / 2], &p[i], (string_len - (p - string)) - (i / 2) + 1);
-         p += i / 2;
+         memmove (&p[i], &p[i/2], (string_len - (p - string)) - (i/2) + 1);
+         p += i/2;
          if (i % 2 == 0)
            /* All the backslashes quoted each other; the STOPCHAR was
               unquoted.  */
@@ -2229,255 +2213,88 @@ find_char_unquote (char *string, int stop1, int stop2, int blank,
   return 0;
 }
 
-/* Search PATTERN for an unquoted %.  */
+/* Search PATTERN for an unquoted % and handle quoting.  */
 
 char *
 find_percent (char *pattern)
 {
   return find_char_unquote (pattern, '%', 0, 0, 0);
 }
-\f
-/* Parse a string into a sequence of filenames represented as a
-   chain of struct nameseq's in reverse order and return that chain.
 
-   The string is passed as STRINGP, the address of a string pointer.
-   The string pointer is updated to point at the first character
-   not parsed, which either is a null char or equals STOPCHAR.
+/* Search STRING for an unquoted % and handle quoting.  Returns a pointer to
+   the % or NULL if no % was found.
+   This version is used with strings in the string cache: if there's a need to
+   modify the string a new version will be added to the string cache and
+   *STRING will be set to that.  */
 
-   SIZE is how big to construct chain elements.
-   This is useful if we want them actually to be other structures
-   that have room for additional info.
-
-   If STRIP is nonzero, strip `./'s off the beginning.  */
-
-struct nameseq *
-parse_file_seq (char **stringp, int stopchar, unsigned int size, int strip)
+const char *
+find_percent_cached (const char **string)
 {
-  struct nameseq *new = 0;
-  struct nameseq *new1, *lastnew1;
-  char *p = *stringp;
-  char *q;
-  char *name;
+  const char *p = *string;
+  char *new = 0;
+  int slen = 0;
 
-#ifdef VMS
-# define VMS_COMMA ','
-#else
-# define VMS_COMMA 0
-#endif
+  /* If the first char is a % return now.  This lets us avoid extra tests
+     inside the loop.  */
+  if (*p == '%')
+    return p;
 
   while (1)
     {
-      /* Skip whitespace; see if any more names are left.  */
-      p = next_token (p);
-      if (*p == '\0')
-       break;
-      if (*p == stopchar)
-       break;
-
-      /* Yes, find end of next name.  */
-      q = p;
-      p = find_char_unquote (q, stopchar, VMS_COMMA, 1, 0);
-#ifdef VMS
-       /* convert comma separated list to space separated */
-      if (p && *p == ',')
-       *p =' ';
-#endif
-#ifdef _AMIGA
-      if (stopchar == ':' && p && *p == ':'
-          && !(isspace ((unsigned char)p[1]) || !p[1]
-               || isspace ((unsigned char)p[-1])))
-      {
-       p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1, 0);
-      }
-#endif
-#ifdef HAVE_DOS_PATHS
-    /* For DOS paths, skip a "C:\..." or a "C:/..." until we find the
-       first colon which isn't followed by a slash or a backslash.
-       Note that tokens separated by spaces should be treated as separate
-       tokens since make doesn't allow path names with spaces */
-    if (stopchar == ':')
-      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, 0);
-#endif
-      if (p == 0)
-       p = q + strlen (q);
+      while (*p != '\0' && *p != '%')
+        ++p;
 
-      if (strip)
-#ifdef VMS
-       /* Skip leading `[]'s.  */
-       while (p - q > 2 && q[0] == '[' && q[1] == ']')
-#else
-       /* Skip leading `./'s.  */
-       while (p - q > 2 && q[0] == '.' && q[1] == '/')
-#endif
-         {
-           q += 2;             /* Skip "./".  */
-           while (q < p && *q == '/')
-             /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
-             ++q;
-         }
+      if (*p == '\0')
+        break;
 
-      /* Extract the filename just found, and skip it.  */
+      /* See if this % is escaped with a backslash; if not we're done.  */
+      if (p[-1] != '\\')
+        break;
 
-      if (q == p)
-       /* ".///" was stripped to "". */
-#ifdef VMS
-       continue;
-#else
-#ifdef _AMIGA
-       name = savestring ("", 0);
-#else
-       name = savestring ("./", 2);
-#endif
-#endif
-      else
-#ifdef VMS
-/* VMS filenames can have a ':' in them but they have to be '\'ed but we need
- *  to remove this '\' before we can use the filename.
- * Savestring called because q may be read-only string constant.
- */
-       {
-         char *qbase = xstrdup (q);
-         char *pbase = qbase + (p-q);
-         char *q1 = qbase;
-         char *q2 = q1;
-         char *p1 = pbase;
+      {
+        /* Search for more backslashes.  */
+        char *pv;
+        int i = -2;
 
-         while (q1 != pbase)
-           {
-             if (*q1 == '\\' && *(q1+1) == ':')
-               {
-                 q1++;
-                 p1--;
-               }
-             *q2++ = *q1++;
-           }
-         name = savestring (qbase, p1 - qbase);
-         free (qbase);
-       }
-#else
-       name = savestring (q, p - q);
-#endif
+        while (&p[i] >= *string && p[i] == '\\')
+          --i;
+        ++i;
 
-      /* Add it to the front of the chain.  */
-      new1 = (struct nameseq *) xmalloc (size);
-      new1->name = name;
-      new1->next = new;
-      new = new1;
-    }
+        /* At this point we know we'll need to allocate a new string.
+           Make a copy if we haven't yet done so.  */
+        if (! new)
+          {
+            slen = strlen (*string);
+            new = alloca (slen + 1);
+            memcpy (new, *string, slen + 1);
+            p = new + (p - *string);
+            *string = new;
+          }
 
-#ifndef NO_ARCHIVES
+        /* At this point *string, p, and new all point into the same string.
+           Get a non-const version of p so we can modify new.  */
+        pv = new + (p - *string);
 
-  /* Look for multi-word archive references.
-     They are indicated by a elt ending with an unmatched `)' and
-     an elt further down the chain (i.e., previous in the file list)
-     with an unmatched `(' (e.g., "lib(mem").  */
-
-  new1 = new;
-  lastnew1 = 0;
-  while (new1 != 0)
-    if (new1->name[0] != '('   /* Don't catch "(%)" and suchlike.  */
-       && new1->name[strlen (new1->name) - 1] == ')'
-       && strchr (new1->name, '(') == 0)
-      {
-       /* NEW1 ends with a `)' but does not contain a `('.
-          Look back for an elt with an opening `(' but no closing `)'.  */
+        /* The number of backslashes is now -I.
+           Copy P over itself to swallow half of them.  */
+        memmove (&pv[i], &pv[i/2], (slen - (pv - new)) - (i/2) + 1);
+        p += i/2;
 
-       struct nameseq *n = new1->next, *lastn = new1;
-       char *paren = 0;
-       while (n != 0 && (paren = strchr (n->name, '(')) == 0)
-         {
-           lastn = n;
-           n = n->next;
-         }
-       if (n != 0
-           /* Ignore something starting with `(', as that cannot actually
-              be an archive-member reference (and treating it as such
-              results in an empty file name, which causes much lossage).  */
-           && n->name[0] != '(')
-         {
-           /* N is the first element in the archive group.
-              Its name looks like "lib(mem" (with no closing `)').  */
-
-           char *libname;
-
-           /* Copy "lib(" into LIBNAME.  */
-           ++paren;
-           libname = (char *) alloca (paren - n->name + 1);
-           bcopy (n->name, libname, paren - n->name);
-           libname[paren - n->name] = '\0';
-
-           if (*paren == '\0')
-             {
-               /* N was just "lib(", part of something like "lib( a b)".
-                  Edit it out of the chain and free its storage.  */
-               lastn->next = n->next;
-               free (n->name);
-               free ((char *) n);
-               /* LASTN->next is the new stopping elt for the loop below.  */
-               n = lastn->next;
-             }
-           else
-             {
-               /* Replace N's name with the full archive reference.  */
-               name = concat (libname, paren, ")");
-               free (n->name);
-               n->name = name;
-             }
-
-           if (new1->name[1] == '\0')
-             {
-               /* NEW1 is just ")", part of something like "lib(a b )".
-                  Omit it from the chain and free its storage.  */
-               if (lastnew1 == 0)
-                 new = new1->next;
-               else
-                 lastnew1->next = new1->next;
-               lastn = new1;
-               new1 = new1->next;
-               free (lastn->name);
-               free ((char *) lastn);
-             }
-           else
-             {
-               /* Replace also NEW1->name, which already has closing `)'.  */
-               name = concat (libname, new1->name, "");
-               free (new1->name);
-               new1->name = name;
-               new1 = new1->next;
-             }
-
-           /* Trace back from NEW1 (the end of the list) until N
-              (the beginning of the list), rewriting each name
-              with the full archive reference.  */
-
-           while (new1 != n)
-             {
-               name = concat (libname, new1->name, ")");
-               free (new1->name);
-               new1->name = name;
-               lastnew1 = new1;
-               new1 = new1->next;
-             }
-         }
-       else
-         {
-           /* No frobnication happening.  Just step down the list.  */
-           lastnew1 = new1;
-           new1 = new1->next;
-         }
-      }
-    else
-      {
-       lastnew1 = new1;
-       new1 = new1->next;
+        /* If the backslashes quoted each other; the % was unquoted.  */
+        if (i % 2 == 0)
+          break;
       }
+    }
 
-#endif
+  /* If we had to change STRING, add it to the strcache.  */
+  if (new)
+    {
+      *string = strcache_add (*string);
+      p = *string + (p - new);
+    }
 
-  *stringp = p;
-  return new;
+  /* If we didn't find a %, return NULL.  Otherwise return a ptr to it.  */
+  return (*p == '\0') ? NULL : p;
 }
 \f
 /* Find the next line of text in an eval buffer, combining continuation lines
@@ -2510,11 +2327,11 @@ readstring (struct ebuffer *ebuf)
   while (1)
     {
       int backslash = 0;
-      char *bol = eol;
-      char *p;
+      const char *bol = eol;
+      const char *p;
 
       /* Find the next newline.  At EOS, stop.  */
-      eol = p = strchr (eol , '\n');
+      p = eol = strchr (eol , '\n');
       if (!eol)
         {
           ebuf->bufnext = ebuf->bufstart + ebuf->size + 1;
@@ -2623,8 +2440,7 @@ readline (struct ebuffer *ebuf)
       {
         unsigned long off = p - start;
         ebuf->size *= 2;
-        start = ebuf->buffer = ebuf->bufstart = (char *) xrealloc (start,
-                                                                   ebuf->size);
+        start = ebuf->buffer = ebuf->bufstart = xrealloc (start, ebuf->size);
         p = start + off;
         end = start + ebuf->size;
         *p = '\0';
@@ -2825,105 +2641,112 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
    from the arguments and the default list.  */
 
 void
-construct_include_path (char **arg_dirs)
+construct_include_path (const char **arg_dirs)
 {
-  register unsigned int i;
 #ifdef VAXC            /* just don't ask ... */
   stat_t stbuf;
 #else
   struct stat stbuf;
 #endif
-  /* Table to hold the dirs.  */
+  const char **dirs;
+  const char **cpp;
+  unsigned int idx;
 
-  register unsigned int defsize = (sizeof (default_include_directories)
-                                  / sizeof (default_include_directories[0]));
-  register unsigned int max = 5;
-  register char **dirs = (char **) xmalloc ((5 + defsize) * sizeof (char *));
-  register unsigned int idx = 0;
+  /* Compute the number of pointers we need in the table.  */
+  idx = sizeof (default_include_directories) / sizeof (const char *);
+  if (arg_dirs)
+    for (cpp = arg_dirs; *cpp != 0; ++cpp)
+      ++idx;
 
 #ifdef  __MSDOS__
-  defsize++;
+  /* Add one for $DJDIR.  */
+  ++idx;
 #endif
 
+  dirs = xmalloc (idx * sizeof (const char *));
+
+  idx = 0;
+  max_incl_len = 0;
+
   /* First consider any dirs specified with -I switches.
-     Ignore dirs that don't exist.  */
+     Ignore any that don't exist.  Remember the maximum string length.  */
 
-  if (arg_dirs != 0)
+  if (arg_dirs)
     while (*arg_dirs != 0)
       {
-       char *dir = *arg_dirs++;
+       const char *dir = *(arg_dirs++);
+        char *expanded = 0;
         int e;
 
        if (dir[0] == '~')
          {
-           char *expanded = tilde_expand (dir);
+           expanded = tilde_expand (dir);
            if (expanded != 0)
              dir = expanded;
          }
 
         EINTRLOOP (e, stat (dir, &stbuf));
        if (e == 0 && S_ISDIR (stbuf.st_mode))
-         {
-           if (idx == max - 1)
-             {
-               max += 5;
-               dirs = (char **)
-                 xrealloc ((char *) dirs, (max + defsize) * sizeof (char *));
-             }
-           dirs[idx++] = dir;
-         }
-       else if (dir != arg_dirs[-1])
-         free (dir);
+          {
+            unsigned int len = strlen (dir);
+            /* If dir name is written with trailing slashes, discard them.  */
+            while (len > 1 && dir[len - 1] == '/')
+              --len;
+            if (len > max_incl_len)
+              max_incl_len = len;
+            dirs[idx++] = strcache_add_len (dir, len);
+          }
+
+       if (expanded)
+         free (expanded);
       }
 
-  /* Now add at the end the standard default dirs.  */
+  /* Now add the standard default dirs at the end.  */
 
 #ifdef  __MSDOS__
   {
-    /* The environment variable $DJDIR holds the root of the
-       DJGPP directory tree; add ${DJDIR}/include.  */
+    /* The environment variable $DJDIR holds the root of the DJGPP directory
+       tree; add ${DJDIR}/include.  */
     struct variable *djdir = lookup_variable ("DJDIR", 5);
 
     if (djdir)
       {
-       char *defdir = (char *) xmalloc (strlen (djdir->value) + 8 + 1);
+        unsigned int len = strlen (djdir->value) + 8;
+       char *defdir = alloca (len + 1);
 
        strcat (strcpy (defdir, djdir->value), "/include");
-       dirs[idx++] = defdir;
+       dirs[idx++] = strcache_add (defdir);
+
+        if (len > max_incl_len)
+          max_incl_len = len;
       }
   }
 #endif
 
-  for (i = 0; default_include_directories[i] != 0; ++i)
+  for (cpp = default_include_directories; *cpp != 0; ++cpp)
     {
       int e;
 
-      EINTRLOOP (e, stat (default_include_directories[i], &stbuf));
+      EINTRLOOP (e, stat (*cpp, &stbuf));
       if (e == 0 && S_ISDIR (stbuf.st_mode))
-        dirs[idx++] = default_include_directories[i];
+        {
+          unsigned int len = strlen (*cpp);
+          /* If dir name is written with trailing slashes, discard them.  */
+          while (len > 1 && (*cpp)[len - 1] == '/')
+            --len;
+          if (len > max_incl_len)
+            max_incl_len = len;
+          dirs[idx++] = strcache_add_len (*cpp, len);
+        }
     }
 
   dirs[idx] = 0;
 
-  /* Now compute the maximum length of any name in it. Also add each
-     dir to the .INCLUDE_DIRS variable.  */
+  /* Now add each dir to the .INCLUDE_DIRS variable.  */
 
-  max_incl_len = 0;
-  for (i = 0; i < idx; ++i)
-    {
-      unsigned int len = strlen (dirs[i]);
-      /* If dir name is written with a trailing slash, discard it.  */
-      if (dirs[i][len - 1] == '/')
-       /* We can't just clobber a null in because it may have come from
-          a literal string and literal strings may not be writable.  */
-       dirs[i] = savestring (dirs[i], len - 1);
-      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);
-    }
+  for (cpp = dirs; *cpp != 0; ++cpp)
+    do_variable_definition (NILF, ".INCLUDE_DIRS", *cpp,
+                            o_default, f_append, 0);
 
   include_directories = dirs;
 }
@@ -2932,7 +2755,7 @@ construct_include_path (char **arg_dirs)
    Return a newly malloc'd string or 0.  */
 
 char *
-tilde_expand (char *name)
+tilde_expand (const char *name)
 {
 #ifndef VMS
   if (name[1] == '/' || name[1] == '\0')
@@ -2957,7 +2780,7 @@ tilde_expand (char *name)
          free (home_dir);
          home_dir = getenv ("HOME");
        }
-#if !defined(_AMIGA) && !defined(WINDOWS32)
+# if !defined(_AMIGA) && !defined(WINDOWS32)
       if (home_dir == 0 || home_dir[0] == '\0')
        {
          extern char *getlogin ();
@@ -2970,16 +2793,16 @@ tilde_expand (char *name)
                home_dir = p->pw_dir;
            }
        }
-#endif /* !AMIGA && !WINDOWS32 */
+# endif /* !AMIGA && !WINDOWS32 */
       if (home_dir != 0)
        {
-         char *new = concat (home_dir, "", name + 1);
+         char *new = xstrdup (concat (2, home_dir, name + 1));
          if (is_variable)
            free (home_dir);
          return new;
        }
     }
-#if !defined(_AMIGA) && !defined(WINDOWS32)
+# if !defined(_AMIGA) && !defined(WINDOWS32)
   else
     {
       struct passwd *pwent;
@@ -2992,147 +2815,376 @@ tilde_expand (char *name)
          if (userend == 0)
            return xstrdup (pwent->pw_dir);
          else
-           return concat (pwent->pw_dir, "/", userend + 1);
+           return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1));
        }
       else if (userend != 0)
        *userend = '/';
     }
-#endif /* !AMIGA && !WINDOWS32 */
+# endif /* !AMIGA && !WINDOWS32 */
 #endif /* !VMS */
   return 0;
 }
+\f
+/* Parse a string into a sequence of filenames represented as a chain of
+   struct nameseq's and return that chain.  Optionally expand the strings via
+   glob().
 
-/* Given a chain of struct nameseq's describing a sequence of filenames,
-   in reverse of the intended order, return a new chain describing the
-   result of globbing the filenames.  The new chain is in forward order.
-   The links of the old chain are freed or used in the new chain.
-   Likewise for the names in the old chain.
+   The string is passed as STRINGP, the address of a string pointer.
+   The string pointer is updated to point at the first character
+   not parsed, which either is a null char or equals STOPCHAR.
 
    SIZE is how big to construct chain elements.
    This is useful if we want them actually to be other structures
-   that have room for additional info.  */
+   that have room for additional info.
+
+   PREFIX, if non-null, is added to the beginning of each filename.
+
+   FLAGS allows one or more of the following bitflags to be set:
+        PARSEFS_NOSTRIP - Do no strip './'s off the beginning
+        PARSEFS_NOAR    - Do not check filenames for archive references
+        PARSEFS_NOGLOB  - Do not expand globbing characters
+        PARSEFS_EXISTS  - Only return globbed files that actually exist
+                          (cannot also set NOGLOB)
+        PARSEFS_NOCACHE - Do not add filenames to the strcache (caller frees)
+  */
 
-struct nameseq *
-multi_glob (struct nameseq *chain, unsigned int size)
+void *
+parse_file_seq (char **stringp, unsigned int size, int stopchar,
+                const char *prefix, int flags)
 {
-  extern void dir_setup_glob ();
-  register struct nameseq *new = 0;
-  register struct nameseq *old;
-  struct nameseq *nexto;
+  extern void dir_setup_glob (glob_t *glob);
+
+  /* tmp points to tmpbuf after the prefix, if any.
+     tp is the end of the buffer. */
+  static char *tmpbuf = NULL;
+  static int tmpbuf_len = 0;
+
+  int cachep = (! (flags & PARSEFS_NOCACHE));
+
+  struct nameseq *new = 0;
+  struct nameseq **newp = &new;
+#define NEWELT(_n)  do { \
+                        const char *__n = (_n); \
+                        *newp = xcalloc (size); \
+                        (*newp)->name = (cachep ? strcache_add (__n) : xstrdup (__n)); \
+                        newp = &(*newp)->next; \
+                    } while(0)
+
+  char *p;
   glob_t gl;
+  char *tp;
+
+#ifdef VMS
+# define VMS_COMMA ','
+#else
+# define VMS_COMMA 0
+#endif
+
+  if (size < sizeof (struct nameseq))
+    size = sizeof (struct nameseq);
+
+  if (! (flags & PARSEFS_NOGLOB))
+    dir_setup_glob (&gl);
 
-  dir_setup_glob (&gl);
+  /* Get enough temporary space to construct the largest possible target.  */
+  {
+    int l = strlen (*stringp) + 1;
+    if (l > tmpbuf_len)
+      {
+        tmpbuf = xrealloc (tmpbuf, l);
+        tmpbuf_len = l;
+      }
+  }
+  tp = tmpbuf;
 
-  for (old = chain; old != 0; old = nexto)
+  /* Parse STRING.  P will always point to the end of the parsed content.  */
+  p = *stringp;
+  while (1)
     {
+      const char *name;
+      const char **nlist = 0;
+      char *tildep = 0;
 #ifndef NO_ARCHIVES
-      char *memname;
+      char *arname = 0;
+      char *memname = 0;
+#endif
+      char *s;
+      int nlen;
+      int i;
+
+      /* Skip whitespace; at the end of the string or STOPCHAR we're done.  */
+      p = next_token (p);
+      if (*p == '\0' || *p == stopchar)
+       break;
+
+      /* There are names left, so find the end of the next name.
+         Throughout this iteration S points to the start.  */
+      s = p;
+      p = find_char_unquote (p, stopchar, VMS_COMMA, 1, 0);
+#ifdef VMS
+       /* convert comma separated list to space separated */
+      if (p && *p == ',')
+       *p =' ';
+#endif
+#ifdef _AMIGA
+      if (stopchar == ':' && p && *p == ':'
+          && !(isspace ((unsigned char)p[1]) || !p[1]
+               || isspace ((unsigned char)p[-1])))
+       p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1, 0);
+#endif
+#ifdef HAVE_DOS_PATHS
+    /* For DOS paths, skip a "C:\..." or a "C:/..." until we find the
+       first colon which isn't followed by a slash or a backslash.
+       Note that tokens separated by spaces should be treated as separate
+       tokens since make doesn't allow path names with spaces */
+    if (stopchar == ':')
+      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, 0);
+#endif
+      if (p == 0)
+       p = s + strlen (s);
+
+      /* Strip leading "this directory" references.  */
+      if (! (flags & PARSEFS_NOSTRIP))
+#ifdef VMS
+       /* Skip leading `[]'s.  */
+       while (p - s > 2 && s[0] == '[' && s[1] == ']')
+#else
+       /* Skip leading `./'s.  */
+       while (p - s > 2 && s[0] == '.' && s[1] == '/')
 #endif
+         {
+            /* Skip "./" and all following slashes.  */
+           s += 2;
+           while (*s == '/')
+             ++s;
+         }
 
-      nexto = old->next;
+      /* Extract the filename just found, and skip it.
+         Set NAME to the string, and NLEN to its length.  */
 
-      if (old->name[0] == '~')
+      if (s == p)
+        {
+       /* The name was stripped to empty ("./"). */
+#if defined(VMS)
+          continue;
+#elif defined(_AMIGA)
+          /* PDS-- This cannot be right!! */
+          tp[0] = '\0';
+          nlen = 0;
+#else
+          tp[0] = '.';
+          tp[1] = '/';
+          tp[2] = '\0';
+          nlen = 2;
+#endif
+        }
+      else
        {
-         char *newname = tilde_expand (old->name);
-         if (newname != 0)
+#ifdef VMS
+/* VMS filenames can have a ':' in them but they have to be '\'ed but we need
+ *  to remove this '\' before we can use the filename.
+ * xstrdup called because S may be read-only string constant.
+ */
+         char *n = tp;
+         while (s < p)
            {
-             free (old->name);
-             old->name = newname;
+             if (s[0] == '\\' && s[1] == ':')
+                ++s;
+             *(n++) = *(s++);
            }
-       }
+          n[0] = '\0';
+          nlen = strlen (tp);
+#else
+          nlen = p - s;
+          memcpy (tp, s, nlen);
+          tp[nlen] = '\0';
+#endif
+        }
+
+      /* At this point, TP points to the element and NLEN is its length.  */
 
 #ifndef NO_ARCHIVES
-      if (ar_name (old->name))
+      /* If this is the start of an archive group that isn't complete, set up
+         to add the archive prefix for future files.  A file list like:
+         "libf.a(x.o y.o z.o)" needs to be expanded as:
+         "libf.a(x.o) libf.a(y.o) libf.a(z.o)"
+
+         TP == TMP means we're not already in an archive group.  Ignore
+         something starting with `(', as that cannot actually be an
+         archive-member reference (and treating it as such results in an empty
+         file name, which causes much lossage).  Also if it ends in ")" then
+         it's a complete reference so we don't need to treat it specially.
+
+         Finally, note that archive groups must end with ')' as the last
+         character, so ensure there's some word ending like that before
+         considering this an archive group.  */
+      if (! (flags & PARSEFS_NOAR)
+          && tp == tmpbuf && tp[0] != '(' && tp[nlen-1] != ')')
+        {
+          char *n = strchr (tp, '(');
+          if (n)
+            {
+              /* This looks like the first element in an open archive group.
+                 A valid group MUST have ')' as the last character.  */
+              const char *e = p + nlen;
+              do
+                {
+                  e = next_token (e);
+                  /* Find the end of this word.  We don't want to unquote and
+                     we don't care about quoting since we're looking for the
+                     last char in the word. */
+                  while (*e != '\0' && *e != stopchar && *e != VMS_COMMA
+                         && ! isblank ((unsigned char) *e))
+                    ++e;
+                  if (e[-1] == ')')
+                    {
+                      /* Found the end, so this is the first element in an
+                         open archive group.  It looks like "lib(mem".
+                         Reset TP past the open paren.  */
+                      nlen -= (n + 1) - tp;
+                      tp = n + 1;
+
+                      /* If we have just "lib(", part of something like
+                         "lib( a b)", go to the next item.  */
+                      if (! nlen)
+                        continue;
+
+                      /* We can stop looking now.  */
+                      break;
+                    }
+                }
+              while (*e != '\0');
+            }
+        }
+
+      /* If we are inside an archive group, make sure it has an end.  */
+      if (tp > tmpbuf)
+        {
+          if (tp[nlen-1] == ')')
+            {
+              /* This is the natural end; reset TP.  */
+              tp = tmpbuf;
+
+              /* This is just ")", something like "lib(a b )": skip it.  */
+              if (nlen == 1)
+                continue;
+            }
+          else
+            {
+              /* Not the end, so add a "fake" end.  */
+              tp[nlen++] = ')';
+              tp[nlen] = '\0';
+            }
+        }
+#endif
+
+      /* If we're not globbing we're done: add it to the end of the chain.
+         Go to the next item in the string.  */
+      if (flags & PARSEFS_NOGLOB)
+        {
+          NEWELT (concat (2, prefix, tp));
+          continue;
+        }
+
+      /* If we get here we know we're doing glob expansion.
+         TP is a string in tmpbuf.  NLEN is no longer used.
+         We may need to do more work: after this NAME will be set.  */
+      name = tp;
+
+      /* Expand tilde if applicable.  */
+      if (tp[0] == '~')
        {
-         /* OLD->name is an archive member reference.
-            Replace it with the archive file name,
-            and save the member name in MEMNAME.
-            We will glob on the archive name and then
-            reattach MEMNAME later.  */
-         char *arname;
-         ar_parse_name (old->name, &arname, &memname);
-         free (old->name);
-         old->name = arname;
+         tildep = tilde_expand (tp);
+         if (tildep != 0)
+            name = tildep;
        }
-      else
-       memname = 0;
-#endif /* !NO_ARCHIVES */
 
-      switch (glob (old->name, GLOB_NOCHECK|GLOB_ALTDIRFUNC, NULL, &gl))
-       {
-       case 0:                 /* Success.  */
-         {
-           register int i = gl.gl_pathc;
-           while (i-- > 0)
-             {
 #ifndef NO_ARCHIVES
-               if (memname != 0)
-                 {
-                   /* Try to glob on MEMNAME within the archive.  */
-                   struct nameseq *found
-                     = ar_glob (gl.gl_pathv[i], memname, size);
-                   if (found == 0)
-                     {
-                       /* No matches.  Use MEMNAME as-is.  */
-                       unsigned int alen = strlen (gl.gl_pathv[i]);
-                       unsigned int mlen = strlen (memname);
-                       struct nameseq *elt
-                         = (struct nameseq *) xmalloc (size);
-                        if (size > sizeof (struct nameseq))
-                          bzero (((char *) elt) + sizeof (struct nameseq),
-                                 size - sizeof (struct nameseq));
-                       elt->name = (char *) xmalloc (alen + 1 + mlen + 2);
-                       bcopy (gl.gl_pathv[i], elt->name, alen);
-                       elt->name[alen] = '(';
-                       bcopy (memname, &elt->name[alen + 1], mlen);
-                       elt->name[alen + 1 + mlen] = ')';
-                       elt->name[alen + 1 + mlen + 1] = '\0';
-                       elt->next = new;
-                       new = elt;
-                     }
-                   else
-                     {
-                       /* Find the end of the FOUND chain.  */
-                       struct nameseq *f = found;
-                       while (f->next != 0)
-                         f = f->next;
-
-                       /* Attach the chain being built to the end of the FOUND
-                          chain, and make FOUND the new NEW chain.  */
-                       f->next = new;
-                       new = found;
-                     }
-
-                   free (memname);
-                 }
-               else
+      /* If NAME is an archive member reference replace it with the archive
+         file name, and save the member name in MEMNAME.  We will glob on the
+         archive name and then reattach MEMNAME later.  */
+      if (! (flags & PARSEFS_NOAR) && ar_name (name))
+       {
+         ar_parse_name (name, &arname, &memname);
+         name = arname;
+       }
 #endif /* !NO_ARCHIVES */
-                 {
-                   struct nameseq *elt = (struct nameseq *) xmalloc (size);
-                    if (size > sizeof (struct nameseq))
-                      bzero (((char *) elt) + sizeof (struct nameseq),
-                             size - sizeof (struct nameseq));
-                   elt->name = xstrdup (gl.gl_pathv[i]);
-                   elt->next = new;
-                   new = elt;
-                 }
-             }
-           globfree (&gl);
-           free (old->name);
-           free ((char *)old);
-           break;
-         }
 
+      switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
+       {
        case GLOB_NOSPACE:
          fatal (NILF, _("virtual memory exhausted"));
-         break;
+
+       case 0:
+          /* Success.  */
+          i = gl.gl_pathc;
+          nlist = (const char **)gl.gl_pathv;
+          break;
+
+        case GLOB_NOMATCH:
+          /* If we want only existing items, skip this one.  */
+          if (flags & PARSEFS_EXISTS)
+            {
+              i = 0;
+              break;
+            }
+          /* FALLTHROUGH */
 
        default:
-         old->next = new;
-         new = old;
-         break;
+          /* By default keep this name.  */
+          i = 1;
+          nlist = &name;
+          break;
        }
+
+      /* For each matched element, add it to the list.  */
+      while (i-- > 0)
+#ifndef NO_ARCHIVES
+        if (memname != 0)
+          {
+            /* Try to glob on MEMNAME within the archive.  */
+            struct nameseq *found = ar_glob (nlist[i], memname, size);
+            if (! found)
+              /* No matches.  Use MEMNAME as-is.  */
+              NEWELT (concat (5, prefix, nlist[i], "(", memname, ")"));
+            else
+              {
+                /* We got a chain of items.  Attach them.  */
+                (*newp)->next = found;
+
+                /* Find and set the new end.  Massage names if necessary.  */
+                while (1)
+                  {
+                    if (! cachep)
+                      found->name = xstrdup (concat (2, prefix, name));
+                    else if (prefix)
+                      found->name = strcache_add (concat (2, prefix, name));
+
+                    if (found->next == 0)
+                      break;
+
+                    found = found->next;
+                  }
+                newp = &found->next;
+              }
+          }
+        else
+#endif /* !NO_ARCHIVES */
+          NEWELT (concat (2, prefix, nlist[i]));
+
+      globfree (&gl);
+
+#ifndef NO_ARCHIVES
+      if (arname)
+        free (arname);
+#endif
+
+      if (tildep)
+        free (tildep);
     }
 
+  *stringp = p;
   return new;
 }
index 4b4f105..ec3d624 100644 (file)
@@ -1,16 +1,13 @@
 This is the VMS version of GNU Make, updated by Hartmut Becker
 
-Changes are based on GNU make 3.80. Latest changes are for OpenVMS/I64
-and new VMS CRTLs.
+Changes are based on GNU make 3.82.
 
-This version was tested on OpenVMS/I64 V8.2 (field test) with hp C
-X7.1-024 OpenVMS/Alpha V7.3-2 with Compaq C V6.5-001 and OpenVMS/VAX 7.1
-with Compaq C V6.2-003 There are still some warning and informational
-message issued by the compilers.
+This version was built and tested on OpenVMS V7.3 (VAX), V7.3-2 (Alpha) and
+V8.3-1H1 (I64).
 
 Build instructions
 Make a 1st version
-       $ @makefile.com
+       $ @makefile.com  ! ignore any compiler and/or linker warning
        $ rena make.exe 1st-make.exe
 Use the 1st version to generate a 2nd version
        $ mc sys$disk:[]1st-make clean
@@ -20,7 +17,89 @@ Verify your 2nd version
        $ mc sys$disk:[]2nd-make clean
        $ mc sys$disk:[]2nd-make
 
-Changes:
+Changes (3.81.90)
+
+Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with
+timestamps of object modules in OLBs. The timestamps were not correctly
+adjusted to GMT based time, if the local VMS time was using a daylight saving
+algorithm and if daylight saving was switched off.
+
+John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to append
+output redirection in action lines.
+
+Rework of ctrl+c and ctrl+y handling.
+
+Fix a problem with cached strings, which showed on case-insensitive file
+systems.
+
+Build fixes for const-ified code in VMS specific sources.
+
+Build notes:
+- Try to avoid HP C V7.2-001, which has an incompatible change
+how __STDC__ is defined. This results at least in compile time warnings.
+
+- On V8.3-1H1, if you press Ctrl+C you may see a traceback, starting with
+%SYSTEM-F-CONTROLC, operation completed under CTRL/C
+%TRACE-F-TRACEBACK, symbolic stack dump follows
+image     module    routine               line      rel PC           abs PC
+
+DECC$SHR  C$SIGNAL  gsignal              27991 0000000000001180
+FFFFFFFF84AB2DA0
+DECC$SHR  C$SIGNAL  raise                28048 0000000000001280
+FFFFFFFF84AB2EA0
+DECC$SHR  C$SIGPENDING  decc$$deliver_signals
+                                         12475 0000000000000890
+FFFFFFFF84C13690
+...
+This looks like an incompatibility to the Alpha and VAX behavior, so it looks
+like a problem in I64 VMS version(s).
+
+- There is no clean build on VAX. In the environment I tested, I had to use GNU
+make's alloca which produced a couple of compile time warnings. It seems too
+much effort to work on a clean build on VAX.
+
+A note on appending the redirected output. With this change, a simple mechanism
+is implemented to make ">>" work in action lines. In VMS there is no simple
+feature like ">>" to have DCL command or program output redirected and appended
+to a file. GNU make for VMS already implements the redirection of output. If
+such a redirection is detected, an ">" on the action line, GNU make creates a
+DCL command procedure to execute the action and to redirect its output. Based
+on that, now ">>" is also recognized and a similar but different command
+procedure is created to implement the append. The main idea here is to create a
+temporary file which collects the output and which is appended to the wanted
+output file. Then the temporary file is deleted. This is all done in the
+command procedure to keep changes in make small and simple. This obviously has
+some limitations but it seems good enough compared with the current ">"
+implementation. (And in my opinion, redirection is not really what GNU make has
+to do.) With this approach, it may happen that the temporary file is not yet
+appended and is left in SYS$SCRATCH. The temporary file names look like
+"CMDxxxxx.". Any time the created command procedure can not complete, this
+happens. Pressing Ctrl+Y to abort make is one case. In case of Ctrl+Y the
+associated command procedure is left in SYS$SCRATCH as well. Its name is
+CMDxxxxx.COM.
+
+Change in the Ctrl+Y handling
+
+Ctrl+Y was: The CtrlY handler called $forcex for the current child.
+
+Ctrl+Y changed: The CtrlY handler uses $delprc to delete all children. This way
+also actions with DCL commands will be stopped. As before Ctrl+Y then sends
+SIGQUIT to itself, which is handled in common code.
+
+Change in deleteing temporary command files
+
+Temporary command files were deleted in the main line, after returning from the
+vms child termination handler. If Ctrl+C was pressed, the handler is called but
+did not return to main line.
+
+Now, temporary command files are deleted in the vms child termination
+handler. That deletes the them even if a Ctrl+C was pressed.
+
+The behavior of pressing Ctrl+C is not changed. It still has only an effect,
+after the current action is terminated. If that doesn't happen or takes too
+long, Ctrl+Y should be used instead.
+\f
+Changes (3.80)
 
 . In default.c define variable ARCH as IA64 for VMS on Itanium systems.
 
@@ -297,17 +376,17 @@ 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.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index a752734..27d2550 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -1,20 +1,20 @@
 /* Basic dependency engine 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
@@ -39,7 +39,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #include <io.h>
 #endif
 
-extern int try_implicit_rule PARAMS ((struct file *file, unsigned int depth));
+extern int try_implicit_rule (struct file *file, unsigned int depth);
 
 
 /* The test for circular dependencies is based on the 'updating' bit in
@@ -60,13 +60,14 @@ unsigned int commands_started = 0;
 /* Current value for pruning the scan of the goal chain (toggle 0/1).  */
 static unsigned int considered;
 
-static int update_file PARAMS ((struct file *file, unsigned int depth));
-static int update_file_1 PARAMS ((struct file *file, unsigned int depth));
-static int check_dep PARAMS ((struct file *file, unsigned int depth, FILE_TIMESTAMP this_mtime, int *must_make_ptr));
-static int touch_file PARAMS ((struct file *file));
-static void remake_file PARAMS ((struct file *file));
-static FILE_TIMESTAMP name_mtime PARAMS ((char *name));
-static int library_search PARAMS ((char **lib, FILE_TIMESTAMP *mtime_ptr));
+static int update_file (struct file *file, unsigned int depth);
+static int update_file_1 (struct file *file, unsigned int depth);
+static int check_dep (struct file *file, unsigned int depth,
+                      FILE_TIMESTAMP this_mtime, int *must_make_ptr);
+static int touch_file (struct file *file);
+static void remake_file (struct file *file);
+static FILE_TIMESTAMP name_mtime (const char *name);
+static const char *library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr);
 
 \f
 /* Remake all the goals in the `struct dep' chain GOALS.  Return -1 if nothing
@@ -81,7 +82,6 @@ int
 update_goal_chain (struct dep *goals)
 {
   int t = touch_flag, q = question_flag, n = just_print_flag;
-  unsigned int j = job_slots;
   int status = -1;
 
 #define        MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \
@@ -133,6 +133,9 @@ update_goal_chain (struct dep *goals)
            {
              unsigned int ocommands_started;
              int x;
+
+              file->dontcare = g->dontcare;
+
              check_renamed (file);
              if (rebuilding_makefiles)
                {
@@ -206,6 +209,8 @@ update_goal_chain (struct dep *goals)
                  When they are all finished, the goal is finished.  */
              any_not_updated |= !file->updated;
 
+              file->dontcare = 0;
+
              if (stop)
                break;
            }
@@ -237,7 +242,7 @@ update_goal_chain (struct dep *goals)
                lastgoal->next = g->next;
 
              /* Free the storage.  */
-             free ((char *) g);
+             free (g);
 
              g = lastgoal == 0 ? goals : lastgoal->next;
 
@@ -262,7 +267,6 @@ update_goal_chain (struct dep *goals)
       touch_flag = t;
       question_flag = q;
       just_print_flag = n;
-      job_slots = j;
     }
 
   return status;
@@ -294,8 +298,14 @@ update_file (struct file *file, unsigned int depth)
      change is possible below here until then.  */
   if (f->considered == considered)
     {
-      DBF (DB_VERBOSE, _("Pruning file `%s'.\n"));
-      return f->command_state == cs_finished ? f->update_status : 0;
+      /* Check for the case where a target has been tried and failed but
+         the diagnostics hasn't been issued. If we need the diagnostics
+         then we will have to continue. */
+      if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag))
+        {
+          DBF (DB_VERBOSE, _("Pruning file `%s'.\n"));
+          return f->command_state == cs_finished ? f->update_status : 0;
+        }
     }
 
   /* This loop runs until we start commands for a double colon rule, or until
@@ -312,7 +322,7 @@ update_file (struct file *file, unsigned int depth)
 
       /* If we got an error, don't bother with double_colon etc.  */
       if (status != 0 && !keep_going_flag)
-       return status;
+        return status;
 
       if (f->command_state == cs_running
           || f->command_state == cs_deps_running)
@@ -343,25 +353,48 @@ update_file (struct file *file, unsigned int depth)
 /* Show a message stating the target failed to build.  */
 
 static void
-complain (const struct file *file)
+complain (struct file *file)
 {
   const char *msg_noparent
     = _("%sNo rule to make target `%s'%s");
   const char *msg_parent
     = _("%sNo rule to make target `%s', needed by `%s'%s");
 
-  if (!keep_going_flag)
+  /* If this file has no_diag set then it means we tried to update it
+     before in the dontcare mode and failed. The target that actually
+     failed is not necessarily this file but could be one of its direct
+     or indirect dependencies. So traverse this file's dependencies and
+     find the one that actually caused the failure. */
+
+  struct dep *d;
+
+  for (d = file->deps; d != 0; d = d->next)
     {
+      if (d->file->updated && d->file->update_status > 0 && file->no_diag)
+        {
+          complain (d->file);
+          break;
+        }
+    }
+
+  if (d == 0)
+    {
+      /* Didn't find any dependencies to complain about. */
+      if (!keep_going_flag)
+        {
+          if (file->parent == 0)
+            fatal (NILF, msg_noparent, "", file->name, "");
+
+          fatal (NILF, msg_parent, "", file->name, file->parent->name, "");
+        }
+
       if (file->parent == 0)
-        fatal (NILF, msg_noparent, "", file->name, "");
+        error (NILF, msg_noparent, "*** ", file->name, ".");
+      else
+        error (NILF, msg_parent, "*** ", file->name, file->parent->name, ".");
 
-      fatal (NILF, msg_parent, "", file->name, file->parent->name, "");
+      file->no_diag = 0;
     }
-
-  if (file->parent == 0)
-    error (NILF, msg_noparent, "*** ", file->name, ".");
-  else
-    error (NILF, msg_parent, "*** ", file->name, file->parent->name, ".");
 }
 
 /* Consider a single `struct file' and update it as appropriate.  */
@@ -369,10 +402,12 @@ complain (const struct file *file)
 static int
 update_file_1 (struct file *file, unsigned int depth)
 {
-  register FILE_TIMESTAMP this_mtime;
+  FILE_TIMESTAMP this_mtime;
   int noexist, must_make, deps_changed;
   int dep_status = 0;
-  register struct dep *d, *lastd;
+  struct file *ofile;
+  struct dep *d, *ad;
+  struct dep amake;
   int running = 0;
 
   DBF (DB_VERBOSE, _("Considering target file `%s'.\n"));
@@ -384,15 +419,12 @@ update_file_1 (struct file *file, unsigned int depth)
          DBF (DB_VERBOSE,
                _("Recently tried and failed to update file `%s'.\n"));
 
-          /* If the file we tried to make is marked dontcare then no message
+          /* If the file we tried to make is marked no_diag then no message
              was printed about it when it failed during the makefile rebuild.
              If we're trying to build it again in the normal rebuild, print a
              message now.  */
-          if (file->dontcare && !rebuilding_makefiles)
-            {
-              file->dontcare = 0;
+          if (file->no_diag && !file->dontcare)
               complain (file);
-            }
 
          return file->update_status;
        }
@@ -416,11 +448,19 @@ update_file_1 (struct file *file, unsigned int depth)
       abort ();
     }
 
+  /* Determine whether the diagnostics will be issued should this update
+     fail. */
+  file->no_diag = file->dontcare;
+
   ++depth;
 
   /* Notice recursive update of the same file.  */
   start_updating (file);
 
+  /* We might change file if we find a different one via vpath;
+     remember this one to turn off updating.  */
+  ofile = file;
+
   /* Looking at the file's modtime beforehand allows the possibility
      that its name may be changed by a VPATH search, and thus it may
      not need an implicit rule.  If this were not done, the file
@@ -459,89 +499,98 @@ update_file_1 (struct file *file, unsigned int depth)
   if (file->cmds == 0 && !file->is_target
       && default_file != 0 && default_file->cmds != 0)
     {
-      DBF (DB_IMPLICIT, _("Using default commands for `%s'.\n"));
+      DBF (DB_IMPLICIT, _("Using default recipe for `%s'.\n"));
       file->cmds = default_file->cmds;
     }
 
-  /* Update all non-intermediate files we depend on, if necessary,
-     and see whether any of them is more recent than this file.  */
+  /* Update all non-intermediate files we depend on, if necessary, and see
+     whether any of them is more recent than this file.  We need to walk our
+     deps, AND the deps of any also_make targets to ensure everything happens
+     in the correct order.  */
 
-  lastd = 0;
-  d = file->deps;
-  while (d != 0)
+  amake.file = file;
+  amake.next = file->also_make;
+  ad = &amake;
+  while (ad)
     {
-      FILE_TIMESTAMP mtime;
-      int maybe_make;
-      int dontcare = 0;
+      struct dep *lastd = 0;
 
-      check_renamed (d->file);
+      /* Find the deps we're scanning */
+      d = ad->file->deps;
+      ad = ad->next;
 
-      mtime = file_mtime (d->file);
-      check_renamed (d->file);
+      while (d)
+        {
+          FILE_TIMESTAMP mtime;
+          int maybe_make;
+          int dontcare = 0;
 
-      if (is_updating (d->file))
-       {
-         error (NILF, _("Circular %s <- %s dependency dropped."),
-                file->name, d->file->name);
-         /* We cannot free D here because our the caller will still have
-            a reference to it when we were called recursively via
-            check_dep below.  */
-         if (lastd == 0)
-           file->deps = d->next;
-         else
-           lastd->next = d->next;
-         d = d->next;
-         continue;
-       }
+          check_renamed (d->file);
 
-      d->file->parent = file;
-      maybe_make = must_make;
+          mtime = file_mtime (d->file);
+          check_renamed (d->file);
 
-      /* Inherit dontcare flag from our parent. */
-      if (rebuilding_makefiles)
-        {
-          dontcare = d->file->dontcare;
-          d->file->dontcare = file->dontcare;
-        }
+          if (is_updating (d->file))
+            {
+              error (NILF, _("Circular %s <- %s dependency dropped."),
+                     file->name, d->file->name);
+              /* We cannot free D here because our the caller will still have
+                 a reference to it when we were called recursively via
+                 check_dep below.  */
+              if (lastd == 0)
+                file->deps = d->next;
+              else
+                lastd->next = d->next;
+              d = d->next;
+              continue;
+            }
 
+          d->file->parent = file;
+          maybe_make = must_make;
 
-      dep_status |= check_dep (d->file, depth, this_mtime, &maybe_make);
+          /* Inherit dontcare flag from our parent. */
+          if (rebuilding_makefiles)
+            {
+              dontcare = d->file->dontcare;
+              d->file->dontcare = file->dontcare;
+            }
 
-      /* Restore original dontcare flag. */
-      if (rebuilding_makefiles)
-        d->file->dontcare = dontcare;
+          dep_status |= check_dep (d->file, depth, this_mtime, &maybe_make);
 
-      if (! d->ignore_mtime)
-        must_make = maybe_make;
+          /* Restore original dontcare flag. */
+          if (rebuilding_makefiles)
+            d->file->dontcare = dontcare;
 
-      check_renamed (d->file);
+          if (! d->ignore_mtime)
+            must_make = maybe_make;
 
-      {
-       register struct file *f = d->file;
-       if (f->double_colon)
-         f = f->double_colon;
-       do
-         {
-           running |= (f->command_state == cs_running
-                       || f->command_state == cs_deps_running);
-           f = f->prev;
-         }
-       while (f != 0);
-      }
+          check_renamed (d->file);
+
+          {
+            register struct file *f = d->file;
+            if (f->double_colon)
+              f = f->double_colon;
+            do
+              {
+                running |= (f->command_state == cs_running
+                            || f->command_state == cs_deps_running);
+                f = f->prev;
+              }
+            while (f != 0);
+          }
 
-      if (dep_status != 0 && !keep_going_flag)
-       break;
+          if (dep_status != 0 && !keep_going_flag)
+            break;
 
-      if (!running)
-        /* The prereq is considered changed if the timestamp has changed while
-           it was built, OR it doesn't exist.
-          This causes the Linux kernel build to break.  We'll defer this
-          fix until GNU make 3.82 to give them time to update.  */
-       d->changed = ((file_mtime (d->file) != mtime)
-                      /* || (mtime == NONEXISTENT_MTIME) */);
+          if (!running)
+            /* The prereq is considered changed if the timestamp has changed while
+               it was built, OR it doesn't exist.  */
+            d->changed = ((file_mtime (d->file) != mtime)
+                          || (mtime == NONEXISTENT_MTIME));
 
-      lastd = d;
-      d = d->next;
+          lastd = d;
+          d = d->next;
+        }
     }
 
   /* Now we know whether this target needs updating.
@@ -597,6 +646,7 @@ update_file_1 (struct file *file, unsigned int depth)
     }
 
   finish_updating (file);
+  finish_updating (ofile);
 
   DBF (DB_VERBOSE, _("Finished prerequisites of target file `%s'.\n"));
 
@@ -712,7 +762,7 @@ update_file_1 (struct file *file, unsigned int depth)
     {
       must_make = 0;
       DBF (DB_VERBOSE,
-           _("No commands for `%s' and no prerequisites actually changed.\n"));
+           _("No recipe for `%s' and no prerequisites actually changed.\n"));
     }
   else if (!must_make && file->cmds != 0 && always_make_flag)
     {
@@ -762,7 +812,7 @@ update_file_1 (struct file *file, unsigned int depth)
 
   if (file->command_state != cs_finished)
     {
-      DBF (DB_VERBOSE, _("Commands of `%s' are being run.\n"));
+      DBF (DB_VERBOSE, _("Recipe of `%s' is being run.\n"));
       return 0;
     }
 
@@ -804,7 +854,7 @@ notice_finished_file (struct file *file)
 
   if (touch_flag
       /* The update status will be:
-               -1      if this target was not remade;
+               -1      if this target was not remade;
                0       if 0 or more commands (+ or ${MAKE}) were run and won;
                1       if some commands were run and lost.
         We touch the target if it has commands which either were not run
@@ -855,7 +905,7 @@ notice_finished_file (struct file *file)
          really check the target's mtime again.  Otherwise, assume the target
          would have been updated. */
 
-      if (question_flag || just_print_flag || touch_flag)
+      if ((question_flag || just_print_flag || touch_flag) && file->cmds)
         {
           for (i = file->cmds->ncommand_lines; i > 0; --i)
             if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE))
@@ -914,7 +964,7 @@ notice_finished_file (struct file *file)
             We do this instead of just invalidating the cached time
             so that a vpath_search can happen.  Otherwise, it would
             never be done because the target is already updated.  */
-         (void) f_mtime (d->file, 0);
+         f_mtime (d->file, 0);
       }
   else if (file->update_status == -1)
     /* Nothing was done for FILE, but it needed nothing done.
@@ -922,27 +972,31 @@ notice_finished_file (struct file *file)
     file->update_status = 0;
 }
 \f
-/* Check whether another file (whose mtime is THIS_MTIME)
-   needs updating on account of a dependency which is file FILE.
-   If it does, store 1 in *MUST_MAKE_PTR.
-   In the process, update any non-intermediate files
-   that FILE depends on (including FILE itself).
-   Return nonzero if any updating failed.  */
+/* Check whether another file (whose mtime is THIS_MTIME) needs updating on
+   account of a dependency which is file FILE.  If it does, store 1 in
+   *MUST_MAKE_PTR.  In the process, update any non-intermediate files that
+   FILE depends on (including FILE itself).  Return nonzero if any updating
+   failed.  */
 
 static int
 check_dep (struct file *file, unsigned int depth,
            FILE_TIMESTAMP this_mtime, int *must_make_ptr)
 {
+  struct file *ofile;
   struct dep *d;
   int dep_status = 0;
 
   ++depth;
   start_updating (file);
 
+  /* We might change file if we find a different one via vpath;
+     remember this one to turn off updating.  */
+  ofile = file;
+
   if (file->phony || !file->intermediate)
     {
-      /* If this is a non-intermediate file, update it and record
-         whether it is newer than THIS_MTIME.  */
+      /* If this is a non-intermediate file, update it and record whether it
+         is newer than THIS_MTIME.  */
       FILE_TIMESTAMP mtime;
       dep_status = update_file (file, depth);
       check_renamed (file);
@@ -971,21 +1025,28 @@ check_dep (struct file *file, unsigned int depth,
          file->cmds = default_file->cmds;
        }
 
-      /* If the intermediate file actually exists
-        and is newer, then we should remake from it.  */
       check_renamed (file);
       mtime = file_mtime (file);
       check_renamed (file);
       if (mtime != NONEXISTENT_MTIME && mtime > this_mtime)
+        /* If the intermediate file actually exists and is newer, then we
+           should remake from it.  */
        *must_make_ptr = 1;
-         /* Otherwise, update all non-intermediate files we depend on,
-            if necessary, and see whether any of them is more
-            recent than the file on whose behalf we are checking.  */
       else
        {
-         struct dep *lastd;
-
-         lastd = 0;
+          /* Otherwise, update all non-intermediate files we depend on, if
+             necessary, and see whether any of them is more recent than the
+             file on whose behalf we are checking.  */
+         struct dep *ld;
+          int deps_running = 0;
+
+          /* If this target is not running, set it's state so that we check it
+             fresh.  It could be it was checked as part of an order-only
+             prerequisite and so wasn't rebuilt then, but should be now.  */
+          if (file->command_state != cs_running)
+            set_command_state (file, cs_not_started);
+
+         ld = 0;
          d = file->deps;
          while (d != 0)
            {
@@ -995,7 +1056,7 @@ check_dep (struct file *file, unsigned int depth,
                {
                  error (NILF, _("Circular %s <- %s dependency dropped."),
                         file->name, d->file->name);
-                 if (lastd == 0)
+                 if (ld == 0)
                    {
                      file->deps = d->next;
                       free_dep (d);
@@ -1003,9 +1064,9 @@ check_dep (struct file *file, unsigned int depth,
                    }
                  else
                    {
-                     lastd->next = d->next;
+                     ld->next = d->next;
                       free_dep (d);
-                     d = lastd->next;
+                     d = ld->next;
                    }
                  continue;
                }
@@ -1022,18 +1083,23 @@ check_dep (struct file *file, unsigned int depth,
 
              if (d->file->command_state == cs_running
                  || d->file->command_state == cs_deps_running)
-               /* Record that some of FILE's deps are still being made.
-                  This tells the upper levels to wait on processing it until
-                  the commands are finished.  */
-               set_command_state (file, cs_deps_running);
+               deps_running = 1;
 
-             lastd = d;
+             ld = d;
              d = d->next;
            }
+
+          if (deps_running)
+            /* Record that some of FILE's deps are still being made.
+               This tells the upper levels to wait on processing it until the
+               commands are finished.  */
+            set_command_state (file, cs_deps_running);
        }
     }
 
   finish_updating (file);
+  finish_updating (ofile);
+
   return dep_status;
 }
 \f
@@ -1060,7 +1126,7 @@ touch_file (struct file *file)
       else
        {
          struct stat statbuf;
-         char buf;
+         char buf = 'x';
           int e;
 
           EINTRLOOP (e, fstat (fd, &statbuf));
@@ -1154,7 +1220,6 @@ f_mtime (struct file *file, int search)
 
       char *arname, *memname;
       struct file *arfile;
-      int arname_used = 0;
       time_t member_date;
 
       /* Find the archive's name.  */
@@ -1164,10 +1229,7 @@ f_mtime (struct file *file, int search)
         Also allow for its name to be changed via VPATH search.  */
       arfile = lookup_file (arname);
       if (arfile == 0)
-       {
-         arfile = enter_file (arname);
-         arname_used = 1;
-       }
+        arfile = enter_file (strcache_add (arname));
       mtime = f_mtime (arfile, search);
       check_renamed (arfile);
       if (search && strcmp (arfile->hname, arname))
@@ -1178,22 +1240,13 @@ f_mtime (struct file *file, int search)
           char *name;
          unsigned int arlen, memlen;
 
-         if (!arname_used)
-           {
-             free (arname);
-             arname_used = 1;
-           }
-
-         arname = arfile->hname;
-         arlen = strlen (arname);
+         arlen = strlen (arfile->hname);
          memlen = strlen (memname);
 
-         /* free (file->name); */
-
-         name = (char *) xmalloc (arlen + 1 + memlen + 2);
-         bcopy (arname, name, arlen);
+         name = xmalloc (arlen + 1 + memlen + 2);
+         memcpy (name, arfile->hname, arlen);
          name[arlen] = '(';
-         bcopy (memname, name + arlen + 1, memlen);
+         memcpy (name + arlen + 1, memname, memlen);
          name[arlen + 1 + memlen] = ')';
          name[arlen + 1 + memlen + 1] = '\0';
 
@@ -1206,9 +1259,7 @@ f_mtime (struct file *file, int search)
           check_renamed (file);
        }
 
-      if (!arname_used)
-       free (arname);
-      free (memname);
+      free (arname);
 
       file->low_resolution_time = 1;
 
@@ -1229,11 +1280,11 @@ f_mtime (struct file *file, int search)
       if (mtime == NONEXISTENT_MTIME && search && !file->ignore_vpath)
        {
          /* If name_mtime failed, search VPATH.  */
-         char *name = file->name;
-         if (vpath_search (&name, &mtime)
+         const char *name = vpath_search (file->name, &mtime, NULL, NULL);
+         if (name
              /* Last resort, is it a library (-lxxx)?  */
-             || (name[0] == '-' && name[1] == 'l'
-                 && library_search (&name, &mtime)))
+             || (file->name[0] == '-' && file->name[1] == 'l'
+                 && (name = library_search (file->name, &mtime)) != 0))
            {
              if (mtime != UNKNOWN_MTIME)
                /* vpath_search and library_search store UNKNOWN_MTIME
@@ -1310,8 +1361,14 @@ f_mtime (struct file *file, int search)
                 (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);
+              char from_now_string[100];
+
+              if (from_now >= 99 && from_now <= ULONG_MAX)
+                sprintf (from_now_string, "%lu", (unsigned long) from_now);
+              else
+                sprintf (from_now_string, "%.2g", from_now);
+              error (NILF, _("Warning: File `%s' has modification time %s s in the future"),
+                     file->name, from_now_string);
 #endif
               clock_skew_detected = 1;
             }
@@ -1352,7 +1409,7 @@ f_mtime (struct file *file, int search)
    much cleaner.  */
 
 static FILE_TIMESTAMP
-name_mtime (char *name)
+name_mtime (const char *name)
 {
   FILE_TIMESTAMP mtime;
   struct stat st;
@@ -1446,8 +1503,8 @@ name_mtime (char *name)
    suitable library file in the system library directories and the VPATH
    directories.  */
 
-static int
-library_search (char **lib, FILE_TIMESTAMP *mtime_ptr)
+static const char *
+library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
 {
   static char *dirs[] =
     {
@@ -1466,29 +1523,31 @@ library_search (char **lib, FILE_TIMESTAMP *mtime_ptr)
       0
     };
 
-  static char *libpatterns = NULL;
-
-  char *libname = &(*lib)[2];  /* Name without the `-l'.  */
+  const char *file = 0;
+  char *libpatterns;
   FILE_TIMESTAMP mtime;
 
   /* Loop variables for the libpatterns value.  */
-  char *p, *p2;
+  char *p;
+  const char *p2;
   unsigned int len;
+  unsigned int liblen;
 
-  char *file, **dp;
+  /* Information about the earliest (in the vpath sequence) match.  */
+  unsigned int best_vpath, best_path;
+  unsigned int std_dirs = 0;
 
-  /* If we don't have libpatterns, get it.  */
-  if (!libpatterns)
-    {
-      int save = warn_undefined_variables_flag;
-      warn_undefined_variables_flag = 0;
+  char **dp;
 
-      libpatterns = xstrdup (variable_expand ("$(strip $(.LIBPATTERNS))"));
+  libpatterns = xstrdup (variable_expand ("$(.LIBPATTERNS)"));
 
-      warn_undefined_variables_flag = save;
-    }
+  /* Skip the '-l'.  */
+  lib += 2;
+  liblen = strlen (lib);
 
-  /* Loop through all the patterns in .LIBPATTERNS, and search on each one.  */
+  /* Loop through all the patterns in .LIBPATTERNS, and search on each one.
+     To implement the linker-compatible behavior we have to search through
+     all entries in .LIBPATTERNS and choose the "earliest" one.  */
   p2 = libpatterns;
   while ((p = find_next_token (&p2, &len)) != 0)
     {
@@ -1497,7 +1556,7 @@ library_search (char **lib, FILE_TIMESTAMP *mtime_ptr)
       static int libdir_maxlen = -1;
       char *libbuf = variable_expand ("");
 
-      /* Expand the pattern using LIBNAME as a replacement.  */
+      /* Expand the pattern using LIB as a replacement.  */
       {
        char c = p[len];
        char *p3, *p4;
@@ -1506,16 +1565,13 @@ library_search (char **lib, FILE_TIMESTAMP *mtime_ptr)
        p3 = find_percent (p);
        if (!p3)
          {
-           /* Give a warning if there is no pattern, then remove the
-              pattern so it's ignored next time.  */
+           /* Give a warning if there is no pattern.  */
            error (NILF, _(".LIBPATTERNS element `%s' is not a pattern"), p);
-           for (; len; --len, ++p)
-             *p = ' ';
-           *p = c;
+            p[len] = c;
            continue;
          }
        p4 = variable_buffer_output (libbuf, p, p3-p);
-       p4 = variable_buffer_output (p4, libname, strlen (libname));
+       p4 = variable_buffer_output (p4, lib, liblen);
        p4 = variable_buffer_output (p4, p3+1, len - (p3-p));
        p[len] = c;
       }
@@ -1524,53 +1580,83 @@ library_search (char **lib, FILE_TIMESTAMP *mtime_ptr)
       mtime = name_mtime (libbuf);
       if (mtime != NONEXISTENT_MTIME)
        {
-         *lib = xstrdup (libbuf);
          if (mtime_ptr != 0)
            *mtime_ptr = mtime;
-         return 1;
+         file = strcache_add (libbuf);
+          /* This by definition will have the best index, so stop now.  */
+          break;
        }
 
       /* Now try VPATH search on that.  */
 
-      file = libbuf;
-      if (vpath_search (&file, mtime_ptr))
-       {
-         *lib = file;
-         return 1;
-       }
+      {
+        unsigned int vpath_index, path_index;
+        const char* f = vpath_search (libbuf, mtime_ptr ? &mtime : NULL,
+                                      &vpath_index, &path_index);
+        if (f)
+          {
+            /* If we have a better match, record it.  */
+            if (file == 0 ||
+                vpath_index < best_vpath ||
+                (vpath_index == best_vpath && path_index < best_path))
+              {
+                file = f;
+                best_vpath = vpath_index;
+                best_path = path_index;
+
+                if (mtime_ptr != 0)
+                  *mtime_ptr = mtime;
+              }
+          }
+      }
 
       /* Now try the standard set of directories.  */
 
       if (!buflen)
-       {
-         for (dp = dirs; *dp != 0; ++dp)
-           {
-             int l = strlen (*dp);
-             if (l > libdir_maxlen)
-               libdir_maxlen = l;
-           }
-         buflen = strlen (libbuf);
-         buf = xmalloc(libdir_maxlen + buflen + 2);
-       }
+        {
+          for (dp = dirs; *dp != 0; ++dp)
+            {
+              int l = strlen (*dp);
+              if (l > libdir_maxlen)
+                libdir_maxlen = l;
+              std_dirs++;
+            }
+          buflen = strlen (libbuf);
+          buf = xmalloc(libdir_maxlen + buflen + 2);
+        }
       else if (buflen < strlen (libbuf))
-       {
-         buflen = strlen (libbuf);
-         buf = xrealloc (buf, libdir_maxlen + buflen + 2);
-       }
+        {
+          buflen = strlen (libbuf);
+          buf = xrealloc (buf, libdir_maxlen + buflen + 2);
+        }
+
+      {
+        /* Use the last std_dirs index for standard directories. This
+           was it will always be greater than the VPATH index.  */
+        unsigned int vpath_index = ~((unsigned int)0) - std_dirs;
+
+        for (dp = dirs; *dp != 0; ++dp)
+         {
+            sprintf (buf, "%s/%s", *dp, libbuf);
+            mtime = name_mtime (buf);
+            if (mtime != NONEXISTENT_MTIME)
+             {
+                if (file == 0 || vpath_index < best_vpath)
+                  {
+                    file = strcache_add (buf);
+                    best_vpath = vpath_index;
+
+                    if (mtime_ptr != 0)
+                      *mtime_ptr = mtime;
+                  }
+              }
+
+            vpath_index++;
+          }
+      }
 
-      for (dp = dirs; *dp != 0; ++dp)
-       {
-         sprintf (buf, "%s/%s", *dp, libbuf);
-         mtime = name_mtime (buf);
-         if (mtime != NONEXISTENT_MTIME)
-           {
-             *lib = xstrdup (buf);
-             if (mtime_ptr != 0)
-               *mtime_ptr = mtime;
-             return 1;
-           }
-       }
     }
 
-  return 0;
+  free (libpatterns);
+  return file;
 }
index e90635a..a0c5cb7 100644 (file)
@@ -4,21 +4,21 @@
    the Make maintainers.
 
 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "job.h"
@@ -98,7 +98,7 @@ start_remote_job_p (int first_p)
          /* Normalize the current directory path name to something
             that should work on all machines exported to.  */
 
-         normalized_cwd = (char *) xmalloc (GET_PATH_MAX);
+         normalized_cwd = xmalloc (GET_PATH_MAX);
          strcpy (normalized_cwd, starting_directory);
          if (Customs_NormPath (normalized_cwd, GET_PATH_MAX) < 0)
            /* Path normalization failure means using Customs
index 0417c2b..e58b72c 100644 (file)
@@ -1,20 +1,20 @@
 /* Template for the remote job exportation interface to 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
diff --git a/rule.c b/rule.c
index e988db5..a966cc9 100644 (file)
--- a/rule.c
+++ b/rule.c
@@ -1,22 +1,25 @@
 /* Pattern and suffix rule internals 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
+
+#include <assert.h>
+
 #include "dep.h"
 #include "filedef.h"
 #include "job.h"
@@ -24,7 +27,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #include "variable.h"
 #include "rule.h"
 
-static void freerule PARAMS ((struct rule *rule, struct rule *lastrule));
+static void freerule (struct rule *rule, struct rule *lastrule);
 \f
 /* Chain of all pattern rules.  */
 
@@ -69,7 +72,7 @@ count_implicit_rule_limits (void)
 {
   char *name;
   int namelen;
-  register struct rule *rule, *lastrule;
+  struct rule *rule, *lastrule;
 
   num_pattern_rules = max_pattern_targets = max_pattern_deps = 0;
   max_pattern_dep_length = 0;
@@ -81,34 +84,30 @@ count_implicit_rule_limits (void)
   while (rule != 0)
     {
       unsigned int ndeps = 0;
-      register struct dep *dep;
+      struct dep *dep;
       struct rule *next = rule->next;
-      unsigned int ntargets;
 
       ++num_pattern_rules;
 
-      ntargets = 0;
-      while (rule->targets[ntargets] != 0)
-       ++ntargets;
-
-      if (ntargets > max_pattern_targets)
-       max_pattern_targets = ntargets;
+      if (rule->num > max_pattern_targets)
+       max_pattern_targets = rule->num;
 
       for (dep = rule->deps; dep != 0; dep = dep->next)
        {
-         unsigned int len = strlen (dep->name);
+          const char *dname = dep_name (dep);
+          unsigned int len = strlen (dname);
 
 #ifdef VMS
-         char *p = strrchr (dep->name, ']');
-          char *p2;
+          const char *p = strrchr (dname, ']');
+          const char *p2;
           if (p == 0)
-            p = strrchr (dep->name, ':');
-          p2 = p != 0 ? strchr (dep->name, '%') : 0;
+            p = strrchr (dname, ':');
+          p2 = p != 0 ? strchr (dname, '%') : 0;
 #else
-         char *p = strrchr (dep->name, '/');
-         char *p2 = p != 0 ? strchr (dep->name, '%') : 0;
+          const char *p = strrchr (dname, '/');
+          const char *p2 = p != 0 ? strchr (dname, '%') : 0;
 #endif
-         ndeps++;
+          ndeps++;
 
          if (len > max_pattern_dep_length)
            max_pattern_dep_length = len;
@@ -117,17 +116,15 @@ count_implicit_rule_limits (void)
            {
              /* There is a slash before the % in the dep name.
                 Extract the directory name.  */
-             if (p == dep->name)
+             if (p == dname)
                ++p;
-             if (p - dep->name > namelen)
+             if (p - dname > namelen)
                {
-                 if (name != 0)
-                   free (name);
-                 namelen = p - dep->name;
-                 name = (char *) xmalloc (namelen + 1);
+                 namelen = p - dname;
+                 name = xrealloc (name, namelen + 1);
                }
-             bcopy (dep->name, name, p - dep->name);
-             name[p - dep->name] = '\0';
+             memcpy (name, dname, p - dname);
+             name[p - dname] = '\0';
 
              /* In the deps of an implicit rule the `changed' flag
                 actually indicates that the dependency is in a
@@ -158,102 +155,107 @@ count_implicit_rule_limits (void)
    If SOURCE is nil, it means there should be no deps.  */
 
 static void
-convert_suffix_rule (char *target, char *source, struct commands *cmds)
+convert_suffix_rule (const char *target, const char *source,
+                     struct commands *cmds)
 {
-  char *targname, *targpercent, *depname;
-  char **names, **percents;
+  const char **names, **percents;
   struct dep *deps;
-  unsigned int len;
+
+  names = xmalloc (sizeof (const char *));
+  percents = xmalloc (sizeof (const char *));
 
   if (target == 0)
-    /* Special case: TARGET being nil means we are defining a
-       `.X.a' suffix rule; the target pattern is always `(%.o)'.  */
     {
+      /* Special case: TARGET being nil means we are defining a `.X.a' suffix
+         rule; the target pattern is always `(%.o)'.  */
 #ifdef VMS
-      targname = savestring ("(%.obj)", 7);
+      *names = strcache_add_len ("(%.obj)", 7);
 #else
-      targname = savestring ("(%.o)", 5);
+      *names = strcache_add_len ("(%.o)", 5);
 #endif
-      targpercent = targname + 1;
+      *percents = *names + 1;
     }
   else
     {
       /* Construct the target name.  */
-      len = strlen (target);
-      targname = xmalloc (1 + len + 1);
-      targname[0] = '%';
-      bcopy (target, targname + 1, len + 1);
-      targpercent = targname;
+      unsigned int len = strlen (target);
+      char *p = alloca (1 + len + 1);
+      p[0] = '%';
+      memcpy (p + 1, target, len + 1);
+      *names = strcache_add_len (p, len + 1);
+      *percents = *names;
     }
 
-  names = (char **) xmalloc (2 * sizeof (char *));
-  percents = (char **) alloca (2 * sizeof (char *));
-  names[0] = targname;
-  percents[0] = targpercent;
-  names[1] = percents[1] = 0;
-
   if (source == 0)
     deps = 0;
   else
     {
       /* Construct the dependency name.  */
-      len = strlen (source);
-      depname = xmalloc (1 + len + 1);
-      depname[0] = '%';
-      bcopy (source, depname + 1, len + 1);
+      unsigned int len = strlen (source);
+      char *p = alloca (1 + len + 1);
+      p[0] = '%';
+      memcpy (p + 1, source, len + 1);
       deps = alloc_dep ();
-      deps->name = depname;
+      deps->name = strcache_add_len (p, len + 1);
     }
 
-  create_pattern_rule (names, percents, 0, deps, cmds, 0);
+  create_pattern_rule (names, percents, 1, 0, deps, cmds, 0);
 }
 
 /* Convert old-style suffix rules to pattern rules.
-   All rules for the suffixes on the .SUFFIXES list
-   are converted and added to the chain of pattern rules.  */
+   All rules for the suffixes on the .SUFFIXES list are converted and added to
+   the chain of pattern rules.  */
 
 void
 convert_to_pattern (void)
 {
-  register struct dep *d, *d2;
-  register struct file *f;
-  register char *rulename;
-  register unsigned int slen, s2len;
+  struct dep *d, *d2;
+  char *rulename;
 
-  /* Compute maximum length of all the suffixes.  */
+  /* We will compute every potential suffix rule (.x.y) from the list of
+     suffixes in the .SUFFIXES target's dependencies and see if it exists.
+     First find the longest of the suffixes.  */
 
   maxsuffix = 0;
   for (d = suffix_file->deps; d != 0; d = d->next)
     {
-      register unsigned int namelen = strlen (dep_name (d));
-      if (namelen > maxsuffix)
-       maxsuffix = namelen;
+      unsigned int l = strlen (dep_name (d));
+      if (l > maxsuffix)
+       maxsuffix = l;
     }
 
-  rulename = (char *) alloca ((maxsuffix * 2) + 1);
+  /* Space to construct the suffix rule target name.  */
+  rulename = alloca ((maxsuffix * 2) + 1);
 
   for (d = suffix_file->deps; d != 0; d = d->next)
     {
+      unsigned int slen;
+
       /* Make a rule that is just the suffix, with no deps or commands.
         This rule exists solely to disqualify match-anything rules.  */
-      convert_suffix_rule (dep_name (d), (char *) 0, (struct commands *) 0);
+      convert_suffix_rule (dep_name (d), 0, 0);
 
-      f = d->file;
-      if (f->cmds != 0)
+      if (d->file->cmds != 0)
        /* Record a pattern for this suffix's null-suffix rule.  */
-       convert_suffix_rule ("", dep_name (d), f->cmds);
+       convert_suffix_rule ("", dep_name (d), d->file->cmds);
 
-      /* Record a pattern for each of this suffix's two-suffix rules.  */
+      /* Add every other suffix to this one and see if it exists as a
+         two-suffix rule.  */
       slen = strlen (dep_name (d));
-      bcopy (dep_name (d), rulename, slen);
+      memcpy (rulename, dep_name (d), slen);
+
       for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
        {
+          struct file *f;
+          unsigned int s2len;
+
          s2len = strlen (dep_name (d2));
 
+          /* Can't build something from itself.  */
          if (slen == s2len && streq (dep_name (d), dep_name (d2)))
            continue;
 
-         bcopy (dep_name (d2), rulename + slen, s2len + 1);
+         memcpy (rulename + slen, dep_name (d2), s2len + 1);
          f = lookup_file (rulename);
          if (f == 0 || f->cmds == 0)
            continue;
@@ -261,7 +263,7 @@ convert_to_pattern (void)
          if (s2len == 2 && rulename[slen] == '.' && rulename[slen + 1] == 'a')
            /* A suffix rule `.X.a:' generates the pattern rule `(%.o): %.X'.
               It also generates a normal `%.a: %.X' rule below.  */
-           convert_suffix_rule ((char *) 0, /* Indicates `(%.o)'.  */
+           convert_suffix_rule (NULL, /* Indicates `(%.o)'.  */
                                 dep_name (d),
                                 f->cmds);
 
@@ -273,19 +275,18 @@ convert_to_pattern (void)
 }
 
 
-/* Install the pattern rule RULE (whose fields have been filled in)
-   at the end of the list (so that any rules previously defined
-   will take precedence).  If this rule duplicates a previous one
-   (identical target and dependencies), the old one is replaced
-   if OVERRIDE is nonzero, otherwise this new one is thrown out.
-   When an old rule is replaced, the new one is put at the end of the
-   list.  Return nonzero if RULE is used; zero if not.  */
+/* Install the pattern rule RULE (whose fields have been filled in) at the end
+   of the list (so that any rules previously defined will take precedence).
+   If this rule duplicates a previous one (identical target and dependencies),
+   the old one is replaced if OVERRIDE is nonzero, otherwise this new one is
+   thrown out.  When an old rule is replaced, the new one is put at the end of
+   the list.  Return nonzero if RULE is used; zero if not.  */
 
-int
+static int
 new_pattern_rule (struct rule *rule, int override)
 {
-  register struct rule *r, *lastrule;
-  register unsigned int i, j;
+  struct rule *r, *lastrule;
+  unsigned int i, j;
 
   rule->in_use = 0;
   rule->terminal = 0;
@@ -295,15 +296,15 @@ new_pattern_rule (struct rule *rule, int override)
   /* Search for an identical rule.  */
   lastrule = 0;
   for (r = pattern_rules; r != 0; lastrule = r, r = r->next)
-    for (i = 0; rule->targets[i] != 0; ++i)
+    for (i = 0; i < rule->num; ++i)
       {
-       for (j = 0; r->targets[j] != 0; ++j)
+       for (j = 0; j < r->num; ++j)
          if (!streq (rule->targets[i], r->targets[j]))
            break;
-       if (r->targets[j] == 0)
-         /* All the targets matched.  */
+        /* If all the targets matched...  */
+       if (j == r->num)
          {
-           register struct dep *d, *d2;
+           struct dep *d, *d2;
            for (d = rule->deps, d2 = r->deps;
                 d != 0 && d2 != 0; d = d->next, d2 = d2->next)
              if (!streq (dep_name (d), dep_name (d2)))
@@ -359,39 +360,29 @@ new_pattern_rule (struct rule *rule, int override)
 void
 install_pattern_rule (struct pspec *p, int terminal)
 {
-  register struct rule *r;
+  struct rule *r;
   char *ptr;
 
-  r = (struct rule *) xmalloc (sizeof (struct rule));
+  r = xmalloc (sizeof (struct rule));
 
-  r->targets = (char **) xmalloc (2 * sizeof (char *));
-  r->suffixes = (char **) xmalloc (2 * sizeof (char *));
-  r->lens = (unsigned int *) xmalloc (2 * sizeof (unsigned int));
-
-  r->targets[1] = 0;
-  r->suffixes[1] = 0;
-  r->lens[1] = 0;
+  r->num = 1;
+  r->targets = xmalloc (sizeof (const char *));
+  r->suffixes = xmalloc (sizeof (const char *));
+  r->lens = xmalloc (sizeof (unsigned int));
 
   r->lens[0] = strlen (p->target);
-  /* These will all be string literals, but we malloc space for
-     them anyway because somebody might want to free them later on.  */
-  r->targets[0] = savestring (p->target, r->lens[0]);
-  r->suffixes[0] = find_percent (r->targets[0]);
-  if (r->suffixes[0] == 0)
-    /* Programmer-out-to-lunch error.  */
-    abort ();
-  else
-    ++r->suffixes[0];
+  r->targets[0] = p->target;
+  r->suffixes[0] = find_percent_cached (&r->targets[0]);
+  assert (r->suffixes[0] != NULL);
+  ++r->suffixes[0];
 
   ptr = p->dep;
-  r->deps = (struct dep *) multi_glob (parse_file_seq (&ptr, '\0',
-                                                       sizeof (struct dep), 1),
-                                      sizeof (struct dep));
+  r->deps = PARSE_FILE_SEQ (&ptr, struct dep, '\0', NULL, 0);
 
   if (new_pattern_rule (r, 0))
     {
       r->terminal = terminal;
-      r->cmds = (struct commands *) xmalloc (sizeof (struct commands));
+      r->cmds = xmalloc (sizeof (struct commands));
       r->cmds->fileinfo.filenm = 0;
       r->cmds->fileinfo.lineno = 0;
       /* These will all be string literals, but we malloc space for them
@@ -410,28 +401,13 @@ static void
 freerule (struct rule *rule, struct rule *lastrule)
 {
   struct rule *next = rule->next;
-  register unsigned int i;
-  register struct dep *dep;
 
-  for (i = 0; rule->targets[i] != 0; ++i)
-    free (rule->targets[i]);
+  free_dep_chain (rule->deps);
 
-  dep = rule->deps;
-  while (dep)
-    {
-      struct dep *t;
-
-      t = dep->next;
-      /* 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?)  */
-      dep->name = 0; /* Make sure free_dep does not free name.  */
-      free_dep (dep);
-      dep = t;
-    }
-
-  free ((char *) rule->targets);
-  free ((char *) rule->suffixes);
-  free ((char *) rule->lens);
+  /* MSVC erroneously warns without a cast here.  */
+  free ((void *)rule->targets);
+  free ((void *)rule->suffixes);
+  free (rule->lens);
 
   /* We can't free the storage for the commands because there
      are ways that they could be in more than one place:
@@ -444,7 +420,7 @@ freerule (struct rule *rule, struct rule *lastrule)
        be discarded here, but both would contain the same `struct commands'
        pointer from the `struct file' for the suffix rule.  */
 
-  free ((char *) rule);
+  free (rule);
 
   if (pattern_rules == rule)
     if (lastrule != 0)
@@ -457,55 +433,36 @@ freerule (struct rule *rule, struct rule *lastrule)
     last_pattern_rule = lastrule;
 }
 \f
-/* Create a new pattern rule with the targets in the nil-terminated
-   array TARGETS.  If TARGET_PERCENTS is not nil, it is an array of
-   pointers into the elements of TARGETS, where the `%'s are.
-   The new rule has dependencies DEPS and commands from COMMANDS.
+/* Create a new pattern rule with the targets in the nil-terminated array
+   TARGETS.  TARGET_PERCENTS is an array of pointers to the % in each element
+   of TARGETS.  N is the number of items in the array (not counting the nil
+   element).  The new rule has dependencies DEPS and commands from COMMANDS.
    It is a terminal rule if TERMINAL is nonzero.  This rule overrides
    identical rules with different commands if OVERRIDE is nonzero.
 
-   The storage for TARGETS and its elements is used and must not be freed
-   until the rule is destroyed.  The storage for TARGET_PERCENTS is not used;
-   it may be freed.  */
+   The storage for TARGETS and its elements and TARGET_PERCENTS is used and
+   must not be freed until the rule is destroyed.  */
 
 void
-create_pattern_rule (char **targets, char **target_percents,
-                    int terminal, struct dep *deps,
+create_pattern_rule (const char **targets, const char **target_percents,
+                     unsigned int n, int terminal, struct dep *deps,
                      struct commands *commands, int override)
 {
-  unsigned int max_targets, i;
-  struct rule *r = (struct rule *) xmalloc (sizeof (struct rule));
+  unsigned int i;
+  struct rule *r = xmalloc (sizeof (struct rule));
 
+  r->num = n;
   r->cmds = commands;
   r->deps = deps;
   r->targets = targets;
+  r->suffixes = target_percents;
+  r->lens = xmalloc (n * sizeof (unsigned int));
 
-  max_targets = 2;
-  r->lens = (unsigned int *) xmalloc (2 * sizeof (unsigned int));
-  r->suffixes = (char **) xmalloc (2 * sizeof (char *));
-  for (i = 0; targets[i] != 0; ++i)
+  for (i = 0; i < n; ++i)
     {
-      if (i == max_targets - 1)
-       {
-         max_targets += 5;
-         r->lens = (unsigned int *)
-           xrealloc ((char *) r->lens, max_targets * sizeof (unsigned int));
-         r->suffixes = (char **)
-           xrealloc ((char *) r->suffixes, max_targets * sizeof (char *));
-       }
       r->lens[i] = strlen (targets[i]);
-      r->suffixes[i] = (target_percents == 0 ? find_percent (targets[i])
-                       : target_percents[i]) + 1;
-      if (r->suffixes[i] == 0)
-       abort ();
-    }
-
-  if (i < max_targets - 1)
-    {
-      r->lens = (unsigned int *) xrealloc ((char *) r->lens,
-                                          (i + 1) * sizeof (unsigned int));
-      r->suffixes = (char **) xrealloc ((char *) r->suffixes,
-                                       (i + 1) * sizeof (char *));
+      assert (r->suffixes[i] != NULL);
+      ++r->suffixes[i];
     }
 
   if (new_pattern_rule (r, override))
@@ -517,23 +474,17 @@ create_pattern_rule (char **targets, char **target_percents,
 static void                    /* Useful to call from gdb.  */
 print_rule (struct rule *r)
 {
-  register unsigned int i;
-  register struct dep *d;
+  unsigned int i;
 
-  for (i = 0; r->targets[i] != 0; ++i)
+  for (i = 0; i < r->num; ++i)
     {
       fputs (r->targets[i], stdout);
-      if (r->targets[i + 1] != 0)
-       putchar (' ');
-      else
-       putchar (':');
+      putchar ((i + 1 == r->num) ? ':' : ' ');
     }
   if (r->terminal)
     putchar (':');
 
-  for (d = r->deps; d != 0; d = d->next)
-    printf (" %s", dep_name (d));
-  putchar ('\n');
+  print_prereqs (r->deps);
 
   if (r->cmds != 0)
     print_commands (r->cmds);
@@ -542,8 +493,8 @@ print_rule (struct rule *r)
 void
 print_rule_data_base (void)
 {
-  register unsigned int rules, terminal;
-  register struct rule *r;
+  unsigned int rules, terminal;
+  struct rule *r;
 
   puts (_("\n# Implicit Rules"));
 
@@ -580,7 +531,7 @@ print_rule_data_base (void)
       /* This can happen if a fatal error was detected while reading the
          makefiles and thus count_implicit_rule_limits wasn't called yet.  */
       if (num_pattern_rules != 0)
-        fatal (NILF, _("BUG: num_pattern_rules wrong!  %u != %u"),
+        fatal (NILF, _("BUG: num_pattern_rules is wrong!  %u != %u"),
                num_pattern_rules, rules);
     }
 }
diff --git a/rule.h b/rule.h
index 99fb76e..b119d21 100644 (file)
--- a/rule.h
+++ b/rule.h
@@ -1,31 +1,33 @@
 /* Definitions for using pattern rules in 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-/* Structure used for pattern rules.  */
+
+/* Structure used for pattern (implicit) rules.  */
 
 struct rule
   {
     struct rule *next;
-    char **targets;            /* Targets of the rule.  */
+    const char **targets;      /* Targets of the rule.  */
     unsigned int *lens;                /* Lengths of each target.  */
-    char **suffixes;           /* Suffixes (after `%') of each target.  */
+    const char **suffixes;     /* Suffixes (after `%') of each target.  */
     struct dep *deps;          /* Dependencies of the rule.  */
     struct commands *cmds;     /* Commands to execute.  */
+    unsigned short num;         /* Number of targets.  */
     char terminal;             /* If terminal (double-colon).  */
     char in_use;               /* If in use by a parent pattern_search.  */
   };
@@ -49,12 +51,9 @@ extern struct file *suffix_file;
 extern unsigned int maxsuffix;
 
 
-extern void install_pattern_rule PARAMS ((struct pspec *p, int terminal));
-extern int new_pattern_rule PARAMS ((struct rule *rule, int override));
-extern void count_implicit_rule_limits PARAMS ((void));
-extern void convert_to_pattern PARAMS ((void));
-extern void create_pattern_rule PARAMS ((char **targets,
-                                         char **target_percents, int terminal,
-                                         struct dep *deps,
-                                         struct commands *commands,
-                                         int override));
+void count_implicit_rule_limits (void);
+void convert_to_pattern (void);
+void install_pattern_rule (struct pspec *p, int terminal);
+void create_pattern_rule (const char **targets, const char **target_percents,
+                          unsigned int num, int terminal, struct dep *deps,
+                          struct commands *commands, int override);
index fe7a45f..6f3383d 100644 (file)
--- a/signame.c
+++ b/signame.c
@@ -1,19 +1,20 @@
 /* Convert between signal names and numbers.
 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -228,7 +229,7 @@ signame_init (void)
 
 
 char *
-strsignal (int signal)
+strsignal (int sig)
 {
   static char buf[] = "Signal 12345678901234567890";
 
@@ -245,10 +246,10 @@ strsignal (int signal)
 # endif
 #endif
 
-  if (signal > 0 || signal < NSIG)
-    return (char *) sys_siglist[signal];
+  if (sig > 0 || sig < NSIG)
+    return (char *) sys_siglist[sig];
 
-  sprintf (buf, "Signal %d", signal);
+  sprintf (buf, "Signal %d", sig);
   return buf;
 }
 
index 6cfae42..830ec7d 100644 (file)
@@ -1,18 +1,18 @@
 /* Constant string caching for GNU Make.
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -20,8 +20,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #include "hash.h"
 
-/* The size (in bytes) of each cache buffer.  */
-#define CACHE_BUFFER_SIZE   (4096)
+/* The size (in bytes) of each cache buffer.
+   Try to pick something that will map well into the heap.  */
+#define CACHE_BUFFER_SIZE   (8192 - 16)
 
 
 /* A string cached here will never be freed, so we don't need to worry about
@@ -39,11 +40,16 @@ struct strcache {
 static int bufsize = CACHE_BUFFER_SIZE;
 static struct strcache *strcache = NULL;
 
+/* Add a new buffer to the cache.  Add it at the front to reduce search time.
+   This can also increase the overhead, since it's less likely that older
+   buffers will be filled in.  However, GNU make has so many smaller strings
+   that this doesn't seem to be much of an issue in practice.
+ */
 static struct strcache *
 new_cache()
 {
   struct strcache *new;
-  new = (struct strcache *) xmalloc (sizeof (*new) + bufsize);
+  new = xmalloc (sizeof (*new) + bufsize);
   new->end = new->buffer;
   new->count = 0;
   new->bytesfree = bufsize;
@@ -61,9 +67,9 @@ add_string(const char *str, int len)
   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 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;
 
@@ -113,14 +119,18 @@ str_hash_cmp (const void *x, const void *y)
 }
 
 static struct hash_table strings;
+static unsigned long total_adds = 0;
 
 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);
+  char *const *slot = (char *const *) hash_find_slot (&strings, str);
   const char *key = *slot;
 
+  /* Count the total number of adds we performed.  */
+  ++total_adds;
+
   if (!HASH_VACANT (key))
     return key;
 
@@ -155,11 +165,17 @@ strcache_add (const char *str)
 const char *
 strcache_add_len (const char *str, int len)
 {
-  char *key = alloca (len + 1);
-  memcpy (key, str, len);
-  key[len] = '\0';
+  /* If we're not given a nul-terminated string we have to create one, because
+     the hashing functions expect it.  */
+  if (str[len] != '\0')
+    {
+      char *key = alloca (len + 1);
+      memcpy (key, str, len);
+      key[len] = '\0';
+      str = key;
+    }
 
-  return add_hash (key, len);
+  return add_hash (str, len);
 }
 
 int
@@ -173,7 +189,7 @@ strcache_setbufsize(int size)
 void
 strcache_init (void)
 {
-  hash_init (&strings, 1000, str_hash_1, str_hash_2, str_hash_cmp);
+  hash_init (&strings, 8000, str_hash_1, str_hash_2, str_hash_cmp);
 }
 
 
@@ -185,32 +201,46 @@ 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;
+  int lastused = 0, lastfree = 0;
 
-  for (sp = strcache; sp != NULL; sp = sp->next)
+  if (strcache)
     {
-      int bf = sp->bytesfree;
-      int sz = (sp->end - sp->buffer) + bf;
+      const struct strcache *sp;
+
+      /* Count the first buffer separately since it's not full.  */
+      lastused = strcache->end - strcache->buffer;
+      lastfree = strcache->bytesfree;
+
+      for (sp = strcache->next; sp != NULL; sp = sp->next)
+        {
+          int bf = sp->bytesfree;
+          int sz = sp->end - sp->buffer;
 
-      ++numbuffs;
-      numstrs += sp->count;
+          ++numbuffs;
+          numstrs += sp->count;
 
-      totsize += sz;
-      maxsize = (sz > maxsize ? sz : maxsize);
-      minsize = (sz < minsize ? sz : minsize);
+          totsize += sz;
+          maxsize = (sz > maxsize ? sz : maxsize);
+          minsize = (sz < minsize ? sz : minsize);
 
-      totfree += bf;
-      maxfree = (bf > maxfree ? bf : maxfree);
-      minfree = (bf < minfree ? bf : minfree);
+          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);
+  printf (_("\n%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"),
+          prefix, numstrs, total_adds, (total_adds - numstrs));
+  printf (_("%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"),
+          prefix, (numbuffs + 1), bufsize, ((numbuffs + 1) * bufsize));
+  printf (_("%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"),
+          prefix, totsize, lastused, maxsize, minsize, avgsize);
+  printf (_("%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"),
+          prefix, totfree, lastfree, maxfree, minfree, avgfree);
+
+  fputs (_("\n# strcache hash-table stats:\n# "), stdout);
+  hash_print_stats (&strings, stdout);
 }
index 009d9a5..e5a0528 100644 (file)
@@ -1,21 +1,20 @@
 @echo off\r
 rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,\r
-rem 2005, 2006 Free Software Foundation, Inc.\r
+rem 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
-\r
+rem\r
 rem GNU Make is free software; you can redistribute it and/or modify it under\r
 rem the terms of the GNU General Public License as published by the Free\r
-rem Software Foundation; either version 2, or (at your option) any later\r
-rem version.\r
-\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
 rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
 rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
 rem more details.\r
-\r
+rem\r
 rem You should have received a copy of the GNU General Public License along\r
-rem with GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
 \r
 cd w32\subproc\r
 set MAKE=%2\r
index a43ea21..94a9ed0 100644 (file)
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-                           Preamble
+                            Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
 price.  Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
   For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
 this License.
 
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
 be similar in spirit to the present version, but may differ in detail to
 address new problems or concerns.
 
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-       Appendix: How to Apply These Terms to Your New Programs
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms.
 
   To do so, attach the following notices to the program.  It is safest
 to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
+state the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
+    Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    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 of the License, or
+    the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -304,36 +645,30 @@ the "copyright" line and a pointer to where the full notice is found.
     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., 675 Mass Ave, Cambridge, MA 02139, USA.
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
index 3e3520f..d036568 100644 (file)
@@ -1,3 +1,244 @@
+2010-07-28  Paul Smith  <psmith@gnu.org>
+
+       * scripts/targets/POSIX: Compatibility issues with Solaris (and
+       Tru64?); "false" returns different exit codes, and set -x shows
+       output with extra whitespace.  Run the commands by hand first to
+       find out what the real shell would do, then compare what make does.
+       * scripts/variables/SHELL: Ditto.
+
+2010-07-12  Paul Smith  <psmith@gnu.org>
+
+       * test_driver.pl: Add a new $perl_name containing the path to Perl.
+       * run_make_tests.pl (run_make_test): Replace the special string
+       #PERL# in a makefile etc. with the path the Perl executable so
+       makefiles can use it.
+
+       * scripts/targets/ONESHELL: Add a new set of regression tests for
+       the .ONESHELL feature.
+
+2010-07-06  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/SHELL: Test the new .SHELLFLAGS variable.
+
+       * scripts/targets/POSIX: New file.  Test the .POSIX special target.
+       Verify that enabling .POSIX changes the shell flags to set -e.
+
+2010-07-01  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/recursion: Add a space to separate command-line
+       args.  Fixes Savannah bug #29968.
+
+2009-11-12  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * scripts/features/vpath3: Test for the new library search
+       behavior.
+
+2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * scripts/features/se_explicit: Enable the test for now fixed
+       Savannah bug 25780.
+
+2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * scripts/variables/undefine: Tests for the new undefine feature.
+
+2009-10-03  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/parallelism: Test for open Savannah bug #26846.
+
+       * scripts/variables/MAKE: Rewrite for new run_make_test() format.
+
+       * scripts/variables/MAKEFLAGS: Created.
+       Add test for Savannah bug #2216 (still open).
+
+       * scripts/features/include: Test for Savannah bug #102 (still open).
+
+2009-09-30  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * scripts/features/include: Add diagnostics issuing tests for
+       cases where targets have been updated and failed with the
+       dontcare flag. Savannah bugs #15110, #25493, #12686, #17740.
+
+2009-09-28  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/shell: Add regression test for Savannah bug
+       #20513 (still open).
+
+       * scripts/features/se_explicit: Add regression tests for Savannah
+       bug #25780 (still open).
+
+       * run_make_tests.pl (valid_option): Add a new flag, -all([-_]?tests)?
+       that runs tests we know will fail.  This allows us to add
+       regression tests to the test suite for bugs that haven't been
+       fixed yet.
+
+2009-09-28  Boris Kolpackov  <boris@codesynthesis.com>
+
+       * scripts/features/patspecific_vars: Add a test for the shortest
+       stem first order.
+
+       * scripts/features/patternrules: Add a test for the shortest stem
+       first order.
+
+2009-09-24  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/se_implicit: Add a test for order-only
+       secondary expansion prerequisites.
+
+2009-09-23  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/patternrules: Test that we can remove pattern
+       rules, both single and multiple prerequisites.  Savannah bug #18622.
+
+       * scripts/features/echoing: Rework for run_make_test().
+
+2009-06-14  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/vpath: Verify we don't get bogus circular
+       dependency warnings if we choose a different file via vpath during
+       update.  Savannah bug #13529.
+
+2009-06-13  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/MAKEFILES: Verify that MAKEFILES included
+       files (and files included by them) don't set the default goal.
+       Savannah bug #13401.
+
+       * scripts/functions/wildcard: Test that wildcards with
+       non-existent glob matchers return empty.
+
+2009-06-09  Paul Smith  <psmith@gnu.org>
+
+       * scripts/options/dash-B: Test the $? works correctly with -B.
+       Savannah bug #17825.
+
+       * scripts/features/patternrules: Test that dependencies of
+       "also_make" targets are created properly.  Savannah bug #19108.
+
+       * test_driver.pl (compare_output): Create a "run" file for failed
+       tests containing the command that was run.
+       (get_runfile): New function.
+
+       * run_make_tests.pl (valid_option): Enhanced support for valgrind:
+       allow memcheck and massif tools.
+
+       * scripts/features/patternrules: Have to comment out a line in the
+       first test due to backing out a change that broke the implicit
+       rule search algorithm.  Savannah bug #17752.
+       * scripts/misc/general4: Remove a test that is redundant with
+       patternrules.
+
+       * scripts/features/parallelism: Add a test for re-exec with
+       jobserver master override.  Savannah bug #18124.
+
+2009-06-08  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/targetvars: Add a test for continued target
+       vars after a semicolon.  Savannah bug #17521.
+
+2009-06-07  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/se_explicit: Make sure we catch defining
+       prereqs during snap_deps().  Savannah bug #24622.
+
+       * scripts/variables/automatic: Check prereq ordering when the
+       target with the recipe has no prereqs.  Savannah bug #21198.
+
+       * scripts/variables/LIBPATTERNS: Add a new set of test for
+       $(.LIBPATTERNS) (previously untested!)
+
+2009-06-04  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/SHELL: The export target-specific SHELL test
+       has an incorrect known-good-value.
+
+       * scripts/misc/general4: Check for whitespace (ffeed, vtab, etc.)
+
+       * scripts/features/se_explicit: Add tests for Savannah bug #24588.
+
+2009-05-31  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/DEFAULT_GOAL: Add tests for Savannah bug #25697.
+
+       * scripts/features/targetvars: Add tests of overrides for Savannah
+       bug #26207.
+       * scripts/features/patspecific_vars: Ditto.
+
+       * scripts/features/patternrules: Add a test for Savannah bug #26593.
+
+2009-05-30  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/flavors: Update with new variable flavor tests.
+       * scripts/variables/define: Create a new set of tests for
+       define/endef and move those aspects of the flavors suite here.
+
+2009-05-25  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/targetvars: Ditto.
+
+       * scripts/features/export: Test new variable parsing abilities.
+
+2009-02-23  Ramon Garcia  <ramon.garcia.f@gmail.com>
+
+       * scripts/variables/private: Create a new suite of tests for 'private'.
+
+2007-11-04  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/eval: Update error message for command -> recipe.
+
+       * test_driver.pl (compare_output): Allow the answer to be a regex,
+       if surrounded by '/'.
+       * scripts/misc/close_stdout: Use a regex for the answer, since
+       sometimes the error will have a description and sometimes it won't.
+
+2007-09-10  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/special: Add tests for .RECIPEPREFIX variable.
+
+2007-08-15  Paul Smith  <psmith@gnu.org>
+
+       These test cases were contributed by
+       Icarus Sparry <savannah@icarus.freeuk.com> and J. David Bryan for
+       Savannah bugs #3330 and #15919.
+
+       * scripts/targets/SECONDARY: Add tests for Savannah bugs 3330 and
+       15919.
+
+       * scripts/features/parallelism: Add tests for wrong answer/hang
+       combining INTERMEDIATE, order-only prereqs, and parallelism.
+       See Savannah bugs 3330 and 15919.
+
+2007-07-13  Paul Smith  <psmith@gnu.org>
+
+       Install a timeout so tests can never loop infinitely.
+       Original idea and patch for a single-test version provided by
+       Icarus Sparry <savannah@icarus.freeuk.com>
+
+       * test_driver.pl (_run_command): New function: this is called by
+       other functions to actually run a command.  Before we run it,
+       install a SIGALRM handler and set up a timer to go off in the
+       future (default is 5s; this can be overridden by individual tests).
+       (run_command): Call it.
+       (run_command_with_output): Call it.
+
+       * run_make_tests.pl (run_make_with_options): Override the default
+       timeout if the caller requests it.
+       (run_make_test): Pass any timeout override to run_make_with_options.
+
+       * scripts/features/parallelism: Increase the timeout for long tests.
+       * scripts/options/dash-l: Ditto.
+
+2006-10-01  Paul Smith  <psmith@paulandlesley.org>
+
+       * run_make_tests.pl (set_more_defaults): Remove setting of LANG in
+       ENV here.  This doesn't always work.
+       * test_driver.pl (toplevel): Set LC_ALL to 'C' in the make
+       environment.  Fixes Savannah bug #16698.
+
+2006-09-30  Paul Smith  <psmith@paulandlesley.org>
+
+       * scripts/variables/automatic: Add back the test for bug #8154.
+
 2006-04-01  Paul D. Smith  <psmith@gnu.org>
 
        * scripts/functions/realpath: Don't run tests with multiple
 \f
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index bf5b93e..43971ec 100644 (file)
@@ -163,17 +163,17 @@ Changes from 0.1 to 0.2 (5-4-92):
 \f
 -------------------------------------------------------------------------------
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+Foundation; either version 3 of the License, 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.
+this program.  If not, see <http://www.gnu.org/licenses/>.
index 48c223f..3860bdb 100644 (file)
@@ -8,20 +8,20 @@ distributed under the following terms:
 
  -----------------------------------------------------------------------------
  Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
+ Foundation; either version 3 of the License, 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.
+ this program.  If not, see <http://www.gnu.org/licenses/>.
  -----------------------------------------------------------------------------
 
 The test suite requires Perl.  These days, you should have at least Perl
index 1b7a2d7..d41b40e 100755 (executable)
@@ -4,20 +4,22 @@
 # 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.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 case "$1" in
   "") echo 'Usage: mkshadow <destdir>'; exit 1 ;;
index 689ce2e..2c8c08b 100755 (executable)
 #                        (and others)
 
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
+
 
 $valgrind = 0;              # invoke make with valgrind
-$valgrind_args = '--num-callers=15 --tool=memcheck --leak-check=full';
+$valgrind_args = '';
+$memcheck_args = '--num-callers=15 --tool=memcheck --leak-check=full';
+$massif_args = '--num-callers=15 --tool=massif --alloc-fn=xmalloc --alloc-fn=xcalloc --alloc-fn=xrealloc --alloc-fn=xstrdup --alloc-fn=xstrndup';
 $pure_log = undef;
 
+$command_string = '';
+
+$all_tests = 0;
+
 require "test_driver.pl";
 
 # Some target systems might not have the POSIX module...
@@ -42,20 +51,30 @@ sub valid_option
 {
    local($option) = @_;
 
-   if ($option =~ /^-make([-_]?path)?$/)
-   {
-      $make_path = shift @argv;
-      if (!-f $make_path)
-      {
-        print "$option $make_path: Not found.\n";
-        exit 0;
-      }
-      return 1;
+   if ($option =~ /^-make([-_]?path)?$/i) {
+       $make_path = shift @argv;
+       if (!-f $make_path) {
+           print "$option $make_path: Not found.\n";
+           exit 0;
+       }
+       return 1;
+   }
+
+   if ($option =~ /^-all([-_]?tests)?$/i) {
+       $all_tests = 1;
+       return 1;
+   }
+
+   if ($option =~ /^-(valgrind|memcheck)$/i) {
+       $valgrind = 1;
+       $valgrind_args = $memcheck_args;
+       return 1;
    }
 
-   if ($option =~ /^-valgrind$/i) {
-     $valgrind = 1;
-     return 1;
+   if ($option =~ /^-massif$/i) {
+       $valgrind = 1;
+       $valgrind_args = $massif_args;
+       return 1;
    }
 
 # This doesn't work--it _should_!  Someone badly needs to fix this.
@@ -81,7 +100,7 @@ $old_makefile = undef;
 
 sub run_make_test
 {
-  local ($makestring, $options, $answer, $err_code) = @_;
+  local ($makestring, $options, $answer, $err_code, $timeout) = @_;
 
   # If the user specified a makefile string, create a new makefile to contain
   # it.  If the first value is not defined, use the last one (if there is
@@ -104,6 +123,7 @@ sub run_make_test
     $makestring =~ s/#MAKEFILE#/$makefile/g;
     $makestring =~ s/#MAKEPATH#/$mkpath/g;
     $makestring =~ s/#MAKE#/$make_name/g;
+    $makestring =~ s/#PERL#/$perl_name/g;
     $makestring =~ s/#PWD#/$pwd/g;
 
     # Populate the makefile!
@@ -118,9 +138,11 @@ sub run_make_test
   $answer =~ s/#MAKEFILE#/$makefile/g;
   $answer =~ s/#MAKEPATH#/$mkpath/g;
   $answer =~ s/#MAKE#/$make_name/g;
+  $answer =~ s/#PERL#/$perl_name/g;
   $answer =~ s/#PWD#/$pwd/g;
 
-  &run_make_with_options($makefile, $options, &get_logfile(0), $err_code);
+  run_make_with_options($makefile, $options, &get_logfile(0),
+                        $err_code, $timeout);
   &compare_output($answer, &get_logfile(1));
 
   $old_makefile = $makefile;
@@ -129,7 +151,7 @@ sub run_make_test
 
 # The old-fashioned way...
 sub run_make_with_options {
-  local ($filename,$options,$logname,$expected_code) = @_;
+  local ($filename,$options,$logname,$expected_code,$timeout) = @_;
   local($code);
   local($command) = $make_path;
 
@@ -146,11 +168,24 @@ sub run_make_with_options {
     $command .= " $options";
   }
 
+  $command_string = "$command\n";
+
   if ($valgrind) {
     print VALGRIND "\n\nExecuting: $command\n";
   }
 
-  $code = &run_command_with_output($logname,$command);
+
+  {
+      my $old_timeout = $test_timeout;
+      $timeout and $test_timeout = $timeout;
+
+      # If valgrind is enabled, turn off the timeout check
+      $valgrind and $test_timeout = 0;
+
+      $code = &run_command_with_output($logname,$command);
+
+      $test_timeout = $old_timeout;
+  }
 
   # Check to see if we have Purify errors.  If so, keep the logfile.
   # For this to work you need to build with the Purify flag -exit-status=yes
@@ -173,10 +208,12 @@ sub run_make_with_options {
   if ($code != $expected_code) {
     print "Error running $make_path (expected $expected_code; got $code): $command\n";
     $test_passed = 0;
+    $runf = &get_runfile;
+    &create_file (&get_runfile, $command_string);
     # If it's a SIGINT, stop here
     if ($code & 127) {
       print STDERR "\nCaught signal ".($code & 127)."!\n";
-      exit($code);
+      ($code & 127) == 2 and exit($code);
     }
     return 0;
   }
@@ -185,18 +222,28 @@ sub run_make_with_options {
     system "add_profile $make_path";
   }
 
-  1;
+  return 1;
 }
 
 sub print_usage
 {
-   &print_standard_usage ("run_make_tests", "[-make_path make_pathname]");
+   &print_standard_usage ("run_make_tests",
+                          "[-make_path make_pathname] [-memcheck] [-massif]",);
 }
 
 sub print_help
 {
-   &print_standard_help ("-make_path",
-          "\tYou may specify the pathname of the copy of make to run.");
+   &print_standard_help (
+        "-make_path",
+        "\tYou may specify the pathname of the copy of make to run.",
+        "-valgrind",
+        "-memcheck",
+        "\tRun the test suite under valgrind's memcheck tool.",
+        "\tChange the default valgrind args with the VALGRIND_ARGS env var.",
+        "-massif",
+        "\tRun the test suite under valgrind's massif toool.",
+        "\tChange the default valgrind args with the VALGRIND_ARGS env var."
+       );
 }
 
 sub get_this_pwd {
@@ -228,11 +275,6 @@ sub set_more_defaults
    local($string);
    local($index);
 
-   # Make sure we're in the C locale for those systems that support it,
-   # so sorting, etc. is predictable.
-   #
-   $ENV{LANG} = 'C';
-
    # find the type of the port.  We do this up front to have a single
    # point of change if it needs to be tweaked.
    #
@@ -328,11 +370,12 @@ sub set_more_defaults
    # Set up for valgrind, if requested.
 
    if ($valgrind) {
+     my $args = $valgrind_args;
      open(VALGRIND, "> valgrind.out")
        || die "Cannot open valgrind.out: $!\n";
      #  -q --leak-check=yes
-     exists $ENV{VALGRIND_ARGS} and $valgrind_args = $ENV{VALGRIND_ARGS};
-     $make_path = "valgrind --log-fd=".fileno(VALGRIND)." $valgrind_args $make_path";
+     exists $ENV{VALGRIND_ARGS} and $args = $ENV{VALGRIND_ARGS};
+     $make_path = "valgrind --log-fd=".fileno(VALGRIND)." $args $make_path";
      # F_SETFD is 2
      fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n";
      system("echo Starting on `date` 1>&".fileno(VALGRIND));
index 2e366cd..40debf5 100644 (file)
@@ -1,87 +1,64 @@
-$description = "The following test creates a makefile to test command \n"
-              ."echoing.  It tests that when a command line starts with \n"
-              ."a '\@', the echoing of that line is suppressed.  It also \n"
-              ."tests the -n option which tells make to ONLY echo the  \n"
-              ."commands and no execution happens.  In this case, even \n"
-              ."the commands with '\@' are printed. Lastly, it tests the \n"
-              ."-s flag which tells make to prevent all echoing, as if \n"
-              ."all commands started with a '\@'.";
-
-$details = "This test is similar to the 'clean' test except that a '\@' has\n"
-          ."been placed in front of the delete command line.  Four tests \n"
-          ."are run here.  First, make is run normally and the first echo\n"
-          ."command should be executed.  In this case there is no '\@' so \n"
-          ."we should expect make to display the command AND display the \n"
-          ."echoed message.  Secondly, make is run with the clean target, \n"
-          ."but since there is a '\@' at the beginning of the command, we\n"
-          ."expect no output; just the deletion of a file which we check \n"
-          ."for.  Third, we give the clean target again except this time\n"
-          ."we give make the -n option.  We now expect the command to be \n"
-          ."displayed but not to be executed.  In this case we need only \n"
-          ."to check the output since an error message would be displayed\n"
-          ."if it actually tried to run the delete command again and the \n"
-          ."file didn't exist. Lastly, we run the first test again with \n"
-          ."the -s option and check that make did not echo the echo \n"
-          ."command before printing the message.";
+#                                                                    -*-perl-*-
+$description = "The following test creates a makefile to test command
+echoing.  It tests that when a command line starts with
+a '\@', the echoing of that line is suppressed.  It also
+tests the -n option which tells make to ONLY echo the
+commands and no execution happens.  In this case, even
+the commands with '\@' are printed. Lastly, it tests the
+-s flag which tells make to prevent all echoing, as if
+all commands started with a '\@'.";
+
+$details = "This test is similar to the 'clean' test except that a '\@' has
+been placed in front of the delete command line.  Four tests
+are run here.  First, make is run normally and the first echo
+command should be executed.  In this case there is no '\@' so
+we should expect make to display the command AND display the
+echoed message.  Secondly, make is run with the clean target,
+but since there is a '\@' at the beginning of the command, we
+expect no output; just the deletion of a file which we check
+for.  Third, we give the clean target again except this time
+we give make the -n option.  We now expect the command to be
+displayed but not to be executed.  In this case we need only
+to check the output since an error message would be displayed
+if it actually tried to run the delete command again and the
+file didn't exist. Lastly, we run the first test again with
+the -s option and check that make did not echo the echo
+command before printing the message.\n";
 
 $example = "EXAMPLE_FILE";
 
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "all: \n";
-print MAKEFILE "\techo This makefile did not clean the dir... good\n";
-print MAKEFILE "clean: \n";
-print MAKEFILE "\t\@$delete_command $example\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&touch($example);
+touch($example);
 
 # TEST #1
 # -------
 
-&run_make_with_options($makefile,"",&get_logfile,0);
-$answer = "echo This makefile did not clean the dir... good\n"
-         ."This makefile did not clean the dir... good\n";
-&compare_output($answer,&get_logfile(1));
-
+run_make_test("
+all:
+\techo This makefile did not clean the dir... good
+clean:
+\t\@$delete_command $example\n",
+              '', 'echo This makefile did not clean the dir... good
+This makefile did not clean the dir... good');
 
 # TEST #2
 # -------
 
-&run_make_with_options($makefile,"clean",&get_logfile,0);
+run_make_test(undef, 'clean', '');
 if (-f $example) {
   $test_passed = 0;
+  unlink($example);
 }
-&compare_output('',&get_logfile(1));
 
 # TEST #3
 # -------
 
-&run_make_with_options($makefile,"-n clean",&get_logfile,0);
-$answer = "$delete_command $example\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '-n clean', "$delete_command $example\n");
 
 
 # TEST #4
 # -------
 
-&run_make_with_options($makefile,"-s",&get_logfile,0);
-$answer = "This makefile did not clean the dir... good\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, '-s', "This makefile did not clean the dir... good\n");
 
 
 1;
-
-
-
-
-
-
-
-
-
index 38efe11..81bff0c 100644 (file)
@@ -6,12 +6,7 @@ $details = "";
 # The test driver cleans out our environment for us so we don't have to worry
 # about that here.
 
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE <<'EOMAKE';
-
+&run_make_test('
 FOO = foo
 BAR = bar
 BOZ = boz
@@ -40,76 +35,44 @@ endif
 all:
        @echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)"
        @echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ"
-
-EOMAKE
-
-close(MAKEFILE);
-
-# TEST 0: basics
-
-&run_make_with_options($makefile,"",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
+',
+           '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 1: make sure vars inherited from the parent are exported
 
 $extraENV{FOO} = 1;
 
-&run_make_with_options($makefile,"",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
+&run_make_test(undef, '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 2: global export.  Explicit unexport takes precedence.
 
-&run_make_with_options($makefile,"EXPORT_ALL=1",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "EXPORT_ALL=1" ,
+              "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 3: global unexport.  Explicit export takes precedence.
 
-&run_make_with_options($makefile,"UNEXPORT_ALL=1",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
+&run_make_test(undef, "UNEXPORT_ALL=1",
+               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 4: both: in the above makefile the unexport comes last so that rules.
 
-&run_make_with_options($makefile,"EXPORT_ALL=1 UNEXPORT_ALL=1",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
+&run_make_test(undef, "EXPORT_ALL=1 UNEXPORT_ALL=1",
+               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 5: test the pseudo target.
 
-&run_make_with_options($makefile,"EXPORT_ALL_PSEUDO=1",&get_logfile,0);
-
-$answer = "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
-FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n";
-
-&compare_output($answer,&get_logfile(1));
-
+&run_make_test(undef, "EXPORT_ALL_PSEUDO=1",
+               "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz
+FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n");
 
 # TEST 6: Test the expansion of variables inside export
 
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile2");
-
-print MAKEFILE <<'EOF';
-
+&run_make_test('
 foo = f-ok
 bar = b-ok
 
@@ -125,24 +88,12 @@ export $(B)ar
 all:
        @echo foo=$(foo) bar=$(bar)
        @echo foo=$$foo bar=$$bar
-
-EOF
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile2,"",&get_logfile,0);
-$answer = "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n";
-&compare_output($answer,&get_logfile(1));
-
+',
+             "", "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n");
 
 # TEST 7: Test the expansion of variables inside unexport
 
-$makefile3 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile3");
-
-print MAKEFILE <<'EOF';
-
+&run_make_test('
 foo = f-ok
 bar = b-ok
 
@@ -160,24 +111,12 @@ unexport $(B)ar
 all:
        @echo foo=$(foo) bar=$(bar)
        @echo foo=$$foo bar=$$bar
-
-EOF
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile3,"",&get_logfile,0);
-$answer = "foo=f-ok bar=b-ok\nfoo= bar=\n";
-&compare_output($answer,&get_logfile(1));
-
+',
+              '', "foo=f-ok bar=b-ok\nfoo= bar=\n");
 
 # TEST 7: Test exporting multiple variables on the same line
 
-$makefile4 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile4");
-
-print MAKEFILE <<'EOF';
-
+&run_make_test('
 A = a
 B = b
 C = c
@@ -196,23 +135,14 @@ export F G H I J
 export D E $(SOME)
 
 all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
-EOF
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile4,"",&get_logfile,0);
-$answer = "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n";
-&compare_output($answer,&get_logfile(1));
-
+',
+               '', "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n");
 
 # TEST 8: Test unexporting multiple variables on the same line
 
-$makefile5 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile5");
-
-print MAKEFILE <<'EOF';
+@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_test('
 A = a
 B = b
 C = c
@@ -231,16 +161,26 @@ unexport F G H I J
 unexport D E $(SOME)
 
 all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J
-EOF
-
-close(MAKEFILE);
-
-@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);
-$answer = "A= B= C= D= E= F= G= H= I= J=\n";
-&compare_output($answer,&get_logfile(1));
-
+',
+               '', "A= B= C= D= E= F= G= H= I= J=\n");
+
+# TEST 9: Check setting a variable named "export"
+
+&run_make_test('
+export = 123
+export export
+export export = 456
+a: ; @echo "\$$(export)=$(export) / \$$export=$$export"
+',
+               '', "\$(export)=456 / \$export=456\n");
+
+# TEST 9: Check "export" as a target
+
+&run_make_test('
+a: export
+export: ; @echo "$@"
+',
+               '', "export\n");
 
 # This tells the test driver that the perl test script executed properly.
 1;
index 196a987..ba8908c 100644 (file)
@@ -90,8 +90,6 @@ all: ; @:
 foo: bar; @:
 ', '', '');
 
-1;
-
 
 # Make sure that we don't die when the command fails but we dontcare.
 # (Savannah bug #13216).
@@ -117,4 +115,65 @@ include
 -include
 sinclude', '', '');
 
+
+# Test that the diagnostics is issued even if the target has been
+# tried before with the dontcare flag (direct dependency case).
+#
+run_make_test('
+-include foo
+
+all: bar
+
+foo: baz
+bar: baz
+',
+'',
+"#MAKE#: *** No rule to make target `baz', needed by `bar'.  Stop.\n",
+512);
+
+# Test that the diagnostics is issued even if the target has been
+# tried before with the dontcare flag (indirect dependency case).
+#
+run_make_test('
+-include foo
+
+all: bar
+
+foo: baz
+bar: baz
+baz: end
+',
+'',
+"#MAKE#: *** No rule to make target `end', needed by `baz'.  Stop.\n",
+512);
+
+# Test that the diagnostics is issued even if the target has been
+# tried before with the dontcare flag (include/-include case).
+#
+run_make_test('
+include bar
+-include foo
+
+all:
+
+foo: baz
+bar: baz
+baz: end
+',
+'',
+"#MAKEFILE#:2: bar: No such file or directory
+#MAKE#: *** No rule to make target `end', needed by `baz'.  Stop.\n",
+512);
+
+if ($all_tests) {
+    # Test that include of a rebuild-able file doesn't show a warning
+    # Savannah bug #102
+    run_make_test(q!
+include foo
+foo: ; @echo foo = bar > $@
+!,
+                  '', "#MAKE#: `foo' is up to date.\n");
+    rmfiles('foo');
+}
+
 1;
index 23e4f2b..fff6c4e 100644 (file)
@@ -1,34 +1,45 @@
-$description = "The following test creates a makefile to ...";
+#                                                                    -*-perl-*-
 
-$details = "";
-
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "override define foo\n"
-              ."\@echo First comes the definition.\n"
-              ."\@echo Then comes the override.\n"
-              ."endef\n"
-              ."all: \n"
-              ."\t\$(foo)\n";
+$description = "Test the override directive on variable assignments.";
 
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
+$details = "";
 
-&run_make_with_options($makefile,"foo=Hello",&get_logfile);
+# TEST 0: Basic override
 
-# Create the answer to what should be produced by this Makefile
-$answer = "First comes the definition.\n"
-         ."Then comes the override.\n";
+run_make_test('
+X = start
+override recur = $(X)
+override simple := $(X)
+X = end
+all: ; @echo "$(recur) $(simple)"
+',
+              'recur=I simple=J', "end start\n");
 
-&compare_output($answer,&get_logfile(1));
+# TEST 1: Override with append
 
-1;
+run_make_test('
+X += X1
+override X += X2
+override Y += Y1
+Y += Y2
+all: ; @echo "$(X) $(Y)"
+',
+              '', "X1 X2 Y1\n");
 
+# TEST 2: Override with append to the command line
 
+run_make_test(undef, 'X=C Y=C', "C X2 C Y1\n");
 
+# Test override of define/endef
 
+run_make_test('
+override define foo
+@echo First comes the definition.
+@echo Then comes the override.
+endef
+all: ; $(foo)
+',
+              'foo=Hello', "First comes the definition.\nThen comes the override.\n");
 
 
+1;
index abe49a5..cc0f84f 100644 (file)
@@ -43,7 +43,7 @@ all: 1 2; \@echo success
               "-j4",
               "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
 
-unlink('1.inc', '2.inc');
+rmfiles(qw(1.inc 2.inc));
 
 
 # Test parallelism with included files--this time recurse first and make
@@ -62,13 +62,14 @@ endif
               "-j4",
               "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
 
-unlink('1.inc', '2.inc');
+rmfiles(qw(1.inc 2.inc));
 
 # Grant Taylor reports a problem where tokens can be lost (not written back
 # to the pipe when they should be): this happened when there is a $(shell ...)
 # function in an exported recursive variable.  I added some code to check
 # for this situation and print a message if it occurred.  This test used
 # to trigger this code when I added it but no longer does after the fix.
+# We have to increase the timeout from the default (5s) on this test.
 
 run_make_test("
 export HI = \$(shell \$(\$\@.CMD))
@@ -79,7 +80,7 @@ second.CMD = $sleep_command 4; echo hi
 all: first second
 
 first second: ; \@echo \$\@; $sleep_command 1; echo \$\@",
-              '-j2', "first\nfirst\nsecond\nsecond");
+              '-j2', "first\nfirst\nsecond\nsecond", 0, 7);
 
 # 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
@@ -126,6 +127,95 @@ mod_a.o mod_b.o:
 ', '-j2', '');
 
 
+# TEST #9 -- Savannah bugs 3330 and 15919
+# In earlier versions of make this will either give the wrong answer, or hang.
+
+utouch(-10, 'target');
+run_make_test('target: intermed ; touch $@
+
+.INTERMEDIATE: intermed
+intermed: | phony ; touch $@
+
+.PHONY: phony
+phony: ; : phony', '-rR -j', ': phony');
+rmfiles('target');
+
+# TEST #10: Don't put --jobserver-fds into a re-exec'd MAKEFLAGS.
+# We can't test this directly because there's no way a makefile can
+# show the value of MAKEFLAGS we were re-exec'd with.  We can intuit it
+# by looking for "disabling jobserver mode" warnings; we should only
+# get one from the original invocation and none from the re-exec.
+# See Savannah bug #18124
+
+run_make_test(q!
+-include inc.mk
+recur:
+#      @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+       @rm -f inc.mk
+       @$(MAKE) -j2 -f #MAKEFILE# all
+all:
+#      @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+       @echo $@
+inc.mk:
+#      @echo 'MAKEFLAGS = $(MAKEFLAGS)'
+       @echo 'FOO = bar' > $@
+!,
+              '--no-print-directory -j2', "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n");
+
+rmfiles('inc.mk');
+
+if ($all_tests) {
+    # Implicit files aren't properly recreated during parallel builds
+    # Savannah bug #26864
+
+    # The first run works fine
+    run_make_test(q!
+%.bar: %.x foo.y ; cat $^ > $@
+%.x: ; touch $@
+foo.y: foo.y.in ; cp $< $@
+foo.y.in: ; touch $@
+!,
+                  '-j2 main.bar',
+                  "touch foo.y.in
+touch main.x
+cp foo.y.in foo.y
+cat main.x foo.y > main.bar
+rm main.x");
+
+    # Now we touch the .in file and make sure it still works
+    touch('foo.y.in');
+
+    run_make_test(undef, '-j2 main.bar', "cp foo.y.in foo.y
+touch main.x
+cat main.x foo.y > main.bar
+rm main.x");
+
+    # Clean up
+    rmfiles(qw(foo.y foo.y.in main.bar));
+}
+
+if ($all_tests) {
+    # Jobserver FD handling is messed up in some way.
+    # Savannah bug #28189
+    # It doesn't look like that bug anymore but this is the code it runs
+
+    run_make_test(q!
+ifdef EXTRA
+vpath %.dst /
+xxx.dst: ; true
+yyy.dst: ; true
+endif
+
+M := $(MAKE)
+xx: ; $M --no-print-directory -j2 -f $(MAKEFILE_LIST) xxx.dst yyy.dst EXTRA=1
+!,
+                  '-j2',
+                  '#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.
+true
+true
+');
+}
+
 # Make sure that all jobserver FDs are closed if we need to re-exec the
 # master copy.
 #
@@ -153,12 +243,12 @@ mod_a.o mod_b.o:
 #               '-j2 INCL=false fdprint',
 #               'bar');
 
-# unlink('dependfile', 'output');
+# rmfiles(qw(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');
+# rmfiles(qw(dependfile output));
 
 1;
index 20c1cfc..8ca228d 100644 (file)
@@ -120,5 +120,29 @@ run_make_test(undef, # reuse previous makefile
 'normal: global: new $t pattern: good $t inherit: good $t;
 pattrn: global: new $t pattern: good $t inherit: good $t;');
 
+# TEST #8: override in pattern-specific variables
+
+run_make_test('
+a%: override FOO += f1
+a%: FOO += f2
+ab: ; @echo "$(FOO)"
+',
+              '', "f1\n");
+
+run_make_test(undef, 'FOO=C', "C f1\n");
+
+# TEST #9: Test shortest stem selection in pattern-specific variables.
+
+run_make_test('
+%-mt.x: x := two
+%.x: x := one
+
+all: foo.x foo-mt.x
+
+foo.x: ;@echo $x
+foo-mt.x: ;@echo $x
+',
+'',
+"one\ntwo");
 
 1;
index 90525ae..eebe7c0 100644 (file)
@@ -10,16 +10,18 @@ $dir = cwd;
 $dir =~ s,.*/([^/]+)$,../$1,;
 
 
-#  TEST #1: Make sure that multiple patterns where the same target
-#           can be built are searched even if the first one fails
-#           to match properly.
+# TEST #0: Make sure that multiple patterns where the same target
+#          can be built are searched even if the first one fails
+#          to match properly.
 #
 
-run_make_test('
+run_make_test(q!
 .PHONY: all
 
 all: case.1 case.2 case.3
-a: void
+
+# We can't have this, due to "Implicit Rule Search Algorithm" step 5c
+#xxx: void
 
 # 1 - existing file
 %.1: void
@@ -41,11 +43,9 @@ a: void
        @exit 0
 
 3.implicit-phony:
-',
-'',
-'');
+!, '', '');
 
-# TEST #2: make sure files that are built via implicit rules are marked
+# TEST #1: make sure files that are built via implicit rules are marked
 #          as targets (Savannah bug #12202).
 #
 run_make_test('
@@ -69,7 +69,7 @@ foo.in: ; @:
 foo.out');
 
 
-# TEST #3: make sure intermidite files that also happened to be
+# TEST #2: make sure intermediate files that also happened to be
 #          prerequisites are not removed (Savannah bug #12267).
 #
 run_make_test('
@@ -96,7 +96,7 @@ $dir/foo.o");
 unlink("$dir/foo.c");
 
 
-# TEST #4: make sure precious flag is set properly for targets
+# TEST #3: make sure precious flag is set properly for targets
 #          that are built via implicit rules (Savannah bug #13218).
 #
 run_make_test('
@@ -116,7 +116,7 @@ $(dir)/foo.bar:
 unlink("$dir/foo.bar");
 
 
-# TEST #5: make sure targets of a macthed implicit pattern rule never
+# TEST #4: make sure targets of a matched implicit pattern rule are
 #          never considered intermediate (Savannah bug #13022).
 #
 run_make_test('
@@ -145,5 +145,80 @@ echo foo.c foo.h >foo.o');
 
 unlink('foo.in', 'foo.h', 'foo.c', 'foo.o');
 
+# TEST #5: make sure both prefix and suffix patterns work with multiple
+#          target patterns (Savannah bug #26593).
+#
+run_make_test('
+all: foo.s1 foo.s2 p1.foo p2.foo
+
+p1.% p2.%: %.orig
+       @echo $@
+%.s1 %.s2: %.orig
+       @echo $@
+
+.PHONY: foo.orig
+',
+              '', "foo.s1\np1.foo\n");
+
+# TEST 6: Make sure that non-target files are still eligible to be created
+# as part of implicit rule chaining.  Savannah bug #17752.
+
+run_make_test(q!
+BIN = xyz
+COPY = $(BIN).cp
+SRC = $(BIN).c
+allbroken: $(COPY) $(BIN) ; @echo ok
+$(SRC): ; @echo 'main(){}' > $@
+%.cp: % ; @cp $< $@
+% : %.c ; @cp $< $@
+clean: ; @rm -rf $(SRC) $(COPY) $(BIN)
+!,
+              '', "ok\n");
+
+unlink(qw(xyz xyz.cp xyz.c));
+
+# TEST 7: Make sure that all prereqs of all "also_make" targets get created
+# before any of the things that depend on any of them.  Savannah bug #19108.
+
+run_make_test(q!
+final: x ; @echo $@
+x: x.t1 x.t2 ; @echo $@
+x.t2: dep
+dep: ; @echo $@
+%.t1 %.t2: ; @echo $*.t1 ; echo $*.t2
+!,
+              '', "dep\nx.t1\nx.t2\nx\nfinal\n");
+
+
+# TEST 8: Verify we can remove pattern rules.  Savannah bug #18622.
+
+my @f = (qw(foo.w foo.ch));
+touch(@f);
+
+run_make_test(q!
+CWEAVE := :
+
+# Disable builtin rules
+%.tex : %.w
+%.tex : %.w %.ch
+!,
+              'foo.tex',
+              "#MAKE#: *** No rule to make target `foo.tex'.  Stop.", 512);
+
+unlink(@f);
+
+# TEST #9: Test shortest stem selection in pattern rules.
+
+run_make_test('
+%.x: ;@echo one
+%-mt.x: ;@echo two
+
+all: foo.x foo-mt.x
+',
+'',
+"one\ntwo");
+
+1;
+
 # This tells the test driver that the perl test script executed properly.
 1;
index b9dfd4f..a6b8f90 100644 (file)
@@ -16,7 +16,7 @@ last:
        @echo MAKELEVEL = $(MAKELEVEL)
        @echo THE END
 ',
-              ('CFLAGS=-O -w' . ($parallel_jobs ? '-j 2' : '')),
+              ('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')),
               ($vos
                ? "#MAKE#: Entering directory `#PWD#'
 make 'CFLAGS=-O' -f #MAKEFILE# foo
index 01860a9..79e0a36 100644 (file)
@@ -24,9 +24,9 @@ run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
 
 # TEST #1: automatic variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 foo: bar baz
 
@@ -39,7 +39,7 @@ foo: $$@.1 \
      $$|.5 \
      $$*.6
 
-',
+!,
 '',
 'bar
 baz
@@ -60,17 +60,16 @@ buz.5
 
 # Test #2: target/pattern -specific variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 foo.x: $$a $$b
 
 foo.x: a := bar
 
 %.x: b := baz
-
-',
+!,
 '',
 'bar
 baz
@@ -79,39 +78,27 @@ baz
 
 # Test #3: order of prerequisites.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 all: foo bar baz
 
 # Subtest #1
-#
 foo: foo.1; @:
-
 foo: foo.2
-
 foo: foo.3
 
-
 # Subtest #2
-#
 bar: bar.2
-
 bar: bar.1; @:
-
 bar: bar.3
 
-
 # Subtest #3
-#
 baz: baz.1
-
 baz: baz.2
-
 baz: ; @:
-
-',
+!,
 '',
 'foo.1
 foo.2
@@ -123,5 +110,47 @@ baz.1
 baz.2
 ');
 
+# TEST #4: eval in a context where there is no reading_file
+run_make_test(q!
+.SECONDEXPANSION:
+all : $$(eval $$(info test))
+!,
+            '', "test\n#MAKE#: Nothing to be done for `all'.\n");
+
+# TEST #5: (NEGATIVE) catch eval in a prereq list trying to create new
+# target/prereq relationships.
+
+run_make_test(q!
+.SECONDEXPANSION:
+proj1.exe : proj1.o $$(eval $$(test))
+define test
+proj1.o : proj1.c
+proj1.c: proj1.h
+endef
+!,
+              '', "#MAKE#: *** prerequisites cannot be defined in recipes.  Stop.\n", 512);
+
+
+# Automatic $$+ variable expansion issue.  Savannah bug #25780
+run_make_test(q!
+all : foo foo
+.SECONDEXPANSION:
+all : $$+ ; @echo '$+'
+foo : ;
+!,
+                  '', "foo foo foo foo\n");
+
+
+# Automatic $$+ variable expansion issue.  Savannah bug #25780
+run_make_test(q!
+all : bar bar
+bar : ;
+q%x : ;
+.SECONDEXPANSION:
+a%l: q1x $$+ q2x ; @echo '$+'
+!,
+                  '', "q1x bar bar q2x bar bar\n");
+
+
 # This tells the test driver that the perl test script executed properly.
 1;
index c2ae648..e9acb2f 100644 (file)
@@ -11,9 +11,9 @@ $dir =~ s,.*/([^/]+)$,../$1,;
 
 # Test #1: automatic variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 foo.a: bar baz
 
@@ -37,9 +37,9 @@ foo.%: 1.$$@ \
 4.biz \
 5.buz \
 6.a:
-       @echo $@
+       @echo '$@'
 
-',
+!,
 '',
 '1.foo.a
 2.bar
@@ -60,7 +60,7 @@ buz
 
 # Test #2: target/pattern -specific variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 foo.x:
 
@@ -71,20 +71,16 @@ foo.x: x_a := bar
 
 %.x: x_b := baz
 
-bar baz: ; @echo $@
-
-',
-'',
-'bar
-baz
-');
+bar baz: ; @echo '$@'
+!,
+              '', "bar\nbaz\n");
 
 
 # Test #3: order of prerequisites.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 all: foo bar baz
 
@@ -97,7 +93,7 @@ foo: foo.2
 
 foo: foo.3
 
-foo.1: ; @echo $@
+foo.1: ; @echo '$@'
 
 
 # Subtest #2
@@ -108,7 +104,7 @@ bar: bar.2
 
 bar: bar.3
 
-bar.1: ; @echo $@
+bar.1: ; @echo '$@'
 
 
 # Subtest #3
@@ -118,9 +114,8 @@ baz: baz.1
 baz: baz.2
 
 %az: ; @:
-
-',
-'',
+!,
+              '',
 'foo.1
 foo.2
 foo.3
@@ -134,20 +129,18 @@ baz.2
 
 # Test #4: stem splitting logic.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 $(dir)/tmp/bar.o:
 
-$(dir)/tmp/foo/bar.c: ; @echo $@
-$(dir)/tmp/bar/bar.c: ; @echo $@
-foo.h: ; @echo $@
+$(dir)/tmp/foo/bar.c: ; @echo '$@'
+$(dir)/tmp/bar/bar.c: ; @echo '$@'
+foo.h: ; @echo '$@'
 
 %.o: $$(addsuffix /%.c,foo bar) foo.h
-       @echo $@: {$<} $^
-
-',
-"dir=$dir",
-"$dir/tmp/foo/bar.c
+       @echo '$@: {$<} $^'
+!,
+              "dir=$dir", "$dir/tmp/foo/bar.c
 $dir/tmp/bar/bar.c
 foo.h
 $dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h
@@ -156,18 +149,17 @@ $dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h
 
 # Test #5: stem splitting logic and order-only prerequisites.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
-$(dir)/tmp/foo.c: ; @echo $@
-bar.h: ; @echo $@
+$(dir)/tmp/foo.c: ; @echo '$@'
+bar.h: ; @echo '$@'
 
 %.o: %.c|bar.h
-       @echo $@: {$<} {$|} $^
+       @echo '$@: {$<} {$|} $^'
 
-',
-"dir=$dir",
-"$dir/tmp/foo.c
+!,
+              "dir=$dir", "$dir/tmp/foo.c
 bar.h
 $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
 ");
@@ -175,58 +167,60 @@ $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
 
 # Test #6: lack of implicit prerequisites.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 foo.o: foo.c
-foo.c: ; @echo $@
+foo.c: ; @echo '$@'
 
 %.o:
-       @echo $@: {$<} $^
+       @echo '$@: {$<} $^'
+!,
+              '', "foo.c\nfoo.o: {foo.c} foo.c\n");
 
-',
-'',
-'foo.c
-foo.o: {foo.c} foo.c
-');
 
 # Test #7: Test stem from the middle of the name.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 foobarbaz:
 
 foo%baz: % $$*.1
-       @echo $*
+       @echo '$*'
 
 bar bar.1:
-       @echo $@
+       @echo '$@'
+!,
+              '', "bar\nbar.1\nbar\n");
 
-',
-'',
-'bar
-bar.1
-bar
-');
 
 # Test #8: Make sure stem triple-expansion does not happen.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 foo$$bar:
 
 f%r: % $$*.1
-       @echo \'$*\'
+       @echo '$*'
 
 oo$$ba oo$$ba.1:
-       @echo \'$@\'
-
-',
-'',
-'oo$ba
+       @echo '$@'
+!,
+              '', 'oo$ba
 oo$ba.1
 oo$ba
 ');
 
+# Test #9: Check the value of $^
+run_make_test(q!
+.SECONDEXPANSION:
+
+%.so: | $$(extra) ; @echo $^
+
+foo.so: extra := foo.o
+foo.so:
+foo.o:
+!,
+              '', "\n");
 
 # This tells the test driver that the perl test script executed properly.
 1;
index 096b240..b1e59e1 100644 (file)
@@ -5,12 +5,11 @@ $details = "";
 
 # Test #1: automatic variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 foo.a foo.b: foo.%: bar.% baz.%
-
 foo.a foo.b: foo.%: biz.% | buz.%
 
 foo.a foo.b: foo.%: $$@.1 \
@@ -19,10 +18,8 @@ foo.a foo.b: foo.%: $$@.1 \
                     $$(addsuffix .4,$$+) \
                     $$|.5 \
                     $$*.6
-
-',
-'',
-'bar.a
+!,
+              '', 'bar.a
 baz.a
 biz.a
 buz.a
@@ -41,61 +38,45 @@ a.6
 
 # Test #2: target/pattern -specific variables.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 foo.x foo.y: foo.%: $$(%_a) $$($$*_b)
 
 foo.x: x_a := bar
 
 %.x: x_b := baz
-
-
-',
-'',
-'bar
-baz
-');
+!,
+              '', "bar\nbaz\n");
 
 
 # Test #3: order of prerequisites.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
-.DEFAULT: ; @echo $@
+.DEFAULT: ; @echo '$@'
 
 all: foo.a bar.a baz.a
 
 # Subtest #1
-#
 foo.a foo.b: foo.%: foo.%.1; @:
-
 foo.a foo.b: foo.%: foo.%.2
-
 foo.a foo.b: foo.%: foo.%.3
 
 
 # Subtest #2
-#
 bar.a bar.b: bar.%: bar.%.2
-
 bar.a bar.b: bar.%: bar.%.1; @:
-
 bar.a bar.b: bar.%: bar.%.3
 
 
 # Subtest #3
-#
 baz.a baz.b: baz.%: baz.%.1
-
 baz.a baz.b: baz.%: baz.%.2
-
 baz.a baz.b: ; @:
-
-',
-'',
-'foo.a.1
+!,
+             '', 'foo.a.1
 foo.a.2
 foo.a.3
 bar.a.1
@@ -108,17 +89,15 @@ baz.a.2
 
 # Test #4: Make sure stem triple-expansion does not happen.
 #
-run_make_test('
+run_make_test(q!
 .SECONDEXPANSION:
 foo$$bar: f%r: % $$*.1
-       @echo \'$*\'
+       @echo '$*'
 
 oo$$ba oo$$ba.1:
-       @echo \'$@\'
-
-',
-'',
-'oo$ba
+       @echo '$@'
+!,
+              '', 'oo$ba
 oo$ba.1
 oo$ba
 ');
index e2e9c90..ddd6c1f 100644 (file)
@@ -6,9 +6,7 @@ Create a makefile containing various flavors of target-specific variable
 values, override and non-override, and using various variable expansion
 rules, semicolon interference, etc.";
 
-open(MAKEFILE,"> $makefile");
-
-print MAKEFILE <<'EOF';
+run_make_test('
 SHELL = /bin/sh
 export FOO = foo
 export BAR = bar
@@ -17,17 +15,17 @@ one two: ; @echo $(FOO) $(BAR)
 two: BAR = two
 three: ; BAR=1000
        @echo $(FOO) $(BAR)
-# Some things that shouldn't be target vars
+# Some things that shouldn not be target vars
 funk : override
 funk : override adelic
 adelic override : ; echo $@
 # Test per-target recursive variables
 four:FOO=x
 four:VAR$(FOO)=ok
-four: ; @echo '$(FOO) $(VAR$(FOO)) $(VAR) $(VARx)'
+four: ; @echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx)"
 five:FOO=x
 five six : VAR$(FOO)=good
-five six: ;@echo '$(FOO) $(VAR$(FOO)) $(VAR) $(VARx) $(VARfoo)'
+five six: ;@echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx) $(VARfoo)"
 # Test per-target variable inheritance
 seven: eight
 seven eight: ; @echo $@: $(FOO) $(BAR)
@@ -41,8 +39,8 @@ nine-a: export BAZ = baz
 nine-a: ; @echo $$BAZ
 # Test = escaping
 EQ = =
-ten: one\=two
-ten: one \= two
+ten: one$(EQ)two
+ten: one $(EQ) two
 ten one$(EQ)two $(EQ):;@echo $@
 .PHONY: one two three four five six seven eight nine ten $(EQ) one$(EQ)two
 # Test target-specific vars with pattern/suffix rules
@@ -54,92 +52,58 @@ foo.q : RVAR += rvar
 %.r %.s %.t: ; @echo $(QVAR) $(RVAR) $(SVAR) $(TVAR)
 foo.r : RVAR += rvar
 foo.t : TVAR := $(QVAR)
-EOF
-
-close(MAKEFILE);
-
-# TEST #1
-
-&run_make_with_options($makefile, "one two three", &get_logfile);
-$answer = "one bar\nfoo two\nBAR=1000\nfoo bar\n";
-&compare_output($answer,&get_logfile(1));
+',
+                 "one two three", "one bar\nfoo two\nBAR=1000\nfoo bar\n");
 
 # TEST #2
 
-&run_make_with_options($makefile, "one two FOO=1 BAR=2", &get_logfile);
-$answer = "one 2\n1 2\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "one two FOO=1 BAR=2", "one 2\n1 2\n");
 
 # TEST #3
 
-&run_make_with_options($makefile, "four", &get_logfile);
-$answer = "x ok  ok\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "four", "x ok  ok\n");
 
 # TEST #4
 
-&run_make_with_options($makefile, "seven", &get_logfile);
-$answer = "eight: seven eight\nseven: seven seven\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "seven", "eight: seven eight\nseven: seven seven\n");
 
 # TEST #5
 
-&run_make_with_options($makefile, "nine", &get_logfile);
-$answer = "wallace bar wallace bar\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "nine", "wallace bar wallace bar\n");
 
 # TEST #5-a
 
-&run_make_with_options($makefile, "nine-a", &get_logfile);
-$answer = "baz\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "nine-a", "baz\n");
 
 # TEST #6
 
-&run_make_with_options($makefile, "ten", &get_logfile);
-$answer = "one=two\none bar\n=\nfoo two\nten\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "ten", "one=two\none bar\n=\nfoo two\nten\n");
 
 # TEST #6
 
-&run_make_with_options($makefile, "foo.q bar.q", &get_logfile);
-$answer = "qvar = rvar\nqvar =\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "foo.q bar.q", "qvar = rvar\nqvar =\n");
 
 # TEST #7
 
-&run_make_with_options($makefile, "foo.t bar.s", &get_logfile);
-$answer = "qvar = qvar\nqvar =\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, "foo.t bar.s", "qvar = qvar\nqvar =\n");
 
 
 # TEST #8
 # For PR/1378: Target-specific vars don't inherit correctly
 
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE,"> $makefile2");
-print MAKEFILE <<'EOF';
+run_make_test('
 foo: FOO = foo
 bar: BAR = bar
 foo: bar
 bar: baz
 baz: ; @echo $(FOO) $(BAR)
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile2", "", &get_logfile);
-$answer = "foo bar\n";
-&compare_output($answer, &get_logfile(1));
+', "", "foo bar\n");
 
 # TEST #9
 # For PR/1380: Using += assignment in target-specific variables sometimes fails
 # Also PR/1831
 
-$makefile3 = &get_tmpfile;
-
-open(MAKEFILE,"> $makefile3");
-print MAKEFILE <<'EOF';
+run_make_test('
 .PHONY: all one
 all: FOO += baz
 all: one; @echo $(FOO)
@@ -149,43 +113,27 @@ FOO = bar
 one: FOO += biz
 one: FOO += boz
 one: ; @echo $(FOO)
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile3", "", &get_logfile);
-$answer = "bar baz biz boz\nbar baz\n";
-&compare_output($answer, &get_logfile(1));
+',
+              '', "bar baz biz boz\nbar baz\n");
 
 # Test #10
 
-&run_make_with_options("$makefile3", "one", &get_logfile);
-$answer = "bar biz boz\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef, 'one', "bar biz boz\n");
 
 # Test #11
 # PR/1709: Test semicolons in target-specific variable values
 
-$makefile4 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile4");
-print MAKEFILE <<'EOF';
+run_make_test('
 foo : FOO = ; ok
-foo : ; @echo '$(FOO)'
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile4", "", &get_logfile);
-$answer = "; ok\n";
-&compare_output($answer, &get_logfile(1));
+foo : ; @echo "$(FOO)"
+',
+              '', "; ok\n");
 
 # Test #12
 # PR/2020: More hassles with += target-specific vars.  I _really_ think
 # I nailed it this time :-/.
 
-$makefile5 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile5");
-print MAKEFILE <<'EOF';
+run_make_test('
 .PHONY: a
 
 BLAH := foo
@@ -195,20 +143,13 @@ a: ; @$(COMMAND)
 
 a: BLAH := bar
 a: COMMAND += snafu $(BLAH)
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile5", "", &get_logfile);
-$answer = "bar snafu bar\n";
-&compare_output($answer, &get_logfile(1));
+',
+              '', "bar snafu bar\n");
 
 # Test #13
 # Test double-colon rules with target-specific variable values
 
-$makefile6 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile6");
-print MAKEFILE <<'EOF';
+run_make_test('
 W = bad
 X = bad
 foo: W = ok
@@ -224,48 +165,30 @@ Z = nopat
 ifdef PATTERN
   fo% : Z = pat
 endif
-
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile6", "foo", &get_logfile);
-$answer = "ok ok foo nopat\nok ok foo nopat\n";
-&compare_output($answer, &get_logfile(1));
+',
+             'foo', "ok ok foo nopat\nok ok foo nopat\n");
 
 # Test #14
 # Test double-colon rules with target-specific variable values and
 # inheritance
 
-&run_make_with_options("$makefile6", "bar", &get_logfile);
-$answer = "ok ok bar nopat\nok ok bar nopat\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef, 'bar', "ok ok bar nopat\nok ok bar nopat\n");
 
 # Test #15
 # Test double-colon rules with pattern-specific variable values
 
-&run_make_with_options("$makefile6", "foo PATTERN=yes", &get_logfile);
-$answer = "ok ok foo pat\nok ok foo pat\n";
-&compare_output($answer, &get_logfile(1));
-
+run_make_test(undef, 'foo PATTERN=yes', "ok ok foo pat\nok ok foo pat\n");
 
 # Test #16
 # Test target-specific variables with very long command line
 # (> make default buffer length)
 
-$makefile7 = &get_tmpfile;
-
-open(MAKEFILE, "> $makefile7");
-print MAKEFILE <<'EOF';
+run_make_test('
 base_metals_fmd_reports.sun5 base_metals_fmd_reports CreateRealPositions        CreateMarginFunds deals_changed_since : BUILD_OBJ=$(shell if [ -f               "build_information.generate" ]; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi  )
 
 deals_changed_since: ; @echo $(BUILD_OBJ)
-
-EOF
-close(MAKEFILE);
-
-&run_make_with_options("$makefile7", '', &get_logfile);
-$answer = "no build information\n";
-&compare_output($answer, &get_logfile(1));
+',
+              '', "no build information\n");
 
 # TEST #17
 
@@ -286,8 +209,7 @@ foo.x: FOOVAR = bar
 rules.mk : MYVAR = foo
 .INTERMEDIATE: foo.x rules.mk
 ',
-              '-I t1',
-              'MYVAR= FOOVAR=bar ALLVAR=xxx');
+              '-I t1', 'MYVAR= FOOVAR=bar ALLVAR=xxx');
 
 rmfiles('t1/rules.mk');
 rmdir('t1');
@@ -297,11 +219,45 @@ rmdir('t1');
 # Test appending to a simple variable containing a "$": avoid a
 # double-expansion.  See Savannah bug #15913.
 
-run_make_test("
-VAR := \$\$FOO
+run_make_test('
+VAR := $$FOO
 foo: VAR += BAR
-foo: ; \@echo '\$(VAR)'",
-              '',
-              '$FOO BAR');
+foo: ; @echo '."'".'$(VAR)'."'".'
+',
+              '', '$FOO BAR');
+
+# TEST #19: Override with append variables
+
+run_make_test('
+a: override FOO += f1
+a: FOO += f2
+a: ; @echo "$(FOO)"
+',
+              '', "f1\n");
+
+run_make_test(undef, 'FOO=C', "C f1\n");
+
+# TEST #20: Check for continuation after semicolons
+
+run_make_test(q!
+a: A = 'hello; \
+world'
+a: ; @echo $(A)
+!,
+              '', "hello; world\n");
+
+# TEST #19: Test define/endef variables as target-specific vars
+
+# run_make_test('
+# define b
+# @echo global
+# endef
+# a: define b
+# @echo local
+# endef
+
+# a: ; $(b)
+# ',
+#               '', "local\n");
 
 1;
index 101a25d..a3aebd9 100644 (file)
@@ -1,3 +1,5 @@
+#                                                                     -*-perl-*-
+
 $description = "The following test creates a makefile to test the \n"
               ."vpath directive which allows you to specify a search \n"
               ."path for a particular class of filenames, those that\n"
@@ -59,4 +61,21 @@ if (&compare_output($answer,&get_logfile(1)))
   unlink @files_to_touch;
 }
 
+# TEST 2: after vpath lookup ensure we don't get incorrect circular dependency
+# warnings due to change of struct file ptr.  Savannah bug #13529.
+
+mkdir('vpath-d', 0777);
+
+run_make_test(q!
+vpath %.te vpath-d/
+.SECONDARY:
+default: vpath-d/a vpath-d/b
+vpath-d/a: fail.te
+vpath-d/b : fail.te
+vpath-d/fail.te:
+!,
+              '', "#MAKE#: Nothing to be done for `default'.\n");
+
+rmdir('vpath-d');
+
 1;
diff --git a/tests/scripts/features/vpath3 b/tests/scripts/features/vpath3
new file mode 100644 (file)
index 0000000..978c5ee
--- /dev/null
@@ -0,0 +1,50 @@
+#                                                                     -*-perl-*-
+
+$description = "Test the interaction of the -lfoo feature and vpath";
+$details = "";
+
+open(MAKEFILE,"> $makefile");
+
+# The Contents of the MAKEFILE ...
+
+print MAKEFILE "vpath %.a a1\n";
+print MAKEFILE "vpath %.so b1\n";
+print MAKEFILE "vpath % a2 b2\n";
+print MAKEFILE "vpath % b3\n";
+print MAKEFILE "all: -l1 -l2 -l3; \@echo \$^\n";
+
+# END of Contents of MAKEFILE
+
+close(MAKEFILE);
+
+mkdir("a1", 0777);
+mkdir("b1", 0777);
+mkdir("a2", 0777);
+mkdir("b2", 0777);
+mkdir("b3", 0777);
+
+@files_to_touch = ("a1${pathsep}lib1.a",
+                  "b1${pathsep}lib1.so",
+                  "a2${pathsep}lib2.a",
+                  "b2${pathsep}lib2.so",
+                  "lib3.a",
+                  "b3${pathsep}lib3.so");
+
+&touch(@files_to_touch);
+
+&run_make_with_options($makefile,"",&get_logfile);
+
+# Create the answer to what should be produced by this Makefile
+$answer = "a1${pathsep}lib1.a a2${pathsep}lib2.a lib3.a\n";
+
+if (&compare_output($answer,&get_logfile(1)))
+{
+  unlink @files_to_touch;
+  rmdir("a1");
+  rmdir("b1");
+  rmdir("a2");
+  rmdir("b2");
+  rmdir("b3");
+}
+
+1;
index 6f02a7a..90513bd 100644 (file)
@@ -163,7 +163,7 @@ world');
 # See Savannah bug # 12124.
 
 run_make_test('deps: ; $(eval deps: foo)', '',
-              '#MAKEFILE#:1: *** prerequisites cannot be defined in command scripts.  Stop.',
+              '#MAKEFILE#:1: *** prerequisites cannot be defined in recipes.  Stop.',
               512);
 
 1;
index ecea4cf..723cd0e 100644 (file)
@@ -11,6 +11,15 @@ all: ; @echo $(shell echo hi)
 ','','hi');
 
 
+# Test unescaped comment characters in shells.  Savannah bug #20513
+if ($all_tests) {
+    run_make_test(q!
+FOO := $(shell echo '#')
+foo: ; echo '$(FOO)'
+!,
+              '', "#\n");
+}
+
 # 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.
index d61384e..2841f5d 100644 (file)
@@ -81,14 +81,11 @@ if ((-f "example.1")||(-f "example.two")||(-f "example.3")||(-f "example.for"))
 
 &compare_output($answer,&get_logfile(1));
 
+# TEST #4: Verify that failed wildcards don't return the pattern
 
-1;
-
-
-
-
-
-
-
-
+run_make_test(q!
+all: ; @echo $(wildcard xz--y*.7)
+!,
+              '', "\n");
 
+1;
index 688942e..18606c3 100644 (file)
@@ -3,7 +3,7 @@
 $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);
+  run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256);
 }
 
 1;
index ccccf88..6d42a16 100644 (file)
@@ -28,20 +28,6 @@ cc foo.o -o foo');
 unlink('foo.c');
 
 
-# Test other implicit rule searching
-
-&touch('bar');
-run_make_test('
-test.foo:
-%.foo : baz ; @echo done $<
-%.foo : bar ; @echo done $<
-fox: baz
-',
-              '',
-              'done bar');
-unlink('bar');
-
-
 # Test implicit rules with '$' in the name (see se_implicit)
 
 run_make_test(q!
@@ -80,4 +66,17 @@ 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 odd whitespace at the beginning of a line
+
+run_make_test("
+all:
+   \f
+
+    \\
+ \f  \\
+    \013 \\
+all: ; \@echo hi
+",
+              '', "hi\n");
+
 1;
index 864a01f..e36842e 100644 (file)
@@ -70,4 +70,16 @@ all');
 
 rmfiles('foo.x', 'blah.x');
 
+# Test that $? is set properly with -B; all prerequisites will be newer!
+
+utouch(-10, 'x.b');
+touch('x.a');
+
+run_make_test(q!
+x.a: x.b ; @echo $?
+!,
+              '-B', "x.b\n");
+
+unlink(qw(x.a x.b));
+
 1;
index 58216f9..0b0f196 100644 (file)
@@ -45,7 +45,8 @@ close(MAKEFILE);
 $mkoptions = "-l 0.0001";
 $mkoptions .= " -j 4" if ($parallel_jobs);
 
-&run_make_with_options($makefile, $mkoptions, &get_logfile);
+# We have to wait longer than the default (5s).
+&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8);
 
 $slurp = &read_file_into_string (&get_logfile(1));
 if ($slurp !~ /cannot enforce load limit/) {
diff --git a/tests/scripts/options/eval b/tests/scripts/options/eval
new file mode 100644 (file)
index 0000000..06a035c
--- /dev/null
@@ -0,0 +1,19 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the --eval option.";
+
+$details = "Verify that --eval options take effect,
+and are passed to sub-makes.";
+
+# Verify that --eval is evaluated first
+run_make_test(q!
+BAR = bar
+all: ; @echo all
+recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!,
+              '--eval=\$\(info\ eval\) FOO=\$\(BAR\)', "eval\nall");
+
+# Make sure that --eval is handled correctly during recursion
+run_make_test(undef, '--no-print-directory --eval=\$\(info\ eval\) recurse',
+              "eval\neval\nall\nrecurse");
+
+1;
diff --git a/tests/scripts/targets/ONESHELL b/tests/scripts/targets/ONESHELL
new file mode 100644 (file)
index 0000000..997423f
--- /dev/null
@@ -0,0 +1,69 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the behaviour of the .ONESHELL target.";
+
+$details = "";
+
+
+# Simple
+
+run_make_test(q!
+.ONESHELL:
+all:
+       a=$$$$
+       [ 0"$$a" -eq "$$$$" ] || echo fail
+!,
+              '', 'a=$$
+[ 0"$a" -eq "$$" ] || echo fail
+');
+
+# Again, but this time with inner prefix chars
+
+run_make_test(q!
+.ONESHELL:
+all:
+       a=$$$$
+       @-+    [ 0"$$a" -eq "$$$$" ] || echo fail
+!,
+              '', 'a=$$
+[ 0"$a" -eq "$$" ] || echo fail
+');
+
+# This time with outer prefix chars
+
+run_make_test(q!
+.ONESHELL:
+all:
+          @a=$$$$
+           [ 0"$$a" -eq "$$$$" ] || echo fail
+!,
+              '', '');
+
+
+# This time with outer and inner prefix chars
+
+run_make_test(q!
+.ONESHELL:
+all:
+          @a=$$$$
+           -@     +[ 0"$$a" -eq "$$$$" ] || echo fail
+!,
+              '', '');
+
+
+# Now try using a different interpreter
+
+run_make_test(q!
+.RECIPEPREFIX = >
+.ONESHELL:
+SHELL = #PERL#
+.SHELLFLAGS = -e
+all:
+>         @$$a=5
+>          +7;
+>      @y=qw(a b c);
+>print "a = $$a, y = (@y)\n";
+!,
+              '', "a = 12, y = (a b c)\n");
+
+1;
diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX
new file mode 100644 (file)
index 0000000..9c30e18
--- /dev/null
@@ -0,0 +1,33 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the behaviour of the .PHONY target.";
+
+$details = "";
+
+
+# Ensure turning on .POSIX enables the -e flag for the shell
+# We can't assume the exit value of "false" because on different systems it's
+# different.
+
+my $script = 'false; true';
+my $flags = '-ec';
+my $out = `/bin/sh $flags '$script' 2>&1`;
+my $err = $? >> 8;
+run_make_test(qq!
+.POSIX:
+all: ; \@$script
+!,
+              '', "#MAKE#: *** [all] Error $err\n", 512);
+
+# User settings must override .POSIX
+$flags = '-xc';
+$out = `/bin/sh $flags '$script' 2>&1`;
+run_make_test(qq!
+.SHELLFLAGS = $flags
+.POSIX:
+all: ; \@$script
+!,
+              '', $out);
+
+# This tells the test driver that the perl test script executed properly.
+1;
index cf580b5..c954ee9 100644 (file)
@@ -121,5 +121,69 @@ all: version2',
 
 unlink('version2');
 
+# TEST #9 -- Savannah bug #15919
+# The original fix for this bug caused a new bug, shown here.
+
+touch(qw(1.a 2.a));
+
+run_make_test('
+%.c : %.b ; cp $< $@
+%.b : %.a ; cp $< $@
+all : 1.c 2.c', '-rR -j',
+'cp 1.a 1.b
+cp 2.a 2.b
+cp 1.b 1.c
+cp 2.b 2.c
+rm 1.b 2.b');
+
+unlink(qw(1.a 2.a 1.c 2.c));
+
+# TEST #10 -- Savannah bug #15919
+touch('test.0');
+run_make_test('
+.SECONDARY : test.1 test.2 test.3
+
+test : test.4
+
+%.4 : %.int %.3 ; touch $@
+
+%.int : %.3 %.2 ; touch $@
+
+%.3 : | %.2 ; touch $@
+
+%.2 : %.1 ; touch $@
+
+%.1 : %.0 ; touch $@', '-rR -j 2',
+'touch test.1
+touch test.2
+touch test.3
+touch test.int
+touch test.4
+rm test.int');
+
+# After a touch of test.0 it should give the same output, except we don't need
+# to rebuild test.3 (order-only)
+sleep(1);
+touch('test.0');
+run_make_test(undef, '-rR -j 2',
+'touch test.1
+touch test.2
+touch test.int
+touch test.4
+rm test.int');
+
+# With both test.0 and test.3 updated it should still build everything except
+# test.3
+sleep(1);
+touch('test.0', 'test.3');
+run_make_test(undef, '-rR -j 2',
+'touch test.1
+touch test.2
+touch test.int
+touch test.4
+rm test.int');
+
+unlink(qw(test.0 test.1 test.2 test.3 test.4));
+
 # This tells the test driver that the perl test script executed properly.
 1;
index 897bd4a..1c06506 100644 (file)
@@ -73,6 +73,15 @@ $(call make-rule)
 '',
 'foo');
 
+# TEST #5: .DEFAULT_GOAL containing just whitespace (Savannah bug #25697)
+
+run_make_test('
+N =
+.DEFAULT_GOAL = $N  $N  # Just whitespace
+
+foo: ; @echo "boo"
+',
+              '', "#MAKE#: *** No targets.  Stop.\n", 512);
 
 # This tells the test driver that the perl test script executed properly.
 1;
diff --git a/tests/scripts/variables/LIBPATTERNS b/tests/scripts/variables/LIBPATTERNS
new file mode 100644 (file)
index 0000000..826f2fa
--- /dev/null
@@ -0,0 +1,38 @@
+#                                                                    -*-perl-*-
+
+$description = "Test .LIBPATTERNS special variable.";
+
+$details = "";
+
+# TEST 0: basics
+
+touch('mtest_foo.a');
+
+run_make_test('
+.LIBPATTERNS = mtest_%.a
+all: -lfoo ; @echo "build $@ from $<"
+',
+              '', "build all from mtest_foo.a\n");
+
+# TEST 1: Handle elements that are not patterns.
+
+run_make_test('
+.LIBPATTERNS = mtest_foo.a mtest_%.a
+all: -lfoo ; @echo "build $@ from $<"
+',
+              '', "#MAKE#: .LIBPATTERNS element `mtest_foo.a' is not a pattern
+build all from mtest_foo.a\n");
+
+# TEST 2: target-specific override
+
+# Uncomment this when we add support, see Savannah bug #25703
+# run_make_test('
+# .LIBPATTERNS = mbad_%.a
+# all: .LIBPATTERNS += mtest_%.a
+# all: -lfoo ; @echo "build $@ from $<"
+# ',
+#               '', "build all from mtest_foo.a\n");
+
+unlink('mtest_foo.a');
+
+1;
index 079c57e..d1081da 100644 (file)
@@ -1,35 +1,24 @@
 #                                                                   -*-perl-*-
 
-$description = "The following test creates a makefile to test MAKE \n"
-              ."(very generic)";
+$description = "Test proper behavior of the MAKE variable";
 
 $details = "DETAILS";
 
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "TMP  := \$(MAKE)\n";
-print MAKEFILE "MAKE := \$(subst X=\$(X),,\$(MAKE))\n\n";
-print MAKEFILE "all:\n";
-print MAKEFILE "\t\@echo \$(TMP)\n";
-print MAKEFILE "\t\$(MAKE) -f $makefile foo\n\n";
-print MAKEFILE "foo:\n";
-print MAKEFILE "\t\@echo \$(MAKE)\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "$mkpath\n$mkpath -f $makefile foo\n"
-       . "${make_name}[1]: Entering directory `$pwd'\n"
-       . "$mkpath\n${make_name}[1]: Leaving directory `$pwd'\n";
-
-&run_make_with_options($makefile,"",&get_logfile,0);
-
-&rmfiles("foo");
-# COMPARE RESULTS
-&compare_output($answer,&get_logfile(1));
+run_make_test(q!
+TMP  := $(MAKE)
+MAKE := $(subst X=$(X),,$(MAKE))
+all:
+       @echo $(TMP)
+       $(MAKE) -f #MAKEFILE# foo
+
+foo:
+       @echo $(MAKE)
+!,
+              '',
+              "#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n"
+              . "#MAKE#[1]: Entering directory `#PWD#'\n"
+              . "#MAKEPATH#\n#MAKE#[1]: Leaving directory `#PWD#'\n");
+
+rmfiles("foo");
 
 1;
index 3be284b..b23da8e 100644 (file)
@@ -31,4 +31,23 @@ close(MAKEFILE);
 $answer = "DEFAULT RULE: M2=m2 M3=m3\n";
 &compare_output($answer,&get_logfile(1));
 
+# TEST 2: Verify that included makefiles don't set the default goal.
+# See Savannah bug #13401.
+
+create_file('xx-inc.mk', '
+include_goal: ; @echo $@
+include xx-ind.mk
+');
+
+create_file('xx-ind.mk', '
+indirect_goal: ; @echo $@
+');
+
+run_make_test(q!
+top: ; @echo $@
+!,
+              'MAKEFILES=xx-inc.mk', "top\n");
+
+unlink(qw(xx-inc.mk xx-ind.mk));
+
 1;
diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS
new file mode 100644 (file)
index 0000000..0b567e8
--- /dev/null
@@ -0,0 +1,43 @@
+#                                                                   -*-perl-*-
+
+$description = "Test proper behavior of MAKEFLAGS";
+
+$details = "DETAILS";
+
+# Normal flags aren't prefixed with "-"
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+              '-e -r -R', 'Rre');
+
+# Long arguments mean everything is prefixed with "-"
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+              '--no-print-directory -e -r -R', '--no-print-directory -Rre');
+
+
+if ($all_tests) {
+    # Recursive invocations of make should accumulate MAKEFLAGS values.
+    # Savannah bug #2216
+    run_make_test(q!
+MSG = Fails
+all:
+       @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+       @MSG=Works $(MAKE) -e -f #MAKEFILE# jump
+jump:
+       @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+       @$(MAKE) -f #MAKEFILE# print
+print:
+       @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+       @echo $(MSG)
+.PHONY: all jump print
+!,
+                  '--no-print-directory',
+                  'all: MAKEFLAGS= --no-print-directory
+jump: MAKEFLAGS= --no-print-directory -e
+print: MAKEFLAGS= --no-print-directory -e
+Works');
+}
+
+1;
index 67593e5..7b7e7fe 100644 (file)
@@ -49,8 +49,38 @@ all:;@echo "$(SHELL) $$SHELL"
 
 $extraENV{SHELL} = $mshell;
 
-run_make_test("all: export SHELL := /./$mshell\n".'
-all:;@echo "$(SHELL) $$SHELL"
-', '', "/./$mshell $mshell");
+run_make_test("
+SHELL := /././$mshell
+one: two
+two: export SHELL := /./$mshell\n".'
+one two:;@echo "$@: $(SHELL) $$SHELL"
+', '', "two: /./$mshell /./$mshell\none: /././$mshell $mshell\n");
+
+# Test .SHELLFLAGS
+
+# We don't know the output here: on Solaris for example, every line printed
+# by the shell in -x mode has a trailing space (!!)
+my $script = 'true; true';
+my $flags = '-xc';
+my $out = `/bin/sh $flags '$script' 2>&1`;
+
+run_make_test(qq!
+.SHELLFLAGS = $flags
+all: ; \@$script
+!,
+              '', $out);
+
+# We can't just use "false" because on different systems it provides a
+# different exit code--once again Solaris: false exits with 255 not 1
+$script = 'true; false; true';
+$flags = '-xec';
+$out = `/bin/sh $flags '$script' 2>&1`;
+my $err = $? >> 8;
+
+run_make_test(qq!
+.SHELLFLAGS = $flags
+all: ; \@$script
+!,
+              '', "$out#MAKE#: *** [all] Error $err\n", 512);
 
 1;
index 7237fe2..33c482d 100644 (file)
@@ -95,17 +95,28 @@ mbr.src: ; @:',
 # Make sure that nonexistent prerequisites are listed in $?, since they are
 # considered reasons for the target to be rebuilt.
 #
-# This was undone due to Savannah bug #16002.  We'll re-do it in the next
-# release.  See Savannah bug #16051.
+# See also Savannah bugs #16002 and #16051.
 
-#touch('foo');
-#
-#run_make_test('
-#foo: bar ; @echo "\$$? = $?"
-#bar: ;',
-#              '',
-#              '$? = bar');
-#
-#unlink('foo');
+touch('foo');
+
+run_make_test('
+foo: bar ; @echo "\$$? = $?"
+bar: ;',
+              '',
+              '$? = bar');
+
+unlink('foo');
+
+# TEST #4: ensure prereq ordering is correct when the commmand target has none
+# See Savannah bug #21198
+
+run_make_test('
+all : A B
+all : ; @echo $@ -- $^ -- $<
+all : C D
+all : E F
+A B C D E F G H : ; @:
+',
+              '', "all -- A B C D E F -- A\n");
 
 1;
diff --git a/tests/scripts/variables/define b/tests/scripts/variables/define
new file mode 100644 (file)
index 0000000..f91519e
--- /dev/null
@@ -0,0 +1,234 @@
+#                                                                    -*-perl-*-
+
+$description = "Test define/endef variable assignments.";
+
+$details = "";
+
+# TEST 0: old-style basic define/endef
+
+run_make_test('
+define multi
+@echo hi
+echo there
+endef
+
+all: ; $(multi)
+',
+              '', "hi\necho there\nthere\n");
+
+# TEST 1: Various new-style define/endef
+
+run_make_test('
+FOO = foo
+
+define multi =
+echo hi
+@echo $(FOO)
+endef # this is the end
+
+define simple :=
+@echo $(FOO)
+endef
+
+append = @echo a
+
+define append +=
+
+@echo b
+endef
+
+define cond ?= # this is a conditional
+@echo first
+endef
+
+define cond ?=
+@echo second
+endef
+
+FOO = there
+
+all: ; $(multi)
+       $(simple)
+       $(append)
+       $(cond)
+',
+              '', "echo hi\nhi\nthere\nfoo\na\nb\nfirst\n");
+
+# TEST 2: define in true section of conditional (containing conditional)
+
+run_make_test('
+FOO = foo
+NAME = def
+def =
+ifdef BOGUS
+ define  $(subst e,e,$(NAME))     =
+  ifeq (1,1)
+   FOO = bar
+  endif
+ endef
+endif
+
+$(eval $(def))
+all: ; @echo $(FOO)
+',
+              'BOGUS=1', "bar\n");
+
+# TEST 3: define in false section of conditional (containing conditional)
+
+run_make_test(undef, '', "foo\n");
+
+# TEST 4: nested define (supported?)
+
+run_make_test('
+define outer
+ define inner
+  A = B
+ endef
+endef
+
+$(eval $(outer))
+
+outer: ; @echo $(inner)
+',
+              '', "A = B\n");
+
+# TEST 5: NEGATIVE: Missing variable name
+
+run_make_test('
+NAME =
+define $(NAME)  =
+ouch
+endef
+all: ; @echo ouch
+',
+              '', "#MAKEFILE#:3: *** empty variable name.  Stop.\n", 512);
+
+# TEST 6: NEGATIVE: extra text after define
+
+run_make_test('
+NAME =
+define NAME = $(NAME)
+ouch
+endef
+all: ; @echo ok
+',
+              '', "#MAKEFILE#:3: extraneous text after `define' directive\nok\n");
+
+# TEST 7: NEGATIVE: extra text after endef
+
+run_make_test('
+NAME =
+define NAME =
+ouch
+endef $(NAME)
+all: ; @echo ok
+',
+              '', "#MAKEFILE#:5: extraneous text after `endef' directive\nok\n");
+
+# TEST 8: NEGATIVE: missing endef
+
+run_make_test('
+NAME =
+all: ; @echo ok
+define NAME =
+ouch
+endef$(NAME)
+',
+              '', "#MAKEFILE#:4: *** missing `endef', unterminated `define'.  Stop.\n", 512);
+
+# -------------------------
+# Make sure that prefix characters apply properly to define/endef values.
+#
+# There's a bit of oddness here if you try to use a variable to hold the
+# prefix character for a define.  Even though something like this:
+#
+#       define foo
+#       echo bar
+#       endef
+#
+#       all: ; $(V)$(foo)
+#
+# (where V=@) can be seen by the user to be obviously different than this:
+#
+#       define foo
+#       $(V)echo bar
+#       endef
+#
+#       all: ; $(foo)
+#
+# and the user thinks it should behave the same as when the "@" is literal
+# instead of in a variable, that can't happen because by the time make
+# expands the variables for the command line and sees it begins with a "@" it
+# can't know anymore whether the prefix character came before the variable
+# reference or was included in the first line of the variable reference.
+
+# TEST #5
+# -------
+
+run_make_test('
+define FOO
+$(V1)echo hello
+$(V2)echo world
+endef
+all: ; @$(FOO)
+', '', 'hello
+world');
+
+# TEST #6
+# -------
+
+run_make_test(undef, 'V1=@ V2=@', 'hello
+world');
+
+# TEST #7
+# -------
+
+run_make_test('
+define FOO
+$(V1)echo hello
+$(V2)echo world
+endef
+all: ; $(FOO)
+', 'V1=@', 'hello
+echo world
+world');
+
+# TEST #8
+# -------
+
+run_make_test(undef, 'V2=@', 'echo hello
+hello
+world');
+
+# TEST #9
+# -------
+
+run_make_test(undef, 'V1=@ V2=@', 'hello
+world');
+
+# TEST #10
+# -------
+# Test the basics; a "@" internally to the variable applies to only one line.
+# A "@" before the variable applies to the entire variable.
+
+run_make_test('
+define FOO
+@echo hello
+echo world
+endef
+define BAR
+echo hello
+echo world
+endef
+
+all: foo bar
+foo: ; $(FOO)
+bar: ; @$(BAR)
+', '', 'hello
+echo world
+world
+hello
+world
+');
+
+1;
index 3ceac5e..92feed6 100644 (file)
@@ -4,180 +4,73 @@ $description = "Test various flavors of make variable setting.";
 
 $details = "";
 
-open(MAKEFILE, "> $makefile");
+# TEST 0: Recursive
 
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE <<'EOF';
+run_make_test('
+ugh = Goodbye
 foo = $(bar)
 bar = ${ugh}
 ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Hello\n");
 
-all: multi ; @echo $(foo)
-
-multi: ; $(multi)
-
-x := foo
-y := $(x) bar
-x := later
-
-nullstring :=
-space := $(nullstring) $(nullstring)
-
-next: ; @echo $x$(space)$y
-
-define multi
-@echo hi
-echo there
-endef
-
-ifdef BOGUS
-define
-@echo error
-endef
-endif
-
-define outer
- define inner
-  A = B
- endef
-endef
-
-$(eval $(outer))
-
-outer: ; @echo $(inner)
-
-EOF
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-# TEST #1
-# -------
-
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "hi\necho there\nthere\nHello\n";
-&compare_output($answer, &get_logfile(1));
-
-# TEST #2
-# -------
-
-&run_make_with_options($makefile, "next", &get_logfile);
-$answer = "later foo bar\n";
-&compare_output($answer, &get_logfile(1));
-
-# TEST #3
-# -------
-
-&run_make_with_options($makefile, "BOGUS=true", &get_logfile, 512);
-$answer = "$makefile:24: *** empty variable name.  Stop.\n";
-&compare_output($answer, &get_logfile(1));
-
-# TEST #4
-# -------
-
-&run_make_with_options($makefile, "outer", &get_logfile);
-$answer = "A = B\n";
-&compare_output($answer, &get_logfile(1));
-
-# Clean up from "old style" testing.  If all the above tests are converted to
-# run_make_test() syntax than this line can be removed.
-$makefile = undef;
-
-# -------------------------
-# Make sure that prefix characters apply properly to define/endef values.
-#
-# There's a bit of oddness here if you try to use a variable to hold the
-# prefix character for a define.  Even though something like this:
-#
-#       define foo
-#       echo bar
-#       endef
-#
-#       all: ; $(V)$(foo)
-#
-# (where V=@) can be seen by the user to be obviously different than this:
-#
-#       define foo
-#       $(V)echo bar
-#       endef
-#
-#       all: ; $(foo)
-#
-# and the user thinks it should behave the same as when the "@" is literal
-# instead of in a variable, that can't happen because by the time make
-# expands the variables for the command line and sees it begins with a "@" it
-# can't know anymore whether the prefix character came before the variable
-# reference or was included in the first line of the variable reference.
-
-# TEST #5
-# -------
+# TEST 1: Simple
 
 run_make_test('
-define FOO
-$(V1)echo hello
-$(V2)echo world
-endef
-all: ; @$(FOO)
-', '', 'hello
-world');
-
-# TEST #6
-# -------
-
-run_make_test(undef, 'V1=@ V2=@', 'hello
-world');
+bar = Goodbye
+foo := $(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Goodbye\n");
 
-# TEST #7
-# -------
+# TEST 2: Append to recursive
 
 run_make_test('
-define FOO
-$(V1)echo hello
-$(V2)echo world
-endef
-all: ; $(FOO)
-', 'V1=@', 'hello
-echo world
-world');
+foo = Hello
+ugh = Goodbye
+foo += $(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Hello Hello\n");
 
-# TEST #8
-# -------
+# TEST 3: Append to simple
 
-run_make_test(undef, 'V2=@', 'echo hello
-hello
-world');
+run_make_test('
+foo := Hello
+ugh = Goodbye
+bar = ${ugh}
+foo += $(bar)
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Hello Goodbye\n");
 
-# TEST #9
-# -------
+# TEST 4: Conditional pre-set
 
-run_make_test(undef, 'V1=@ V2=@', 'hello
-world');
+run_make_test('
+foo = Hello
+ugh = Goodbye
+bar = ${ugh}
+foo ?= $(bar)
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Hello\n");
 
-# TEST #10
-# -------
-# Test the basics; a "@" internally to the variable applies to only one line.
-# A "@" before the variable applies to the entire variable.
+# TEST 5: Conditional unset
 
 run_make_test('
-define FOO
-@echo hello
-echo world
-endef
-define BAR
-echo hello
-echo world
-endef
-
-all: foo bar
-foo: ; $(FOO)
-bar: ; @$(BAR)
-', '', 'hello
-echo world
-world
-hello
-world
-');
+ugh = Goodbye
+bar = ${ugh}
+foo ?= $(bar)
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Hello\n");
 
 1;
diff --git a/tests/scripts/variables/private b/tests/scripts/variables/private
new file mode 100644 (file)
index 0000000..b4baf5f
--- /dev/null
@@ -0,0 +1,78 @@
+#                                                                    -*-perl-*-
+
+$description = "Test 'private' variables.";
+
+$details = "";
+
+# 1: Simple verification that private variables are not inherited
+&run_make_test('
+a:
+F = g
+a: F = a
+b: private F = b
+
+a b c: ; @echo $@: F=$(F)
+a: b
+b: c
+',
+              '', "c: F=a\nb: F=b\na: F=a\n");
+
+# 2: Again, but this time we start with "b" so "a"'s variable is not in scope
+&run_make_test(undef, 'b', "c: F=g\nb: F=b\n");
+
+# 3: Verification with pattern-specific variables
+&run_make_test('
+t.a:
+
+F1 = g
+F2 = g
+%.a: private F1 = a
+%.a: F2 = a
+
+t.a t.b: ; @echo $@: F1=$(F1) / F2=$(F2)
+t.a: t.b
+',
+               '', "t.b: F1=g / F2=a\nt.a: F1=a / F2=a\n");
+
+# 4: Test private global variables
+&run_make_test('
+a:
+private F = g
+G := $(F)
+a:
+b: F = b
+
+a b: ; @echo $@: F=$(F) / G=$(G)
+a: b
+',
+               '', "b: F=b / G=g\na: F= / G=g\n");
+
+# 5: Multiple conditions on the same variable.  Test export.
+delete $ENV{'_X'};
+&run_make_test('
+_X = x
+a: export override private _X = a
+a: ; @echo _X=$(_X) / _X=$$_X
+',
+               '', "_X=a / _X=a");
+
+# 6: Test override.
+&run_make_test(undef, '_X=c', "_X=a / _X=a\n");
+
+# 7: Ensure keywords still work as targets
+&run_make_test('
+a: export override private foo bar
+foo bar export override private: ; @echo $@
+',
+               '', "export\noverride\nprivate\nfoo\nbar\n");
+
+# 8: Ensure keywords still work as variables
+&run_make_test('
+private = g
+a: private = a
+a: b
+a b: ; @echo $@=$(private)
+',
+               '', "b=a\na=a\n");
+
+1;
index 77b355c..a1e15c2 100644 (file)
@@ -50,5 +50,68 @@ all:
 # $answer = "X1 =\nX2 = all\nLAST = all foo\n";
 # &compare_output($answer, &get_logfile(1));
 
+# Test the .RECIPEPREFIX variable
+&run_make_test('
+define foo
+: foo-one \
+foo-two
+: foo-three
+       : foo-four
+endef
+
+orig: ; : orig-one
+       : orig-two \
+orig-three \
+       orig-four \
+               orig-five \\\\
+       : orig-six
+       $(foo)
+
+.RECIPEPREFIX = >
+test: ; : test-one
+>: test-two \
+test-three \
+>test-four \
+>      test-five \\\\
+>: test-six
+>$(foo)
+
+.RECIPEPREFIX =
+reset: ; : reset-one
+       : reset-two \
+reset-three \
+       reset-four \
+               reset-five \\\\
+       : reset-six
+       $(foo)
+',
+               'orig test reset',
+               ': orig-one
+: orig-two \
+orig-three \
+orig-four \
+       orig-five \\\\
+: orig-six
+: foo-one foo-two
+: foo-three
+: foo-four
+: test-one
+: test-two \
+test-three \
+test-four \
+       test-five \\\\
+: test-six
+: foo-one foo-two
+: foo-three
+: foo-four
+: reset-one
+: reset-two \
+reset-three \
+reset-four \
+       reset-five \\\\
+: reset-six
+: foo-one foo-two
+: foo-three
+: foo-four');
 
 1;
diff --git a/tests/scripts/variables/undefine b/tests/scripts/variables/undefine
new file mode 100644 (file)
index 0000000..38707b8
--- /dev/null
@@ -0,0 +1,73 @@
+#                                                                    -*-perl-*-
+
+$description = "Test variable undefine.";
+
+$details = "";
+
+# TEST 0: basic undefine functionality
+
+run_make_test('
+a = a
+b := b
+define c
+c
+endef
+
+$(info $(flavor a) $(flavor b) $(flavor c))
+
+n := b
+
+undefine a
+undefine $n
+undefine c
+
+$(info $(flavor a) $(flavor b) $(flavor c))
+
+
+all: ;@:
+',
+'', "recursive simple recursive\nundefined undefined undefined");
+
+
+# TEST 1: override
+
+run_make_test('
+undefine a
+override undefine b
+
+$(info $(flavor a) $(flavor b))
+
+
+all: ;@:
+',
+'a=a b=b', "recursive undefined");
+
+1;
+
+# TEST 2: undefine in eval (make sure we undefine from the global var set)
+
+run_make_test('
+define undef
+$(eval undefine $$1)
+endef
+
+a := a
+$(call undef,a)
+$(info $(flavor a))
+
+
+all: ;@:
+',
+'', "undefined");
+
+
+# TEST 3: Missing variable name
+
+run_make_test('
+a =
+undefine $a
+all: ;@echo ouch
+',
+'', "#MAKEFILE#:3: *** empty variable name.  Stop.\n", 512);
+
+1;
index a13ee1c..dec869d 100644 (file)
@@ -6,20 +6,22 @@
 # Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize.
 #
 # Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 # Test driver routines used by a number of test suites, including
@@ -28,7 +30,7 @@
 # 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.19 2006/03/10 02:20:45 psmith Exp $
+# $Id: test_driver.pl,v 1.30 2010/07/28 05:39:50 psmith Exp $
 
 
 # The number of test categories we've run
@@ -49,6 +51,12 @@ $tests_passed = 0;
 $test_passed = 1;
 
 
+# Timeout in seconds.  If the test takes longer than this we'll fail it.
+$test_timeout = 5;
+
+# Path to Perl
+$perl_name = $^X;
+
 # %makeENV is the cleaned-out environment.
 %makeENV = ();
 
@@ -78,9 +86,9 @@ sub resetENV
 sub toplevel
 {
   # Pull in benign variables from the user's environment
-  #
+
   foreach (# UNIX-specific things
-           'TZ', 'LANG', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
+           'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
            # Purify things
            'PURIFYOPTIONS',
            # Windows NT-specific stuff
@@ -92,6 +100,10 @@ sub toplevel
     $makeENV{$_} = $ENV{$_} if $ENV{$_};
   }
 
+  # Make sure our compares are not foiled by locale differences
+
+  $makeENV{LC_ALL} = 'C';
+
   # Replace the environment with the new one
   #
   %origENV = %ENV;
@@ -226,9 +238,10 @@ sub toplevel
 sub get_osname
 {
   # Set up an initial value.  In perl5 we can do it the easy way.
-  #
   $osname = defined($^O) ? $^O : '';
 
+  # Find a path to Perl
+
   # See if the filesystem supports long file names with multiple
   # dots.  DOS doesn't.
   $short_filenames = 0;
@@ -263,14 +276,14 @@ sub get_osname
     eval "chop (\$osname = `sh -c 'uname -nmsr 2>&1'`)";
     if ($osname =~ /not found/i)
     {
-       $osname = "(something unixy with no uname)";
+       $osname = "(something posixy with no uname)";
     }
     elsif ($@ ne "" || $?)
     {
         eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)";
         if ($@ ne "" || $?)
         {
-           $osname = "(something unixy)";
+           $osname = "(something posixy)";
        }
     }
     $vos = 0;
@@ -426,16 +439,19 @@ sub run_each_test
       $logext = 'l';
       $diffext = 'd';
       $baseext = 'b';
+      $runext = 'r';
       $extext = '';
     } else {
       $logext = 'log';
       $diffext = 'diff';
       $baseext = 'base';
+      $runext = 'run';
       $extext = '.';
     }
     $log_filename = "$testpath.$logext";
     $diff_filename = "$testpath.$diffext";
     $base_filename = "$testpath.$baseext";
+    $run_filename = "$testpath.$runext";
     $tmp_filename = "$testpath.$tmpfilesuffix";
 
     &setup_for_test;          # suite-defined
@@ -449,6 +465,7 @@ sub run_each_test
     # Run the actual test!
     $tests_run = 0;
     $tests_passed = 0;
+
     $code = do $perl_testname;
 
     $total_tests_run += $tests_run;
@@ -543,12 +560,10 @@ sub print_standard_usage
   local($plname,@moreusage) = @_;
   local($line);
 
-  print "Usage:  perl $plname [testname] [-verbose] [-detail] [-keep]\n";
-  print "                               [-profile] [-usage] [-help] "
-      . "[-debug]\n";
-  foreach $line (@moreusage)
-  {
-    print "                               $line\n";
+  print "usage:\t$plname [testname] [-verbose] [-detail] [-keep]\n";
+  print "\t\t\t[-profile] [-usage] [-help] [-debug]\n";
+  foreach (@moreusage) {
+    print "\t\t\t$_\n";
   }
 }
 
@@ -654,15 +669,23 @@ sub compare_output
     $answer_matched = 1;
   } else {
     # See if it is a slash or CRLF problem
-    local ($answer_mod) = $answer;
+    local ($answer_mod, $slurp_mod) = ($answer, $slurp);
 
     $answer_mod =~ tr,\\,/,;
     $answer_mod =~ s,\r\n,\n,gs;
 
-    $slurp =~ tr,\\,/,;
-    $slurp =~ s,\r\n,\n,gs;
+    $slurp_mod =~ tr,\\,/,;
+    $slurp_mod =~ s,\r\n,\n,gs;
+
+    $answer_matched = ($slurp_mod eq $answer_mod);
 
-    $answer_matched = ($slurp eq $answer_mod);
+    # If it still doesn't match, see if the answer might be a regex.
+    if (!$answer_matched && $answer =~ m,^/(.+)/$,) {
+      $answer_matched = ($slurp =~ /$1/);
+      if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) {
+          $answer_matched = ($slurp_mod =~ /$1/);
+      }
+    }
   }
 
   if ($answer_matched && $test_passed)
@@ -676,6 +699,7 @@ sub compare_output
     print "DIFFERENT OUTPUT\n" if $debug;
 
     &create_file (&get_basefile, $answer);
+    &create_file (&get_runfile, $command_string);
 
     print "\nCreating Difference File ...\n" if $debug;
 
@@ -683,6 +707,8 @@ sub compare_output
 
     local($command) = "diff -c " . &get_basefile . " " . $logfile;
     &run_command_with_output(&get_difffile,$command);
+  } else {
+      &rmfiles ();
   }
 
   $suite_passed = 0;
@@ -763,21 +789,43 @@ sub detach_default_output
          || &error ("ddo: $! closing SAVEDOSerr\n", 1);
 }
 
-# run one command (passed as a list of arg 0 - n), returning 0 on success
-# and nonzero on failure.
-
-sub run_command
+# This runs a command without any debugging info.
+sub _run_command
 {
-  local ($code);
+  my $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();
 
+  eval {
+      local $SIG{ALRM} = sub { die "timeout\n"; };
+      alarm $test_timeout;
+      $code = system(@_);
+      alarm 0;
+  };
+  if ($@) {
+      # The eval failed.  If it wasn't SIGALRM then die.
+      $@ eq "timeout\n" or die;
+
+      # Timed out.  Resend the alarm to our process group to kill the children.
+      $SIG{ALRM} = 'IGNORE';
+      kill -14, $$;
+      $code = 14;
+  }
+
+  return $code;
+}
+
+# run one command (passed as a list of arg 0 - n), returning 0 on success
+# and nonzero on failure.
+
+sub run_command
+{
   print "\nrun_command: @_\n" if $debug;
-  $code = system @_;
-  print "run_command: \"@_\" returned $code.\n" if $debug;
+  my $code = _run_command(@_);
+  print "run_command returned $code.\n" if $debug;
 
   return $code;
 }
@@ -789,19 +837,13 @@ sub run_command
 
 sub run_command_with_output
 {
-  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();
+  my $filename = shift;
 
+  print "\nrun_command_with_output($filename,$runname): @_\n" if $debug;
   &attach_default_output ($filename);
-  $code = system @_;
+  my $code = _run_command(@_);
   &detach_default_output;
-
-  print "run_command_with_output: '@_' returned $code.\n" if $debug;
+  print "run_command_with_output returned $code.\n" if $debug;
 
   return $code;
 }
@@ -1170,6 +1212,15 @@ sub get_difffile
   return ($diff_filename . &num_suffix ($num_of_logfiles));
 }
 
+# This subroutine returns a command filename with a number appended
+# to the end corresponding to how many logfiles (and thus command files)
+# have been created in the current running test.
+
+sub get_runfile
+{
+  return ($run_filename . &num_suffix ($num_of_logfiles));
+}
+
 # just like logfile, only a generic tmp filename for use by the test.
 # they are automatically cleaned up unless -keep was used, or the test fails.
 # Pass an argument of 1 to return the same filename as the previous call.
index f23f7d1..915be20 100644 (file)
@@ -1,20 +1,20 @@
 /* Internals of variables 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 
@@ -35,43 +35,76 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 static struct pattern_var *pattern_vars;
 
-/* Pointer to last struct in the chain, so we can add onto the end.  */
+/* Pointer to the last struct in the pack of a specific size, from 1 to 255.*/
 
-static struct pattern_var *last_pattern_var;
+static struct pattern_var *last_pattern_vars[256];
 
-/* Create a new pattern-specific variable struct.  */
+/* Create a new pattern-specific variable struct. The new variable is
+   inserted into the PATTERN_VARS list in the shortest patterns first
+   order to support the shortest stem matching (the variables are
+   matched in the reverse order so the ones with the longest pattern
+   will be considered first). Variables with the same pattern length
+   are inserted in the definition order. */
 
 struct pattern_var *
-create_pattern_var (char *target, char *suffix)
+create_pattern_var (const char *target, const char *suffix)
 {
-  register struct pattern_var *p
-    = (struct pattern_var *) xmalloc (sizeof (struct pattern_var));
+  register unsigned int len = strlen (target);
+  register struct pattern_var *p = xmalloc (sizeof (struct pattern_var));
 
-  if (last_pattern_var != 0)
-    last_pattern_var->next = p;
+  if (pattern_vars != 0)
+    {
+      if (len < 256 && last_pattern_vars[len] != 0)
+        {
+          p->next = last_pattern_vars[len]->next;
+          last_pattern_vars[len]->next = p;
+        }
+      else
+        {
+          /* Find the position where we can insert this variable. */
+          register struct pattern_var **v;
+
+          for (v = &pattern_vars; ; v = &(*v)->next)
+            {
+              /* Insert at the end of the pack so that patterns with the
+                 same length appear in the order they were defined .*/
+
+              if (*v == 0 || (*v)->len > len)
+                {
+                  p->next = *v;
+                  *v = p;
+                  break;
+                }
+            }
+        }
+    }
   else
-    pattern_vars = p;
-  last_pattern_var = p;
-  p->next = 0;
+    {
+      pattern_vars = p;
+      p->next = 0;
+    }
 
   p->target = target;
-  p->len = strlen (target);
+  p->len = len;
   p->suffix = suffix + 1;
 
+  if (len < 256)
+    last_pattern_vars[len] = p;
+
   return p;
 }
 
 /* Look up a target in the pattern-specific variable list.  */
 
 static struct pattern_var *
-lookup_pattern_var (struct pattern_var *start, char *target)
+lookup_pattern_var (struct pattern_var *start, const char *target)
 {
   struct pattern_var *p;
   unsigned int targlen = strlen(target);
 
   for (p = start ? start->next : pattern_vars; p != 0; p = p->next)
     {
-      char *stem;
+      const char *stem;
       unsigned int stemlen;
 
       if (p->len > targlen)
@@ -139,7 +172,7 @@ variable_hash_cmp (const void *xv, const void *yv)
 
 static struct variable_set global_variable_set;
 static struct variable_set_list global_setlist
-  = { 0, &global_variable_set };
+  = { 0, &global_variable_set, 0 };
 struct variable_set_list *current_variable_set_list = &global_setlist;
 \f
 /* Implement variables.  */
@@ -160,7 +193,7 @@ init_hash_global_variable_set (void)
 
 struct variable *
 define_variable_in_set (const char *name, unsigned int length,
-                        char *value, enum variable_origin origin,
+                        const char *value, enum variable_origin origin,
                         int recursive, struct variable_set *set,
                         const struct floc *flocp)
 {
@@ -206,8 +239,8 @@ define_variable_in_set (const char *name, unsigned int length,
 
   /* Create a new variable definition and add it to the hash table.  */
 
-  v = (struct variable *) xmalloc (sizeof (struct variable));
-  v->name = savestring (name, length);
+  v = xmalloc (sizeof (struct variable));
+  v->name = xstrndup (name, length);
   v->length = length;
   hash_insert_at (&set->table, v, var_slot);
   v->value = xstrdup (value);
@@ -222,6 +255,7 @@ define_variable_in_set (const char *name, unsigned int length,
   v->exp_count = 0;
   v->per_target = 0;
   v->append = 0;
+  v->private_var = 0;
   v->export = v_default;
 
   v->exportable = 1;
@@ -242,6 +276,51 @@ define_variable_in_set (const char *name, unsigned int length,
   return v;
 }
 \f
+
+/* Undefine variable named NAME in SET. LENGTH is the length of NAME, which
+   does not need to be null-terminated. ORIGIN specifies the origin of the
+   variable (makefile, command line or environment). */
+
+static void
+free_variable_name_and_value (const void *item);
+
+void
+undefine_variable_in_set (const char *name, unsigned int length,
+                          enum variable_origin origin,
+                          struct variable_set *set)
+{
+  struct variable *v;
+  struct variable **var_slot;
+  struct variable var_key;
+
+  if (set == NULL)
+    set = &global_variable_set;
+
+  var_key.name = (char *) name;
+  var_key.length = length;
+  var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
+
+  if (env_overrides && origin == o_env)
+    origin = o_env_override;
+
+  v = *var_slot;
+  if (! HASH_VACANT (v))
+    {
+      if (env_overrides && v->origin == o_env)
+       /* V came from in the environment.  Since it was defined
+          before the switches were parsed, it wasn't affected by -e.  */
+       v->origin = o_env_override;
+
+      /* If the definition is from a stronger source than this one, don't
+         undefine it.  */
+      if ((int) origin >= (int) v->origin)
+       {
+          hash_delete_at (&set->table, var_slot);
+          free_variable_name_and_value (v);
+       }
+    }
+}
+
 /* If the variable passed in is "special", handle its special nature.
    Currently there are two such variables, both used for introspection:
    .VARIABLES expands to a list of all the variables defined in this instance
@@ -253,7 +332,7 @@ define_variable_in_set (const char *name, unsigned int length,
 #define EXPANSION_INCREMENT(_l)  ((((_l) / 500) + 1) * 500)
 
 static struct variable *
-handle_special_var (struct variable *var)
+lookup_special_var (struct variable *var)
 {
   static unsigned long last_var_count = 0;
 
@@ -314,7 +393,7 @@ handle_special_var (struct variable *var)
                 p = &var->value[off];
               }
 
-            bcopy (v->name, p, l);
+            memcpy (p, v->name, l);
             p += l;
             *(p++) = ' ';
           }
@@ -341,6 +420,7 @@ lookup_variable (const char *name, unsigned int length)
 {
   const struct variable_set_list *setlist;
   struct variable var_key;
+  int is_parent = 0;
 
   var_key.name = (char *) name;
   var_key.length = length;
@@ -352,8 +432,10 @@ lookup_variable (const char *name, unsigned int length)
       struct variable *v;
 
       v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
-      if (v)
-       return v->special ? handle_special_var (v) : v;
+      if (v && (!is_parent || !v->private_var))
+       return v->special ? lookup_special_var (v) : v;
+
+      is_parent |= setlist->next_is_parent;
     }
 
 #ifdef VMS
@@ -438,7 +520,7 @@ lookup_variable_in_set (const char *name, unsigned int length,
    rule, then we will use the "root" double-colon target's variable set as the
    parent of FILE's variable set.
 
-   If we're READing a makefile, don't do the pattern variable search now,
+   If we're READING a makefile, don't do the pattern variable search now,
    since the pattern variable might not have been defined yet.  */
 
 void
@@ -450,7 +532,7 @@ initialize_file_variables (struct file *file, int reading)
     {
       l = (struct variable_set_list *)
        xmalloc (sizeof (struct variable_set_list));
-      l->set = (struct variable_set *) xmalloc (sizeof (struct variable_set));
+      l->set = xmalloc (sizeof (struct variable_set));
       hash_init (&l->set->table, PERFILE_VARIABLE_BUCKETS,
                  variable_hash_1, variable_hash_2, variable_hash_cmp);
       file->variables = l;
@@ -464,6 +546,7 @@ initialize_file_variables (struct file *file, int reading)
     {
       initialize_file_variables (file->double_colon, reading);
       l->next = file->double_colon->variables;
+      l->next_is_parent = 0;
       return;
     }
 
@@ -474,6 +557,7 @@ initialize_file_variables (struct file *file, int reading)
       initialize_file_variables (file->parent, reading);
       l->next = file->parent->variables;
     }
+  l->next_is_parent = 1;
 
   /* If we're not reading makefiles and we haven't looked yet, see if
      we can find pattern variables for this target.  */
@@ -519,6 +603,7 @@ initialize_file_variables (struct file *file, int reading)
               /* Also mark it as a per-target and copy export status. */
               v->per_target = p->variable.per_target;
               v->export = p->variable.export;
+              v->private_var = p->variable.private_var;
             }
           while ((p = lookup_pattern_var (p, file->name)) != 0);
 
@@ -532,7 +617,9 @@ initialize_file_variables (struct file *file, int reading)
   if (file->pat_variables != 0)
     {
       file->pat_variables->next = l->next;
+      file->pat_variables->next_is_parent = l->next_is_parent;
       l->next = file->pat_variables;
+      l->next_is_parent = 0;
     }
 }
 \f
@@ -545,7 +632,7 @@ create_new_variable_set (void)
   register struct variable_set_list *setlist;
   register struct variable_set *set;
 
-  set = (struct variable_set *) xmalloc (sizeof (struct variable_set));
+  set = xmalloc (sizeof (struct variable_set));
   hash_init (&set->table, SMALL_SCOPE_VARIABLE_BUCKETS,
             variable_hash_1, variable_hash_2, variable_hash_cmp);
 
@@ -553,6 +640,7 @@ create_new_variable_set (void)
     xmalloc (sizeof (struct variable_set_list));
   setlist->set = set;
   setlist->next = current_variable_set_list;
+  setlist->next_is_parent = 0;
 
   return setlist;
 }
@@ -570,8 +658,8 @@ 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);
+  free (list->set);
+  free (list);
 }
 
 /* Create a new variable set and push it on the current setlist.
@@ -624,13 +712,14 @@ pop_variable_scope (void)
       set = global_setlist.set;
       global_setlist.set = setlist->set;
       global_setlist.next = setlist->next;
+      global_setlist.next_is_parent = setlist->next_is_parent;
     }
 
   /* Free the one we no longer need.  */
-  free ((char *) setlist);
+  free (setlist);
   hash_map (&set->table, free_variable_name_and_value);
   hash_free (&set->table, 1);
-  free ((char *) set);
+  free (set);
 }
 \f
 /* Merge FROM_SET into TO_SET, freeing unused storage in FROM_SET.  */
@@ -710,7 +799,7 @@ define_automatic_variables (void)
   char buf[200];
 
   sprintf (buf, "%u", makelevel);
-  (void) define_variable (MAKELEVEL_NAME, MAKELEVEL_LENGTH, buf, o_env, 0);
+  define_variable_cname (MAKELEVEL_NAME, buf, o_env, 0);
 
   sprintf (buf, "%s%s%s",
           version_string,
@@ -718,7 +807,7 @@ define_automatic_variables (void)
           ? "" : "-",
           (remote_description == 0 || remote_description[0] == '\0')
           ? "" : remote_description);
-  (void) define_variable ("MAKE_VERSION", 12, buf, o_default, 0);
+  define_variable_cname ("MAKE_VERSION", buf, o_default, 0);
 
 #ifdef  __MSDOS__
   /* Allow to specify a special shell just for Make,
@@ -729,13 +818,13 @@ define_automatic_variables (void)
     struct variable *mshp = lookup_variable ("MAKESHELL", 9);
     struct variable *comp = lookup_variable ("COMSPEC", 7);
 
-    /* Make $MAKESHELL override $SHELL even if -e is in effect.  */
+    /* $(MAKESHELL) overrides $(SHELL) even if -e is in effect.  */
     if (mshp)
       (void) define_variable (shell_str, shlen,
                              mshp->value, o_env_override, 0);
     else if (comp)
       {
-       /* $COMSPEC shouldn't override $SHELL.  */
+       /* $(COMSPEC) shouldn't override $(SHELL).  */
        struct variable *shp = lookup_variable (shell_str, shlen);
 
        if (!shp)
@@ -794,7 +883,10 @@ define_automatic_variables (void)
 
   /* This won't override any definition, but it will provide one if there
      isn't one there.  */
-  v = define_variable ("SHELL", 5, default_shell, o_default, 0);
+  v = define_variable_cname ("SHELL", default_shell, o_default, 0);
+#ifdef __MSDOS__
+  v->export = v_export;  /*  Export always SHELL.  */
+#endif
 
   /* On MSDOS we do use SHELL from environment, since it isn't a standard
      environment variable on MSDOS, so whoever sets it, does that on purpose.
@@ -811,36 +903,36 @@ define_automatic_variables (void)
 #endif
 
   /* Make sure MAKEFILES gets exported if it is set.  */
-  v = define_variable ("MAKEFILES", 9, "", o_default, 0);
+  v = define_variable_cname ("MAKEFILES", "", o_default, 0);
   v->export = v_ifset;
 
   /* Define the magic D and F variables in terms of
      the automatic variables they are variations of.  */
 
 #ifdef VMS
-  define_variable ("@D", 2, "$(dir $@)", o_automatic, 1);
-  define_variable ("%D", 2, "$(dir $%)", o_automatic, 1);
-  define_variable ("*D", 2, "$(dir $*)", o_automatic, 1);
-  define_variable ("<D", 2, "$(dir $<)", o_automatic, 1);
-  define_variable ("?D", 2, "$(dir $?)", o_automatic, 1);
-  define_variable ("^D", 2, "$(dir $^)", o_automatic, 1);
-  define_variable ("+D", 2, "$(dir $+)", o_automatic, 1);
+  define_variable_cname ("@D", "$(dir $@)", o_automatic, 1);
+  define_variable_cname ("%D", "$(dir $%)", o_automatic, 1);
+  define_variable_cname ("*D", "$(dir $*)", o_automatic, 1);
+  define_variable_cname ("<D", "$(dir $<)", o_automatic, 1);
+  define_variable_cname ("?D", "$(dir $?)", o_automatic, 1);
+  define_variable_cname ("^D", "$(dir $^)", o_automatic, 1);
+  define_variable_cname ("+D", "$(dir $+)", o_automatic, 1);
 #else
-  define_variable ("@D", 2, "$(patsubst %/,%,$(dir $@))", o_automatic, 1);
-  define_variable ("%D", 2, "$(patsubst %/,%,$(dir $%))", o_automatic, 1);
-  define_variable ("*D", 2, "$(patsubst %/,%,$(dir $*))", o_automatic, 1);
-  define_variable ("<D", 2, "$(patsubst %/,%,$(dir $<))", o_automatic, 1);
-  define_variable ("?D", 2, "$(patsubst %/,%,$(dir $?))", o_automatic, 1);
-  define_variable ("^D", 2, "$(patsubst %/,%,$(dir $^))", o_automatic, 1);
-  define_variable ("+D", 2, "$(patsubst %/,%,$(dir $+))", o_automatic, 1);
+  define_variable_cname ("@D", "$(patsubst %/,%,$(dir $@))", o_automatic, 1);
+  define_variable_cname ("%D", "$(patsubst %/,%,$(dir $%))", o_automatic, 1);
+  define_variable_cname ("*D", "$(patsubst %/,%,$(dir $*))", o_automatic, 1);
+  define_variable_cname ("<D", "$(patsubst %/,%,$(dir $<))", o_automatic, 1);
+  define_variable_cname ("?D", "$(patsubst %/,%,$(dir $?))", o_automatic, 1);
+  define_variable_cname ("^D", "$(patsubst %/,%,$(dir $^))", o_automatic, 1);
+  define_variable_cname ("+D", "$(patsubst %/,%,$(dir $+))", o_automatic, 1);
 #endif
-  define_variable ("@F", 2, "$(notdir $@)", o_automatic, 1);
-  define_variable ("%F", 2, "$(notdir $%)", o_automatic, 1);
-  define_variable ("*F", 2, "$(notdir $*)", o_automatic, 1);
-  define_variable ("<F", 2, "$(notdir $<)", o_automatic, 1);
-  define_variable ("?F", 2, "$(notdir $?)", o_automatic, 1);
-  define_variable ("^F", 2, "$(notdir $^)", o_automatic, 1);
-  define_variable ("+F", 2, "$(notdir $+)", o_automatic, 1);
+  define_variable_cname ("@F", "$(notdir $@)", o_automatic, 1);
+  define_variable_cname ("%F", "$(notdir $%)", o_automatic, 1);
+  define_variable_cname ("*F", "$(notdir $*)", o_automatic, 1);
+  define_variable_cname ("<F", "$(notdir $<)", o_automatic, 1);
+  define_variable_cname ("?F", "$(notdir $?)", o_automatic, 1);
+  define_variable_cname ("^F", "$(notdir $^)", o_automatic, 1);
+  define_variable_cname ("+F", "$(notdir $+)", o_automatic, 1);
 }
 \f
 int export_all_variables;
@@ -916,15 +1008,18 @@ target_environment (struct file *file)
                break;
 
              case v_noexport:
-                /* If this is the SHELL variable and it's not exported, then
-                   add the value from our original environment.  */
-                if (streq (v->name, "SHELL"))
-                  {
-                    extern struct variable shell_var;
-                    v = &shell_var;
-                    break;
-                  }
-                continue;
+               {
+                 /* If this is the SHELL variable and it's not exported,
+                    then add the value from our original environment, if
+                    the original environment defined a value for SHELL.  */
+                 extern struct variable shell_var;
+                 if (streq (v->name, "SHELL") && shell_var.value)
+                   {
+                     v = &shell_var;
+                     break;
+                   }
+                 continue;
+               }
 
              case v_ifset:
                if (v->origin == o_default)
@@ -942,7 +1037,7 @@ target_environment (struct file *file)
   makelevel_key.length = MAKELEVEL_LENGTH;
   hash_delete (&table, &makelevel_key);
 
-  result = result_0 = (char **) xmalloc ((table.ht_fill + 2) * sizeof (char *));
+  result = result_0 = xmalloc ((table.ht_fill + 2) * sizeof (char *));
 
   v_slot = (struct variable **) table.ht_vec;
   v_end = v_slot + table.ht_size;
@@ -963,7 +1058,7 @@ target_environment (struct file *file)
                strcmp(v->name, "PATH") == 0)
              convert_Path_to_windows32(value, ';');
 #endif
-           *result++ = concat (v->name, "=", value);
+           *result++ = xstrdup (concat (3, v->name, "=", value));
            free (value);
          }
        else
@@ -973,12 +1068,12 @@ target_environment (struct file *file)
                 strcmp(v->name, "PATH") == 0)
               convert_Path_to_windows32(v->value, ';');
 #endif
-           *result++ = concat (v->name, "=", v->value);
+           *result++ = xstrdup (concat (3, v->name, "=", v->value));
          }
       }
 
-  *result = (char *) xmalloc (100);
-  (void) sprintf (*result, "%s=%u", MAKELEVEL_NAME, makelevel + 1);
+  *result = xmalloc (100);
+  sprintf (*result, "%s=%u", MAKELEVEL_NAME, makelevel + 1);
   *++result = 0;
 
   hash_free (&table, 0);
@@ -986,15 +1081,30 @@ target_environment (struct file *file)
   return result_0;
 }
 \f
+static struct variable *
+set_special_var (struct variable *var)
+{
+  if (streq (var->name, RECIPEPREFIX_NAME))
+    {
+      /* The user is resetting the command introduction prefix.  This has to
+         happen immediately, so that subsequent rules are interpreted
+         properly.  */
+      cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0];
+    }
+
+  return var;
+}
+\f
 /* Given a variable, a value, and a flavor, define the variable.
    See the try_variable_definition() function for details on the parameters. */
 
 struct variable *
 do_variable_definition (const struct floc *flocp, const char *varname,
-                        char *value, enum variable_origin origin,
+                        const char *value, enum variable_origin origin,
                         enum variable_flavor flavor, int target_var)
 {
-  char *p, *alloc_value = NULL;
+  const char *p;
+  char *alloc_value = NULL;
   struct variable *v;
   int append = 0;
   int conditional = 0;
@@ -1019,7 +1129,7 @@ do_variable_definition (const struct floc *flocp, const char *varname,
          The value is set IFF the variable is not defined yet. */
       v = lookup_variable (varname, strlen (varname));
       if (v)
-        return v;
+        return v->special ? set_special_var (v) : v;
 
       conditional = 1;
       flavor = f_recursive;
@@ -1059,7 +1169,8 @@ do_variable_definition (const struct floc *flocp, const char *varname,
             /* Paste the old and new values together in VALUE.  */
 
             unsigned int oldlen, vallen;
-            char *val;
+            const char *val;
+            char *tp = NULL;
 
             val = value;
             if (v->recursive)
@@ -1072,14 +1183,17 @@ do_variable_definition (const struct floc *flocp, const char *varname,
                  when it was set; and from the expanded new value.  Allocate
                  memory for the expansion as we may still need the rest of the
                  buffer if we're looking at a target-specific variable.  */
-              val = alloc_value = allocated_variable_expand (val);
+              val = tp = allocated_variable_expand (val);
 
             oldlen = strlen (v->value);
             vallen = strlen (val);
-            p = (char *) alloca (oldlen + 1 + vallen + 1);
-            bcopy (v->value, p, oldlen);
-            p[oldlen] = ' ';
-            bcopy (val, &p[oldlen + 1], vallen + 1);
+            p = alloc_value = xmalloc (oldlen + 1 + vallen + 1);
+            memcpy (alloc_value, v->value, oldlen);
+            alloc_value[oldlen] = ' ';
+            memcpy (&alloc_value[oldlen + 1], val, vallen + 1);
+
+            if (tp)
+              free (tp);
           }
       }
     }
@@ -1105,22 +1219,21 @@ do_variable_definition (const struct floc *flocp, const char *varname,
       extern char * __dosexec_find_on_path (const char *, char *[], char *);
 
       /* See if we can find "/bin/sh.exe", "/bin/sh.com", etc.  */
-      if (__dosexec_find_on_path (p, (char **)0, shellpath))
+      if (__dosexec_find_on_path (p, NULL, shellpath))
        {
-         char *p;
+         char *tp;
+
+         for (tp = shellpath; *tp; tp++)
+            if (*tp == '\\')
+              *tp = '/';
 
-         for (p = shellpath; *p; p++)
-           {
-             if (*p == '\\')
-               *p = '/';
-           }
          v = define_variable_loc (varname, strlen (varname),
                                    shellpath, origin, flavor == f_recursive,
                                    flocp);
        }
       else
        {
-         char *shellbase, *bslash;
+         const char *shellbase, *bslash;
          struct variable *pathv = lookup_variable ("PATH", 4);
          char *path_string;
          char *fake_env[2];
@@ -1141,20 +1254,19 @@ do_variable_definition (const struct floc *flocp, const char *varname,
             executable extensions) along the $PATH.  */
          if (pathv)
            pathlen = strlen (pathv->value);
-         path_string = (char *)xmalloc (5 + pathlen + 2 + 1);
+         path_string = xmalloc (5 + pathlen + 2 + 1);
          /* On MSDOS, current directory is considered as part of $PATH.  */
          sprintf (path_string, "PATH=.;%s", pathv ? pathv->value : "");
          fake_env[0] = path_string;
-         fake_env[1] = (char *)0;
+         fake_env[1] = 0;
          if (__dosexec_find_on_path (shellbase, fake_env, shellpath))
            {
-             char *p;
+             char *tp;
+
+             for (tp = shellpath; *tp; tp++)
+                if (*tp == '\\')
+                  *tp = '/';
 
-             for (p = shellpath; *p; p++)
-               {
-                 if (*p == '\\')
-                   *p = '/';
-               }
              v = define_variable_loc (varname, strlen (varname),
                                        shellpath, origin,
                                        flavor == f_recursive, flocp);
@@ -1188,7 +1300,27 @@ do_variable_definition (const struct floc *flocp, const char *varname,
           no_default_sh_exe = 0;
         }
       else
-        v = lookup_variable (varname, strlen (varname));
+        {
+          char *tp = alloc_value;
+
+          alloc_value = allocated_variable_expand (p);
+
+          if (find_and_set_default_shell (alloc_value))
+            {
+              v = define_variable_in_set (varname, strlen (varname), p,
+                                          origin, flavor == f_recursive,
+                                          (target_var
+                                           ? current_variable_set_list->set
+                                           : NULL),
+                                          flocp);
+              no_default_sh_exe = 0;
+            }
+          else
+            v = lookup_variable (varname, strlen (varname));
+
+          if (tp)
+            free (tp);
+        }
     }
   else
 #endif
@@ -1210,69 +1342,35 @@ do_variable_definition (const struct floc *flocp, const char *varname,
   if (alloc_value)
     free (alloc_value);
 
-  return v;
+  return v->special ? set_special_var (v) : v;
 }
 \f
-/* Try to interpret LINE (a null-terminated string) as a variable definition.
-
-   ORIGIN may be o_file, o_override, o_env, o_env_override,
-   or o_command specifying that the variable definition comes
-   from a makefile, an override directive, the environment with
-   or without the -e switch, or the command line.
+/* Parse P (a null-terminated string) as a variable definition.
 
-   See the comments for parse_variable_definition().
+   If it is not a variable definition, return NULL.
 
-   If LINE was recognized as a variable definition, a pointer to its `struct
-   variable' is returned.  If LINE is not a variable definition, NULL is
-   returned.  */
+   If it is a variable definition, return a pointer to the char after the
+   assignment token and set *FLAVOR to the type of variable assignment.  */
 
-struct variable *
-parse_variable_definition (struct variable *v, char *line)
+char *
+parse_variable_definition (const char *p, enum variable_flavor *flavor)
 {
-  register int c;
-  register char *p = line;
-  register char *beg;
-  register char *end;
-  enum variable_flavor flavor = f_bogus;
-  char *name;
+  int wspace = 0;
+
+  p = next_token (p);
 
   while (1)
     {
-      c = *p++;
+      int c = *p++;
+
+      /* If we find a comment or EOS, it's not a variable definition.  */
       if (c == '\0' || c == '#')
-       return 0;
-      if (c == '=')
-       {
-         end = p - 1;
-         flavor = f_recursive;
-         break;
-       }
-      else if (c == ':')
-       if (*p == '=')
-         {
-           end = p++ - 1;
-           flavor = f_simple;
-           break;
-         }
-       else
-         /* A colon other than := is a rule line, not a variable defn.  */
-         return 0;
-      else if (c == '+' && *p == '=')
-       {
-         end = p++ - 1;
-         flavor = f_append;
-         break;
-       }
-      else if (c == '?' && *p == '=')
-        {
-          end = p++ - 1;
-          flavor = f_conditional;
-          break;
-        }
-      else if (c == '$')
+       return NULL;
+
+      if (c == '$')
        {
-         /* This might begin a variable expansion reference.  Make sure we
-            don't misrecognize chars inside the reference as =, := or +=.  */
+         /* This begins a variable expansion reference.  Make sure we don't
+            treat chars inside the reference as assignment tokens.  */
          char closeparen;
          int count;
          c = *p++;
@@ -1281,7 +1379,8 @@ parse_variable_definition (struct variable *v, char *line)
          else if (c == '{')
            closeparen = '}';
          else
-           continue;           /* Nope.  */
+            /* '$$' or '$X'.  Either way, nothing special to do here.  */
+           continue;
 
          /* P now points past the opening paren or brace.
             Count parens or braces until it is matched.  */
@@ -1296,19 +1395,92 @@ parse_variable_definition (struct variable *v, char *line)
                  break;
                }
            }
+          continue;
+       }
+
+      /* If we find whitespace skip it, and remember we found it.  */
+      if (isblank ((unsigned char)c))
+        {
+          wspace = 1;
+          p = next_token (p);
+          c = *p;
+          if (c == '\0')
+            return NULL;
+          ++p;
+        }
+
+
+      if (c == '=')
+       {
+         *flavor = f_recursive;
+         return (char *)p;
        }
+
+      /* Match assignment variants (:=, +=, ?=)  */
+      if (*p == '=')
+        {
+          switch (c)
+            {
+              case ':':
+                *flavor = f_simple;
+                break;
+              case '+':
+                *flavor = f_append;
+                break;
+              case '?':
+                *flavor = f_conditional;
+                break;
+              default:
+                /* If we skipped whitespace, non-assignments means no var.  */
+                if (wspace)
+                  return NULL;
+
+                /* Might be assignment, or might be $= or #=.  Check.  */
+                continue;
+            }
+          return (char *)++p;
+        }
+      else if (c == ':')
+        /* A colon other than := is a rule line, not a variable defn.  */
+        return NULL;
+
+      /* If we skipped whitespace, non-assignments means no var.  */
+      if (wspace)
+        return NULL;
     }
-  v->flavor = flavor;
+
+  return (char *)p;
+}
+\f
+/* Try to interpret LINE (a null-terminated string) as a variable definition.
+
+   If LINE was recognized as a variable definition, a pointer to its `struct
+   variable' is returned.  If LINE is not a variable definition, NULL is
+   returned.  */
+
+struct variable *
+assign_variable_definition (struct variable *v, char *line)
+{
+  char *beg;
+  char *end;
+  enum variable_flavor flavor;
+  char *name;
 
   beg = next_token (line);
+  line = parse_variable_definition (beg, &flavor);
+  if (!line)
+    return NULL;
+
+  end = line - (flavor == f_recursive ? 1 : 2);
   while (end > beg && isblank ((unsigned char)end[-1]))
     --end;
-  p = next_token (p);
-  v->value = p;
+  line = next_token (line);
+  v->value = line;
+  v->flavor = flavor;
 
   /* Expand the name, so "$(foo)bar = baz" works.  */
-  name = (char *) alloca (end - beg + 1);
-  bcopy (beg, name, end - beg);
+  name = alloca (end - beg + 1);
+  memcpy (name, beg, end - beg);
   name[end - beg] = '\0';
   v->name = allocated_variable_expand (name);
 
@@ -1325,7 +1497,7 @@ parse_variable_definition (struct variable *v, char *line)
    from a makefile, an override directive, the environment with
    or without the -e switch, or the command line.
 
-   See the comments for parse_variable_definition().
+   See the comments for assign_variable_definition().
 
    If LINE was recognized as a variable definition, a pointer to its `struct
    variable' is returned.  If LINE is not a variable definition, NULL is
@@ -1343,7 +1515,7 @@ try_variable_definition (const struct floc *flocp, char *line,
   else
     v.fileinfo.filenm = 0;
 
-  if (!parse_variable_definition (&v, line))
+  if (!assign_variable_definition (&v, line))
     return 0;
 
   vp = do_variable_definition (flocp, v.name, v.value,
@@ -1359,8 +1531,8 @@ try_variable_definition (const struct floc *flocp, char *line,
 static void
 print_variable (const void *item, void *arg)
 {
-  const struct variable *v = (struct variable *) item;
-  const char *prefix = (char *) arg;
+  const struct variable *v = item;
+  const char *prefix = arg;
   const char *origin;
 
   switch (v->origin)
@@ -1392,6 +1564,8 @@ print_variable (const void *item, void *arg)
     }
   fputs ("# ", stdout);
   fputs (origin, stdout);
+  if (v->private_var)
+    fputs (" private", stdout);
   if (v->fileinfo.filenm)
     printf (_(" (from `%s', line %lu)"),
             v->fileinfo.filenm, v->fileinfo.lineno);
@@ -1403,7 +1577,7 @@ print_variable (const void *item, void *arg)
     printf ("define %s\n%s\nendef\n", v->name, v->value);
   else
     {
-      register char *p;
+      char *p;
 
       printf ("%s %s= ", v->name, v->recursive ? v->append ? "+" : "" : ":");
 
@@ -1474,7 +1648,7 @@ print_variable_data_base (void)
 /* Print all the local variables of FILE.  */
 
 void
-print_file_variables (struct file *file)
+print_file_variables (const struct file *file)
 {
   if (file->variables != 0)
     print_variable_set (file->variables->set, "# ");
@@ -1501,7 +1675,7 @@ sync_Path_environment (void)
    * Create something WINDOWS32 world can grok
    */
   convert_Path_to_windows32 (path, ';');
-  environ_path = concat ("PATH", "=", path);
+  environ_path = xstrdup (concat (3, "PATH", "=", path));
   putenv (environ_path);
   free (path);
 }
index 46b18fa..c215867 100644 (file)
@@ -1,20 +1,20 @@
 /* Definitions for using variables in 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "hash.h"
 
@@ -59,10 +59,12 @@ struct variable
                                    variable.  */
     unsigned int conditional:1; /* Nonzero if set with a ?=. */
     unsigned int per_target:1; /* Nonzero if a target-specific variable.  */
-    unsigned int special:1;     /* Nonzero if this is a special variable. */
+    unsigned int special:1;     /* Nonzero if this is a special variable.  */
     unsigned int exportable:1;  /* Nonzero if the variable _could_ be
                                    exported.  */
     unsigned int expanding:1;  /* Nonzero if currently being expanded.  */
+    unsigned int private_var:1; /* Nonzero avoids inheritance of this
+                                   target-specific variable.  */
     unsigned int exp_count:EXP_COUNT_BITS;
                                 /* If >1, allow this many self-referential
                                    expansions.  */
@@ -92,6 +94,7 @@ struct variable_set_list
   {
     struct variable_set_list *next;    /* Link in the chain.  */
     struct variable_set *set;          /* Variable set.  */
+    int next_is_parent;                 /* True if next is a parent target.  */
   };
 
 /* Structure used for pattern-specific variables.  */
@@ -99,65 +102,77 @@ struct variable_set_list
 struct pattern_var
   {
     struct pattern_var *next;
-    char *target;
+    const char *suffix;
+    const char *target;
     unsigned int len;
-    char *suffix;
     struct variable variable;
   };
 
 extern char *variable_buffer;
 extern struct variable_set_list *current_variable_set_list;
+extern struct variable *default_goal_var;
 
 /* expand.c */
-extern char *variable_buffer_output PARAMS ((char *ptr, char *string, unsigned int length));
-extern char *variable_expand PARAMS ((char *line));
-extern char *variable_expand_for_file PARAMS ((char *line, struct file *file));
-extern char *allocated_variable_expand_for_file PARAMS ((char *line, struct file *file));
+char *variable_buffer_output (char *ptr, const char *string, unsigned int length);
+char *variable_expand (const char *line);
+char *variable_expand_for_file (const char *line, struct file *file);
+char *allocated_variable_expand_for_file (const char *line, struct file *file);
 #define        allocated_variable_expand(line) \
   allocated_variable_expand_for_file (line, (struct file *) 0)
-extern char *expand_argument PARAMS ((const char *str, const char *end));
-extern char *variable_expand_string PARAMS ((char *line, char *string,
-                                             long length));
-extern void install_variable_buffer PARAMS ((char **bufp, unsigned int *lenp));
-extern void restore_variable_buffer PARAMS ((char *buf, unsigned int len));
+char *expand_argument (const char *str, const char *end);
+char *variable_expand_string (char *line, const char *string, long length);
+void install_variable_buffer (char **bufp, unsigned int *lenp);
+void restore_variable_buffer (char *buf, unsigned int len);
 
 /* function.c */
-extern int handle_function PARAMS ((char **op, char **stringp));
-extern int pattern_matches PARAMS ((char *pattern, char *percent, char *str));
-extern char *subst_expand PARAMS ((char *o, char *text, char *subst, char *replace,
-               unsigned int slen, unsigned int rlen, int by_word));
-extern char *patsubst_expand PARAMS ((char *o, char *text, char *pattern, char *replace,
-               char *pattern_percent, char *replace_percent));
+int handle_function (char **op, const char **stringp);
+int pattern_matches (const char *pattern, const char *percent, const char *str);
+char *subst_expand (char *o, const char *text, const char *subst,
+                    const char *replace, unsigned int slen, unsigned int rlen,
+                    int by_word);
+char *patsubst_expand_pat (char *o, const char *text, const char *pattern,
+                           const char *replace, const char *pattern_percent,
+                           const char *replace_percent);
+char *patsubst_expand (char *o, const char *text, char *pattern, char *replace);
 
 /* expand.c */
-extern char *recursively_expand_for_file PARAMS ((struct variable *v,
-                                                  struct file *file));
+char *recursively_expand_for_file (struct variable *v, struct file *file);
 #define recursively_expand(v)   recursively_expand_for_file (v, NULL)
 
 /* 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));
-extern void define_automatic_variables PARAMS ((void));
-extern void initialize_file_variables PARAMS ((struct file *file, int read));
-extern void print_file_variables PARAMS ((struct file *file));
-extern void print_variable_set PARAMS ((struct variable_set *set, char *prefix));
-extern void merge_variable_set_lists PARAMS ((struct variable_set_list **to_list, struct variable_set_list *from_list));
-extern struct variable *do_variable_definition PARAMS ((const struct floc *flocp, const char *name, char *value, enum variable_origin origin, enum variable_flavor flavor, int target_var));
-extern struct variable *parse_variable_definition PARAMS ((struct variable *v, char *line));
-extern struct variable *try_variable_definition PARAMS ((const struct floc *flocp, char *line, enum variable_origin origin, int target_var));
-extern void init_hash_global_variable_set PARAMS ((void));
-extern void hash_init_function_table PARAMS ((void));
-extern struct variable *lookup_variable PARAMS ((const char *name, unsigned int length));
-extern struct variable *lookup_variable_in_set PARAMS ((const char *name,
-                                                        unsigned int length,
-                                                        const struct variable_set *set));
-
-extern struct variable *define_variable_in_set
-    PARAMS ((const char *name, unsigned int length, char *value,
-             enum variable_origin origin, int recursive,
-             struct variable_set *set, const struct floc *flocp));
+struct variable_set_list *create_new_variable_set (void);
+void free_variable_set (struct variable_set_list *);
+struct variable_set_list *push_new_variable_scope (void);
+void pop_variable_scope (void);
+void define_automatic_variables (void);
+void initialize_file_variables (struct file *file, int reading);
+void print_file_variables (const struct file *file);
+void print_variable_set (struct variable_set *set, char *prefix);
+void merge_variable_set_lists (struct variable_set_list **to_list,
+                               struct variable_set_list *from_list);
+struct variable *do_variable_definition (const struct floc *flocp,
+                                         const char *name, const char *value,
+                                         enum variable_origin origin,
+                                         enum variable_flavor flavor,
+                                         int target_var);
+char *parse_variable_definition (const char *line,
+                                 enum variable_flavor *flavor);
+struct variable *assign_variable_definition (struct variable *v, char *line);
+struct variable *try_variable_definition (const struct floc *flocp, char *line,
+                                          enum variable_origin origin,
+                                          int target_var);
+void init_hash_global_variable_set (void);
+void hash_init_function_table (void);
+struct variable *lookup_variable (const char *name, unsigned int length);
+struct variable *lookup_variable_in_set (const char *name, unsigned int length,
+                                         const struct variable_set *set);
+
+struct variable *define_variable_in_set (const char *name, unsigned int length,
+                                         const char *value,
+                                         enum variable_origin origin,
+                                         int recursive,
+                                         struct variable_set *set,
+                                         const struct floc *flocp);
 
 /* Define a variable in the current variable set.  */
 
@@ -165,6 +180,12 @@ extern struct variable *define_variable_in_set
           define_variable_in_set((n),(l),(v),(o),(r),\
                                  current_variable_set_list->set,NILF)
 
+/* Define a variable with a constant name in the current variable set.  */
+
+#define define_variable_cname(n,v,o,r) \
+          define_variable_in_set((n),(sizeof (n) - 1),(v),(o),(r),\
+                                 current_variable_set_list->set,NILF)
+
 /* Define a variable with a location in the current variable set.  */
 
 #define define_variable_loc(n,l,v,o,r,f) \
@@ -181,6 +202,15 @@ extern struct variable *define_variable_in_set
 #define define_variable_for_file(n,l,v,o,r,f) \
           define_variable_in_set((n),(l),(v),(o),(r),(f)->variables->set,NILF)
 
+void undefine_variable_in_set (const char *name, unsigned int length,
+                               enum variable_origin origin,
+                               struct variable_set *set);
+
+/* Remove variable from the current variable set. */
+
+#define undefine_variable_global(n,l,o) \
+          undefine_variable_in_set((n),(l),(o),NULL)
+
 /* Warn that NAME is an undefined variable.  */
 
 #define warn_undefined(n,l) do{\
@@ -190,9 +220,10 @@ extern struct variable *define_variable_in_set
                                 (int)(l), (n)); \
                               }while(0)
 
-extern char **target_environment PARAMS ((struct file *file));
+char **target_environment (struct file *file);
 
-extern struct pattern_var *create_pattern_var PARAMS ((char *target, char *suffix));
+struct pattern_var *create_pattern_var (const char *target,
+                                        const char *suffix);
 
 extern int export_all_variables;
 
index 7e718f8..a770e22 100644 (file)
--- a/version.c
+++ b/version.c
@@ -1,20 +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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* 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 aed53c7..cb17818 100644 (file)
--- a/vmsdir.h
+++ b/vmsdir.h
@@ -1,19 +1,19 @@
 /* dirent.h for vms
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef VMSDIR_H
 #define VMSDIR_H
@@ -67,10 +67,11 @@ typedef struct DIR
 #define NULL 0
 #endif
 
-extern DIR *opendir PARAMS (());
-extern struct direct *readdir PARAMS ((DIR *dfd));
 #define rewinddir(dirp)        seekdir((dirp), (long)0)
-extern int closedir PARAMS ((DIR *dfd));
-extern char *vmsify PARAMS ((char *name, int type));
+
+DIR *opendir ();
+struct direct *readdir (DIR *dfd);
+int closedir (DIR *dfd);
+const char *vmsify (const char *name, int type);
 
 #endif /* VMSDIR_H */
index 8cb0ddd..5b867d9 100644 (file)
@@ -1,19 +1,19 @@
 /* VMS functions
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "debug.h"
@@ -34,12 +34,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 DIR *
 opendir (char *dspec)
 {
-  struct DIR *dir  = (struct DIR *)xmalloc (sizeof (struct DIR));
-  struct NAM *dnam = (struct NAM *)xmalloc (sizeof (struct NAM));
+  struct DIR *dir  = xcalloc (sizeof (struct DIR));
+  struct NAM *dnam = xmalloc (sizeof (struct NAM));
   struct FAB *dfab = &dir->fab;
-  char *searchspec = (char *)xmalloc (MAXNAMLEN + 1);
-
-  memset (dir, 0, sizeof *dir);
+  char *searchspec = xmalloc (MAXNAMLEN + 1);
 
   *dfab = cc$rms_fab;
   *dnam = cc$rms_nam;
@@ -91,7 +89,7 @@ readdir (DIR *dir)
 
   if (!((i = sys$search (dfab)) & 1))
     {
-      DB (DB_VERBOSE, (_("sys$search failed with %d\n"), i));
+      DB (DB_VERBOSE, (_("sys$search() failed with %d\n"), i));
       return (NULL);
     }
 
@@ -141,6 +139,10 @@ getwd (char *cwd)
     return (getcwd (buf, 512));
 }
 
+#if 0
+/*
+ * Is this used? I don't see any reference, so I suggest to remove it.
+ */
 int
 vms_stat (char *name, struct stat *buf)
 {
@@ -237,6 +239,7 @@ vms_stat (char *name, struct stat *buf)
 
   return 0;
 }
+#endif
 
 char *
 cvt_time (unsigned long tval)
@@ -257,15 +260,3 @@ cvt_time (unsigned long tval)
 
   return (str);
 }
-
-int
-strcmpi (const char *s1, const char *s2)
-{
-  while (*s1 != '\0' && toupper(*s1) == toupper(*s2))
-    {
-      s1++;
-      s2++;
-    }
-
-  return toupper(*(unsigned char *) s1) - toupper(*(unsigned char *) s2);
-}
index ac82942..f58fee7 100644 (file)
--- a/vmsify.c
+++ b/vmsify.c
@@ -1,19 +1,19 @@
 /* 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.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Written by Klaus Kämpf (kkaempf@progis.de)
    of proGIS Software, Aachen, Germany */
@@ -63,9 +63,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 */
 
 static int
-copyto (char **to, char **from, char upto, int as_dir)
+copyto (char **to, const char **from, char upto, int as_dir)
 {
-  char *s;
+  const char *s;
 
   s = strrchr (*from, '.');
 
@@ -111,7 +111,7 @@ copyto (char **to, char **from, char upto, int as_dir)
 */
 
 static char *
-trnlog (char *name)
+trnlog (const char *name)
 {
   int stat;
   static char reslt[1024];
@@ -120,7 +120,11 @@ trnlog (char *name)
   struct dsc$descriptor_s name_dsc;
   char *s;
 
-  INIT_DSC_CSTRING (name_dsc, name);
+  /*
+   * the string isn't changed, but there is no string descriptor with
+   * "const char *dsc$a_pointer"
+   */
+  INIT_DSC_CSTRING (name_dsc, (char *)name);
 
   stat = lib$sys_trnlog (&name_dsc, &resltlen, &reslt_dsc);
 
@@ -134,7 +138,7 @@ trnlog (char *name)
     }
   reslt[resltlen] = '\0';
 
-  s = (char *)malloc (resltlen+1);
+  s = malloc (resltlen+1);
   if (s == 0)
     return "";
   strcpy (s, reslt);
@@ -205,11 +209,12 @@ enum namestate { N_START, N_DEVICE, N_OPEN, N_DOT, N_CLOSED, N_DONE };
 25  filenames with ':' are left unchanged
 26  filenames with a single pair of '[' ']' are left unchanged
 
-  the input string is not written to
+  The input string is not written to.  The result is also const because
+  it's a static buffer; we don't want to change it.
 */
 
-char *
-vmsify (char *name, int type)
+const char *
+vmsify (const char *name, int type)
 {
 /* max 255 device
    max 39 directory
@@ -221,11 +226,14 @@ vmsify (char *name, int type)
 
   enum namestate nstate;
   static char vmsname[MAXPATHLEN+1];
-  char *fptr;
+  const char *fptr;
+  const char *t;
   char *vptr;
-  char *s,*s1;
   int as_dir;
   int count;
+  const char *s;
+  const char *s1;
+  const char *s2;
 
   if (name == 0)
     return 0;
@@ -234,69 +242,58 @@ vmsify (char *name, int type)
   nstate = N_START;
 
   /* case 25a */
+  t = strpbrk (name, "$:");
 
-  s = strpbrk (name, "$:");
-  if (s != 0)
+  if (t != 0)
     {
-      char *s1;
-      char *s2;
+//      const char *s1;
+//      const char *s2;
 
       if (type == 1)
-       {
-         s1 = strchr (s+1, '[');
-         s2 = strchr (s+1, ']');
-       }
+        {
+          s1 = strchr (t+1, '[');
+          s2 = strchr (t+1, ']');
+        }
 
-      if (*s == '$')
-       {
-         if (strchr (name, '/') == 0)
-           {
-             if ((type == 1) && (s1 != 0) && (s2 == 0))
-               {
-                 strcpy (vmsname, name);
-                 strcat (vmsname, "]");
-                 return vmsname;
-               }
-             else
-               return name;
-           }
-       }
+      if (*t == '$')
+        {
+          if (strchr (name, '/') == 0)
+            {
+              strcpy (vmsname, name);
+              if ((type == 1) && (s1 != 0) && (s2 == 0))
+                strcat (vmsname, "]");
+              return vmsname;
+            }
+        }
       else
-       {
-         if ((type == 1) && (s1 != 0) && (s2 == 0))
-           {
-             strcpy (vmsname, name);
-             strcat (vmsname, "]");
-             return vmsname;
-           }
-         else
-           return name;
-       }
+        {
+          strcpy (vmsname, name);
+          if ((type == 1) && (s1 != 0) && (s2 == 0))
+            strcat (vmsname, "]");
+          return vmsname;
+        }
     }
 
   /* case 26 */
+  t = strchr (name, '[');
 
-  s = strchr (name, '[');
-
-  if (s != 0)
+  if (t != 0)
     {
-      s1 = strchr (s+1, '[');
+//      const char *s;
+//      const char *s1 = strchr (t+1, '[');
+      s1 = strchr (t+1, '[');
       if (s1 == 0)
        {
-         if ((type == 1)
-              && (strchr (s+1, ']') == 0))
-           {
-             strcpy (vmsname, name);
-             strcat (vmsname, "]");
-             return vmsname;
-           }
-         else
-           return name;                        /* single [, keep unchanged */
+          strcpy (vmsname, name);
+         if ((type == 1) && (strchr (t+1, ']') == 0))
+            strcat (vmsname, "]");
+          return vmsname;
        }
       s1--;
       if (*s1 != ']')
        {
-         return name;                  /* not ][, keep unchanged */
+          strcpy (vmsname, name);
+         return vmsname;               /* not ][, keep unchanged */
        }
 
       /* we have ][ */
@@ -305,7 +302,6 @@ vmsify (char *name, int type)
 
       /* s  -> starting char
         s1 -> ending ']'  */
-
       do
        {
          strncpy (vptr, s, s1-s);      /* copy up to but not including ']' */
@@ -329,19 +325,13 @@ vmsify (char *name, int type)
       fptr = s;
 
     }
-
   else         /* no [ in name */
-
     {
-
-      int state;
+      int state = 0;
       int rooted = 1;  /* flag if logical is rooted, else insert [000000] */
 
-      state = 0;
-
       do
        {
-
       switch (state)
        {
          case 0:                               /* start of loop */
@@ -370,7 +360,8 @@ vmsify (char *name, int type)
            break;
 
          case 2:                               /* no '/' at start */
-           s = strchr (fptr, '/');
+            {
+            const char *s = strchr (fptr, '/');
            if (s == 0)                 /* no '/' (16) */
              {
                if (type == 1)
@@ -401,8 +392,13 @@ vmsify (char *name, int type)
                  }
              }
            break;
+            }
 
          case 3:                               /* '//' at start */
+            {
+//            const char *s;
+//            const char *s1;
+            char *vp;
            while (*fptr == '/')        /* collapse all '/' */
              fptr++;
            if (*fptr == 0)             /* just // */
@@ -412,12 +408,14 @@ vmsify (char *name, int type)
                s1 = getcwd(cwdbuf, MAXPATHLEN);
                if (s1 == 0)
                  {
-                   return "";          /* FIXME, err getcwd */
+                    vmsname[0] = '\0';
+                   return vmsname;     /* FIXME, err getcwd */
                  }
                s = strchr (s1, ':');
                if (s == 0)
                  {
-                   return "";          /* FIXME, err no device */
+                    vmsname[0] = '\0';
+                   return vmsname;     /* FIXME, err no device */
                  }
                strncpy (vptr, s1, s-s1+1);
                vptr += s-s1+1;
@@ -444,28 +442,27 @@ vmsify (char *name, int type)
              }
            *vptr = 0;
                                /* check logical for [000000] insertion */
-           s1 = trnlog (s);
-           if (*s1 != 0)
+           vp = trnlog (s);
+           if (*vp != '\0')
              {                 /* found translation */
-               char *s2;
                for (;;)        /* loop over all nested logicals */
                  {
-                   s2 = s1 + strlen (s1) - 1;
-                   if (*s2 == ':')     /* translation ends in ':' */
+                   char *vp2 = vp + strlen (vp) - 1;
+                   if (*vp2 == ':')    /* translation ends in ':' */
                      {
-                       s2 = trnlog (s1);
-                       free (s1);
-                       if (*s2 == 0)
+                       vp2 = trnlog (vp);
+                       free (vp);
+                       if (*vp2 == 0)
                          {
                            rooted = 0;
                            break;
                          }
-                       s1 = s2;
+                       vp = vp2;
                        continue;       /* next iteration */
                      }
-                   if (*s2 == ']')     /* translation ends in ']' */
+                   if (*vp2 == ']')    /* translation ends in ']' */
                      {
-                       if (*(s2-1) == '.')     /* ends in '.]' */
+                       if (*(vp2-1) == '.')    /* ends in '.]' */
                          {
                            if (strncmp (fptr, "000000", 6) != 0)
                              rooted = 0;
@@ -473,15 +470,15 @@ vmsify (char *name, int type)
                        else
                          {
                            strcpy (vmsname, s1);
-                           s = strchr (vmsname, ']');
-                           *s = '.';
+                           vp = strchr (vmsname, ']');
+                           *vp = '.';
                            nstate = N_DOT;
-                           vptr = s;
+                           vptr = vp;
                          }
                      }
                    break;
                  }
-               free (s1);
+               free (vp);
              }
            else
              rooted = 0;
@@ -496,15 +493,15 @@ vmsify (char *name, int type)
 
            if (rooted == 0)
              {
+               nstate = N_DOT;
                strcpy (vptr, "[000000.");
                vptr += 8;
-               s1 = vptr-1;
-               nstate = N_DOT;
+               vp = vptr-1;
              }
            else
-             s1 = 0;
+             vp = 0;
 
-       /* s1-> '.' after 000000 or NULL */
+            /* vp-> '.' after 000000 or NULL */
 
            s = strchr (fptr, '/');
            if (s == 0)
@@ -531,18 +528,18 @@ vmsify (char *name, int type)
              }
            else
              if ((nstate == N_DOT)
-                && (s1 != 0)
+                && (vp != 0)
                 && (*(s+1) == 0))
                {
                  if (type == 2)
                    {
-                     *s1 = ']';
+                     *vp = ']';
                      nstate = N_CLOSED;
                    }
                }
            state = 9;
            break;
-
+            }
          case 4:                               /* single '/' at start (9..15) */
            if (*fptr == 0)
              state = 5;
@@ -564,7 +561,9 @@ vmsify (char *name, int type)
              state = 8;
            break;
 
-         case 6:                               /* chars following '/' at start 10..15 */
+         case 6:               /* chars following '/' at start 10..15 */
+            {
+            const char *s;
            *vptr++ = '[';
            nstate = N_OPEN;
            s = strchr (fptr, '/');
@@ -595,24 +594,25 @@ vmsify (char *name, int type)
                state = 9;
              }
            break;
+            }
 
          case 7:                               /* add '.dir' and exit */
            if ((nstate == N_OPEN)
                || (nstate == N_DOT))
              {
-               s = vptr-1;
-               while (s > vmsname)
+               char *vp = vptr-1;
+               while (vp > vmsname)
                  {
-                   if (*s == ']')
+                   if (*vp == ']')
                      {
                        break;
                      }
-                   if (*s == '.')
+                   if (*vp == '.')
                      {
-                       *s = ']';
+                       *vp = ']';
                        break;
                      }
-                   s--;
+                   vp--;
                  }
              }
            strcpy (vptr, ".dir");
@@ -625,7 +625,9 @@ vmsify (char *name, int type)
            state = -1;
            break;
 
-         case 9:                               /* 17..21, fptr -> 1st '/' + 1 */
+         case 9:                       /* 17..21, fptr -> 1st '/' + 1 */
+            {
+            const char *s;
            if (*fptr == 0)
              {
                if (type == 2)
@@ -687,6 +689,7 @@ vmsify (char *name, int type)
                && ((*(fptr+2) == '/')
                    || (*(fptr+2) == 0)) )
              {
+                char *vp;
                fptr += 2;
                if (*fptr == '/')
                  {
@@ -699,29 +702,29 @@ vmsify (char *name, int type)
                else if (*fptr == 0)
                  type = 1;
                vptr--;                         /* vptr -> '.' or ']' */
-               s1 = vptr;
+               vp = vptr;
                for (;;)
                  {
-                   s1--;
-                   if (*s1 == '.')             /* one back */
+                   vp--;
+                   if (*vp == '.')             /* one back */
                      {
-                       vptr = s1;
+                       vptr = vp;
                        nstate = N_OPEN;
                        break;
                      }
-                   if (*s1 == '[')             /* top level reached */
+                   if (*vp == '[')             /* top level reached */
                      {
                        if (*fptr == 0)
                          {
-                           strcpy (s1, "[000000]");
-                           vptr = s1 + 8;
+                           strcpy (vp, "[000000]");
+                           vptr = vp + 8;
                            nstate = N_CLOSED;
                            s = 0;
                            break;
                          }
                        else
                          {
-                           vptr = s1+1;
+                           vptr = vp+1;
                            nstate = N_OPEN;
                            break;
                          }
@@ -756,6 +759,7 @@ vmsify (char *name, int type)
                  }
              }
            break;
+            }
 
          case 10:                              /* 1,2 first is '.' */
            if (*fptr == '.')
@@ -773,7 +777,8 @@ vmsify (char *name, int type)
              {
                if (*fptr != '/')               /* got ..xxx */
                  {
-                   return name;
+                    strcpy (vmsname, name);
+                   return vmsname;
                  }
                do                              /* got ../ */
                  {
@@ -791,42 +796,44 @@ vmsify (char *name, int type)
                while (*fptr == '/');
              }
            {                                   /* got '..' or '../' */
+              char *vp;
              char cwdbuf[MAXPATHLEN+1];
 
-             s1 = getcwd(cwdbuf, MAXPATHLEN);
-             if (s1 == 0)
+             vp = getcwd(cwdbuf, MAXPATHLEN);
+             if (vp == 0)
                {
-                 return "";        /* FIXME, err getcwd */
+                  vmsname[0] = '\0';
+                 return vmsname;    /* FIXME, err getcwd */
                }
-             strcpy (vptr, s1);
-             s = strchr (vptr, ']');
-             if (s != 0)
+             strcpy (vptr, vp);
+             vp = strchr (vptr, ']');
+             if (vp != 0)
                {
                  nstate = N_OPEN;
-                 while (s > vptr)
+                 while (vp > vptr)
                    {
-                     s--;
-                     if (*s == '[')
+                     vp--;
+                     if (*vp == '[')
                        {
-                         s++;
-                         strcpy (s, "000000]");
+                         vp++;
+                         strcpy (vp, "000000]");
                          state = -1;
                          break;
                        }
-                     else if (*s == '.')
+                     else if (*vp == '.')
                        {
                          if (--count == 0)
                            {
                              if (*fptr == 0)   /* had '..' or '../' */
                                {
-                                 *s++ = ']';
+                                 *vp++ = ']';
                                  state = -1;
                                }
                              else                      /* had '../xxx' */
                                {
                                  state = 9;
                                }
-                             *s = 0;
+                             *vp = '\0';
                              break;
                            }
                        }
@@ -841,40 +848,43 @@ vmsify (char *name, int type)
              {
                if (*fptr != '/')
                  {
-                   return name;
+                    strcpy (vmsname, name);
+                   return vmsname;
                  }
                while (*fptr == '/')
                  fptr++;
              }
 
            {
+              char *vp;
              char cwdbuf[MAXPATHLEN+1];
 
-             s1 = getcwd(cwdbuf, MAXPATHLEN);
-             if (s1 == 0)
-               {
-                 return "";        /*FIXME, err getcwd */
-               }
-             strcpy (vptr, s1);
-             if (*fptr == 0)
+             vp = getcwd(cwdbuf, MAXPATHLEN);
+             if (vp == 0)
                {
-                 state = -1;
-                 break;
-               }
-             else
-               {
-                 s = strchr (vptr, ']');
-                 if (s == 0)
-                   {
-                     state = -1;
-                     break;
-                   }
-                 *s = 0;
-                 nstate = N_OPEN;
-                 vptr += strlen (vptr);
-                 state = 9;
+                  vmsname[0] = '\0';
+                 return vmsname;    /*FIXME, err getcwd */
                }
-           }
+             strcpy (vptr, vp);
+            }
+            if (*fptr == 0)
+              {
+                state = -1;
+                break;
+              }
+            else
+              {
+                char *vp = strchr (vptr, ']');
+                if (vp == 0)
+                  {
+                    state = -1;
+                    break;
+                  }
+                *vp = '\0';
+                nstate = N_OPEN;
+                vptr += strlen (vptr);
+                state = 9;
+              }
            break;
        }
 
@@ -903,14 +913,18 @@ vmsify (char *name, int type)
   dev:[dir1.dir2]      //dev/dir1/dir2/
 */
 
-char *
-unixify (char *name)
+const char *
+unixify (const char *name)
 {
   static char piece[512];
-  char *s, *p;
+  const char *s;
+  char *p;
 
   if (strchr (name, '/') != 0)         /* already in unix style */
-    return name;
+    {
+      strcpy (piece, name);
+      return piece;
+    }
 
   p = piece;
   *p = 0;
@@ -921,12 +935,11 @@ unixify (char *name)
 
   if (s != 0)
     {
-      *s = 0;
+      int l = s - name;
       *p++ = '/';
       *p++ = '/';
-      strcpy (p, name);
-      p += strlen (p);
-      *s = ':';
+      strncpy (p, name, l);
+      p += l;
     }
 
   /* directory part */
index e887970..05c8dba 100644 (file)
--- a/vmsjobs.c
+++ b/vmsjobs.c
@@ -1,27 +1,27 @@
 /* --------------- 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.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <string.h>
 #include <descrip.h>
 #include <clidef.h>
 
-extern char *vmsify PARAMS ((char *name, int type));
+char *vmsify (char *name, int type);
 
 static int vms_jobsefnmask = 0;
 
@@ -110,8 +110,11 @@ vms_handle_apos (char *p)
   return p;
 }
 
-/* This is called as an AST when a child process dies (it won't get
-   interrupted by anything except a higher level AST).
+static int ctrlYPressed= 0;
+/* This is called at main or AST level. It is at AST level for DONTWAITFORCHILD
+   and at main level otherwise. In any case it is called when a child process
+   terminated. At AST level it won't get interrupted by anything except a
+   inner mode level AST.
 */
 int
 vmsHandleChildTerm(struct child *child)
@@ -123,6 +126,12 @@ vmsHandleChildTerm(struct child *child)
     vms_jobsefnmask &= ~(1 << (child->efn - 32));
 
     lib$free_ef(&child->efn);
+    if (child->comname)
+      {
+        if (!ISDB (DB_JOBS)&&!ctrlYPressed)
+          unlink (child->comname);
+        free (child->comname);
+      }
 
     (void) sigblock (fatal_signal_mask);
 
@@ -219,8 +228,7 @@ vmsHandleChildTerm(struct child *child)
 static int ctrlMask= LIB$M_CLI_CTRLY;
 static int oldCtrlMask;
 static int setupYAstTried= 0;
-static int pidToAbort= 0;
-static int chan= 0;
+static unsigned short int chan= 0;
 
 static void
 reEnableAst(void)
@@ -228,14 +236,15 @@ reEnableAst(void)
        lib$enable_ctrl (&oldCtrlMask,0);
 }
 
-static void
-astHandler (void)
+static int
+astYHandler (void)
 {
-       if (pidToAbort) {
-               sys$forcex (&pidToAbort, 0, SS$_ABORT);
-               pidToAbort= 0;
-       }
+       struct child *c;
+       for (c = children; c != 0; c = c->next)
+               sys$delprc (&c->pid, 0, 0);
+       ctrlYPressed= 1;
        kill (getpid(),SIGQUIT);
+       return SS$_NORMAL;
 }
 
 static void
@@ -247,32 +256,28 @@ tryToSetupYAst(void)
                short int       status, count;
                int     dvi;
        } iosb;
+       unsigned short int loc_chan;
 
        setupYAstTried++;
 
-       if (!chan) {
-               status= sys$assign(&inputDsc,&chan,0,0);
+       if (chan)
+          loc_chan= chan;
+       else {
+               status= sys$assign(&inputDsc,&loc_chan,0,0);
                if (!(status&SS$_NORMAL)) {
                        lib$signal(status);
                        return;
                }
        }
-       status= sys$qiow (0, chan, IO$_SETMODE|IO$M_CTRLYAST,&iosb,0,0,
-               astHandler,0,0,0,0,0);
-       if (status==SS$_NORMAL)
-               status= iosb.status;
-        if (status==SS$_ILLIOFUNC || status==SS$_NOPRIV) {
-               sys$dassgn(chan);
-#ifdef CTRLY_ENABLED_ANYWAY
-               fprintf (stderr,
-                         _("-warning, CTRL-Y will leave sub-process(es) around.\n"));
-#else
-               return;
-#endif
-       }
-       else if (!(status&SS$_NORMAL)) {
-               sys$dassgn(chan);
-               lib$signal(status);
+       status= sys$qiow (0, loc_chan, IO$_SETMODE|IO$M_CTRLYAST,&iosb,0,0,
+                          astYHandler,0,0,0,0,0);
+        if (status==SS$_NORMAL)
+               status= iosb.status;
+       if (status!=SS$_NORMAL) {
+               if (!chan)
+                       sys$dassgn(loc_chan);
+               if (status!=SS$_ILLIOFUNC && status!=SS$_NOPRIV)
+                       lib$signal(status);
                return;
        }
 
@@ -287,6 +292,8 @@ tryToSetupYAst(void)
                lib$signal(status);
                return;
        }
+       if (!chan)
+               chan = loc_chan;
 }
 
 int
@@ -299,13 +306,14 @@ child_execute_job (char *argv, struct child *child)
   static struct dsc$descriptor_s ofiledsc;
   static struct dsc$descriptor_s efiledsc;
   int have_redirection = 0;
+  int have_append = 0;
   int have_newline = 0;
 
   int spflags = CLI$M_NOWAIT;
   int status;
   char *cmd = alloca (strlen (argv) + 512), *p, *q;
   char ifile[256], ofile[256], efile[256];
-  char *comname = 0;
+  int comnamelen;
   char procname[100];
   int in_string;
 
@@ -314,6 +322,7 @@ child_execute_job (char *argv, struct child *child)
   ifile[0] = 0;
   ofile[0] = 0;
   efile[0] = 0;
+  child->comname = NULL;
 
   DB (DB_JOBS, ("child_execute_job (%s)\n", argv));
 
@@ -383,6 +392,11 @@ child_execute_job (char *argv, struct child *child)
              }
            else
              {
+                if (*(p+1) == '>')
+                  {
+                    have_append = 1;
+                    p += 1;
+                  }
                p = vms_redirect (&ofiledsc, ofile, p);
              }
            *q = ' ';
@@ -481,9 +495,10 @@ child_execute_job (char *argv, struct child *child)
          return 0;
        }
 
-      outfile = open_tmpfile (&comname, "sys$scratch:CMDXXXXXX.COM");
+      outfile = open_tmpfile (&child->comname, "sys$scratch:CMDXXXXXX.COM");
       if (outfile == 0)
        pfatal_with_name (_("fopen (temporary file)"));
+      comnamelen = strlen (child->comname);
 
       if (ifile[0])
        {
@@ -501,9 +516,19 @@ child_execute_job (char *argv, struct child *child)
 
       if (ofile[0])
        {
-         fprintf (outfile, "$ define sys$output %s\n", ofile);
-         DB (DB_JOBS, (_("Redirected output to %s\n"), ofile));
-         ofiledsc.dsc$w_length = 0;
+          if (have_append)
+            {
+              fprintf (outfile, "$ set noon\n");
+              fprintf (outfile, "$ define sys$output %.*s\n", comnamelen-3, child->comname);
+              DB (DB_JOBS, (_("Append output to %s\n"), ofile));
+              ofiledsc.dsc$w_length = 0;
+            }
+          else
+            {
+              fprintf (outfile, "$ define sys$output %s\n", ofile);
+              DB (DB_JOBS, (_("Redirected output to %s\n"), ofile));
+              ofiledsc.dsc$w_length = 0;
+            }
        }
 
       p = sep = q = cmd;
@@ -558,12 +583,25 @@ child_execute_job (char *argv, struct child *child)
            }
        }
 
-      fwrite (p, 1, q - p, outfile);
+      if (*p)
+        {
+          fwrite (p, 1, --q - p, outfile);
       fputc ('\n', outfile);
+        }
+
+      if (have_append)
+        {
+          fprintf (outfile, "$ deassign sys$output ! 'f$verify(0)\n");
+          fprintf (outfile, "$ append:=append\n");
+          fprintf (outfile, "$ delete:=delete\n");
+          fprintf (outfile, "$ append/new %.*s %s\n", comnamelen-3, child->comname, ofile);
+          fprintf (outfile, "$ delete %.*s;*\n", comnamelen-3, child->comname);
+          DB (DB_JOBS, (_("Append %.*s and cleanup\n"), comnamelen-3, child->comname));
+        }
 
       fclose (outfile);
 
-      sprintf (cmd, "$ @%s", comname);
+      sprintf (cmd, "$ @%s", child->comname);
 
       DB (DB_JOBS, (_("Executing %s instead\n"), cmd));
     }
@@ -578,7 +616,15 @@ child_execute_job (char *argv, struct child *child)
     {
       status = lib$get_ef ((unsigned long *)&child->efn);
       if (!(status & 1))
-       return 0;
+        {
+          if (child->comname)
+            {
+              if (!ISDB (DB_JOBS))
+                unlink (child->comname);
+              free (child->comname);
+            }
+          return 0;
+        }
     }
 
   sys$clref (child->efn);
@@ -647,9 +693,7 @@ child_execute_job (char *argv, struct child *child)
                      0, 0, 0);
   if (status & 1)
     {
-      pidToAbort= child->pid;
       status= sys$waitfr (child->efn);
-      pidToAbort= 0;
       vmsHandleChildTerm(child);
     }
 #else
@@ -677,8 +721,5 @@ child_execute_job (char *argv, struct child *child)
         }
     }
 
-  if (comname && !ISDB (DB_JOBS))
-    unlink (comname);
-
   return (status & 1);
 }
diff --git a/vpath.c b/vpath.c
index 0945240..9f41b27 100644 (file)
--- a/vpath.c
+++ b/vpath.c
@@ -1,20 +1,20 @@
 /* Implementation of pattern-matching file search paths 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.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "make.h"
 #include "filedef.h"
@@ -29,10 +29,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 struct vpath
   {
     struct vpath *next;        /* Pointer to next struct in the linked list.  */
-    char *pattern;     /* The pattern to match.  */
-    char *percent;     /* Pointer into `pattern' where the `%' is.  */
+    const char *pattern;/* The pattern to match.  */
+    const char *percent;/* Pointer into `pattern' where the `%' is.  */
     unsigned int patlen;/* Length of the pattern.  */
-    char **searchpath; /* Null-terminated list of directories.  */
+    const char **searchpath; /* Null-terminated list of directories.  */
     unsigned int maxlen;/* Maximum length of any entry in the list.  */
   };
 
@@ -48,11 +48,10 @@ static struct vpath *general_vpath;
 
 static struct vpath *gpaths;
 \f
-static int selective_vpath_search PARAMS ((struct vpath *path, char **file, FILE_TIMESTAMP *mtime_ptr));
 
-/* Reverse the chain of selective VPATH lists so they
-   will be searched in the order given in the makefiles
-   and construct the list from the VPATH variable.  */
+/* Reverse the chain of selective VPATH lists so they will be searched in the
+   order given in the makefiles and construct the list from the VPATH
+   variable.  */
 
 void
 build_vpath_lists ()
@@ -89,13 +88,14 @@ build_vpath_lists ()
     {
       /* Save the list of vpaths.  */
       struct vpath *save_vpaths = vpaths;
+      char gp[] = "%";
 
       /* Empty `vpaths' so the new one will have no next, and `vpaths'
         will still be nil if P contains no existing directories.  */
       vpaths = 0;
 
       /* Parse P.  */
-      construct_vpath_list ("%", p);
+      construct_vpath_list (gp, p);
 
       /* Store the created path as the general path,
         and restore the old list of vpaths.  */
@@ -121,13 +121,14 @@ build_vpath_lists ()
     {
       /* Save the list of vpaths.  */
       struct vpath *save_vpaths = vpaths;
+      char gp[] = "%";
 
       /* Empty `vpaths' so the new one will have no next, and `vpaths'
         will still be nil if P contains no existing directories.  */
       vpaths = 0;
 
       /* Parse P.  */
-      construct_vpath_list ("%", p);
+      construct_vpath_list (gp, p);
 
       /* Store the created path as the GPATH,
         and restore the old list of vpaths.  */
@@ -136,7 +137,7 @@ build_vpath_lists ()
     }
 }
 \f
-/* Construct the VPATH listing for the pattern and searchpath given.
+/* Construct the VPATH listing for the PATTERN and DIRPATH given.
 
    This function is called to generate selective VPATH lists and also for
    the general VPATH list (which is in fact just a selective VPATH that
@@ -144,9 +145,9 @@ build_vpath_lists ()
    linked list of all selective VPATH lists or in the GENERAL_VPATH
    variable.
 
-   If SEARCHPATH is nil, remove all previous listings with the same
+   If DIRPATH is nil, remove all previous listings with the same
    pattern.  If PATTERN is nil, remove all VPATH listings.  Existing
-   and readable directories that are not "." given in the searchpath
+   and readable directories that are not "." given in the DIRPATH
    separated by the path element separator (defined in make.h) are
    loaded into the directory hash table if they are not there already
    and put in the VPATH searchpath for the given pattern with trailing
@@ -158,23 +159,20 @@ build_vpath_lists ()
 void
 construct_vpath_list (char *pattern, char *dirpath)
 {
-  register unsigned int elem;
-  register char *p;
-  register char **vpath;
-  register unsigned int maxvpath;
+  unsigned int elem;
+  char *p;
+  const char **vpath;
+  unsigned int maxvpath;
   unsigned int maxelem;
-  char *percent = NULL;
+  const char *percent = NULL;
 
   if (pattern != 0)
-    {
-      pattern = xstrdup (pattern);
-      percent = find_percent (pattern);
-    }
+    percent = find_percent (pattern);
 
   if (dirpath == 0)
     {
       /* Remove matching listings.  */
-      register struct vpath *path, *lastpath;
+      struct vpath *path, *lastpath;
 
       lastpath = 0;
       path = vpaths;
@@ -194,9 +192,9 @@ construct_vpath_list (char *pattern, char *dirpath)
                lastpath->next = next;
 
              /* Free its unused storage.  */
-             free (path->pattern);
-             free ((char *) path->searchpath);
-             free ((char *) path);
+              /* MSVC erroneously warns without a cast here.  */
+             free ((void *)path->searchpath);
+             free (path);
            }
          else
            lastpath = path;
@@ -204,8 +202,6 @@ construct_vpath_list (char *pattern, char *dirpath)
          path = next;
        }
 
-      if (pattern != 0)
-       free (pattern);
       return;
     }
 
@@ -213,6 +209,10 @@ construct_vpath_list (char *pattern, char *dirpath)
     convert_vpath_to_windows32(dirpath, ';');
 #endif
 
+  /* Skip over any initial separators and blanks.  */
+  while (*dirpath == PATH_SEPARATOR_CHAR || isblank ((unsigned char)*dirpath))
+    ++dirpath;
+
   /* Figure out the maximum number of VPATH entries and put it in
      MAXELEM.  We start with 2, one before the first separator and one
      nil (the list terminator) and increment our estimated number for
@@ -223,15 +223,11 @@ construct_vpath_list (char *pattern, char *dirpath)
     if (*p++ == PATH_SEPARATOR_CHAR || isblank ((unsigned char)*p))
       ++maxelem;
 
-  vpath = (char **) xmalloc (maxelem * sizeof (char *));
+  vpath = xmalloc (maxelem * sizeof (const char *));
   maxvpath = 0;
 
-  /* Skip over any initial separators and blanks.  */
-  p = dirpath;
-  while (*p == PATH_SEPARATOR_CHAR || isblank ((unsigned char)*p))
-    ++p;
-
   elem = 0;
+  p = dirpath;
   while (*p != '\0')
     {
       char *v;
@@ -239,37 +235,36 @@ construct_vpath_list (char *pattern, char *dirpath)
 
       /* Find the end of this entry.  */
       v = p;
-      while (*p != '\0' && *p != PATH_SEPARATOR_CHAR
+      while (*p != '\0'
+#if defined(HAVE_DOS_PATHS) && (PATH_SEPARATOR_CHAR == ':')
+            /* Platforms whose PATH_SEPARATOR_CHAR is ':' and which
+               also define HAVE_DOS_PATHS would like us to recognize
+               colons after the drive letter in the likes of
+               "D:/foo/bar:C:/xyzzy".  */
+            && (*p != PATH_SEPARATOR_CHAR
+                || (p == v + 1 && (p[1] == '/' || p[1] == '\\')))
+#else
+            && *p != PATH_SEPARATOR_CHAR
+#endif
             && !isblank ((unsigned char)*p))
        ++p;
 
       len = p - v;
       /* Make sure there's no trailing slash,
         but still allow "/" as a directory.  */
-#if defined(__MSDOS__) || defined(__EMX__)
+#if defined(__MSDOS__) || defined(__EMX__) || defined(HAVE_DOS_PATHS)
       /* We need also to leave alone a trailing slash in "d:/".  */
       if (len > 3 || (len > 1 && v[1] != ':'))
 #endif
       if (len > 1 && p[-1] == '/')
        --len;
 
+      /* Put the directory on the vpath list.  */
       if (len > 1 || *v != '.')
        {
-         v = savestring (v, len);
-
-         /* Verify that the directory actually exists.  */
-
-         if (dir_file_exists_p (v, ""))
-           {
-             /* It does.  Put it in the list.  */
-             vpath[elem++] = dir_name (v);
-             free (v);
-             if (len > maxvpath)
-               maxvpath = len;
-           }
-         else
-           /* The directory does not exist.  Omit from the list.  */
-           free (v);
+          vpath[elem++] = dir_name (strcache_add_len (v, len));
+          if (len > maxvpath)
+            maxvpath = len;
        }
 
       /* Skip over separators and blanks between entries.  */
@@ -284,40 +279,36 @@ construct_vpath_list (char *pattern, char *dirpath)
         entry, to where the nil-pointer terminator goes.
         Usually this is maxelem - 1.  If not, shrink down.  */
       if (elem < (maxelem - 1))
-       vpath = (char **) xrealloc ((char *) vpath,
-                                   (elem + 1) * sizeof (char *));
+       vpath = xrealloc (vpath, (elem+1) * sizeof (const char *));
 
       /* Put the nil-pointer terminator on the end of the VPATH list.  */
-      vpath[elem] = 0;
+      vpath[elem] = NULL;
 
       /* Construct the vpath structure and put it into the linked list.  */
-      path = (struct vpath *) xmalloc (sizeof (struct vpath));
+      path = xmalloc (sizeof (struct vpath));
       path->searchpath = vpath;
       path->maxlen = maxvpath;
       path->next = vpaths;
       vpaths = path;
 
       /* Set up the members.  */
-      path->pattern = pattern;
-      path->percent = percent;
+      path->pattern = strcache_add (pattern);
       path->patlen = strlen (pattern);
+      path->percent = percent ? path->pattern + (percent - pattern) : 0;
     }
   else
-    {
-      /* There were no entries, so free whatever space we allocated.  */
-      free ((char *) vpath);
-      if (pattern != 0)
-       free (pattern);
-    }
+    /* There were no entries, so free whatever space we allocated.  */
+    /* MSVC erroneously warns without a cast here.  */
+    free ((void *)vpath);
 }
 \f
 /* Search the GPATH list for a pathname string that matches the one passed
    in.  If it is found, return 1.  Otherwise we return 0.  */
 
 int
-gpath_search (char *file, unsigned int len)
+gpath_search (const char *file, unsigned int len)
 {
-  char **gp;
+  const char **gp;
 
   if (gpaths && (len <= gpaths->maxlen))
     for (gp = gpaths->searchpath; *gp != NULL; ++gp)
@@ -327,57 +318,24 @@ gpath_search (char *file, unsigned int len)
   return 0;
 }
 \f
-/* Search the VPATH list whose pattern matches *FILE for a directory
-   where the name pointed to by FILE exists.  If it is found, we set *FILE to
-   the newly malloc'd name of the existing file, *MTIME_PTR (if MTIME_PTR is
-   not NULL) to its modtime (or zero if no stat call was done), and return 1.
-   Otherwise we return 0.  */
-
-int
-vpath_search (char **file, FILE_TIMESTAMP *mtime_ptr)
-{
-  register struct vpath *v;
-
-  /* If there are no VPATH entries or FILENAME starts at the root,
-     there is nothing we can do.  */
-
-  if (**file == '/'
-#ifdef HAVE_DOS_PATHS
-      || **file == '\\'
-      || (*file)[1] == ':'
-#endif
-      || (vpaths == 0 && general_vpath == 0))
-    return 0;
-
-  for (v = vpaths; v != 0; v = v->next)
-    if (pattern_matches (v->pattern, v->percent, *file))
-      if (selective_vpath_search (v, file, mtime_ptr))
-       return 1;
-
-  if (general_vpath != 0
-      && selective_vpath_search (general_vpath, file, mtime_ptr))
-    return 1;
-
-  return 0;
-}
 
+/* Search the given VPATH list for a directory where the name pointed to by
+   FILE exists.  If it is found, we return a cached name of the existing file
+   and set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no
+   stat call was done). Also set the matching directory index in PATH_INDEX
+   if it is not NULL. Otherwise we return NULL.  */
 
-/* Search the given VPATH list for a directory where the name pointed
-   to by FILE exists.  If it is found, we set *FILE to the newly malloc'd
-   name of the existing file, *MTIME_PTR (if MTIME_PTR is not NULL) to
-   its modtime (or zero if no stat call was done), and we return 1.
-   Otherwise we return 0.  */
-
-static int
-selective_vpath_search (struct vpath *path, char **file,
-                        FILE_TIMESTAMP *mtime_ptr)
+static const char *
+selective_vpath_search (struct vpath *path, const char *file,
+                        FILE_TIMESTAMP *mtime_ptr, unsigned int* path_index)
 {
   int not_target;
-  char *name, *n;
-  char *filename;
-  register char **vpath = path->searchpath;
+  char *name;
+  const char *n;
+  const char *filename;
+  const char **vpath = path->searchpath;
   unsigned int maxvpath = path->maxlen;
-  register unsigned int i;
+  unsigned int i;
   unsigned int flen, vlen, name_dplen;
   int exists = 0;
 
@@ -385,73 +343,73 @@ selective_vpath_search (struct vpath *path, char **file,
      If and only if it is NOT a target, we will accept prospective
      files that don't exist but are mentioned in a makefile.  */
   {
-    struct file *f = lookup_file (*file);
+    struct file *f = lookup_file (file);
     not_target = f == 0 || !f->is_target;
   }
 
-  flen = strlen (*file);
+  flen = strlen (file);
 
   /* Split *FILE into a directory prefix and a name-within-directory.
-     NAME_DPLEN gets the length of the prefix; FILENAME gets the
-     pointer to the name-within-directory and FLEN is its length.  */
+     NAME_DPLEN gets the length of the prefix; FILENAME gets the pointer to
+     the name-within-directory and FLEN is its length.  */
 
-  n = strrchr (*file, '/');
+  n = strrchr (file, '/');
 #ifdef HAVE_DOS_PATHS
   /* We need the rightmost slash or backslash.  */
   {
-    char *bslash = strrchr(*file, '\\');
+    const char *bslash = strrchr(file, '\\');
     if (!n || bslash > n)
       n = bslash;
   }
 #endif
-  name_dplen = n != 0 ? n - *file : 0;
-  filename = name_dplen > 0 ? n + 1 : *file;
+  name_dplen = n != 0 ? n - file : 0;
+  filename = name_dplen > 0 ? n + 1 : file;
   if (name_dplen > 0)
     flen -= name_dplen + 1;
 
-  /* Allocate enough space for the biggest VPATH entry,
-     a slash, the directory prefix that came with *FILE,
-     another slash (although this one may not always be
-     necessary), the filename, and a null terminator.  */
-  name = (char *) xmalloc (maxvpath + 1 + name_dplen + 1 + flen + 1);
+  /* Get enough space for the biggest VPATH entry, a slash, the directory
+     prefix that came with FILE, another slash (although this one may not
+     always be necessary), the filename, and a null terminator.  */
+  name = alloca (maxvpath + 1 + name_dplen + 1 + flen + 1);
 
   /* Try each VPATH entry.  */
   for (i = 0; vpath[i] != 0; ++i)
     {
       int exists_in_cache = 0;
+      char *p;
 
-      n = name;
+      p = name;
 
-      /* Put the next VPATH entry into NAME at N and increment N past it.  */
+      /* Put the next VPATH entry into NAME at P and increment P past it.  */
       vlen = strlen (vpath[i]);
-      bcopy (vpath[i], n, vlen);
-      n += vlen;
+      memcpy (p, vpath[i], vlen);
+      p += vlen;
 
       /* Add the directory prefix already in *FILE.  */
       if (name_dplen > 0)
        {
 #ifndef VMS
-         *n++ = '/';
+         *p++ = '/';
 #endif
-         bcopy (*file, n, name_dplen);
-         n += name_dplen;
+         memcpy (p, file, name_dplen);
+         p += name_dplen;
        }
 
 #ifdef HAVE_DOS_PATHS
       /* Cause the next if to treat backslash and slash alike.  */
-      if (n != name && n[-1] == '\\' )
-       n[-1] = '/';
+      if (p != name && p[-1] == '\\' )
+       p[-1] = '/';
 #endif
       /* Now add the name-within-directory at the end of NAME.  */
 #ifndef VMS
-      if (n != name && n[-1] != '/')
+      if (p != name && p[-1] != '/')
        {
-         *n = '/';
-         bcopy (filename, n + 1, flen + 1);
+         *p = '/';
+         memcpy (p + 1, filename, flen + 1);
        }
       else
 #endif
-       bcopy (filename, n, flen + 1);
+       memcpy (p, filename, flen + 1);
 
       /* Check if the file is mentioned in a makefile.  If *FILE is not
         a target, that is enough for us to decide this file exists.
@@ -498,7 +456,7 @@ selective_vpath_search (struct vpath *path, char **file,
 #else
          /* Clobber a null into the name at the last slash.
             Now NAME is the name of the directory to look in.  */
-         *n = '\0';
+         *p = '\0';
 
          /* We know the directory is in the hash table now because either
             construct_vpath_list or the code just above put it there.
@@ -519,7 +477,7 @@ selective_vpath_search (struct vpath *path, char **file,
 
 #ifndef VMS
          /* Put the slash back in NAME.  */
-         *n = '/';
+         *p = '/';
 #endif
 
          if (exists_in_cache)  /* Makefile-mentioned file need not exist.  */
@@ -542,31 +500,88 @@ selective_vpath_search (struct vpath *path, char **file,
             }
 
           /* We have found a file.
-             Store the name we found into *FILE for the caller.  */
-
-          *file = savestring (name, (n + 1 - name) + flen);
-
-          /* If we get here and mtime_ptr hasn't been set, record
+             If we get here and mtime_ptr hasn't been set, record
              UNKNOWN_MTIME to indicate this.  */
           if (mtime_ptr != 0)
             *mtime_ptr = UNKNOWN_MTIME;
 
-          free (name);
-          return 1;
+          /* Store the name we found and return it.  */
+
+          if (path_index)
+            *path_index = i;
+
+          return strcache_add_len (name, (p + 1 - name) + flen);
        }
     }
 
-  free (name);
   return 0;
 }
+
+
+/* Search the VPATH list whose pattern matches FILE for a directory where FILE
+   exists.  If it is found, return the cached name of an existing file, and
+   set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no
+   stat call was done). Also set the matching directory index in VPATH_INDEX
+   and PATH_INDEX if they are not NULL.  Otherwise we return 0.  */
+
+const char *
+vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
+              unsigned int* vpath_index, unsigned int* path_index)
+{
+  struct vpath *v;
+
+  /* If there are no VPATH entries or FILENAME starts at the root,
+     there is nothing we can do.  */
+
+  if (file[0] == '/'
+#ifdef HAVE_DOS_PATHS
+      || file[0] == '\\' || file[1] == ':'
+#endif
+      || (vpaths == 0 && general_vpath == 0))
+    return 0;
+
+  if (vpath_index)
+    {
+      *vpath_index = 0;
+      *path_index = 0;
+    }
+
+  for (v = vpaths; v != 0; v = v->next)
+    {
+      if (pattern_matches (v->pattern, v->percent, file))
+        {
+          const char *p = selective_vpath_search (
+            v, file, mtime_ptr, path_index);
+          if (p)
+            return p;
+        }
+
+      if (vpath_index)
+        ++*vpath_index;
+    }
+
+
+  if (general_vpath != 0)
+    {
+      const char *p = selective_vpath_search (
+        general_vpath, file, mtime_ptr, path_index);
+      if (p)
+        return p;
+    }
+
+  return 0;
+}
+
+
+
 \f
 /* Print the data base of VPATH search paths.  */
 
 void
 print_vpath_data_base (void)
 {
-  register unsigned int nvpaths;
-  register struct vpath *v;
+  unsigned int nvpaths;
+  struct vpath *v;
 
   puts (_("\n# VPATH Search Paths\n"));
 
@@ -593,8 +608,8 @@ print_vpath_data_base (void)
     puts (_("\n# No general (`VPATH' variable) search path."));
   else
     {
-      register char **path = general_vpath->searchpath;
-      register unsigned int i;
+      const char **path = general_vpath->searchpath;
+      unsigned int i;
 
       fputs (_("\n# General (`VPATH' variable) search path:\n# "), stdout);
 
index 7216b62..8c95760 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 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.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
 
 
 # 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.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
-srcdir = .
-top_srcdir = ..
 
 pkgdatadir = $(datadir)/make
-pkglibdir = $(libdir)/make
 pkgincludedir = $(includedir)/make
-top_builddir = ..
+pkglibdir = $(libdir)/make
+pkglibexecdir = $(libexecdir)/make
 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
@@ -51,13 +50,14 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -68,6 +68,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
 libw32_a_AR = $(AR) $(ARFLAGS)
@@ -76,9 +77,10 @@ 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)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -88,15 +90,13 @@ 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
+ACLOCAL = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run aclocal-1.11
 ALLOCA = 
-AMDEP_FALSE = #
-AMDEP_TRUE = 
-AMTAR = ${SHELL} /opt/src/make/make-release/config/missing --run tar
+AMTAR = ${SHELL} /home/psmith/src/make/make-rel/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
+AUTOCONF = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run automake-1.11
 AWK = gawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
@@ -109,16 +109,18 @@ DEPDIR = .deps
 ECHO_C = 
 ECHO_N = -n
 ECHO_T = 
-EGREP = grep -E
+EGREP = /bin/grep -E
 EXEEXT = 
 GETLOADAVG_LIBS = 
 GLOBINC = 
 GLOBLIB = 
 GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
 INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
 INTLLIBS = 
 KMEM_GROUP = 
 LDFLAGS = 
@@ -129,8 +131,9 @@ LIBS = -lrt
 LTLIBICONV = -liconv
 LTLIBINTL = 
 LTLIBOBJS = 
-MAKEINFO = ${SHELL} /opt/src/make/make-release/config/missing --run makeinfo
-MAKE_HOST = i686-pc-linux-gnu
+MAKEINFO = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run makeinfo
+MAKE_HOST = x86_64-unknown-linux-gnu
+MKDIR_P = /bin/mkdir -p
 MKINSTALLDIRS = $(top_builddir)/config/mkinstalldirs
 MSGFMT = /usr/bin/msgfmt
 MSGMERGE = /usr/bin/msgmerge
@@ -139,65 +142,71 @@ OBJEXT = o
 PACKAGE = make
 PACKAGE_BUGREPORT = bug-make@gnu.org
 PACKAGE_NAME = GNU make
-PACKAGE_STRING = GNU make 3.81
+PACKAGE_STRING = GNU make 3.82
 PACKAGE_TARNAME = make
-PACKAGE_VERSION = 3.81
+PACKAGE_URL = http://www.gnu.org/software/make/
+PACKAGE_VERSION = 3.82
 PATH_SEPARATOR = :
 PERL = perl
 POSUB = po
 RANLIB = ranlib
 REMOTE = stub
 SET_MAKE = 
-SHELL = /bin/sh
+SHELL = /bin/bash
 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 = #
+VERSION = 3.82
 XGETTEXT = /usr/bin/xgettext
+abs_builddir = /home/psmith/src/make/make-rel/w32
+abs_srcdir = /home/psmith/src/make/make-rel/w32
+abs_top_builddir = /home/psmith/src/make/make-rel
+abs_top_srcdir = /home/psmith/src/make/make-rel
 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 = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
-datadir = ${prefix}/share
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
 exec_prefix = ${prefix}
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
+htmldir = ${docdir}
 includedir = ${prefix}/include
-infodir = ${prefix}/info
-install_sh = /opt/src/make/make-release/config/install-sh
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/psmith/src/make/make-rel/config/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
 localstatedir = ${prefix}/var
-mandir = ${prefix}/man
-mkdir_p = mkdir -p --
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
 oldincludedir = /usr/include
+pdfdir = ${docdir}
 prefix = /usr/local
 program_transform_name = s,x,x,
+psdir = ${docdir}
 sbindir = ${exec_prefix}/sbin
 sharedstatedir = ${prefix}/com
+srcdir = .
 sysconfdir = ${prefix}/etc
 target_alias = 
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
 noinst_LIBRARIES = libw32.a
 libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
                    pathstuff.c
@@ -211,14 +220,14 @@ $(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; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  w32/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  w32/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu w32/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu w32/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -236,6 +245,7 @@ $(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
+$(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -256,148 +266,154 @@ 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
+       $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+       $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 #      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
+       $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+       $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
 #      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
+       $(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__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
 #      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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        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 \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        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" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__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; \
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -425,6 +441,7 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -445,18 +462,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -476,18 +513,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .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 \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am 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
+       uninstall-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.
index 8c14b8f..b8e2071 100644 (file)
@@ -1,19 +1,20 @@
 # 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.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 noinst_LIBRARIES = libw32.a
 
index 11712d3..c5ea5b5 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
 @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.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -58,6 +57,7 @@ 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/isc-posix.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
@@ -68,6 +68,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
 libw32_a_AR = $(AR) $(ARFLAGS)
@@ -76,9 +77,10 @@ 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)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -90,8 +92,6 @@ 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@
@@ -115,6 +115,8 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -131,6 +133,7 @@ LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
 MSGMERGE = @MSGMERGE@
@@ -141,6 +144,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
@@ -150,21 +154,14 @@ 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@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 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@
@@ -176,28 +173,40 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 noinst_LIBRARIES = libw32.a
 libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
                    pathstuff.c
@@ -211,14 +220,14 @@ $(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; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  w32/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  w32/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu w32/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu w32/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -236,6 +245,7 @@ $(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
+$(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -256,148 +266,154 @@ distclean-compile:
 @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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
 @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
+@am__fastdepCC_TRUE@   $(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@   $(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
 @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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        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 \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        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" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__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; \
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
          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 \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -425,6 +441,7 @@ clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -445,18 +462,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -476,18 +513,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .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 \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am 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
+       uninstall-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.
index 491ff3f..8d66e47 100644 (file)
-/* Directory entry code for Window platforms.\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-\r
-#include <sys/types.h>\r
-#include <sys/stat.h>\r
-#include <errno.h>\r
-#include <string.h>\r
-#include <stdlib.h>\r
-#include "dirent.h"\r
-\r
-\r
-DIR*\r
-opendir(const char* pDirName)\r
-{\r
-       struct stat sb;\r
-       DIR*    pDir;\r
-       char*   pEndDirName;\r
-       int     nBufferLen;\r
-\r
-       /* sanity checks */\r
-       if (!pDirName) {\r
-               errno = EINVAL;\r
-               return NULL;\r
-       }\r
-       if (stat(pDirName, &sb) != 0) {\r
-               errno = ENOENT;\r
-               return NULL;\r
-       }\r
-       if ((sb.st_mode & S_IFMT) != S_IFDIR) {\r
-               errno = ENOTDIR;\r
-               return NULL;\r
-       }\r
-\r
-       /* allocate a DIR structure to return */\r
-       pDir = (DIR *) malloc(sizeof (DIR));\r
-\r
-       if (!pDir)\r
-               return NULL;\r
-\r
-       /* input directory name length */\r
-       nBufferLen = strlen(pDirName);\r
-\r
-       /* copy input directory name to DIR buffer */\r
-       strcpy(pDir->dir_pDirectoryName, pDirName);\r
-\r
-       /* point to end of the copied directory name */\r
-       pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1];\r
-\r
-       /* if directory name did not end in '/' or '\', add '/' */\r
-       if ((*pEndDirName != '/') && (*pEndDirName != '\\')) {\r
-               pEndDirName++;\r
-               *pEndDirName = '/';\r
-       }\r
-\r
-       /* now append the wildcard character to the buffer */\r
-       pEndDirName++;\r
-       *pEndDirName = '*';\r
-       pEndDirName++;\r
-       *pEndDirName = '\0';\r
-\r
-       /* other values defaulted */\r
-       pDir->dir_nNumFiles = 0;\r
-       pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;\r
-       pDir->dir_ulCookie = __DIRENT_COOKIE;\r
-\r
-       return pDir;\r
-}\r
-\r
-void\r
-closedir(DIR *pDir)\r
-{\r
-       /* got a valid pointer? */\r
-       if (!pDir) {\r
-               errno = EINVAL;\r
-               return;\r
-       }\r
-\r
-       /* sanity check that this is a DIR pointer */\r
-       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {\r
-               errno = EINVAL;\r
-               return;\r
-       }\r
-\r
-       /* close the WINDOWS32 directory handle */\r
-       if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)\r
-               FindClose(pDir->dir_hDirHandle);\r
-\r
-       free(pDir);\r
-\r
-       return;\r
-}\r
-\r
-struct dirent *\r
-readdir(DIR* pDir)\r
-{\r
-       WIN32_FIND_DATA wfdFindData;\r
-\r
-       if (!pDir) {\r
-               errno = EINVAL;\r
-               return NULL;\r
-       }\r
-\r
-       /* sanity check that this is a DIR pointer */\r
-       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {\r
-               errno = EINVAL;\r
-               return NULL;\r
-       }\r
-\r
-       if (pDir->dir_nNumFiles == 0) {\r
-               pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);\r
-               if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE)\r
-                       return NULL;\r
-       } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData))\r
-                       return NULL;\r
-\r
-       /* bump count for next call to readdir() or telldir() */\r
-       pDir->dir_nNumFiles++;\r
-\r
-       /* fill in struct dirent values */\r
-       pDir->dir_sdReturn.d_ino = -1;\r
-       strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName);\r
-\r
-       return &pDir->dir_sdReturn;\r
-}\r
-\r
-void\r
-rewinddir(DIR* pDir)\r
-{\r
-       if (!pDir) {\r
-               errno = EINVAL;\r
-               return;\r
-       }\r
-\r
-       /* sanity check that this is a DIR pointer */\r
-       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {\r
-               errno = EINVAL;\r
-               return;\r
-       }\r
-\r
-       /* close the WINDOWS32 directory handle */\r
-       if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)\r
-               if (!FindClose(pDir->dir_hDirHandle))\r
-                       errno = EBADF;\r
-\r
-       /* reset members which control readdir() */\r
-       pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;\r
-       pDir->dir_nNumFiles = 0;\r
-\r
-       return;\r
-}\r
-\r
-int\r
-telldir(DIR* pDir)\r
-{\r
-       if (!pDir) {\r
-               errno = EINVAL;\r
-               return -1;\r
-       }\r
-\r
-       /* sanity check that this is a DIR pointer */\r
-       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {\r
-               errno = EINVAL;\r
-               return -1;\r
-       }\r
-\r
-       /* return number of times readdir() called */\r
-       return pDir->dir_nNumFiles;\r
-}\r
-\r
-void\r
-seekdir(DIR* pDir, long nPosition)\r
-{\r
-       if (!pDir)\r
-               return;\r
-\r
-       /* sanity check that this is a DIR pointer */\r
-       if (pDir->dir_ulCookie != __DIRENT_COOKIE)\r
-               return;\r
-\r
-       /* go back to beginning of directory */\r
-       rewinddir(pDir);\r
-\r
-       /* loop until we have found position we care about */\r
-       for (--nPosition; nPosition && readdir(pDir); nPosition--);\r
-\r
-       /* flag invalid nPosition value */\r
-       if (nPosition)\r
-               errno = EINVAL;\r
-\r
-       return;\r
-}\r
+/* Directory entry code for Window platforms.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+
+#include <config.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include "dirent.h"
+
+
+DIR*
+opendir(const char* pDirName)
+{
+       struct stat sb;
+       DIR*    pDir;
+       char*   pEndDirName;
+       int     nBufferLen;
+
+       /* sanity checks */
+       if (!pDirName) {
+               errno = EINVAL;
+               return NULL;
+       }
+       if (stat(pDirName, &sb) != 0) {
+               errno = ENOENT;
+               return NULL;
+       }
+       if ((sb.st_mode & S_IFMT) != S_IFDIR) {
+               errno = ENOTDIR;
+               return NULL;
+       }
+
+       /* allocate a DIR structure to return */
+       pDir = (DIR *) malloc(sizeof (DIR));
+
+       if (!pDir)
+               return NULL;
+
+       /* input directory name length */
+       nBufferLen = strlen(pDirName);
+
+       /* copy input directory name to DIR buffer */
+       strcpy(pDir->dir_pDirectoryName, pDirName);
+
+       /* point to end of the copied directory name */
+       pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1];
+
+       /* if directory name did not end in '/' or '\', add '/' */
+       if ((*pEndDirName != '/') && (*pEndDirName != '\\')) {
+               pEndDirName++;
+               *pEndDirName = '/';
+       }
+
+       /* now append the wildcard character to the buffer */
+       pEndDirName++;
+       *pEndDirName = '*';
+       pEndDirName++;
+       *pEndDirName = '\0';
+
+       /* other values defaulted */
+       pDir->dir_nNumFiles = 0;
+       pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
+       pDir->dir_ulCookie = __DIRENT_COOKIE;
+
+       return pDir;
+}
+
+void
+closedir(DIR *pDir)
+{
+       /* got a valid pointer? */
+       if (!pDir) {
+               errno = EINVAL;
+               return;
+       }
+
+       /* sanity check that this is a DIR pointer */
+       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
+               errno = EINVAL;
+               return;
+       }
+
+       /* close the WINDOWS32 directory handle */
+       if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
+               FindClose(pDir->dir_hDirHandle);
+
+       free(pDir);
+
+       return;
+}
+
+struct dirent *
+readdir(DIR* pDir)
+{
+       WIN32_FIND_DATA wfdFindData;
+
+       if (!pDir) {
+               errno = EINVAL;
+               return NULL;
+       }
+
+       /* sanity check that this is a DIR pointer */
+       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
+               errno = EINVAL;
+               return NULL;
+       }
+
+       if (pDir->dir_nNumFiles == 0) {
+               pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);
+               if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE)
+                       return NULL;
+       } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData))
+                       return NULL;
+
+       /* bump count for next call to readdir() or telldir() */
+       pDir->dir_nNumFiles++;
+
+       /* fill in struct dirent values */
+       pDir->dir_sdReturn.d_ino = (ino_t)-1;
+       strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName);
+
+       return &pDir->dir_sdReturn;
+}
+
+void
+rewinddir(DIR* pDir)
+{
+       if (!pDir) {
+               errno = EINVAL;
+               return;
+       }
+
+       /* sanity check that this is a DIR pointer */
+       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
+               errno = EINVAL;
+               return;
+       }
+
+       /* close the WINDOWS32 directory handle */
+       if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
+               if (!FindClose(pDir->dir_hDirHandle))
+                       errno = EBADF;
+
+       /* reset members which control readdir() */
+       pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
+       pDir->dir_nNumFiles = 0;
+
+       return;
+}
+
+int
+telldir(DIR* pDir)
+{
+       if (!pDir) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       /* sanity check that this is a DIR pointer */
+       if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       /* return number of times readdir() called */
+       return pDir->dir_nNumFiles;
+}
+
+void
+seekdir(DIR* pDir, long nPosition)
+{
+       if (!pDir)
+               return;
+
+       /* sanity check that this is a DIR pointer */
+       if (pDir->dir_ulCookie != __DIRENT_COOKIE)
+               return;
+
+       /* go back to beginning of directory */
+       rewinddir(pDir);
+
+       /* loop until we have found position we care about */
+       for (--nPosition; nPosition && readdir(pDir); nPosition--);
+
+       /* flag invalid nPosition value */
+       if (nPosition)
+               errno = EINVAL;
+
+       return;
+}
index 2d6247e..6e77c8b 100644 (file)
@@ -1,19 +1,19 @@
 /* Windows version of dirent.h
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _DIRENT_H
 #define _DIRENT_H
index 55af520..e56e822 100644 (file)
@@ -1,26 +1,26 @@
 /* Definitions for Windows path manipulation.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _PATHSTUFF_H
 #define _PATHSTUFF_H
 
-extern char * convert_Path_to_windows32(char *Path, char to_delim);
-extern char * convert_vpath_to_windows32(char *Path, char to_delim);
-extern char * w32ify(char *file, int resolve);
-extern char * getcwd_fs(char *buf, int len);
+char *convert_Path_to_windows32(char *Path, char to_delim);
+char *convert_vpath_to_windows32(char *Path, char to_delim);
+char *w32ify(const char *file, int resolve);
+char *getcwd_fs(char *buf, int len);
 
 #endif
index 2e99425..8166dce 100644 (file)
@@ -1,60 +1,60 @@
-/* Definitions for Windows process invocation.\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-#ifndef SUB_PROC_H\r
-#define SUB_PROC_H\r
-\r
-/*\r
- * Component Name:\r
- *\r
- * $Date: 2006/02/11 22:16:05 $\r
- *\r
- * $Source: /sources/make/make/w32/include/sub_proc.h,v $\r
- *\r
- * $Id: sub_proc.h,v 1.8 2006/02/11 22:16:05 psmith Exp $\r
- */\r
-\r
-#define EXTERN_DECL(entry, args) extern entry args\r
-#define VOID_DECL void\r
-\r
-EXTERN_DECL(HANDLE process_init, (VOID_DECL));\r
-EXTERN_DECL(HANDLE process_init_fd, (HANDLE stdinh, HANDLE stdouth,\r
-       HANDLE stderrh));\r
-EXTERN_DECL(long process_begin, (HANDLE proc, char **argv, char **envp,\r
-       char *exec_path, char *as_user));\r
-EXTERN_DECL(long process_pipe_io, (HANDLE proc, char *stdin_data,\r
-       int stdin_data_len));\r
-EXTERN_DECL(long process_file_io, (HANDLE proc));\r
-EXTERN_DECL(void process_cleanup, (HANDLE proc));\r
-EXTERN_DECL(HANDLE process_wait_for_any, (VOID_DECL));\r
-EXTERN_DECL(void process_register, (HANDLE proc));\r
-EXTERN_DECL(HANDLE process_easy, (char** argv, char** env));\r
-EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal));\r
-EXTERN_DECL(int process_used_slots, (VOID_DECL));\r
-\r
-/* support routines */\r
-EXTERN_DECL(long process_errno, (HANDLE proc));\r
-EXTERN_DECL(long process_last_err, (HANDLE proc));\r
-EXTERN_DECL(long process_exit_code, (HANDLE proc));\r
-EXTERN_DECL(long process_signal, (HANDLE proc));\r
-EXTERN_DECL(char * process_outbuf, (HANDLE proc));\r
-EXTERN_DECL(char * process_errbuf, (HANDLE proc));\r
-EXTERN_DECL(int process_outcnt, (HANDLE proc));\r
-EXTERN_DECL(int process_errcnt, (HANDLE proc));\r
-EXTERN_DECL(void process_pipes, (HANDLE proc, int pipes[3]));\r
-\r
-#endif\r
+/* Definitions for Windows process invocation.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef SUB_PROC_H
+#define SUB_PROC_H
+
+/*
+ * Component Name:
+ *
+ * $Date: 2010/07/13 01:20:43 $
+ *
+ * $Source: /sources/make/make/w32/include/sub_proc.h,v $
+ *
+ * $Id: sub_proc.h,v 1.12 2010/07/13 01:20:43 psmith Exp $
+ */
+
+#define EXTERN_DECL(entry, args) extern entry args
+#define VOID_DECL void
+
+EXTERN_DECL(HANDLE process_init, (VOID_DECL));
+EXTERN_DECL(HANDLE process_init_fd, (HANDLE stdinh, HANDLE stdouth,
+       HANDLE stderrh));
+EXTERN_DECL(long process_begin, (HANDLE proc, char **argv, char **envp,
+       char *exec_path, char *as_user));
+EXTERN_DECL(long process_pipe_io, (HANDLE proc, char *stdin_data,
+       int stdin_data_len));
+EXTERN_DECL(long process_file_io, (HANDLE proc));
+EXTERN_DECL(void process_cleanup, (HANDLE proc));
+EXTERN_DECL(HANDLE process_wait_for_any, (VOID_DECL));
+EXTERN_DECL(void process_register, (HANDLE proc));
+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 */
+EXTERN_DECL(long process_errno, (HANDLE proc));
+EXTERN_DECL(long process_last_err, (HANDLE proc));
+EXTERN_DECL(long process_exit_code, (HANDLE proc));
+EXTERN_DECL(long process_signal, (HANDLE proc));
+EXTERN_DECL(char * process_outbuf, (HANDLE proc));
+EXTERN_DECL(char * process_errbuf, (HANDLE proc));
+EXTERN_DECL(int process_outcnt, (HANDLE proc));
+EXTERN_DECL(int process_errcnt, (HANDLE proc));
+EXTERN_DECL(void process_pipes, (HANDLE proc, int pipes[3]));
+
+#endif
index d2693b4..65369ba 100644 (file)
@@ -1,27 +1,27 @@
-/* Definitions for Windows error handling.\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-#ifndef _W32ERR_H_\r
-#define _W32ERR_H_\r
-\r
-#ifndef EXTERN_DECL\r
-#define EXTERN_DECL(entry, args) entry args\r
-#endif\r
-\r
-EXTERN_DECL(char * map_windows32_error_to_string, (DWORD error));\r
-\r
-#endif /* !_W32ERR_H */\r
+/* Definitions for Windows error handling.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _W32ERR_H_
+#define _W32ERR_H_
+
+#ifndef EXTERN_DECL
+#define EXTERN_DECL(entry, args) entry args
+#endif
+
+EXTERN_DECL(char * map_windows32_error_to_string, (DWORD error));
+
+#endif /* !_W32ERR_H */
index d425657..1f8269e 100644 (file)
@@ -1,23 +1,23 @@
 /* Path conversion for Windows pathnames.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include "make.h"
 #include <string.h>
 #include <stdlib.h>
-#include "make.h"
 #include "pathstuff.h"
 
 /*
@@ -49,6 +49,9 @@ convert_Path_to_windows32(char *Path, char to_delim)
     char *p;            /* points to element of old Path */
 
     /* is this a multi-element Path ? */
+    /* FIXME: Perhaps use ":;\"" in strpbrk to convert all quotes to
+       delimiters as well, as a way to handle quoted directories in
+       PATH?  */
     for (p = Path, etok = strpbrk(p, ":;");
          etok;
          etok = strpbrk(p, ":;"))
@@ -70,11 +73,20 @@ convert_Path_to_windows32(char *Path, char to_delim)
             } else
                 /* all finished, force abort */
                 p += strlen(p);
+        } else if (*p == '"') { /* a quoted directory */
+            for (p++; *p && *p != '"'; p++) /* skip quoted part */
+                ;
+            etok = strpbrk(p, ":;");        /* find next delimiter */
+            if (etok) {
+                *etok = to_delim;
+                p = ++etok;
+           } else
+                p += strlen(p);
         } else {
             /* found another one, no drive letter */
             *etok = to_delim;
             p = ++etok;
-       }
+        }
 
     return Path;
 }
@@ -83,7 +95,7 @@ convert_Path_to_windows32(char *Path, char to_delim)
  * Convert to forward slashes. Resolve to full pathname optionally
  */
 char *
-w32ify(char *filename, int resolve)
+w32ify(const char *filename, int resolve)
 {
     static char w32_path[FILENAME_MAX];
     char *p;
index 90be58d..46c838c 100644 (file)
@@ -2,20 +2,21 @@
 # `build.bat' instead.
 #
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+# 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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.
+# 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.
+# this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #
 #       NMakefile for GNU Make (subproc library)
index 8cb15ab..dee4072 100644 (file)
@@ -11,24 +11,25 @@ cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG
 lib.exe /NOLOGO /OUT:.\WinRel\subproc.lib  .\WinRel/misc.obj  .\WinRel/sub_proc.obj  .\WinRel/w32err.obj\r
 GoTo BuildEnd\r
 :GCCBuild\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o\r
-gcc -mthreads -Wall -gstabs+ -ggdb3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c w32err.c -o ../../w32err.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c w32err.c -o ../../w32err.o\r
 :BuildEnd\r
 \r
 @echo off\r
 rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,\r
-rem 2005, 2006 Free Software Foundation, Inc.\r
+rem 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
 rem This file is part of GNU Make.\r
-\r
-rem GNU Make is free software; you can redistribute it and/or modify it under the\r
-rem terms of the GNU General Public License as published by the Free Software\r
-rem Foundation; either version 2, or (at your option) any later version.\r
-\r
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-rem WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-rem A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-rem You should have received a copy of the GNU General Public License along with\r
-rem GNU Make; see the file COPYING.  If not, write to the Free Software\r
-rem Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\r
+rem\r
+rem GNU Make is free software; you can redistribute it and/or modify it under\r
+rem the terms of the GNU General Public License as published by the Free\r
+rem Software Foundation; either version 3 of the License, or (at your option)\r
+rem any later version.\r
+rem\r
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT\r
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+rem FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for.\r
+rem more details.\r
+rem\r
+rem You should have received a copy of the GNU General Public License along\r
+rem with this program.  If not, see <http://www.gnu.org/licenses/>.\r
index 74af09b..6759c17 100644 (file)
@@ -1,82 +1,83 @@
-/* Process handling for Windows\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-#include <stddef.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <windows.h>\r
-#include "proc.h"\r
-\r
-\r
-/*\r
- * Description:  Convert a NULL string terminated UNIX environment block to\r
- *             an environment block suitable for a windows32 system call\r
- *\r
- * Returns:  TRUE= success, FALSE=fail\r
- *\r
- * Notes/Dependencies:  the environment block is sorted in case-insensitive\r
- *     order, is double-null terminated, and is a char *, not a char **\r
- */\r
-int _cdecl compare(const void *a1, const void *a2)\r
-{\r
-       return _stricoll(*((char**)a1),*((char**)a2));\r
-}\r
-bool_t\r
-arr2envblk(char **arr, char **envblk_out)\r
-{\r
-       char **tmp;\r
-       int size_needed;\r
-       int arrcnt;\r
-       char *ptr;\r
-\r
-       arrcnt = 0;\r
-       while (arr[arrcnt]) {\r
-               arrcnt++;\r
-       }\r
-\r
-       tmp = (char**) calloc(arrcnt + 1, sizeof(char *));\r
-       if (!tmp) {\r
-               return FALSE;\r
-       }\r
-\r
-       arrcnt = 0;\r
-       size_needed = 0;\r
-       while (arr[arrcnt]) {\r
-               tmp[arrcnt] = arr[arrcnt];\r
-               size_needed += strlen(arr[arrcnt]) + 1;\r
-               arrcnt++;\r
-       }\r
-       size_needed++;\r
-\r
-       qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare);\r
-\r
-       ptr = *envblk_out = calloc(size_needed, 1);\r
-       if (!ptr) {\r
-               free(tmp);\r
-               return FALSE;\r
-       }\r
-\r
-       arrcnt = 0;\r
-       while (tmp[arrcnt]) {\r
-               strcpy(ptr, tmp[arrcnt]);\r
-               ptr += strlen(tmp[arrcnt]) + 1;\r
-               arrcnt++;\r
-       }\r
-\r
-        free(tmp);\r
-       return TRUE;\r
-}\r
+/* Process handling for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <windows.h>
+#include "proc.h"
+
+
+/*
+ * Description:  Convert a NULL string terminated UNIX environment block to
+ *             an environment block suitable for a windows32 system call
+ *
+ * Returns:  TRUE= success, FALSE=fail
+ *
+ * Notes/Dependencies:  the environment block is sorted in case-insensitive
+ *     order, is double-null terminated, and is a char *, not a char **
+ */
+int _cdecl compare(const void *a1, const void *a2)
+{
+       return _stricoll(*((char**)a1),*((char**)a2));
+}
+bool_t
+arr2envblk(char **arr, char **envblk_out)
+{
+       char **tmp;
+       int size_needed;
+       int arrcnt;
+       char *ptr;
+
+       arrcnt = 0;
+       while (arr[arrcnt]) {
+               arrcnt++;
+       }
+
+       tmp = (char**) calloc(arrcnt + 1, sizeof(char *));
+       if (!tmp) {
+               return FALSE;
+       }
+
+       arrcnt = 0;
+       size_needed = 0;
+       while (arr[arrcnt]) {
+               tmp[arrcnt] = arr[arrcnt];
+               size_needed += strlen(arr[arrcnt]) + 1;
+               arrcnt++;
+       }
+       size_needed++;
+
+       qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare);
+
+       ptr = *envblk_out = calloc(size_needed, 1);
+       if (!ptr) {
+               free(tmp);
+               return FALSE;
+       }
+
+       arrcnt = 0;
+       while (tmp[arrcnt]) {
+               strcpy(ptr, tmp[arrcnt]);
+               ptr += strlen(tmp[arrcnt]) + 1;
+               arrcnt++;
+       }
+
+       free(tmp);
+       return TRUE;
+}
index 48b4186..00b4bac 100644 (file)
@@ -1,30 +1,30 @@
-/* Definitions for Windows\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-#ifndef  _PROC_H\r
-#define _PROC_H\r
-\r
-typedef int bool_t;\r
-\r
-#define E_SCALL                101\r
-#define E_IO           102\r
-#define E_NO_MEM       103\r
-#define E_FORK         104\r
-\r
-extern bool_t arr2envblk(char **arr, char **envblk_out);\r
-\r
-#endif\r
+/* Definitions for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef  _PROC_H
+#define _PROC_H
+
+typedef int bool_t;
+
+#define E_SCALL                101
+#define E_IO           102
+#define E_NO_MEM       103
+#define E_FORK         104
+
+extern bool_t arr2envblk(char **arr, char **envblk_out);
+
+#endif
index 8ba9ac3..dcb77bf 100644 (file)
@@ -1,22 +1,28 @@
 /* Process handling for Windows.
 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006 Free Software Foundation, Inc.
+2006, 2007, 2008, 2009, 2010 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.
+Foundation; either version 3 of the License, 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.  */
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include <config.h>
 #include <stdlib.h>
 #include <stdio.h>
+#ifdef _MSC_VER
+# include <stddef.h>    /* for intptr_t */
+#else
+# include <stdint.h>
+#endif
 #include <process.h>  /* for msvc _beginthreadex, _endthreadex */
 #include <signal.h>
 #include <windows.h>
@@ -24,15 +30,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */
 #include "sub_proc.h"
 #include "proc.h"
 #include "w32err.h"
-#include "config.h"
 #include "debug.h"
 
 static char *make_command_line(char *shell_name, char *exec_path, char **argv);
+extern char *xmalloc (unsigned int);
 
 typedef struct sub_process_t {
-       int sv_stdin[2];
-       int sv_stdout[2];
-       int sv_stderr[2];
+       intptr_t sv_stdin[2];
+       intptr_t sv_stdout[2];
+       intptr_t sv_stderr[2];
        int using_pipes;
        char *inp;
        DWORD incnt;
@@ -40,7 +46,7 @@ typedef struct sub_process_t {
        volatile DWORD outcnt;
        char * volatile errp;
        volatile DWORD errcnt;
-       int pid;
+       pid_t pid;
        int exit_code;
        int signal;
        long last_err;
@@ -309,12 +315,12 @@ process_init()
                pproc->lerrno = E_SCALL;
                return((HANDLE)pproc);
        }
-       pproc->sv_stdin[0]  = (int) stdin_pipes[0];
-       pproc->sv_stdin[1]  = (int) stdin_pipes[1];
-       pproc->sv_stdout[0] = (int) stdout_pipes[0];
-       pproc->sv_stdout[1] = (int) stdout_pipes[1];
-       pproc->sv_stderr[0] = (int) stderr_pipes[0];
-       pproc->sv_stderr[1] = (int) stderr_pipes[1];
+       pproc->sv_stdin[0]  = (intptr_t) stdin_pipes[0];
+       pproc->sv_stdin[1]  = (intptr_t) stdin_pipes[1];
+       pproc->sv_stdout[0] = (intptr_t) stdout_pipes[0];
+       pproc->sv_stdout[1] = (intptr_t) stdout_pipes[1];
+       pproc->sv_stderr[0] = (intptr_t) stderr_pipes[0];
+       pproc->sv_stderr[1] = (intptr_t) stderr_pipes[1];
 
        pproc->using_pipes = 1;
 
@@ -336,9 +342,9 @@ process_init_fd(HANDLE stdinh, HANDLE stdouth, HANDLE stderrh)
         * Just pass the provided file handles to the 'child side' of the
         * pipe, bypassing pipes altogether.
         */
-       pproc->sv_stdin[1]  = (int) stdinh;
-       pproc->sv_stdout[1] = (int) stdouth;
-       pproc->sv_stderr[1] = (int) stderrh;
+       pproc->sv_stdin[1]  = (intptr_t) stdinh;
+       pproc->sv_stdout[1] = (intptr_t) stdouth;
+       pproc->sv_stderr[1] = (intptr_t) stderrh;
 
        pproc->last_err = pproc->lerrno = 0;
 
@@ -347,53 +353,54 @@ process_init_fd(HANDLE stdinh, HANDLE stdouth, HANDLE stderrh)
 
 
 static HANDLE
-find_file(char *exec_path, LPOFSTRUCT file_info)
+find_file(const char *exec_path, const char *path_var,
+         char *full_fname, DWORD full_len)
 {
        HANDLE exec_handle;
        char *fname;
        char *ext;
+       DWORD req_len;
+       int i;
+       static const char *extensions[] =
+         /* Should .com come before no-extension case?  */
+         { ".exe", ".cmd", ".bat", "", ".com", NULL };
 
-       fname = malloc(strlen(exec_path) + 5);
+       fname = xmalloc(strlen(exec_path) + 5);
        strcpy(fname, exec_path);
        ext = fname + strlen(fname);
 
-       strcpy(ext, ".exe");
-       if ((exec_handle = (HANDLE)OpenFile(fname, file_info,
-                       OF_READ | OF_SHARE_COMPAT)) != (HANDLE)HFILE_ERROR) {
-               free(fname);
-               return(exec_handle);
-       }
-
-       strcpy(ext, ".cmd");
-       if ((exec_handle = (HANDLE)OpenFile(fname, file_info,
-                       OF_READ | OF_SHARE_COMPAT)) != (HANDLE)HFILE_ERROR) {
-               free(fname);
-               return(exec_handle);
-       }
-
-       strcpy(ext, ".bat");
-       if ((exec_handle = (HANDLE)OpenFile(fname, file_info,
-                       OF_READ | OF_SHARE_COMPAT)) != (HANDLE)HFILE_ERROR) {
-               free(fname);
-               return(exec_handle);
-       }
-
-       /* should .com come before this case? */
-       if ((exec_handle = (HANDLE)OpenFile(exec_path, file_info,
-                       OF_READ | OF_SHARE_COMPAT)) != (HANDLE)HFILE_ERROR) {
-               free(fname);
-               return(exec_handle);
-       }
-
-       strcpy(ext, ".com");
-       if ((exec_handle = (HANDLE)OpenFile(fname, file_info,
-                       OF_READ | OF_SHARE_COMPAT)) != (HANDLE)HFILE_ERROR) {
-               free(fname);
-               return(exec_handle);
+       for (i = 0; extensions[i]; i++) {
+               strcpy(ext, extensions[i]);
+               if (((req_len = SearchPath (path_var, fname, NULL, full_len,
+                                           full_fname, NULL)) > 0
+                    /* For compatibility with previous code, which
+                       used OpenFile, and with Windows operation in
+                       general, also look in various default
+                       locations, such as Windows directory and
+                       Windows System directory.  Warning: this also
+                       searches PATH in the Make's environment, which
+                       might not be what the Makefile wants, but it
+                       seems to be OK as a fallback, after the
+                       previous SearchPath failed to find on child's
+                       PATH.  */
+                    || (req_len = SearchPath (NULL, fname, NULL, full_len,
+                                              full_fname, NULL)) > 0)
+                   && req_len <= full_len
+                   && (exec_handle =
+                               CreateFile(full_fname,
+                                          GENERIC_READ,
+                                          FILE_SHARE_READ | FILE_SHARE_WRITE,
+                                          NULL,
+                                          OPEN_EXISTING,
+                                          FILE_ATTRIBUTE_NORMAL,
+                                          NULL)) != INVALID_HANDLE_VALUE) {
+                       free(fname);
+                       return(exec_handle);
+               }
        }
 
        free(fname);
-       return(exec_handle);
+       return INVALID_HANDLE_VALUE;
 }
 
 
@@ -416,6 +423,9 @@ process_begin(
        char *shell_name = 0;
        int file_not_found=0;
        HANDLE exec_handle;
+       char exec_fname[MAX_PATH];
+       const char *path_var = NULL;
+       char **ep;
        char buf[256];
        DWORD bytes_returned;
        DWORD flags;
@@ -423,8 +433,6 @@ process_begin(
        STARTUPINFO startInfo;
        PROCESS_INFORMATION procInfo;
        char *envblk=NULL;
-       OFSTRUCT file_info;
-
 
        /*
         *  Shell script detection...  if the exec_path starts with #! then
@@ -433,16 +441,27 @@ process_begin(
         *  hard-code the path to the shell or perl or whatever:  Instead, we
         *  assume it's in the path somewhere (generally, the NT tools
         *  bin directory)
-        *  We use OpenFile here because it is capable of searching the Path.
         */
 
-       exec_handle = find_file(exec_path, &file_info);
+       /* Use the Makefile's value of PATH to look for the program to
+          execute, because it could be different from Make's PATH
+          (e.g., if the target sets its own value.  */
+       if (envp)
+               for (ep = envp; *ep; ep++) {
+                       if (strncmp (*ep, "PATH=", 5) == 0
+                           || strncmp (*ep, "Path=", 5) == 0) {
+                               path_var = *ep + 5;
+                               break;
+                       }
+               }
+       exec_handle = find_file(exec_path, path_var,
+                               exec_fname, sizeof(exec_fname));
 
        /*
-        * If we couldn't open the file, just assume that Windows32 will be able
-        * to find and execute it.
+        * If we couldn't open the file, just assume that Windows will be
+        * somehow able to find and execute it.
         */
-       if (exec_handle == (HANDLE)HFILE_ERROR) {
+       if (exec_handle == INVALID_HANDLE_VALUE) {
                file_not_found++;
        }
        else {
@@ -496,8 +515,7 @@ process_begin(
        if (file_not_found)
                command_line = make_command_line( shell_name, exec_path, argv);
        else
-               command_line = make_command_line( shell_name, file_info.szPathName,
-                                argv);
+               command_line = make_command_line( shell_name, exec_fname, argv);
 
        if ( command_line == NULL ) {
                pproc->last_err = 0;
@@ -517,7 +535,7 @@ process_begin(
        if ((shell_name) || (file_not_found)) {
                exec_path = 0;  /* Search for the program in %Path% */
        } else {
-               exec_path = file_info.szPathName;
+               exec_path = exec_fname;
        }
 
        /*
@@ -562,7 +580,7 @@ process_begin(
                }
        }
 
-       pproc->pid = (int)procInfo.hProcess;
+       pproc->pid = (pid_t)procInfo.hProcess;
        /* Close the thread handle -- we'll just watch the process */
        CloseHandle(procInfo.hThread);
 
index 47716d5..80d796e 100644 (file)
@@ -1,71 +1,70 @@
-/* Error handling for Windows\r
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-2006 Free Software Foundation, Inc.\r
-This file is part of GNU Make.\r
-\r
-GNU Make is free software; you can redistribute it and/or modify it under the\r
-terms of the GNU General Public License as published by the Free Software\r
-Foundation; either version 2, or (at your option) any later version.\r
-\r
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY\r
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License along with\r
-GNU Make; see the file COPYING.  If not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */\r
-\r
-#include <windows.h>\r
-#include "w32err.h"\r
-\r
-/*\r
- * Description: the windows32 version of perror()\r
- *\r
- * Returns:  a pointer to a static error\r
- *\r
- * Notes/Dependencies:  I got this from\r
- *      comp.os.ms-windows.programmer.win32\r
- */\r
-char *\r
-map_windows32_error_to_string (DWORD ercode) {\r
-/* __declspec (thread) necessary if you will use multiple threads on MSVC */\r
-#ifdef _MSC_VER\r
-__declspec (thread) static char szMessageBuffer[128];\r
-#else\r
-static char szMessageBuffer[128];\r
-#endif\r
-       /* Fill message buffer with a default message in\r
-        * case FormatMessage fails\r
-        */\r
-    wsprintf (szMessageBuffer, "Error %ld\n", ercode);\r
-\r
-       /*\r
-        *  Special code for winsock error handling.\r
-        */\r
-       if (ercode > WSABASEERR) {\r
-               HMODULE hModule = GetModuleHandle("wsock32");\r
-               if (hModule != NULL) {\r
-                       FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,\r
-                               hModule,\r
-                               ercode,\r
-                               LANG_NEUTRAL,\r
-                               szMessageBuffer,\r
-                               sizeof(szMessageBuffer),\r
-                               NULL);\r
-                       FreeLibrary(hModule);\r
-               }\r
-       } else {\r
-               /*\r
-                *  Default system message handling\r
-                */\r
-       FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,\r
-                  NULL,\r
-                  ercode,\r
-                  LANG_NEUTRAL,\r
-                  szMessageBuffer,\r
-                  sizeof(szMessageBuffer),\r
-                  NULL);\r
-       }\r
-    return szMessageBuffer;\r
-}\r
-\r
+/* Error handling for Windows
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009, 2010 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 3 of the License, 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
+this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <windows.h>
+#include "w32err.h"
+
+/*
+ * Description: the windows32 version of perror()
+ *
+ * Returns:  a pointer to a static error
+ *
+ * Notes/Dependencies:  I got this from
+ *      comp.os.ms-windows.programmer.win32
+ */
+char *
+map_windows32_error_to_string (DWORD ercode) {
+/* __declspec (thread) necessary if you will use multiple threads on MSVC */
+#ifdef _MSC_VER
+__declspec (thread) static char szMessageBuffer[128];
+#else
+static char szMessageBuffer[128];
+#endif
+       /* Fill message buffer with a default message in
+        * case FormatMessage fails
+        */
+    wsprintf (szMessageBuffer, "Error %ld\n", ercode);
+
+       /*
+        *  Special code for winsock error handling.
+        */
+       if (ercode > WSABASEERR) {
+               HMODULE hModule = GetModuleHandle("wsock32");
+               if (hModule != NULL) {
+                       FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
+                               hModule,
+                               ercode,
+                               LANG_NEUTRAL,
+                               szMessageBuffer,
+                               sizeof(szMessageBuffer),
+                               NULL);
+                       FreeLibrary(hModule);
+               }
+       } else {
+               /*
+                *  Default system message handling
+                */
+       FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
+                  NULL,
+                  ercode,
+                  LANG_NEUTRAL,
+                  szMessageBuffer,
+                  sizeof(szMessageBuffer),
+                  NULL);
+       }
+    return szMessageBuffer;
+}