Imported Upstream version 4.0 sandbox/kevinthierry/upstream upstream/4.0
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Wed, 5 Nov 2014 07:27:15 +0000 (08:27 +0100)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Wed, 5 Nov 2014 07:27:15 +0000 (08:27 +0100)
293 files changed:
ABOUT-NLS
AUTHORS
ChangeLog
Makefile.DOS
Makefile.am
Makefile.ami
Makefile.in
NEWS
NMakefile
README
README.Amiga
README.DOS
README.OS2
README.VMS [moved from readme.vms with 63% similarity]
README.W32
README.customs
SMakefile
acinclude.m4
aclocal.m4
alloca.c
amiga.c
amiga.h
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/codeset.m4 [deleted file]
config/compile
config/config.guess
config/config.rpath
config/config.sub
config/depcomp
config/dospaths.m4
config/gettext.m4
config/glibc21.m4 [deleted file]
config/iconv.m4
config/install-sh
config/intdiv0.m4 [deleted file]
config/intlmacosx.m4 [new file with mode: 0644]
config/intmax.m4 [deleted file]
config/inttypes-pri.m4 [deleted file]
config/inttypes.m4 [deleted file]
config/inttypes_h.m4 [deleted file]
config/isc-posix.m4 [deleted file]
config/lcmessage.m4 [deleted file]
config/lib-ld.m4
config/lib-link.m4
config/lib-prefix.m4
config/longdouble.m4 [deleted file]
config/longlong.m4 [deleted file]
config/mdate-sh
config/missing
config/mkinstalldirs [deleted file]
config/nls.m4
config/po.m4
config/printf-posix.m4 [deleted file]
config/progtest.m4
config/signed.m4 [deleted file]
config/size_max.m4 [deleted file]
config/stdint_h.m4 [deleted file]
config/texinfo.tex
config/uintmax_t.m4 [deleted file]
config/ulonglong.m4 [deleted file]
config/wchar_t.m4 [deleted file]
config/wint_t.m4 [deleted file]
config/xsize.m4 [deleted file]
configh.dos
configure
configure.ac [new file with mode: 0644]
configure.bat
configure.in [deleted file]
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/Makefile.in
glob/glob.h
gmk-default.h [new file with mode: 0644]
gmk-default.scm [new file with mode: 0644]
gnumake.h [new file with mode: 0644]
guile.c [new file with mode: 0644]
hash.c
hash.h
implicit.c
job.c
job.h
load.c [new file with mode: 0644]
loadapi.c [new file with mode: 0644]
main.c
make.1
make.lnk
make_msvc_net2003.vcproj
makefile.com
makefile.vms
makeint.h [moved from make.h with 77% similarity]
misc.c
output.c [new file with mode: 0644]
output.h [new file with mode: 0644]
po/ChangeLog
po/LINGUAS
po/Makefile.in.in
po/Makevars
po/POTFILES.in
po/Rules-quot
po/be.gmo
po/be.po
po/cs.gmo [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
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
po/it.po
po/ja.gmo
po/ja.po
po/ko.gmo
po/ko.po
po/lt.gmo
po/lt.po
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/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
remake.c
remote-cstms.c
remote-stub.c
rule.c
rule.h
signame.c
strcache.c
subproc.bat
tests/ChangeLog
tests/NEWS
tests/README
tests/guile.supp [new file with mode: 0644]
tests/mkshadow
tests/run_make_tests.pl [changed mode: 0755->0644]
tests/scripts/features/archives [new file with mode: 0644]
tests/scripts/features/default_names
tests/scripts/features/double_colon
tests/scripts/features/errors
tests/scripts/features/escape
tests/scripts/features/include
tests/scripts/features/jobserver [new file with mode: 0644]
tests/scripts/features/load [new file with mode: 0644]
tests/scripts/features/loadapi [new file with mode: 0644]
tests/scripts/features/mult_rules
tests/scripts/features/output-sync [new file with mode: 0644]
tests/scripts/features/parallelism
tests/scripts/features/patspecific_vars
tests/scripts/features/patternrules
tests/scripts/features/recursion
tests/scripts/features/reinvoke
tests/scripts/features/rule_glob [new file with mode: 0644]
tests/scripts/features/se_explicit
tests/scripts/features/se_implicit
tests/scripts/features/shell_assignment [new file with mode: 0644]
tests/scripts/features/targetvars
tests/scripts/features/utf8 [new file with mode: 0644]
tests/scripts/features/varnesting
tests/scripts/features/vpath
tests/scripts/features/vpath3
tests/scripts/features/vpathgpath
tests/scripts/features/vpathplus
tests/scripts/functions/call
tests/scripts/functions/file [new file with mode: 0644]
tests/scripts/functions/filter-out
tests/scripts/functions/foreach
tests/scripts/functions/guile [new file with mode: 0644]
tests/scripts/functions/sort
tests/scripts/functions/wildcard
tests/scripts/functions/word
tests/scripts/misc/bs-nl [new file with mode: 0644]
tests/scripts/misc/fopen-fail [new file with mode: 0644]
tests/scripts/misc/general3
tests/scripts/options/dash-B
tests/scripts/options/dash-C
tests/scripts/options/dash-I
tests/scripts/options/dash-W
tests/scripts/options/dash-k
tests/scripts/options/dash-n
tests/scripts/options/eval
tests/scripts/options/print-directory [new file with mode: 0644]
tests/scripts/options/symlinks
tests/scripts/options/warn-undefined-variables
tests/scripts/targets/DEFAULT
tests/scripts/targets/INTERMEDIATE
tests/scripts/targets/ONESHELL
tests/scripts/targets/POSIX
tests/scripts/targets/SECONDARY
tests/scripts/variables/DEFAULT_GOAL
tests/scripts/variables/GNUMAKEFLAGS [new file with mode: 0644]
tests/scripts/variables/LIBPATTERNS
tests/scripts/variables/MAKE
tests/scripts/variables/MAKEFLAGS
tests/scripts/variables/MAKE_RESTARTS
tests/scripts/variables/SHELL
tests/scripts/variables/define
tests/scripts/variables/flavors
tests/scripts/variables/private
tests/scripts/variables/special
tests/test_driver.pl
variable.c
variable.h
version.c
vmsdir.h
vmsfunctions.c
vmsify.c
vmsjobs.c
vpath.c
w32/.deps/libw32_a-misc.Po [deleted file]
w32/.deps/libw32_a-pathstuff.Po [deleted file]
w32/.deps/libw32_a-sub_proc.Po [deleted file]
w32/.deps/libw32_a-w32err.Po [deleted file]
w32/Makefile [deleted file]
w32/Makefile.am
w32/Makefile.in
w32/compat/dirent.c
w32/compat/posixfcn.c [new file with mode: 0644]
w32/include/dirent.h
w32/include/dlfcn.h [new file with mode: 0644]
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

index 2f50c66..b1de1b6 100644 (file)
--- a/ABOUT-NLS
+++ b/ABOUT-NLS
@@ -1,10 +1,11 @@
-Notes on the Free Translation Project
-*************************************
+Notes on the Free Translation Project
+***************************************
 
 Free software is going international!  The Free Translation Project is
 a way to get maintainers of free software, translators, and users all
-together, so that will gradually become able to speak many languages.
-A few packages already provide translations for their messages.
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
 
    If you found this `ABOUT-NLS' file inside a distribution, you may
 assume that the distributed package does use GNU `gettext' internally,
@@ -15,38 +16,10 @@ this package with messages translated.
    Installers will find here some useful hints.  These notes also
 explain how users should proceed for getting the programs to use the
 available translations.  They tell how people wanting to contribute and
-work at translations should contact the appropriate team.
+work on translations can contact the appropriate team.
 
-   When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used.  The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-Quick configuration advice
-==========================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
-     ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed.  So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation.  Future versions of GNU `gettext' will
-very likely convey even more functionality.  So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
-   So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-INSTALL Matters
-===============
+1.1 INSTALL Matters
+===================
 
 Some packages are "localizable" when properly installed; the programs
 they contain can be made to speak your own native language.  Most such
@@ -55,38 +28,21 @@ internationalization, predating GNU `gettext'.
 
    By default, this package will be installed to allow translation of
 messages.  It will automatically detect whether the system already
-provides the GNU `gettext' functions.  If not, the GNU `gettext' own
-library will be used.  This library is wholly contained within this
-package, usually in the `intl/' subdirectory, so prior installation of
-the GNU `gettext' package is _not_ required.  Installers may use
-special options at configuration time for changing the default
-behaviour.  The commands:
-
-     ./configure --with-included-gettext
+provides the GNU `gettext' functions.  Installers may use special
+options at configuration time for changing the default behaviour.  The
+command:
+
      ./configure --disable-nls
 
-will respectively bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
+will _totally_ disable translation of messages.
 
    When you already have GNU `gettext' installed on your system and run
 configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this.  This might be not what is desirable.  You
-should use the more recent version of the GNU `gettext' library.  I.e.
-if the file `intl/VERSION' shows that the library which comes with this
-package is more recent, you should use
-
-     ./configure --with-included-gettext
-
-to prevent auto-detection.
+probably detect the previously built and installed `libintl' library
+and will decide to use it.  If not, you may have to to use the
+`--with-libintl-prefix' option to tell `configure' where to look for it.
 
-   The configuration process will not test for the `catgets' function
-and therefore it will not be used.  The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
-   Internationalized packages have usually many `po/LL.po' files, where
+   Internationalized packages usually have many `po/LL.po' files, where
 LL gives an ISO 639 two-letter code identifying the language.  Unless
 translations have been forbidden at `configure' time by using the
 `--disable-nls' switch, all available translations are installed
@@ -95,13 +51,16 @@ may be set, prior to configuration, to limit the installed set.
 `LINGUAS' should then contain a space separated list of two-letter
 codes, stating which languages are allowed.
 
-Using This Package
-==================
+1.2 Using This Package
+======================
 
 As a user, if your language has been installed for this package, you
 only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination.  Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code.  For example, let's
+`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
+`LC_xxx' environment variables set, you should unset them before
+setting `LANG', otherwise the setting of `LANG' will not have the
+desired effect.  Here `LL' is an ISO 639 two-letter language code, and
+`CC' is an ISO 3166 two-letter country code.  For example, let's
 suppose that you speak German and live in Germany.  At the shell
 prompt, merely execute `setenv LANG de_DE' (in `csh'),
 `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
@@ -117,8 +76,8 @@ country code serves to distinguish the dialects.
 language and `CC' denoting the country, is the one use on systems based
 on GNU libc.  On other systems, some variations of this scheme are
 used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
 
    Not all programs have translations for all languages.  By default, an
 English message is shown in place of a nonexistent translation.  If you
@@ -144,16 +103,15 @@ to denote the language's main dialect.  For example, `de' is equivalent
 to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
 (Portuguese as spoken in Portugal) in this context.
 
-Translating Teams
-=================
+1.3 Translating Teams
+=====================
 
 For the Free Translation Project to be a success, we need interested
 people who like their own language and write it well, and who are also
 able to synergize with other translators speaking the same language.
 Each translation team has its own mailing list.  The up-to-date list of
 teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
+`http://translationproject.org/', in the "Teams" area.
 
    If you'd like to volunteer to _work_ at translating messages, you
 should become a member of the translating team for your own language.
@@ -167,569 +125,1125 @@ message to `sv-request@li.org', having this message body:
 _actively_ in translations, or at solving translational difficulties,
 rather than merely lurking around.  If your team does not exist yet and
 you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation@iro.umontreal.ca' to reach the
-coordinator for all translator teams.
+get started, please write to `coordinator@translationproject.org' to
+reach the coordinator for all translator teams.
 
    The English team is special.  It works at improving and uniformizing
-the terminology in use.  Proven linguistic skill are praised more than
-programming skill, here.
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
 
-Available Packages
-==================
+1.4 Available Packages
+======================
 
 Languages are not equally supported in all packages.  The following
-matrix shows the current state of internationalization, as of January
-2004.  The matrix shows, in regard of each package, for which languages
+matrix shows the current state of internationalization, as of June
+2010.  The matrix shows, in regard of each package, for which languages
 PO files have been submitted to translation coordination, with a
 translation percentage of at least 50%.
 
-     Ready PO files       af am ar az be bg bs ca cs da de el en en_GB eo es
-                        +----------------------------------------------------+
-     a2ps               |             []             [] [] []                |
-     aegis              |                               ()                   |
-     ant-phone          |                               ()                   |
-     anubis             |                                                    |
-     ap-utils           |                                                    |
-     aspell             |             []                                     |
-     bash               |                      []       []             [] [] |
-     batchelor          |                                                    |
-     bfd                |                            []                   [] |
-     binutils           |                            []                   [] |
-     bison              |                            [] []                [] |
-     bluez-pin          | []                      []                   []    |
-     clisp              |                                                    |
-     clisp              |                               []    []          [] |
-     console-tools      |                         []    []                   |
-     coreutils          |                      []    [] []                [] |
-     cpio               |                            [] []                [] |
-     darkstat           |                []          ()                   [] |
-     diffutils          |                      [] [] [] [] []          [] [] |
-     e2fsprogs          |                         []    []                [] |
-     enscript           |                      []    [] []        []         |
-     error              |                      []    [] []        []      [] |
-     fetchmail          |                      [] () [] [] []             [] |
-     fileutils          |                            [] []                [] |
-     findutils          |             []       []    [] [] []          [] [] |
-     flex               |                      []    [] []                [] |
-     fslint             |                                                    |
-     gas                |                                                 [] |
-     gawk               |                      []    [] []                [] |
-     gbiff              |                               []                   |
-     gcal               |                      []                            |
-     gcc                |                            []                   [] |
-     gettext            |             []       []    [] []                [] |
-     gettext-examples   | []                   []       []                [] |
-     gettext-runtime    |             []       []    [] []                [] |
-     gettext-tools      |                      []       []                [] |
-     gimp-print         |                         [] [] []        []      [] |
-     gliv               |                                                    |
-     glunarclock        |                            [] []                   |
-     gnubiff            |                               []                   |
-     gnucash            |                         []    ()        []      [] |
-     gnucash-glossary   |                            [] ()                [] |
-     gnupg              |                      [] ()    [] []          [] [] |
-     gpe-aerial         |                         []                         |
-     gpe-beam           |                         []    []                   |
-     gpe-calendar       |                         []    []                   |
-     gpe-clock          |                         []    []                   |
-     gpe-conf           |                         []    []                   |
-     gpe-contacts       |                         []    []                   |
-     gpe-edit           |                         []                         |
-     gpe-go             |                         []                         |
-     gpe-login          |                         []    []                   |
-     gpe-ownerinfo      |                         []    []                   |
-     gpe-sketchbook     |                         []    []                   |
-     gpe-su             |                         []    []                   |
-     gpe-taskmanager    |                         []    []                   |
-     gpe-timesheet      |                         []                         |
-     gpe-today          |                         []    []                   |
-     gpe-todo           |                         []    []                   |
-     gphoto2            |                         [] [] []                [] |
-     gprof              |                            [] []                [] |
-     gpsdrive           |                               ()    ()          () |
-     gramadoir          |                               []                   |
-     grep               |             [] []    []       [] []             [] |
-     gretl              |                                                 [] |
-     gtick              | []                            ()                   |
-     hello              |                      []    [] [] []          [] [] |
-     id-utils           |                            [] []                   |
-     indent             |                      []       []             [] [] |
-     iso_3166           |          []    [] [] [] [] [] [] []          [] [] |
-     iso_3166_1         |                      [] [] [] [] []             [] |
-     iso_3166_2         |                                                    |
-     iso_3166_3         |                               []                   |
-     iso_4217           |                      []    [] []                [] |
-     iso_639            |                                                    |
-     jpilot             |                         [] []                   [] |
-     jtag               |                                                    |
-     jwhois             |                                                 [] |
-     kbd                |                         [] [] [] []             [] |
-     latrine            |                               ()                   |
-     ld                 |                            []                   [] |
-     libc               |                      [] [] [] [] []             [] |
-     libgpewidget       |                         []    []                   |
-     libiconv           |                      []    [] []             [] [] |
-     lifelines          |                            [] ()                   |
-     lilypond           |                               []                   |
-     lingoteach         |                                                    |
-     lingoteach_lessons |                               ()                () |
-     lynx               |                      [] [] [] []                   |
-     m4                 |                         [] [] [] []                |
-     mailutils          |                      []                         [] |
-     make               |                            [] []                [] |
-     man-db             |                      [] () [] []                () |
-     minicom            |                         []    []                [] |
-     mysecretdiary      |                            [] []                [] |
-     nano               |                      [] () [] []                [] |
-     nano_1_0           |                      [] () [] []                [] |
-     opcodes            |                                                 [] |
-     parted             |                      [] [] [] []                [] |
-     ptx                |                      []    [] []             [] [] |
-     python             |                                                    |
-     radius             |                                                 [] |
-     recode             |             []       []    [] [] []          [] [] |
-     rpm                |                         [] []                      |
-     screem             |                                                    |
-     scrollkeeper       |             []       [] [] [] []                [] |
-     sed                | []                   []    [] []             [] [] |
-     sh-utils           |                            [] []                [] |
-     shared-mime-info   |                                                    |
-     sharutils          |                      [] [] [] [] []             [] |
-     silky              |                               ()                   |
-     skencil            |                            [] ()                [] |
-     sketch             |                            [] ()                [] |
-     soundtracker       |                            [] []                [] |
-     sp                 |                               []                   |
-     tar                |                         [] [] []                [] |
-     texinfo            |                            [] []             []    |
-     textutils          |                      []    [] []                [] |
-     tin                |                               ()        ()         |
-     tp-robot           |                                                    |
-     tuxpaint           |                      [] [] [] [] []     []      [] |
-     unicode-han-tra... |                                                    |
-     unicode-transla... |                                                    |
-     util-linux         |                      [] [] [] []                [] |
-     vorbis-tools       |             []          [] []                   [] |
-     wastesedge         |                               ()                   |
-     wdiff              |                      []    [] []                [] |
-     wget               |                []    []    [] [] []             [] |
-     xchat              |                      []       [] []             [] |
-     xfree86_xkb_xml    |                         [] []                      |
-     xpad               |                                                 [] |
-                        +----------------------------------------------------+
-                          af am ar az be bg bs ca cs da de el en en_GB eo es
-                           4  0  0  1  9  4  1 40 41 60 78 17  1   5   13 68
-     
-                          et eu fa fi fr ga gl he hr hu id is it ja ko lg
+     Ready PO files       af am an ar as ast az be be@latin bg bn_IN bs ca
+                        +--------------------------------------------------+
+     a2ps               |                       []                      [] |
+     aegis              |                                                  |
+     ant-phone          |                                                  |
+     anubis             |                                                  |
+     aspell             |                []                             [] |
+     bash               |                                                  |
+     bfd                |                                                  |
+     bibshelf           |                []                                |
+     binutils           |                                                  |
+     bison              |                                                  |
+     bison-runtime      |                []                                |
+     bluez-pin          | []             []                                |
+     bombono-dvd        |                                                  |
+     buzztard           |                                                  |
+     cflow              |                                                  |
+     clisp              |                                                  |
+     coreutils          |                                   []          [] |
+     cpio               |                                                  |
+     cppi               |                                                  |
+     cpplib             |                                               [] |
+     cryptsetup         |                                                  |
+     dfarc              |                                                  |
+     dialog             |                             []                [] |
+     dico               |                                                  |
+     diffutils          |                                               [] |
+     dink               |                                                  |
+     doodle             |                                                  |
+     e2fsprogs          |                                               [] |
+     enscript           |                                               [] |
+     exif               |                                                  |
+     fetchmail          |                                               [] |
+     findutils          |                                   []             |
+     flex               |                                               [] |
+     freedink           |                                                  |
+     gas                |                                                  |
+     gawk               |                []                             [] |
+     gcal               |                                               [] |
+     gcc                |                                                  |
+     gettext-examples   | []             []                 []          [] |
+     gettext-runtime    |                                   []          [] |
+     gettext-tools      |                                   []          [] |
+     gip                |                                   []             |
+     gjay               |                                                  |
+     gliv               |                                   []             |
+     glunarclock        |                []                 []             |
+     gnubiff            |                                                  |
+     gnucash            |                                               [] |
+     gnuedu             |                                                  |
+     gnulib             |                                                  |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                                                  |
+     gold               |                                                  |
+     gpe-aerial         |                                                  |
+     gpe-beam           |                                                  |
+     gpe-bluetooth      |                                                  |
+     gpe-calendar       |                                                  |
+     gpe-clock          |                []                                |
+     gpe-conf           |                                                  |
+     gpe-contacts       |                                                  |
+     gpe-edit           |                                                  |
+     gpe-filemanager    |                                                  |
+     gpe-go             |                                                  |
+     gpe-login          |                                                  |
+     gpe-ownerinfo      |                []                                |
+     gpe-package        |                                                  |
+     gpe-sketchbook     |                                                  |
+     gpe-su             |                []                                |
+     gpe-taskmanager    |                []                                |
+     gpe-timesheet      |                []                                |
+     gpe-today          |                []                                |
+     gpe-todo           |                                                  |
+     gphoto2            |                                                  |
+     gprof              |                                   []             |
+     gpsdrive           |                                                  |
+     gramadoir          |                                                  |
+     grep               |                                                  |
+     grub               |                []                             [] |
+     gsasl              |                                                  |
+     gss                |                                                  |
+     gst-plugins-bad    |                                   []             |
+     gst-plugins-base   |                                   []             |
+     gst-plugins-good   |                                   []             |
+     gst-plugins-ugly   |                                   []             |
+     gstreamer          | []                                []          [] |
+     gtick              |                                                  |
+     gtkam              |                       []                         |
+     gtkorphan          |                                   []             |
+     gtkspell           | []             []     []                         |
+     gutenprint         |                                                  |
+     hello              |                                   []             |
+     help2man           |                                                  |
+     hylafax            |                                                  |
+     idutils            |                                                  |
+     indent             |                                   []          [] |
+     iso_15924          |                                                  |
+     iso_3166           | []          []        []          []  []   [] [] |
+     iso_3166_2         |                                                  |
+     iso_4217           |                                                  |
+     iso_639            |             [] []     []              []         |
+     iso_639_3          |                                                  |
+     jwhois             |                                                  |
+     kbd                |                                                  |
+     keytouch           |                                               [] |
+     keytouch-editor    |                                                  |
+     keytouch-keyboa... |                                               [] |
+     klavaro            |          []                                      |
+     latrine            |                                                  |
+     ld                 |                                   []             |
+     leafpad            |                                   []          [] |
+     libc               |                                   []          [] |
+     libexif            |                       ()                         |
+     libextractor       |                                                  |
+     libgnutls          |                                                  |
+     libgpewidget       |                                                  |
+     libgpg-error       |                                                  |
+     libgphoto2         |                                                  |
+     libgphoto2_port    |                                                  |
+     libgsasl           |                                                  |
+     libiconv           |                                   []             |
+     libidn             |                                                  |
+     lifelines          |                                                  |
+     liferea            |                             []                [] |
+     lilypond           |                                                  |
+     linkdr             |          []                                      |
+     lordsawar          |                                                  |
+     lprng              |                                                  |
+     lynx               |                                               [] |
+     m4                 |                                                  |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               |                                                  |
+     man-db             |                                                  |
+     man-db-manpages    |                                                  |
+     minicom            |                                                  |
+     mkisofs            |                                                  |
+     myserver           |                                                  |
+     nano               |                                   []          [] |
+     opcodes            |                                                  |
+     parted             |                                                  |
+     pies               |                                                  |
+     popt               |                                                  |
+     psmisc             |                                                  |
+     pspp               |                                               [] |
+     pwdutils           |                                                  |
+     radius             |                                               [] |
+     recode             |                       []                      [] |
+     rosegarden         |                                                  |
+     rpm                |                                                  |
+     rush               |                                                  |
+     sarg               |                                                  |
+     screem             |                                                  |
+     scrollkeeper       |                    [] []                      [] |
+     sed                |                []                             [] |
+     sharutils          |                                   []          [] |
+     shishi             |                                                  |
+     skencil            |                                                  |
+     solfege            |                                                  |
+     solfege-manual     |                                                  |
+     soundtracker       |                                                  |
+     sp                 |                                                  |
+     sysstat            |                                                  |
+     tar                |                                   []             |
+     texinfo            |                                                  |
+     tin                |                                                  |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux-ng      |                                               [] |
+     vice               |                                                  |
+     vmm                |                                                  |
+     vorbis-tools       |                                                  |
+     wastesedge         |                                                  |
+     wdiff              |                                                  |
+     wget               |                       []                      [] |
+     wyslij-po          |                                                  |
+     xchat              |                []     []          []          [] |
+     xdg-user-dirs      | []    []    [] []     []    []    []  []      [] |
+     xkeyboard-config   |                                   []          [] |
+                        +--------------------------------------------------+
+                          af am an ar as ast az be be@latin bg bn_IN bs ca
+                           6  0  1  2  3 19   1 10     3    28   3    1 38
+
+                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
                         +-------------------------------------------------+
-     a2ps               | []       [] []                      ()    ()    |
-     aegis              |                                                 |
-     ant-phone          |             []                                  |
-     anubis             |             []                                  |
-     ap-utils           |             []                                  |
-     aspell             |             [] []                               |
-     bash               |             []             []                   |
-     batchelor          |             [] []                               |
-     bfd                |             []                                  |
-     binutils           |             []                         []       |
-     bison              | []          []                []    []          |
-     bluez-pin          |          [] [] []          [] []                |
-     clisp              |                                                 |
-     clisp              |             []                                  |
-     console-tools      |                                                 |
-     coreutils          | []       [] [] []                   [] []       |
-     cpio               |             []    []       []             []    |
-     darkstat           |             () []          [] []                |
-     diffutils          |          [] []    [] []    [] []       []       |
-     e2fsprogs          |                                                 |
-     enscript           |             []          []                      |
-     error              |          [] [] []          []                   |
-     fetchmail          |                                        []       |
-     fileutils          | []          [] []          []       [] []       |
-     findutils          | []       [] [] [] []    [] [] []    [] [] []    |
-     flex               |             [] []                         []    |
-     fslint             |             []                                  |
-     gas                |             []                                  |
-     gawk               |             []       []                []       |
-     gbiff              |             []                                  |
-     gcal               |             []                                  |
-     gcc                |             []                                  |
-     gettext            |             []                         [] []    |
-     gettext-examples   |             []                         []       |
-     gettext-runtime    |          [] []                []       [] []    |
-     gettext-tools      |             []                         [] []    |
-     gimp-print         |             []                         []       |
-     gliv               |             ()                                  |
-     glunarclock        |          []    [] []       []                   |
-     gnubiff            |             []                                  |
-     gnucash            |             ()                      []          |
-     gnucash-glossary   |                                     []          |
-     gnupg              | []       [] []    []          []    [] []       |
-     gpe-aerial         |             []                                  |
-     gpe-beam           |             []                                  |
-     gpe-calendar       |             []             [] []                |
-     gpe-clock          |             []                                  |
-     gpe-conf           |             []                                  |
-     gpe-contacts       |             []             []                   |
-     gpe-edit           |             []                []                |
-     gpe-go             |             []                                  |
-     gpe-login          |             []             []                   |
-     gpe-ownerinfo      |             []             [] []                |
-     gpe-sketchbook     |             []                                  |
-     gpe-su             |             []                                  |
-     gpe-taskmanager    |             []                                  |
-     gpe-timesheet      |             [] []             []                |
-     gpe-today          |             [] []                               |
-     gpe-todo           |             []                []                |
-     gphoto2            |             []             []          []       |
-     gprof              |             []                []                |
-     gpsdrive           |             ()                      () ()       |
-     gramadoir          |             [] []                               |
-     grep               | []       [] [] [] [] [] [] [] []    [] []       |
-     gretl              |             []                      []          |
-     gtick              |          [] [] []                               |
-     hello              | []    [] [] [] [] [] [] [] [] []    [] [] []    |
-     id-utils           |             []             [] []    []          |
-     indent             | []       [] [] [] []       [] []    [] []       |
-     iso_3166           |    []       [] []       [] [] []    []          |
-     iso_3166_1         |    []       [] []          [] []                |
-     iso_3166_2         |                                                 |
-     iso_3166_3         |                                                 |
-     iso_4217           | []          []    []       []       [] []       |
-     iso_639            |                                                 |
-     jpilot             |             []                         ()       |
-     jtag               |             []                                  |
-     jwhois             |             []             [] []    []          |
-     kbd                |             []                                  |
-     latrine            |             []                                  |
-     ld                 |             []                                  |
-     libc               |          [] []    []       []          [] []    |
-     libgpewidget       |             [] []          [] []                |
-     libiconv           | []       [] [] [] []    [] [] []    []          |
-     lifelines          |             ()                                  |
-     lilypond           |             []                                  |
-     lingoteach         |             []                []                |
-     lingoteach_lessons |                                                 |
-     lynx               | []                         []       [] []       |
-     m4                 |             []    []          []       []       |
-     mailutils          |                                                 |
-     make               |             []    [] [] []             [] []    |
-     man-db             |                                     () ()       |
-     minicom            |          [] []             []          []       |
-     mysecretdiary      |             []                []                |
-     nano               |             []    []          []    []          |
-     nano_1_0           |             []    []          []    []          |
-     opcodes            |             []                                  |
-     parted             |             []    []                   []       |
-     ptx                | []       [] [] [] []       [] []                |
-     python             |                                                 |
-     radius             |             []                                  |
-     recode             |             []    [] []    [] []    []          |
-     rpm                |             []                            []    |
+     a2ps               |     [] []  []  []     []            [] []       |
+     aegis              |        []  []                       []          |
+     ant-phone          |        []  ()                                   |
+     anubis             |        []  []                                   |
+     aspell             |     [] []  []         []            []          |
+     bash               |     []                           [] []          |
+     bfd                |                                     []          |
+     bibshelf           |        []  []                       []          |
+     binutils           |                                     []          |
+     bison              |            []  []                               |
+     bison-runtime      |        []  []  []                      []       |
+     bluez-pin          |     [] []  []  []                [] []          |
+     bombono-dvd        |        []                                       |
+     buzztard           |     [] []  []                                   |
+     cflow              |        []  []                                   |
+     clisp              |        []  []     []                []          |
+     coreutils          |     [] []  []                          []       |
+     cpio               |                                                 |
+     cppi               |                                                 |
+     cpplib             |        []  []                       []          |
+     cryptsetup         |            []                                   |
+     dfarc              |        []  []                       []          |
+     dialog             |        []  []                    [] []    []    |
+     dico               |                                                 |
+     diffutils          |     [] []  []  []                [] []          |
+     dink               |        []  []                       []          |
+     doodle             |            []                                   |
+     e2fsprogs          |     []     []                       []          |
+     enscript           |        []  []         []                        |
+     exif               |     () []  []                                   |
+     fetchmail          |     [] []  ()  []     []            []          |
+     findutils          |     [] []  []                                   |
+     flex               |            []                       []          |
+     freedink           |        []  []                       []          |
+     gas                |                                     []          |
+     gawk               |        []  []                       []          |
+     gcal               |                                     []          |
+     gcc                |            []                       []          |
+     gettext-examples   |            []  []                [] []          |
+     gettext-runtime    |        []  []                    [] []          |
+     gettext-tools      |            []                       []    []    |
+     gip                |        []  []                       []    []    |
+     gjay               |            []                                   |
+     gliv               |     [] []  []                                   |
+     glunarclock        |        []  []                                   |
+     gnubiff            |            ()                                   |
+     gnucash            |     []     ()  ()     ()            ()          |
+     gnuedu             |        []                           []          |
+     gnulib             |            []                       []          |
+     gnunet             |                                                 |
+     gnunet-gtk         |        []                                       |
+     gnutls             |     []     []                                   |
+     gold               |                                     []          |
+     gpe-aerial         |     [] []  []                       []          |
+     gpe-beam           |     [] []  []                       []          |
+     gpe-bluetooth      |        []  []                                   |
+     gpe-calendar       |        []                                       |
+     gpe-clock          |     [] []  []                       []          |
+     gpe-conf           |     [] []  []                                   |
+     gpe-contacts       |        []  []                       []          |
+     gpe-edit           |        []  []                                   |
+     gpe-filemanager    |        []  []                       []          |
+     gpe-go             |     [] []  []                       []          |
+     gpe-login          |        []  []                                   |
+     gpe-ownerinfo      |     [] []  []                       []          |
+     gpe-package        |        []  []                       []          |
+     gpe-sketchbook     |     [] []  []                       []          |
+     gpe-su             |     [] []  []                       []          |
+     gpe-taskmanager    |     [] []  []                       []          |
+     gpe-timesheet      |     [] []  []                       []          |
+     gpe-today          |     [] []  []                       []          |
+     gpe-todo           |        []  []                       []          |
+     gphoto2            |     [] []  ()         []            []    []    |
+     gprof              |        []  []                       []          |
+     gpsdrive           |        []                           [] []       |
+     gramadoir          |        []  []                    []             |
+     grep               |     []                                          |
+     grub               |        []  []                                   |
+     gsasl              |            []                                   |
+     gss                |                                                 |
+     gst-plugins-bad    |     [] []  []                       []    []    |
+     gst-plugins-base   |     [] []  []                       []    []    |
+     gst-plugins-good   |     [] []  []  []                   []    []    |
+     gst-plugins-ugly   |     [] []  []  []                   []    []    |
+     gstreamer          |     [] []  []                       []    []    |
+     gtick              |        []  ()                    []             |
+     gtkam              |     [] []  ()                    [] []          |
+     gtkorphan          |     [] []  []                    []             |
+     gtkspell           |     [] []  []  []                [] []    []    |
+     gutenprint         |        []  []         []                        |
+     hello              |        []  []                    [] []          |
+     help2man           |            []                                   |
+     hylafax            |            []                       []          |
+     idutils            |        []  []                                   |
+     indent             |     [] []  []                    [] [] [] []    |
+     iso_15924          |        []      ()                [] []          |
+     iso_3166           | []  [] []  []  ()                [] [] [] ()    |
+     iso_3166_2         |                ()                               |
+     iso_4217           |     [] []  []  ()                   [] []       |
+     iso_639            | []  [] []  []  ()                [] []          |
+     iso_639_3          | []                                              |
+     jwhois             |                                     []          |
+     kbd                |     [] []  []  []                   []          |
+     keytouch           |        []  []                                   |
+     keytouch-editor    |        []  []                                   |
+     keytouch-keyboa... |        []                                       |
+     klavaro            |     [] []  []                    []             |
+     latrine            |        []  ()                                   |
+     ld                 |        []                           []          |
+     leafpad            |     [] []  []  []                   []    []    |
+     libc               |     [] []  []                       []          |
+     libexif            |        []  []         ()                        |
+     libextractor       |                                                 |
+     libgnutls          |     []                                          |
+     libgpewidget       |        []  []                                   |
+     libgpg-error       |     []     []                                   |
+     libgphoto2         |        []  ()                                   |
+     libgphoto2_port    |        []  ()                             []    |
+     libgsasl           |                                                 |
+     libiconv           |     [] []  []                    []    []       |
+     libidn             |     []     []                    []             |
+     lifelines          |        []  ()                                   |
+     liferea            |     []     []  []                   []    []    |
+     lilypond           |     []     []                       []          |
+     linkdr             |        []  []                       []          |
+     lordsawar          |        []                                       |
+     lprng              |                                                 |
+     lynx               |     [] []  []                          []       |
+     m4                 |     [] []  []  []                               |
+     mailfromd          |                                                 |
+     mailutils          |                                     []          |
+     make               |        []  []                       []          |
+     man-db             |                                                 |
+     man-db-manpages    |                                                 |
+     minicom            |     [] []  []                       []          |
+     mkisofs            |                                                 |
+     myserver           |                                                 |
+     nano               |            []                       []    []    |
+     opcodes            |            []                       []          |
+     parted             |     []     []                                   |
+     pies               |                                                 |
+     popt               |     [] []  []                    [] []          |
+     psmisc             |     []     []                             []    |
+     pspp               |                                     []          |
+     pwdutils           |        []                                       |
+     radius             |                                     []          |
+     recode             |     [] []  []  []                [] []          |
+     rosegarden         |     ()     ()                       ()          |
+     rpm                |        []  []                       []          |
+     rush               |                                                 |
+     sarg               |                                                 |
      screem             |                                                 |
-     scrollkeeper       |                            []                   |
-     sed                | []       [] [] [] []       [] []    [] []       |
-     sh-utils           | []       [] [] []          []       [] []       |
-     shared-mime-info   |          [] []             []                   |
-     sharutils          | []          []    []       []          []       |
-     silky              |          () []             ()       ()          |
-     skencil            |             []                                  |
-     sketch             |             []                                  |
-     soundtracker       |             []                      []          |
-     sp                 |             []                         ()       |
-     tar                | []       [] []    []    [] [] []    [] []       |
-     texinfo            |             []       [] []             []       |
-     textutils          |             [] [] []       []          [] []    |
-     tin                | []          ()                                  |
-     tp-robot           |             []                                  |
-     tuxpaint           |          [] []       []    [] [] [] [] [] []    |
+     scrollkeeper       |     [] []  []         []            []          |
+     sed                |     []     []  []                [] [] []       |
+     sharutils          |        []  []                       [] []       |
+     shishi             |                                                 |
+     skencil            |        []  ()                       []          |
+     solfege            |            []                    []    []       |
+     solfege-manual     |                                  []    []       |
+     soundtracker       |        []  []                       []          |
+     sp                 |            []                                   |
+     sysstat            |        []  []                             []    |
+     tar                |     []     []                          [] []    |
+     texinfo            |            []                    [] []          |
+     tin                |            []                          []       |
      unicode-han-tra... |                                                 |
-     unicode-transla... |             [] []                               |
-     util-linux         | []       [] []             []       () []       |
-     vorbis-tools       |             []                                  |
-     wastesedge         |             ()                                  |
-     wdiff              | []          [] [] []       [] []                |
-     wget               | []       [] []    []    [] []          []       |
-     xchat              | []       [] []                                  |
-     xfree86_xkb_xml    |             []             []                   |
-     xpad               |             [] []                               |
+     unicode-transla... |                                                 |
+     util-linux-ng      |     [] []  []                       []          |
+     vice               |        ()  ()                                   |
+     vmm                |            []                                   |
+     vorbis-tools       |     []                           []             |
+     wastesedge         |        []                                       |
+     wdiff              |            []                       []          |
+     wget               |     []     []                          []       |
+     wyslij-po          |                                                 |
+     xchat              |     []     []  []                   [] []       |
+     xdg-user-dirs      | []  [] []  []  []                [] [] [] []    |
+     xkeyboard-config   | []  [] []  []                    [] []          |
                         +-------------------------------------------------+
-                          et eu fa fi fr ga gl he hr hu id is it ja ko lg
-                          22  2  1 26 106 28 24  8 10 41 33  1 26 33 12  0
-     
-                          lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
-                        +-----------------------------------------------------+
-     a2ps               |             []       []    ()     ()     []   [] [] |
-     aegis              |                      ()                       () () |
-     ant-phone          |                      []                       []    |
-     anubis             |             []    [] []           []          [] [] |
-     ap-utils           |                      []           ()          []    |
-     aspell             |                      []                             |
-     bash               |                                          []   [] [] |
-     batchelor          |                                               []    |
-     bfd                |                                               []    |
-     binutils           |                                                  [] |
-     bison              |             []       []                  []   [] [] |
-     bluez-pin          |                      []           []          []    |
-     clisp              |                                                     |
-     clisp              |                      []                             |
-     console-tools      |                                                  [] |
-     coreutils          |                                   []             [] |
-     cpio               |                      []           []     []   [] [] |
-     darkstat           |             []       []                  []   []    |
-     diffutils          |             []       []           []     []   [] [] |
-     e2fsprogs          |                                   []                |
-     enscript           |                      []                  []   [] [] |
-     error              |                      []                  []   []    |
-     fetchmail          |                      []           []     ()      [] |
-     fileutils          |                                   []          [] [] |
-     findutils          |                      []           []     []   [] [] |
-     flex               |                                   []     []   [] [] |
-     fslint             |                      []                       []    |
-     gas                |                                                     |
-     gawk               |                                   []     []   []    |
-     gbiff              |                      []                       []    |
-     gcal               |                                                     |
-     gcc                |                                                     |
-     gettext            |                                   []          [] [] |
-     gettext-examples   |                      []           []          []    |
-     gettext-runtime    |                      []           []          [] [] |
-     gettext-tools      |                                   []          []    |
-     gimp-print         |                      []                             |
-     gliv               |                      []                  []   []    |
-     glunarclock        |             []       []                       [] [] |
-     gnubiff            |                      []                             |
-     gnucash            |                      []              []  ()      [] |
-     gnucash-glossary   |                      []              []             |
-     gnupg              |                                               []    |
-     gpe-aerial         |                      []              []       [] [] |
-     gpe-beam           |                      []              []       [] [] |
-     gpe-calendar       |                      []              []       [] [] |
-     gpe-clock          |                      []              []       [] [] |
-     gpe-conf           |                      []              []       [] [] |
-     gpe-contacts       |                      []              []       [] [] |
-     gpe-edit           |                      []              []       [] [] |
-     gpe-go             |                      []                       [] [] |
-     gpe-login          |                      []              []       [] [] |
-     gpe-ownerinfo      |                      []              []       [] [] |
-     gpe-sketchbook     |                      []              []       [] [] |
-     gpe-su             |                      []              []       [] [] |
-     gpe-taskmanager    |                      []              []       [] [] |
-     gpe-timesheet      |                      []              []       [] [] |
-     gpe-today          |                      []              []       [] [] |
-     gpe-todo           |                      []              []       [] [] |
-     gphoto2            |                                               []    |
-     gprof              |                                          []   []    |
-     gpsdrive           |                      ()    ()                 []    |
-     gramadoir          |                      ()                       []    |
-     grep               |                                   [] []  []   [] [] |
-     gretl              |                                                     |
-     gtick              |                      []                       [] [] |
-     hello              |    []       []    [] [] [] []     []     []   [] [] |
-     id-utils           |                      []                  []   [] [] |
-     indent             |                      []                  []   [] [] |
-     iso_3166           |          []                [] []                    |
-     iso_3166_1         |                      []    []                       |
-     iso_3166_2         |                                                     |
-     iso_3166_3         |                      []                             |
-     iso_4217           |          []          [] [] []     [] []  []      [] |
-     iso_639            |          []                                         |
-     jpilot             |                      ()    ()                       |
-     jtag               |                                                     |
-     jwhois             |                      []           []     []   [] () |
-     kbd                |                      []           []          []    |
-     latrine            |                                               []    |
-     ld                 |                                                     |
-     libc               |                   []       []     []     []         |
-     libgpewidget       |                      []              []       []    |
-     libiconv           |                      []           []     []   [] [] |
-     lifelines          |                                                     |
-     lilypond           |                                                     |
-     lingoteach         |                                                     |
-     lingoteach_lessons |                                                     |
-     lynx               |                      []                  []      [] |
-     m4                 |                      []           []     []   [] [] |
-     mailutils          |                                   []          [] [] |
-     make               |                      []           []     []      [] |
-     man-db             |                                               []    |
-     minicom            |                                   []     []   [] [] |
-     mysecretdiary      |                      []                  []   []    |
-     nano               |             []       []           []          [] [] |
-     nano_1_0           |             []    []    []        []          [] [] |
-     opcodes            |                      []                       []    |
-     parted             |                         []        [] []  []         |
-     ptx                |                   [] []    []     [] []  []   [] [] |
-     python             |                                                     |
-     radius             |                                   []             [] |
-     recode             |                                   []     []   [] [] |
-     rpm                |                                   [] []          [] |
-     screem             |                                                     |
-     scrollkeeper       |                   [] []           []          [] [] |
-     sed                |                                   []     []   []    |
-     sh-utils           |                   []                             [] |
-     shared-mime-info   |                      [] []                          |
-     sharutils          |                      []                          [] |
-     silky              |                                                  () |
-     skencil            |                                      []  []         |
-     sketch             |                                      []  []         |
-     soundtracker       |                                                     |
-     sp                 |                                                     |
-     tar                |             []    []       []     []     []   []    |
-     texinfo            |                   []              []          [] [] |
-     textutils          |                   []                             [] |
-     tin                |                                                     |
-     tp-robot           |                      []                             |
-     tuxpaint           | []          []       [] []        [] []  []   []    |
-     unicode-han-tra... |                                                     |
-     unicode-transla... |                                                     |
-     util-linux         |                      []                  []      [] |
-     vorbis-tools       |                      []                       [] [] |
-     wastesedge         |                                                     |
-     wdiff              |             []                    []     []   [] [] |
-     wget               |                                   []          [] [] |
-     xchat              |    []                []                          [] |
-     xfree86_xkb_xml    |                      []                          [] |
-     xpad               |                      []                       []    |
-                        +-----------------------------------------------------+
-                          lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
-                           1  2  0  3 12  0 10 69  6  7  1  40 26  36   76 63
-     
-                          sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
-                        +-----------------------------------------------------+
-     a2ps               |    []    []       [] []                             | 16
-     aegis              |                                                     |  0
-     ant-phone          |                                                     |  3
-     anubis             |                   [] []                             |  9
-     ap-utils           |                      ()                             |  3
-     aspell             |                                                     |  4
-     bash               |                                                     |  9
-     batchelor          |                                                     |  3
-     bfd                |          []       []                                |  6
-     binutils           |          []       []                  []            |  8
-     bison              |          []       []                                | 14
-     bluez-pin          | []       []                    []                   | 14
-     clisp              |                                                     |  0
-     clisp              |                                                     |  5
-     console-tools      |                                                     |  3
-     coreutils          |    []    []       []                        []      | 16
-     cpio               |          []                           []            | 14
-     darkstat           | []    [] []                           ()    ()      | 12
-     diffutils          |          []       []                        []      | 23
-     e2fsprogs          |          []       []                                |  6
-     enscript           |          []       []                                | 12
-     error              | []                []                        []      | 15
-     fetchmail          | []                []                                | 11
-     fileutils          |    []    []       []                  []    []      | 17
-     findutils          | [] [] [] []       []                  []            | 29
-     flex               |          []       []                                | 13
-     fslint             |                                                     |  3
-     gas                |                   []                                |  3
-     gawk               |          []       []                                | 12
-     gbiff              |                                                     |  4
-     gcal               |          []       []                                |  4
-     gcc                |                   []                                |  4
-     gettext            | [] []    []       []                        []      | 16
-     gettext-examples   | []    [] []       []                  []            | 14
-     gettext-runtime    | [] [] [] []       [] []               []    []      | 22
-     gettext-tools      | [] [] [] []       []                  []            | 14
-     gimp-print         | []       []                                         | 10
-     gliv               |                                                     |  3
-     glunarclock        |       [] []                    []                   | 13
-     gnubiff            |                                                     |  3
-     gnucash            | []                                          []      |  9
-     gnucash-glossary   | []       []                                 []      |  8
-     gnupg              | []       []       []                        []      | 17
-     gpe-aerial         |          []                                         |  7
-     gpe-beam           |          []                                         |  8
-     gpe-calendar       | []       []                    []           []      | 13
-     gpe-clock          | []    [] []                                         | 10
-     gpe-conf           | []       []                                         |  9
-     gpe-contacts       | []       []                                 []      | 11
-     gpe-edit           | []    [] []                    []           []      | 12
-     gpe-go             |                                                     |  5
-     gpe-login          | []    [] []                    []           []      | 13
-     gpe-ownerinfo      | []    [] []                                 []      | 13
-     gpe-sketchbook     | []       []                                         |  9
-     gpe-su             | []    [] []                                         | 10
-     gpe-taskmanager    | []    [] []                                         | 10
-     gpe-timesheet      | []    [] []                                 []      | 12
-     gpe-today          | []    [] []                    []           []      | 13
-     gpe-todo           | []       []                    []           []      | 12
-     gphoto2            | []       []                           []            | 11
-     gprof              |          []       []                                |  9
-     gpsdrive           | []       []                                         |  3
-     gramadoir          | []                                                  |  5
-     grep               |    [] []          [] []                             | 26
-     gretl              |                                                     |  3
-     gtick              |                                                     |  7
-     hello              | []    [] []       [] []                             | 34
-     id-utils           |          []       []                                | 12
-     indent             | []    [] []       []                                | 21
-     iso_3166           | [] [] [] []       []    []     []                   | 27
-     iso_3166_1         | [] []             []                                | 16
-     iso_3166_2         |                                                     |  0
-     iso_3166_3         |                                                     |  2
-     iso_4217           | [] []    []       [] []               []            | 24
-     iso_639            |                                                     |  1
-     jpilot             |          []       []        []        []    []      |  9
-     jtag               | []                                                  |  2
-     jwhois             |          ()       []                        []      | 11
-     kbd                |          []       []                                | 11
-     latrine            |                                                     |  2
-     ld                 |          []       []                                |  5
-     libc               | []       []       []                  []            | 20
-     libgpewidget       | []    [] []                    []                   | 13
-     libiconv           | [] [] [] []       [] []        []     []            | 27
-     lifelines          |          []                                         |  2
-     lilypond           |          []                                         |  3
-     lingoteach         |                                                     |  2
-     lingoteach_lessons |                                       ()            |  0
-     lynx               |          []       [] []                             | 14
-     m4                 |          []                           []            | 15
-     mailutils          |                                                     |  5
-     make               |          []       []                  []            | 16
-     man-db             |          []                                         |  5
-     minicom            |                                                     | 11
-     mysecretdiary      |          []       []                                | 10
-     nano               |       [] []       [] []                             | 17
-     nano_1_0           |          []       [] []                             | 17
-     opcodes            |          []       []                                |  6
-     parted             |          []       []                  []            | 15
-     ptx                |          []       []                                | 22
-     python             |                                                     |  0
-     radius             |                                                     |  4
-     recode             |    []    []       []                                | 20
-     rpm                |          []       []                                |  9
-     screem             |          []                           []            |  2
-     scrollkeeper       | []    [] []                                         | 15
-     sed                | [] [] [] []       [] []                             | 24
-     sh-utils           |    []             []                                | 14
-     shared-mime-info   |       [] []                                         |  7
-     sharutils          |       [] []       []                        []      | 17
-     silky              | ()                                                  |  3
-     skencil            |          []                                         |  6
-     sketch             |          []                                         |  6
-     soundtracker       | []       []                                         |  7
-     sp                 |                   []                                |  3
-     tar                | [] []    []       []                  []            | 24
-     texinfo            |          []       []                  []            | 14
-     textutils          |    []    []       []                        []      | 16
-     tin                |                                                     |  1
-     tp-robot           |                                                     |  2
-     tuxpaint           | []       []       []           []     []            | 29
-     unicode-han-tra... |                                                     |  0
-     unicode-transla... |                                                     |  2
-     util-linux         |          []       []                                | 15
-     vorbis-tools       |                                                     |  8
-     wastesedge         |                                                     |  0
-     wdiff              | []       []       []                                | 18
-     wget               | [] [] [] []       [] []               []    []      | 24
-     xchat              | [] [] [] []                           []            | 15
-     xfree86_xkb_xml    | []    []          [] []               []            | 11
-     xpad               |                                                     |  5
-                        +-----------------------------------------------------+
-       63 teams           sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
-      131 domains         47 19 28 83  0  0 59 13  1   1 11  0  22    22    0  1373
+                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
+                           5  64 105 117 18  1   8     0   28 89 18 19  0
+
+                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
+                        +----------------------------------------------------+
+     a2ps               | []  []                          []        []       |
+     aegis              |     []                                 []          |
+     ant-phone          |     []                                 []          |
+     anubis             | []  []                          []     []          |
+     aspell             |     []  []                      []     []          |
+     bash               | []  []                          []        []       |
+     bfd                | []  []                          []                 |
+     bibshelf           | []  []  []                      []     []          |
+     binutils           | []  []                          []                 |
+     bison              | []  []  []                      []                 |
+     bison-runtime      | []  []  []                      []     [] []       |
+     bluez-pin          | []  []  []                [] [] []  []    []       |
+     bombono-dvd        | []                                                 |
+     buzztard           |                                 []                 |
+     cflow              | []      []                      []                 |
+     clisp              |     []                                             |
+     coreutils          |     []  []                []    []     []          |
+     cpio               | []  []  []                      []                 |
+     cppi               | []  []                                             |
+     cpplib             | []  []                          []                 |
+     cryptsetup         |     []                          []     []          |
+     dfarc              | []  []                                 []          |
+     dialog             |     []  [] []                   []  [] [] []       |
+     dico               |                                                    |
+     diffutils          | []  []  [] []    []       []    []     [] []       |
+     dink               |     []                                             |
+     doodle             |         []                             []          |
+     e2fsprogs          |     []                          []                 |
+     enscript           |     []  []             []       []                 |
+     exif               | []  []                          []  [] [] []       |
+     fetchmail          |     []                          []     [] []       |
+     findutils          | []  []  []                []    []     []          |
+     flex               | []  []  []                                         |
+     freedink           | []  []                          []                 |
+     gas                |     []                          []                 |
+     gawk               |     []  []       []             []     () []       |
+     gcal               |     []                                             |
+     gcc                |                                 []                 |
+     gettext-examples   | []  []  []                []    []     [] []       |
+     gettext-runtime    | []  []  []                      []     [] []       |
+     gettext-tools      |     []                          []     [] []       |
+     gip                | []  []  [] []                   []        []       |
+     gjay               | []                                                 |
+     gliv               | []  ()                                             |
+     glunarclock        | []      []                []    []                 |
+     gnubiff            |     ()                          []     ()          |
+     gnucash            | ()  ()           ()       ()           () []       |
+     gnuedu             |     []                                 []          |
+     gnulib             | []  []  []                []           [] []       |
+     gnunet             |                                                    |
+     gnunet-gtk         |     []                                             |
+     gnutls             |     []                                 []          |
+     gold               | []                              []                 |
+     gpe-aerial         | []  []                          []                 |
+     gpe-beam           | []  []                          []        []       |
+     gpe-bluetooth      | []                              []     [] []       |
+     gpe-calendar       | []                                        []       |
+     gpe-clock          | []  []                    []    []        []       |
+     gpe-conf           | []  []                          []        []       |
+     gpe-contacts       | []  []                          []        []       |
+     gpe-edit           | []                              []        []       |
+     gpe-filemanager    | []                        []    []        []       |
+     gpe-go             | []  []                    []    []        []       |
+     gpe-login          | []                              []        []       |
+     gpe-ownerinfo      | []  []                    []    []        []       |
+     gpe-package        | []                              []        []       |
+     gpe-sketchbook     | []  []                          []        []       |
+     gpe-su             | []  []     []             []    []        []       |
+     gpe-taskmanager    | []  []                    []    []        []       |
+     gpe-timesheet      | []  []  []                      []        []       |
+     gpe-today          | []  []  [] []             []    []        []       |
+     gpe-todo           | []                              []        []       |
+     gphoto2            | []  []                    []    []     [] []       |
+     gprof              | []  []  []                      []                 |
+     gpsdrive           |            []                   []     []          |
+     gramadoir          |     []  []                      []                 |
+     grep               | []                                     []          |
+     grub               | []                        []    []     []          |
+     gsasl              | []  []  []                      []     []          |
+     gss                | []  []  []                      []     []          |
+     gst-plugins-bad    | []  []                    []    []     [] []       |
+     gst-plugins-base   | []  []                    []    []     [] []       |
+     gst-plugins-good   | []  []                    []    []     [] []       |
+     gst-plugins-ugly   | []  []                    []    []     [] []       |
+     gstreamer          | []  []                    []    []     []          |
+     gtick              | []  []  []                      []     []          |
+     gtkam              |     []                    []    []     [] []       |
+     gtkorphan          |     []                          []     []          |
+     gtkspell           | []  []  [] []             [] [] []     [] []       |
+     gutenprint         | []  []                    []           []          |
+     hello              | []      []                      []                 |
+     help2man           | []  []                                             |
+     hylafax            |                                 []                 |
+     idutils            | []  []  []                []    []     []          |
+     indent             | []  []  [] []             []    []     [] []       |
+     iso_15924          | []  ()                          []     []          |
+     iso_3166           | []  ()  [] [] [] [] [] [] []    []     [] []       |
+     iso_3166_2         |     ()                    []    []     []          |
+     iso_4217           | []  ()                    []    []     [] []       |
+     iso_639            | []  ()  []    []          []    []     [] []    [] |
+     iso_639_3          |     ()                                 []       [] |
+     jwhois             | []  []                    []    []     []          |
+     kbd                |     []                          []                 |
+     keytouch           | []  []  []                []    []     []          |
+     keytouch-editor    | []      []                []    []     []          |
+     keytouch-keyboa... | []      []                []    []     []          |
+     klavaro            |            []             []                       |
+     latrine            | []                              []     []          |
+     ld                 | []  []  []                      []                 |
+     leafpad            | []  []  []       []       []    []     [] ()       |
+     libc               | []  []     []                   []        []       |
+     libexif            |                                        []          |
+     libextractor       |                                                    |
+     libgnutls          |     []                                 []          |
+     libgpewidget       | []      []                      []        []       |
+     libgpg-error       |     []                                 []          |
+     libgphoto2         |     []                                 [] []       |
+     libgphoto2_port    |     []                                 [] []       |
+     libgsasl           | []  []  []                      []     []          |
+     libiconv           | []  []  []                      []     [] []       |
+     libidn             | []  []                          []     []          |
+     lifelines          |     ()                                             |
+     liferea            |     []                    []           [] []       |
+     lilypond           | []  []                                             |
+     linkdr             | []               []    [] []           []          |
+     lordsawar          |                                                    |
+     lprng              |                                 []                 |
+     lynx               |     []                    []    []     [] []       |
+     m4                 | []  []  [] []                   []        []       |
+     mailfromd          |                                                    |
+     mailutils          |     []                          []                 |
+     make               | []  []  [] []    []    []       []     [] []       |
+     man-db             |                                 []     []          |
+     man-db-manpages    |                                 []                 |
+     minicom            | []  []                    []    []        []       |
+     mkisofs            | []  []                          []     []          |
+     myserver           |                                                    |
+     nano               | []  []  [] []             []           []          |
+     opcodes            | []  []  []                      []                 |
+     parted             |     []                          []     [] []       |
+     pies               |                                                    |
+     popt               | []  []  [] []             []    []  [] [] []       |
+     psmisc             | []  []                          []                 |
+     pspp               |                                                    |
+     pwdutils           |     []                          []                 |
+     radius             |     []                          []                 |
+     recode             | []  []  [] []    []       []    []     []          |
+     rosegarden         | ()  ()                          ()     () ()       |
+     rpm                |                                 []        []       |
+     rush               |                                                    |
+     sarg               |     []                                             |
+     screem             |                                        [] []       |
+     scrollkeeper       | []                        []    []     []          |
+     sed                | []  []  [] []             []    []     [] []       |
+     sharutils          | []  []  []                []    []     [] []       |
+     shishi             |     []                                             |
+     skencil            |     []                                             |
+     solfege            | []  []     []                          []          |
+     solfege-manual     |     []     []                                      |
+     soundtracker       |     []                                 []          |
+     sp                 |     []                                    ()       |
+     sysstat            | []  []                          []     [] []       |
+     tar                | []  []  []                []    []     [] []       |
+     texinfo            |     []                          []     [] []       |
+     tin                |     []                                             |
+     unicode-han-tra... |                                                    |
+     unicode-transla... |     []  []                                         |
+     util-linux-ng      | []  []                    []    []     [] []       |
+     vice               |     ()                    ()           ()          |
+     vmm                |     []                                             |
+     vorbis-tools       |                                 []                 |
+     wastesedge         |     ()                                 ()          |
+     wdiff              | []                                                 |
+     wget               | []  []  []             [] []    []     [] []       |
+     wyslij-po          | []  []                          []                 |
+     xchat              | []  []        []    []    []    []     [] []    [] |
+     xdg-user-dirs      | []  []  [] [] [] [] []    []    []  [] [] []    [] |
+     xkeyboard-config   | []  []                    []    []     []          |
+                        +----------------------------------------------------+
+                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
+                          105 121 53 20  4  8  3  5 53  2 120  5 84 67  0  4
+
+                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
+                        +-----------------------------------------------+
+     a2ps               |                               []              |
+     aegis              |                                               |
+     ant-phone          |                                               |
+     anubis             |                               []    []        |
+     aspell             |                         []                    |
+     bash               |                                               |
+     bfd                |                                               |
+     bibshelf           |                []             []              |
+     binutils           |                                               |
+     bison              |                               []              |
+     bison-runtime      |       []    [] []             []    []        |
+     bluez-pin          |    [] []    [] []             []              |
+     bombono-dvd        |                                               |
+     buzztard           |                                               |
+     cflow              |                                               |
+     clisp              |                                               |
+     coreutils          |          []                                   |
+     cpio               |                                               |
+     cppi               |                                               |
+     cpplib             |                                               |
+     cryptsetup         |                                               |
+     dfarc              |                   []                          |
+     dialog             |    []       [] []             []    []        |
+     dico               |                                               |
+     diffutils          |                []             []              |
+     dink               |                                               |
+     doodle             |                                               |
+     e2fsprogs          |                                               |
+     enscript           |                                               |
+     exif               |                []                             |
+     fetchmail          |                                               |
+     findutils          |                                               |
+     flex               |                                               |
+     freedink           |                                     []        |
+     gas                |                                               |
+     gawk               |                                               |
+     gcal               |                                               |
+     gcc                |                                               |
+     gettext-examples   |       []       []             [] []           |
+     gettext-runtime    | []                                            |
+     gettext-tools      | []                                            |
+     gip                |                []             []              |
+     gjay               |                                               |
+     gliv               |                                               |
+     glunarclock        |                []                             |
+     gnubiff            |                                               |
+     gnucash            | ()          ()                      ()     () |
+     gnuedu             |                                               |
+     gnulib             |                                               |
+     gnunet             |                                               |
+     gnunet-gtk         |                                               |
+     gnutls             |                               []              |
+     gold               |                                               |
+     gpe-aerial         |                []                             |
+     gpe-beam           |                []                             |
+     gpe-bluetooth      |                []                []           |
+     gpe-calendar       |                []                             |
+     gpe-clock          | []    []       []             [] []           |
+     gpe-conf           | []             []                             |
+     gpe-contacts       | []             []                             |
+     gpe-edit           |                []                             |
+     gpe-filemanager    | []             []                             |
+     gpe-go             | []             []                []           |
+     gpe-login          |                []                             |
+     gpe-ownerinfo      |                []             []              |
+     gpe-package        | []             []                             |
+     gpe-sketchbook     | []             []                             |
+     gpe-su             | []    []       []             [] [] []        |
+     gpe-taskmanager    | [] [] []       []             [] []           |
+     gpe-timesheet      |                []             []              |
+     gpe-today          |       []       []             [] []           |
+     gpe-todo           |                []                   []        |
+     gphoto2            |                                               |
+     gprof              |                               []              |
+     gpsdrive           |                                               |
+     gramadoir          |                                               |
+     grep               |                                               |
+     grub               |                                               |
+     gsasl              |                                               |
+     gss                |                                               |
+     gst-plugins-bad    |             [] []                [] []        |
+     gst-plugins-base   |             [] []                             |
+     gst-plugins-good   |                []                []           |
+     gst-plugins-ugly   |             [] []             [] [] []        |
+     gstreamer          |                                               |
+     gtick              |                                               |
+     gtkam              |                                     []        |
+     gtkorphan          |                []                      []     |
+     gtkspell           |       []    [] []       []    []    [] []     |
+     gutenprint         |                                               |
+     hello              | []             []             []              |
+     help2man           |                                               |
+     hylafax            |                                               |
+     idutils            |                                               |
+     indent             |                                               |
+     iso_15924          |             [] []                             |
+     iso_3166           | [] []       () [] [] []    []       []        |
+     iso_3166_2         |                                               |
+     iso_4217           |             []                      []        |
+     iso_639            |                      []    []                 |
+     iso_639_3          |                            []                 |
+     jwhois             |                []                             |
+     kbd                |                                               |
+     keytouch           |                []                             |
+     keytouch-editor    |                []                             |
+     keytouch-keyboa... |                []                             |
+     klavaro            |                                     []        |
+     latrine            |                []                             |
+     ld                 |                                               |
+     leafpad            | []          [] []                             |
+     libc               | []                                            |
+     libexif            |                                               |
+     libextractor       |                                               |
+     libgnutls          |                               []              |
+     libgpewidget       |                []             []              |
+     libgpg-error       |                                               |
+     libgphoto2         |                                               |
+     libgphoto2_port    |                                               |
+     libgsasl           |                                               |
+     libiconv           |                                               |
+     libidn             |                                               |
+     lifelines          |                                               |
+     liferea            |                                               |
+     lilypond           |                                               |
+     linkdr             |                                               |
+     lordsawar          |                                               |
+     lprng              |                                               |
+     lynx               |                                               |
+     m4                 |                                               |
+     mailfromd          |                                               |
+     mailutils          |                                               |
+     make               | []                                            |
+     man-db             |                                               |
+     man-db-manpages    |                                               |
+     minicom            |                                     []        |
+     mkisofs            |                                               |
+     myserver           |                                               |
+     nano               |                               []    []        |
+     opcodes            |                                               |
+     parted             |                                               |
+     pies               |                                               |
+     popt               | []             []                   []        |
+     psmisc             |                                               |
+     pspp               |                                               |
+     pwdutils           |                                               |
+     radius             |                                               |
+     recode             |                                               |
+     rosegarden         |                                               |
+     rpm                |                                               |
+     rush               |                                               |
+     sarg               |                                               |
+     screem             |                                               |
+     scrollkeeper       |                                     []     [] |
+     sed                |                                               |
+     sharutils          |                                               |
+     shishi             |                                               |
+     skencil            |                                               |
+     solfege            |                                     []        |
+     solfege-manual     |                                               |
+     soundtracker       |                                               |
+     sp                 |                                               |
+     sysstat            |                []                             |
+     tar                |       []                                      |
+     texinfo            |                                     []        |
+     tin                |                                               |
+     unicode-han-tra... |                                               |
+     unicode-transla... |                                               |
+     util-linux-ng      |                                               |
+     vice               |                                               |
+     vmm                |                                               |
+     vorbis-tools       |                                               |
+     wastesedge         |                                               |
+     wdiff              |                                               |
+     wget               |             []                                |
+     wyslij-po          |                                               |
+     xchat              | []             [] []                          |
+     xdg-user-dirs      | [] []       [] [] []       []       [] []     |
+     xkeyboard-config   | []    []    []                                |
+                        +-----------------------------------------------+
+                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
+                          20  5 10  1 13 48  4  2  2  4 24 10 20  3   1
+
+                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
+                        +---------------------------------------------------+
+     a2ps               | []           []     []  []   [] []       []    [] |
+     aegis              | []                      []      []                |
+     ant-phone          |                         []   []                   |
+     anubis             | []           []                 []                |
+     aspell             | []                           [] []    [] []       |
+     bash               | []                                    []          |
+     bfd                |                                 []                |
+     bibshelf           | []  []                                            |
+     binutils           |                                 []    []          |
+     bison              | []           []                 []                |
+     bison-runtime      | []           []     []  []   [] []       []       |
+     bluez-pin          | []           []         []   [] []    [] []    [] |
+     bombono-dvd        |     []                          ()                |
+     buzztard           | []  []                                            |
+     cflow              |              []                                   |
+     clisp              | []                              []                |
+     coreutils          | []           []     []  []      []       []       |
+     cpio               | []           []                 []                |
+     cppi               |              []                                   |
+     cpplib             | []                                                |
+     cryptsetup         | []                                                |
+     dfarc              |              []                                   |
+     dialog             | []           []         []      []                |
+     dico               |              []                                   |
+     diffutils          | []           []         []   [] []             [] |
+     dink               | ()                                                |
+     doodle             | []                                          []    |
+     e2fsprogs          | []           []                                   |
+     enscript           | []                      []   [] []       []       |
+     exif               | []           []              [] ()    []          |
+     fetchmail          | []           []                 []          []    |
+     findutils          | []           []     []          []       []       |
+     flex               | []           []         []   [] []                |
+     freedink           | []           []                                   |
+     gas                |                                                   |
+     gawk               | []           []         []   []                   |
+     gcal               |                                                   |
+     gcc                |                                                [] |
+     gettext-examples   | []           []     []       [] []    [] []    [] |
+     gettext-runtime    | []  []       []     []       [] []    [] []    [] |
+     gettext-tools      |              []              [] []    [] []    [] |
+     gip                | []           []                 []    []       [] |
+     gjay               |                                                   |
+     gliv               | []           []         []   [] []    []          |
+     glunarclock        | []                      []   []       []       [] |
+     gnubiff            | []                           ()                   |
+     gnucash            | []           ()         ()      ()                |
+     gnuedu             | []                                                |
+     gnulib             | []           []                 []       []       |
+     gnunet             |                                                   |
+     gnunet-gtk         |                                                   |
+     gnutls             | []           []                                   |
+     gold               |                                                   |
+     gpe-aerial         | []                  []  []   [] []       []    [] |
+     gpe-beam           | []                  []  []   [] []       []    [] |
+     gpe-bluetooth      | []                      []                        |
+     gpe-calendar       |                         []      []       []    [] |
+     gpe-clock          | []                  []  []   [] []    [] []    [] |
+     gpe-conf           | []                  []  []   [] []    [] []       |
+     gpe-contacts       |                         []   [] []       []    [] |
+     gpe-edit           | []           []                          []       |
+     gpe-filemanager    | []                              []       []       |
+     gpe-go             | []           []         []   [] []    [] []    [] |
+     gpe-login          | []                      []                        |
+     gpe-ownerinfo      | []                  []  []   [] []    [] []    [] |
+     gpe-package        | []                                       []       |
+     gpe-sketchbook     | []                  []  []   [] []       []    [] |
+     gpe-su             | []                  []  []   [] []    [] []    [] |
+     gpe-taskmanager    | []                  []  []   [] []    [] []    [] |
+     gpe-timesheet      | []                  []  []   [] []    [] []    [] |
+     gpe-today          | []                  []  []   [] []    [] []    [] |
+     gpe-todo           | []                      []      []       []    [] |
+     gphoto2            | []        [] []         []   [] []    []       [] |
+     gprof              | []                      []   []                   |
+     gpsdrive           | []                              []                |
+     gramadoir          | []                                    []          |
+     grep               | []           []                 []    []          |
+     grub               | []           []                 []                |
+     gsasl              | []           []                       []       [] |
+     gss                |              []              []       []          |
+     gst-plugins-bad    | []           []         []      []    []    []    |
+     gst-plugins-base   | []           []         []      []    []          |
+     gst-plugins-good   | []           []         []      []    []          |
+     gst-plugins-ugly   | []           []         []      []    [] []       |
+     gstreamer          | []           []         []      []    []          |
+     gtick              | []                              []    []          |
+     gtkam              | []        [] []         []      []    []          |
+     gtkorphan          | []                                                |
+     gtkspell           | []           []     []  []   [] []    [] [] [] [] |
+     gutenprint         | []                              []                |
+     hello              | []           []                       [] []       |
+     help2man           |              []                 []                |
+     hylafax            | []                                                |
+     idutils            | []           []         []   [] []                |
+     indent             | []           []         []   [] []    []       [] |
+     iso_15924          | []           []                 []       []       |
+     iso_3166           | []  [] [] [] []     ()  []   [] [] [] [] [] [] [] |
+     iso_3166_2         | []           []                          []       |
+     iso_4217           | []  []       []     []          [] []    []    [] |
+     iso_639            | []     [] [] []                 [] [] [] []    [] |
+     iso_639_3          |        [] []                                      |
+     jwhois             | []           []         []   []                   |
+     kbd                | []           []              []                   |
+     keytouch           | []           []                       []          |
+     keytouch-editor    | []           []                       []          |
+     keytouch-keyboa... | []           []                       []          |
+     klavaro            | []                      []                        |
+     latrine            |              []                 []                |
+     ld                 |                                                   |
+     leafpad            | []  []       []     []  []      []    [] []    [] |
+     libc               | []           []                 []    []          |
+     libexif            | []           []         ()            []          |
+     libextractor       |                                                   |
+     libgnutls          | []           []                                   |
+     libgpewidget       | []           []                          []       |
+     libgpg-error       |              []              []                   |
+     libgphoto2         | []           []                                   |
+     libgphoto2_port    | []           []         []      []    []          |
+     libgsasl           | []           []              []       []       [] |
+     libiconv           | []           []                       [] []    [] |
+     libidn             | []           []                                   |
+     lifelines          | []           []                                   |
+     liferea            | []           []     []  []   [] ()    ()    []    |
+     lilypond           | []                                                |
+     linkdr             | []                  []          []                |
+     lordsawar          |                                                   |
+     lprng              |              []                                   |
+     lynx               | []                      []      []                |
+     m4                 | []           []         []   [] []                |
+     mailfromd          |              []                                   |
+     mailutils          |              []                                   |
+     make               | []           []         []      []                |
+     man-db             | []           []                 []                |
+     man-db-manpages    | []           []                 []                |
+     minicom            |              []         []   [] []                |
+     mkisofs            | []           []                 []                |
+     myserver           |                                                   |
+     nano               | []           []         []      []                |
+     opcodes            | []                           []                   |
+     parted             | []           []                 []    []          |
+     pies               |              []                                   |
+     popt               | []           []     []          []                |
+     psmisc             | []           []                 []                |
+     pspp               | []                      []                        |
+     pwdutils           |              []                                   |
+     radius             | []           []                 []                |
+     recode             | []           []     []  []   [] []    [] []       |
+     rosegarden         |              ()                 ()                |
+     rpm                | []           []     []                            |
+     rush               | []           []                                   |
+     sarg               |                                                   |
+     screem             |                                                   |
+     scrollkeeper       | []  []       []              [] []    []    [] [] |
+     sed                | []           []     []  []   [] []    [] []    [] |
+     sharutils          | []           []                 []             [] |
+     shishi             |              []                                   |
+     skencil            |                     []  []                        |
+     solfege            | []           []         []      []                |
+     solfege-manual     | []           []         []                        |
+     soundtracker       |                                       []          |
+     sp                 |                                                   |
+     sysstat            | []           []         []      []                |
+     tar                | []           []                 []       []       |
+     texinfo            | []           []              [] []                |
+     tin                |                                 []                |
+     unicode-han-tra... |                                                   |
+     unicode-transla... |                                                   |
+     util-linux-ng      | []           []         []      []       []       |
+     vice               | []                                                |
+     vmm                | []                                                |
+     vorbis-tools       | []           []                                   |
+     wastesedge         | []                                                |
+     wdiff              | []           []                                   |
+     wget               | []           []     []  []      []    [] []       |
+     wyslij-po          | []  []       []                                   |
+     xchat              | []        [] []     []          []    [] [] [] [] |
+     xdg-user-dirs      | []  [] [] [] []  [] []  []   [] []    [] [] [] [] |
+     xkeyboard-config   | []           []                 []                |
+                        +---------------------------------------------------+
+                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
+                          135 10  4  7 105  1 29  62   47 91  3 54 46  9 37
+
+                          sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
+                        +---------------------------------------------------+
+     a2ps               | []              [] [] [] []                       | 27
+     aegis              |                          []                       |  9
+     ant-phone          | []                 []    []      []               |  9
+     anubis             | []                 [] [] []                       | 15
+     aspell             |                       [] []  []                   | 20
+     bash               | []                    [] []                       | 12
+     bfd                |                          []                       |  6
+     bibshelf           | []                       []      []               | 16
+     binutils           |                       [] []                       |  8
+     bison              | []                       []                       | 12
+     bison-runtime      | []              []    [] []      []          []   | 29
+     bluez-pin          | []              [] [] [] []  []  []          []   | 37
+     bombono-dvd        |                          []                       |  4
+     buzztard           |                          []                       |  7
+     cflow              |                       [] []      []               |  9
+     clisp              |                                                   | 10
+     coreutils          | []                    [] []      []               | 22
+     cpio               | []                 [] [] []      []          []   | 13
+     cppi               |                       [] []                       |  5
+     cpplib             | []                 [] [] []      []          []   | 14
+     cryptsetup         | []                       []                       |  7
+     dfarc              |                          []                       |  9
+     dialog             | []  []          []       []  []  []          []   | 30
+     dico               |                       []                          |  2
+     diffutils          | []                 [] [] []      []          []   | 30
+     dink               |                                                   |  4
+     doodle             | []                       []                       |  7
+     e2fsprogs          | []                 []    []                       | 11
+     enscript           | []                 [] [] []                       | 17
+     exif               | []                       []      []               | 16
+     fetchmail          |                    []    []      []               | 17
+     findutils          | []                 [] [] []      []               | 20
+     flex               | []                 []    []                  []   | 15
+     freedink           |                          []                       | 10
+     gas                |                    []                             |  4
+     gawk               | []                 []    []      []               | 18
+     gcal               | []                 []                             |  5
+     gcc                | []                 []            []               |  7
+     gettext-examples   | []                 [] [] []      []    []    []   | 34
+     gettext-runtime    | []                 [] [] []      []    []    []   | 29
+     gettext-tools      | []                 [] [] []      []          []   | 22
+     gip                | []                       []      []          []   | 22
+     gjay               |                          []                       |  3
+     gliv               | []                 []    []                       | 14
+     glunarclock        | []                       []  []  []          []   | 19
+     gnubiff            | []                       []                       |  4
+     gnucash            |                    () [] ()      []          ()   | 10
+     gnuedu             |                          []                  []   |  7
+     gnulib             | []                    [] []      []               | 16
+     gnunet             |                          []                       |  1
+     gnunet-gtk         | []                 []    []                       |  5
+     gnutls             | []                       []      []               | 10
+     gold               |                          []                       |  4
+     gpe-aerial         | []                       []      []               | 18
+     gpe-beam           | []                       []      []               | 19
+     gpe-bluetooth      | []                       []      []               | 13
+     gpe-calendar       | []                       []  []  []               | 12
+     gpe-clock          | []                 []    []  []  []               | 28
+     gpe-conf           | []                       []  []  []               | 20
+     gpe-contacts       | []                       []      []               | 17
+     gpe-edit           | []                       []      []               | 12
+     gpe-filemanager    | []                       []  []  []               | 16
+     gpe-go             | []                 []    []  []  []               | 25
+     gpe-login          | []                       []      []               | 11
+     gpe-ownerinfo      | []                 []    []      []          []   | 25
+     gpe-package        | []                       []      []               | 13
+     gpe-sketchbook     | []                       []      []               | 20
+     gpe-su             | []                 []    []  []  []               | 30
+     gpe-taskmanager    | []                 []    []  []  []               | 29
+     gpe-timesheet      | []                 []    []      []          []   | 25
+     gpe-today          | []                 []    []  []  []          []   | 30
+     gpe-todo           | []                       []  []  []               | 17
+     gphoto2            | []                    [] []      []          []   | 24
+     gprof              | []                 []    []                       | 15
+     gpsdrive           | []                       []      []               | 11
+     gramadoir          | []                       []      []               | 11
+     grep               |                 []       []      []               | 10
+     grub               | []                       []      []               | 14
+     gsasl              | []                       []      []          []   | 14
+     gss                | []                       []      []               | 11
+     gst-plugins-bad    | []                 []    []      []               | 26
+     gst-plugins-base   | []                 [] [] []      []               | 24
+     gst-plugins-good   | []                 []    []      []               | 24
+     gst-plugins-ugly   | []                 [] [] []      []               | 29
+     gstreamer          | []                    [] []      []               | 22
+     gtick              |                       [] []      []               | 13
+     gtkam              | []                       []      []               | 20
+     gtkorphan          | []                       []      []               | 14
+     gtkspell           | []              [] [] [] []  []  []    []    []   | 45
+     gutenprint         | []                                                | 10
+     hello              | []              [] []    []      []          []   | 21
+     help2man           | []                       []                       |  7
+     hylafax            |                          []                       |  5
+     idutils            | []                 []    []      []               | 17
+     indent             | []                 [] [] []      []          []   | 30
+     iso_15924          |                 ()    [] ()      []          []   | 16
+     iso_3166           | []        []    () [] [] ()  []  []    []    ()   | 53
+     iso_3166_2         |                 ()    [] ()      []               |  9
+     iso_4217           | []              () [] [] ()      []    []         | 26
+     iso_639            | []     [] []    ()    [] ()  []  []    []    []   | 38
+     iso_639_3          |        []                ()                       |  8
+     jwhois             | []                 []    []      []          []   | 16
+     kbd                | []                 [] [] []      []               | 15
+     keytouch           | []                       []      []               | 16
+     keytouch-editor    | []                       []      []               | 14
+     keytouch-keyboa... | []                       []      []               | 14
+     klavaro            |                          []                       | 11
+     latrine            |                    []    []      []               | 10
+     ld                 | []                 []    []                  []   | 11
+     leafpad            | []                 [] [] []      []          []   | 33
+     libc               | []                 []    []      []          []   | 21
+     libexif            |                          []      ()               |  7
+     libextractor       |                          []                       |  1
+     libgnutls          | []                       []      []               |  9
+     libgpewidget       | []                       []      []               | 14
+     libgpg-error       | []                       []      []               |  9
+     libgphoto2         |                       [] []                       |  8
+     libgphoto2_port    | []                    [] []                  []   | 14
+     libgsasl           | []                       []      []               | 13
+     libiconv           | []                       []  []  []               | 21
+     libidn             | ()                       []      []               | 11
+     lifelines          | []                                                |  4
+     liferea            | []                 []            []               | 21
+     lilypond           |                          []                       |  7
+     linkdr             | []                 []    []      []          []   | 17
+     lordsawar          |                                                   |  1
+     lprng              |                          []                       |  3
+     lynx               | []                 [] [] []                       | 17
+     m4                 | []                       []      []          []   | 19
+     mailfromd          |                       [] []                       |  3
+     mailutils          |                          []                       |  5
+     make               | []                 []    []      []               | 21
+     man-db             | []                       []      []               |  8
+     man-db-manpages    |                                                   |  4
+     minicom            | []                       []                       | 16
+     mkisofs            |                          []      []               |  9
+     myserver           |                                                   |  0
+     nano               | []                       []      []          []   | 21
+     opcodes            | []                 []    []                       | 11
+     parted             | []                 [] [] []                  []   | 15
+     pies               |                       [] []                       |  3
+     popt               | []              [] []    []      []          []   | 27
+     psmisc             | []                       []                       | 11
+     pspp               |                                                   |  4
+     pwdutils           | []                       []                       |  6
+     radius             |                       [] []                       |  9
+     recode             | []                 []    []      []               | 28
+     rosegarden         | ()                                                |  0
+     rpm                | []                       []                  []   | 11
+     rush               |                       [] []                       |  4
+     sarg               |                                                   |  1
+     screem             |                          []                       |  3
+     scrollkeeper       | []                 [] [] []                  []   | 27
+     sed                | []                 []    []      []          []   | 30
+     sharutils          | []                 []    []      []          []   | 22
+     shishi             |                          []                       |  3
+     skencil            | []                       []                       |  7
+     solfege            | []                 []    []      []               | 16
+     solfege-manual     |                    []                             |  8
+     soundtracker       | []                 []    []                       |  9
+     sp                 |                    []                             |  3
+     sysstat            |                          []      []               | 15
+     tar                | []                 [] [] []      []          []   | 23
+     texinfo            | []                 [] [] []      []               | 17
+     tin                |                                                   |  4
+     unicode-han-tra... |                                                   |  0
+     unicode-transla... |                                                   |  2
+     util-linux-ng      | []                 [] [] []                       | 20
+     vice               | ()                 ()                             |  1
+     vmm                |                          []                       |  4
+     vorbis-tools       |                          []                       |  6
+     wastesedge         |                                                   |  2
+     wdiff              | []                       []                       |  7
+     wget               | []                 []    []      []          []   | 26
+     wyslij-po          |                       [] []                       |  8
+     xchat              | []              []    [] []      []          []   | 36
+     xdg-user-dirs      | []     [] []    [] [] [] []      []    []    []   | 63
+     xkeyboard-config   | []                    [] []                       | 22
+                        +---------------------------------------------------+
+       85 teams           sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
+      178 domains         119  1  3  3  0 10 65 51 155 17  98     7    41    2618
 
    Some counters in the preceding matrix are higher than the number of
 visible blocks let us expect.  This is because a few extra PO files are
@@ -742,13 +1256,13 @@ distributed as such by its maintainer.  There might be an observable
 lag between the mere existence a PO file and its wide availability in a
 distribution.
 
-   If January 2004 seems to be old, you may fetch a more recent copy of
+   If June 2010 seems to be old, you may fetch a more recent copy of
 this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
 matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
+`http://translationproject.org/extra/matrix.html'.
 
-Using `gettext' in new packages
-===============================
+1.5 Using `gettext' in new packages
+===================================
 
 If you are writing a freely available program and want to
 internationalize it you are welcome to use GNU `gettext' in your
@@ -763,6 +1277,6 @@ the use of `gettext' the only thing missing are the translations.  The
 Free Translation Project is also available for packages which are not
 developed inside the GNU project.  Therefore the information given above
 applies also for every other Free Software Project.  Contact
-`translation@iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
+`coordinator@translationproject.org' to make the `.pot' files available
+to the translation teams.
 
diff --git a/AUTHORS b/AUTHORS
index 8de80e6..14ae479 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -37,17 +37,20 @@ GNU make porting efforts:
   Port to MS-DOS (DJGPP), OS/2, and MS-Windows (native/MinGW) by:
       DJ Delorie <dj@delorie.com>
       Rob Tulloh <rob_tulloh@tivoli.com>
-      Eli Zaretskii <eliz@is.elta.co.il>
+      Eli Zaretskii <eliz@gnu.org>
       Jonathan Grant <jg@jguk.org>
       Andreas Beuning <andreas.buening@nexgo.de>
       Earnie Boyd <earnie@uses.sf.net>
+      Troy Runkel <Troy.Runkel@mathworks.com>
 
 -----------------------------------
 Other contributors:
 
   Janet Carson <janet_carson@tivoli.com>
   Howard Chu <hyc@highlandsun.com>
+  Ludovic Courtès <ludo@gnu.org>
   Paul Eggert <eggert@twinsun.com>
+  Ramon Garcia Fernandez <ramon.garcia.f@gmail.com>
   Klaus Heinz <kamar@ease.rhein-main.de>
   Michael Joosten
   Jim Kelton <jim_kelton@tivoli.com>
@@ -55,19 +58,21 @@ Other contributors:
   Tim Magill <tim.magill@telops.gte.com>
   Markus Mauhart <qwe123@chello.at>
   Greg McGary <greg@mcgary.org>
+  Thien-Thi Nguyen <ttn@gnuvola.org>
   Thomas Riedl <thomas.riedl@siemens.com>
   Han-Wen Nienhuys <hanwen@cs.uu.nl>
   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>
+  David A. Wheeler <dwheeler@dwheeler.com>
+  David Boyce <dsb@boyski.com>
+  Frank Heckenbach <f.heckenbach@fh-soft.de>
 
 With suggestions/comments/bug reports from a cast of ... well ...
 hundreds, anyway :)
 
 -------------------------------------------------------------------------------
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1997-2013 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
index d135d1c..5fcf273 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2013-10-09  Paul Smith  <psmith@gnu.org>
+
+       Version 4.0 released.
+
+       * configure.ac: Updated for the release.
+       * NEWS: Updated for the release.
+
+       * maintMakefile (tag-release): New target to add a Git tag.
+       * read.c (eval): Typo fix.
+       * ChangeLog.1: Typo fixes.
+       * w32/subproc/sub_proc.c (process_cleanup): Typo fix.
+
+2013-10-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/compat/posixfcn.c (tmpfile): Move declaration of h before
+       the first executable statement.  Reported by Gisle Vanem
+       <gvanem@yahoo.no>.
+
+2013-10-05  Paul Smith  <psmith@gnu.org>
+
+       * makeint.h (MAP_USERFUNC): A new map type for function names.
+       * main.c (initialize_stopchar_map): Set up the function name map.
+
+       * gnumake.h (gmk_func_ptr): Define a type for function pointers.
+       (gmk_add_function): Convert the last argument to FLAGS.
+       (GMK_FUNC_*): Define flags for the function.  Change the default
+       behavior to "expand" since that's the most common one.
+
+       * function.c (function_table_entry): Use new function pointer type.
+       (lookup_function): Accept any valid function name character based
+       on the MAP_USERFUNC values.
+       (define_new_function): Use the new calling signature.  Verify that
+       registered functions have valid names.
+
+       * guile.c (guile_gmake_setup): Use new calling signatures.
+       * loadapi.c (gmk_add_function): Ditto.
+       * variable.h (define_new_function): Ditto.
+
+       * doc/make.texi (Loaded Object API): Make the registered function
+       API documentation more clear.
+
+2013-10-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (abspath): Reset root_len to one for Cygwin only when
+       HAVE_DOS_PATHS is defined.  Suggested by Christopher Faylor.
+
+2013-10-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/compat/posixfcn.c (tmpfile): New function, a replacement for
+       the Windows libc version.
+
+       Fix $abspath on Cygwin when HAVE_DOS_PATHS is in effect.
+       * function.c (IS_ABSOLUTE) [__CYGWIN__]: Special definition for
+       Cygwin.
+       (abspath) [__CYGWIN__]: Reset root_len to 1 if the absolute file
+       name has the Posix /foo/bar form.
+       [HAVE_DOS_PATHS]: Use root_len instead of hard-coded 2.
+
+2013-10-01  Paul Smith  <psmith@gnu.org>
+
+       * configure.ac: Update version to 3.99.93.
+       * NEWS: Ditto.
+
+2013-09-30  Paul Smith  <psmith@gnu.org>
+
+       * guile.c: Portability fixes for Guile 1.8.
+
+2013-09-29  Paul Smith  <psmith@gnu.org>
+
+       * output.c (output_dump): Always write Enter/Leave messages to stdio.
+       (log_working_directory): This now always writes to stdio, so we
+       don't need the struct output parameter anymore.
+       (output_start): Show the working directory when output_sync is not
+       set or is recursive.
+       * main.c (main): Ensure the special "already shown Enter message"
+       token is removed from MAKE_RESTARTS before the user can see it.
+       * function.c (func_shell_base): If the output_context stderr
+       exists but is invalid, write to the real stderr.
+       Fixes suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
+
+       * output.c: Guard unistd.h inclusion, add io.h.
+       * gnumake.h: Move GMK_EXPORT before the declarations.
+       * make_msvc_net2003.vcproj: Add missing files.
+       Changes for MSVC suggested by Gerte Hoogewerf <g.hoogewerf@gmail.com>
+
+       * function.c (func_shell_base) [EMX]: Fix EMX support for output-sync.
+       * job.c (child_execute_job) [EMX]: Ditto.
+       * job.h (child_execute_job) [EMX]: Ditto.
+       * w32/compat/posixfcn.c: Invert the test for NO_OUTPUT_SYNC.
+
+       * guile.c (GSUBR_TYPE): Pre-2.0 Guile doesn't provide a typedef
+       for gsubr pointers.  Create one.
+       (guile_define_module): Use it.
+       (internal_guile_eval): Force UTF-8 encoding for Guile strings.
+
+       * main.c (main): Clear GNUMAKEFLAGS after parsing, to avoid
+       proliferation of options.
+       * NEWS: Document it.
+       * doc/make.texi (Options/Recursion): Ditto.
+
+2013-09-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/compat/posixfcn.c: Fix the forgotten OUTPUT_SYNC conditional.
+
+       * job.h: Ditto, but in a comment.
+
+2013-09-22  Paul Smith  <psmith@gnu.org>
+
+       * configure.ac: Update version to 3.99.92.
+       * NEWS: Ditto.
+
+       * implicit.c (pattern_search): After second expansion be sure to
+       handle order-only markers inside the expansion properly.
+       Fixes Savannah bug #31155.
+
+       * guile.c (guile_define_module): Technically a void* cannot
+       contain a pointer-to-function and some compilers warn about this.
+       Cast the function pointers.
+       * load.c (load_object): Ditto.
+
+       * read.c (eval): If load_file() returns -1, don't add this to the
+       "to be rebuilt" list.
+       * doc/make.texi (load Directive): Document it.
+
+       * guile.c (guile_gmake_setup): Don't initialize Guile so early.
+       (func_guile): Lazily initialize Guile the first time the $(guile ..)
+       function is invoked.  Guile can steal file descriptors which
+       confuses our jobserver FD checking, so we don't want to initialize
+       it before we have to.
+
+       VMS port updates by Hartmut Becker <becker.ismaning@freenet.de>
+
+       * makefile.com: Add output to the filelist.
+       * output.c (va_copy): Add an implementation of this macro for VMS.
+       * commands.c: Ensure filedef.h is #included before dep.h.
+       * dir.c: Ditto.
+       * file.c: Ditto.
+       * guile.c: Ditto.
+       * main.c: Ditto.
+       * misc.c: Ditto.
+       * read.c: Ditto.
+       * rule.c: Ditto.
+       * variable.c: Ditto.
+       * readme.vms: Renamed to README.VMS and updates for this release.
+       * Makefile.am: Ditto.
+       * NEWS: Ditto.
+       * README.template: Ditto.
+       * Makefile.DOS.template: Ditto.
+
+2013-09-21  Paul Smith  <psmith@gnu.org>
+
+       * maintMakefile (check-alt-config): Create a target to test
+       alternative configurations.  Each one will build make with a
+       different configuration then run the test suite.
+
+       Invert the output-sync #define to NO_OUTPUT_SYNC
+
+       * configure.ac: Don't set OUTPUT_SYNC.
+       * makeint.h: Ditto.
+       * main.c: Use NO_OUTPUT_SYNC instead of OUTPUT_SYNC.
+       * output.c: Ditto.
+       * output.h: Ditto.
+       * job.h: Ditto.
+       * job.c: Ditto.
+       * config.ami.template: Set NO_OUTPUT_SYNC.
+       * config.h-vms.template: Ditto.
+       * config.h.W32.template: Ditto.
+       * configh.dos.template: Ditto.
+
+       Output generated while reading makefiles should be synced.
+
+       * main.c (make_sync): Define a context for syncing while reading
+       makefiles and other top-level operations.
+       (main): If we request syncing, enable it while we are parsing
+       options, reading makefiles, etc. to capture that output.  Just
+       before we start to run rules, dump the output if any.
+       (die): Dump any output we've been syncing before we die
+       * output.h (OUTPUT_SET): Disable output_context if not syncout.
+
+       Stderr generated from shell functions in recipes should be synced.
+
+       * job.h (FD_STDIN, FD_STDOUT, FD_STDERR): Create new macros to
+       avoid magic numbers.
+       (child_execute_job): Take a FD for stderr.
+       * job.c (child_execute_job): Handle STDERR FD's in addition to
+       stdin and stdout.
+       (start_job_command): Call child_execute_job() with the new STDERR
+       parameter.  Instead of performing the dup() here, send it to
+       child_execute_job() where it's already being done.
+       * function.c (func_shell_base): Pass the OUTPUT_CONTEXT stderr to
+       child_execute_job() if it's set, otherwise FD_STDERR.
+       * main.c (main): Pass FD_STDERR to child_execute_job().
+
+2013-09-19  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Set MAKE_RESTARTS to negative before re-exec if
+       we've already generated an "Entering" message.  If we are started
+       and notice that MAKE_RESTARTS is negative, assume we already wrote
+       "Entering" and don't write it again.
+
+2013-09-18  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Set starting_directory before we write any
+       errors.  Fixes Savannah bug #40043.
+
+2013-09-16  Eli Zaretskii  <eliz@gnu.org>
+
+       * output.c [WINDOWS32]: Include windows.h and sub_proc.h, to avoid
+       compiler warnings for CLOSE_ON_EXEC.
+
+2013-09-16  Paul Smith  <psmith@gnu.org>
+
+       * configure.ac: Update version to 3.99.91.
+       * NEWS: Ditto.
+
+2013-09-15  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Error Messages): Add a bit more info to the
+       section on static pattern errors, since they're common.
+       Fixes Savannah bug #31326.
+
+       * read.c (eval_makefile): If the file open fails with an
+       unrecoverable error, stop now rather than trying to make it.
+       Fixes Savannah bug #27374.
+
+       * main.c (main): Perform the validation of the jobserver FDs
+       early, before we read makefiles, to ensure that something hasn't
+       opened and used those FDs for some other reason.
+       Fixes Savannah bug #39934.
+
+       * main.c (main): Don't set MAKEFLAGS in the environment when we
+       restart.  We have the original command line flags so keep the
+       original MAKEFLAGS settings as well.
+       Fixes Savannah bug #39203.
+
+2013-09-14  Paul Smith  <psmith@gnu.org>
+
+       * main.c (decode_debug_flags): Add support for the "n" flag to
+       disable all debugging.
+       * make.1: Document the "n" (none) flag.
+       * doc/make.texi (Options Summary): Ditto.
+       * NEWS: Ditto.
+       Fixes Savannah bug #35248.
+
+       * misc.c (close_stdout): Move to output.c.
+       * main.c (main): Move atexit call to output_init().
+       * makeint.h: Remove close_stdout() declaration.
+       * output.c (output_init): Add close_stdout at exit only if it's open.
+       Fixes Savannah bug #33134.  Suggested by David Boyce <dsb@boyski.com>.
+
+2013-09-14  Paul Smith  <psmith@gnu.org>
+
+       * misc.c (set_append_mode, open_tmpfd, open_tmpfile): Move to output.c.
+       * misc.h: Ditto.
+       * output.h: Ditto.
+       * main.c (main): Move stdio init into output.c:output_init().
+       Change open_tmpfile() to output_tmpfile().
+       * output.c: Rename open_*() to output_*().  set_append_mode() and
+       open_tmpfd() are static.
+       (_outputs, log_working_directory): Accept a struct output and
+       print to that rather than the global context.
+       (output_dump): In recurse mode print enter/leave once for the
+       whole makefile.
+       (output_init): Initialize this processes stdio as well as child's.
+
+       * vmsjobs.c: Reformat to be closer to convention.
+
+2013-09-12  Paul Smith  <psmith@gnu.org>
+
+       Rework output to handle synchronization and directory logging more
+       reliably.
+
+       * output.c: New file.  Implement lazy synchronization and
+       directory logging so that we manage them "just in time", and the
+       destination of the output is set via a global state variable.
+       * output.h: New file.
+       * function.c (func_shell_base): Ensure the output is set up before
+       running a shell command, in case it writes to stderr.
+       (func_error): Use outputs() to generate output.
+       * job.h (struct child): Add struct output to track the child's output.
+       * job.c: Use struct output in the child structure to track output.
+       (child_out, sync_init, assign_child_tempfiles, pump_from_tmp)
+       (acquire_semaphore, release_semaphore, sync_output): Move most of
+       the output_sync handling to output.c.
+       (child_error): Set output, then use simple message() and error()
+       not _s versions.
+       * main.c (log_working_directory): Moved to output.c
+       (trace_option, decode_trace_flags) Remove.  Remove support for
+       different trace modes; we don't use it anymore.
+       (die) Invoke output_close() before we exit.
+       * misc.c (message_s, error_s): Removed; no longer needed.
+       (message, error, fatal, perror_with_name, pfatal_with_name): Moved
+       to output.c.
+       * makeint.h: Remove message_s(), error_s(), and
+       log_working_directory().  Remove the TRACE_* macros.
+       * doc/make.texi: Enhance documentation for output sync, and remove
+       MODE assignment for --trace.
+       * make.1: Remove MODE assignment for --trace.
+       * Makefile.am: Add new files.
+       * NMakefile.template: Ditto.
+       * SMakefile.template: Ditto.
+       * build_w32.bat: Ditto.
+       * dosbuild.bat: Ditto.
+       * make.lnk: Ditto.
+       * make_nsvc_net2003.vcproj: Ditto.
+       * makefile.vms: Ditto.
+       * po/POTFILES.in: Ditto.
+
+2013-08-22  Petr Machata  <pmachata@redhat.com>
+
+       * function.c (func_shell_base): Get rid of any avoidable limit on
+       stack size for processes spawned via $(shell).
+
+2013-07-22  Paul Smith  <psmith@gnu.org>
+
+       * implicit.c (pattern_search): Use PARSE_SIMPLE_SEQ() even for
+       non-second expansion prerequisites, to handle globbing in patterns.
+       Fixes Savannah bug #39310.
+
+       * dep.h (PARSE_SIMPLE_SEQ): Macro for simple file sequence parsing.
+       * default.c (set_default_suffixes): Use it.
+       * file.c (split_prereqs): Ditto.
+       * main.c (main): Ditto.
+       * read.c (eval): Ditto.
+       * rule.c (install_pattern_rule): Ditto.
+       * file.c (split_prereqs): Use PARSEFS_NONE instead of 0.
+
+2013-07-21  Paul Smith  <psmith@gnu.org>
+
+       Cleanups detected by cppcheck.  Fixes Savannah bug #39158.
+       * arscan.c (ar_scan): Reduce the scope of local variables.
+       * dir.c (vms_hash): Ditto.
+       (find_directory): Ditto.
+       (file_impossible_p): Ditto.
+       * expand.c (variable_expand_string): Ditto.
+       * function.c (func_sort): Ditto.
+       (func_and): Ditto.
+       * job.c (reap_children): Ditto.
+       (exec_command): Ditto.
+       * main.c (main): Ditto.
+       * misc.c (collapse_continuations): Ditto.
+       * read.c (eval): Ditto.
+       (parse_file_seq): Ditto.
+       * vpath.c (gpath_search): Ditto.
+       (selective_vpath_search): Ditto.
+       * job.c (is_bourne_compatible_shell): Simplify for non-Windows systems.
+       * remake.c (f_mtime): Remove duplicate test.
+       * signame.c (strsignal): Fix bogus conditional.
+
+       * job.c (assign_child_tempfiles): Assign OUTFD to -1 for safety.
+       (start_job_command): Don't test output_sync and sync_cmd: redundant.
+       Changes suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
+
+2013-07-14  Paul Smith  <psmith@gnu.org>
+
+       * filedef.h (update_status): Convert UPDATE_STATUS from a char to
+       an enumeration.  Some systems declare "char" to be "unsigned"
+       which broke the code (which expected to be able to use -1 as a
+       flag).  Using magic values was unpleasant, so rather than just
+       force "signed char" I reworked it to use an enum.
+
+       * dep.h (update_goal_chain): Return an update_status value not int.
+       * remake.c (touch_file): Ditto.
+       (update_goal_chain): Track the update_status enum.
+
+       * file.c (enter_file): Use new enumeration values with update_status.
+       (remove_intermediates): Ditto.
+       (print_file): Ditto.
+       * commands.c (execute_file_commands): Ditto.
+       * job.c (reap_children): Ditto.
+       (start_job_command): Ditto.
+       (start_waiting_job): Ditto.
+       * main.c (main): Ditto.
+       * remake.c (update_file): Ditto.
+       (complain): Ditto.
+       (update_file_1): Ditto.
+       (notice_finished_file): Ditto.
+       (remake_file): Ditto.
+       * vmsjobs.c (vmsHandleChildTerm): Ditto.
+
+2013-07-09  Paul Smith  <psmith@gnu.org>
+
+       * implicit.c (pattern_search): Keep a local copy of the number of
+       deps in deplist: the global max might change due to recursion.
+       Fixes a bug reported by Martin d'Anjou <martin.danjou14@gmail.com>.
+
+2013-06-28  Paul Smith  <psmith@gnu.org>
+
+       * misc.c (set_append_mode): Set the O_APPEND flag on a file descriptor.
+       (open_tmpfd): Set append mode on the temporary file descriptor.
+       * main.c (main): Set append mode on stdout and stderr.
+       * makeint.h (set_append_mode): Declare it.
+
+2013-06-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * build_w32.bat (LinkGCC): Prevent a comment from being displayed
+       at build time.
+
+       * job.c (construct_command_argv_internal) [WINDOWS32]: Use
+       case-insensitive comparison with internal commands of non-Unix
+       shells.
+
+       * main.c (find_and_set_default_shell): Don't use file_exists_p or
+       dir_file_exists_p, as those call readdir, which can fail if PATH
+       includes directories with non-ASCII characters, and that would
+       cause Make to fail at startup with confusing diagnostics.  See
+       https://sourceforge.net/mailarchive/message.php?msg_id=30846737
+       for the details.
+
+2013-06-22  Paul Smith  <psmith@gnu.org>
+
+       Improve performance by using a character map to determine where we
+       want to stop searching strings, rather than discrete comparisons.
+
+       * read.c (find_char_unquote): Pass a stop map instead of various
+       flags and use that to check when to stop parsing the string.
+       (eval): Use the new find_char_unquote() calling signature.
+       (remove_comments): Ditto.
+       (unescape_char): Ditto.
+       (find_percent_cached): Ditto.
+       (parse_file_seq): Use a stop-map flag.
+       * main.c (stopchar_map): Character map definition.
+       (initialize_stopchar_map): Initialize the map definition.
+       (main): Invoke the map initialization function.
+       * misc.c (end_of_token_w32): Remove unused function.
+       * dir.c (dosify): Use STOP_SET to check for stop chars.
+       * main.c (main): Ditto.
+       * misc.c (end_of_token): Ditto.
+       * function.c (subst_expand): Ditto.
+       (func_notdir_suffix): Ditto.
+       (func_basename_dir): Ditto.
+       (abspath): Ditto.
+       * job.c (is_bourne_compatible_shell): Ditto.
+       * variable.c (parse_variable_definition): Ditto.
+       * read.c (eval): Ditto.
+       (conditional_line): Ditto.
+       (find_percent_cached): Ditto.
+       * dep.h (PARSE_FILE_SEQ): Update function declaration.
+       * default.c (set_default_suffixes): Update PARSE_FILE_SEQ() call.
+       * file.c (split_prereqs): Ditto.
+       * function.c (string_glob): Ditto.
+       * implicit.c (pattern_search): Ditto.
+       * rule.c (install_pattern_rule): Ditto.
+       * main.c (main): Ditto.
+
+2013-06-21  Paul Smith  <psmith@gnu.org>
+
+       * main.c (verify_flag): Global variable to determine whether to
+       verify the database or not.
+       (decode_debug_flags): If debug mode, enable verify_flag.
+       (main): If MAKE_MAINTAINER_MODE, enable verify_flag, otherwise not.
+       (die): Only verify the database if verify_flag is set.
+       * file.c (enter_file): Don't check caching unless verify_flag.
+       * makeint.h: Export verify_flag.
+
+2013-05-27  Paul Smith  <psmith@gnu.org>
+
+       * variable.c (define_automatic_variables): Create a new variable
+       MAKE_HOST.
+
+2013-05-27  Hartmut Becker  <becker.ismaning@freenet.de>
+
+       * function.c (func_shell_base) [VMS]: Support VMS.
+       * makefile.com [VMS]: Ditto.
+       * makefile.vms [VMS]: Ditto.
+       * makeint.h [VMS]: Ditto.
+       * vmsjobs.c [VMS]: Ditto.
+       * job.h: Define RECORD_SYNC_MUTEX() when OUTPUT_SYNC is not set.
+       * load.c (unload_file): Fix signature if MAKE_LOAD is not set.
+
+2013-05-26  Paul Smith  <psmith@gnu.org>
+
+       * remake.c (f_mtime): Ensure that archive file names are in the
+       string cache.  Fixes Savannah bug #38442.
+
+       * read.c (readline): To be safe, move the entire buffer if we
+       detect a CR.  Fixes Savannah bug #38945.
+
+       * job.c (new_job): Compare OUT to the beginning of the OUT
+       var/function, not IN.  Fixes Savannah bug #39035.
+
+2013-05-22  Paul Smith  <psmith@gnu.org>
+
+       * main.c (switches[]): Order switches so simple flags all come first.
+       (define_makeflags): Rework to make option passing more
+       reliable and the code less tricksy.  Ensure simple flags are kept
+       in the initial batch of flags.  Do not allow any flags with
+       options in that batch.  If there are only non-simple flags MAKEFLAGS
+       begins with ' '.
+       (print_data_base): Print the version.  Fixes part of Savannah #35336.
+
+       * read.c (eval_buffer): Initialize lineno.
+
+2013-05-18  Alexey Pavlov  <alexpux@gmail.com>  (tiny change)
+
+       * w32/Makefile.am (libw32_a_SOURCES): Add compat/posixfcn.c.
+
+       * configure.ac (OUTPUT_SYNC): Define for mingw32 target.
+
+       * job.c (construct_command_argv_internal) <sh_cmds_dos>
+       [WINDOWS32]: Add "move".  Fixes Savannah bug #30714.
+
+       * guile.c: Move inclusion of makeint.h before gnumake.h.  This
+       order must be observed when building Make, because gnumake.h must
+       be included with GMK_BUILDING_MAKE defined, which makeint.h
+       already does.  Otherwise, the linker will look for, and fail to
+       find, gmk_* functions in some external dynamic library.
+
+2013-05-17  Benno Schulenberg  <bensberg@justemail.net>
+
+       * main.c (decode_output_sync_flags): Fix output message.
+       * read.c (EXTRANEOUS): Ditto.
+       (record_files): Ditto.
+       * remake.c (update_file_1): Ditto.
+
+2013-05-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * main.c (prepare_mutex_handle_string): Define conditioned on
+       OUTPUT_SYNC.
+
+       * build_w32.bat: Copy config.h.W32 to config.h regardless of
+       whether or not we are building from SCM.
+
+2013-05-17  Paul Smith  <psmith@gnu.org>
+
+       * configure.ac: Update version to 3.99.90.
+       * NEWS: Ditto.
+
+       * Source (*.[ch]): Remove TABs, use GNU coding styles.
+
+       * ALL: Update copyright.
+
+       * hash.c (CALLOC): Use xcalloc() to handle out of memory errors.
+
+       * makeint.h: Prototype new unload_file() function.
+       * load.c (unload_file): Create a function to unload a file.
+       (struct load_list): Type to remember loaded objects.
+       (loaded_syms): Global variable of remembered loaded objects so we
+       can unload them later.  We don't have to remove from the list
+       because the only time we unload is if we're about to re-exec.
+       (load_object): Remove unneeded extra DLP argument.
+       (load_file): Remove unneeded extra DLP argument.
+       * filedef.h (struct file): Remove the DLP pointer and add the
+       LOADED bit flag.  Saves 32/64 bytes per file, as this pointer is
+       almost never needed.
+       * read.c (eval): Set the new LOADED bit flag on the file.
+       * file.c (rehash_file): Merge the loaded bitfield.
+       * commands.c (execute_file_commands): Call unload_file() instead
+       of dlclose() directly.
+
+2013-05-14  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Loaded Object API): Document the requirement for
+       the plugin_is_GPL_compatible symbol.
+       * load.c (load_object): Check for plugin_is_GPL_compatible symbol.
+
+2013-05-13  Paul Smith  <psmith@gnu.org>
+
+       * filedef.h (struct file): Add a builtin flag.
+       * file.c (enter_file): Unset the builtin flag.
+       (rehash_file): Ditto.
+       (print_file): Don't print builtin files if we've omitted them.
+       * default.c (undefine_default_variables): New function: go through
+       the default variables and undefine them.
+       (set_default_suffixes): Mark these suffix rules as builtin.
+       * makeint.h: Prototype.
+       * main.c (main): Handle addition of -r and -R to MAKEFLAGS in the
+       makefile.  Fixes Savannah bug #20501.
+
+       * main.c (define_makeflags): Assign o_env_override level to
+       MAKEFLAGS to ensure it's set even in the presence of -e.
+       Fixes Savannah bug #2216.
+
+       * makeint.h (TRACE_NONE, TRACE_RULE, TRACE_DIRECTORY): Define
+       constants for the trace mode.
+       * main.c: Add new --trace mode parsing.
+       (decode_trace_flags): New function.
+       (decode_switches): Call it.
+       (define_makeflags): Fix a bug with long-name options.
+       * misc.c (fatal): Remove special output-sync handling.
+       * make.1: Document new --trace mode flags.
+       * doc/make.texi (Options Summary): Ditto.
+
+2013-05-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (child_out): Output the newline following the message
+       before fllush-ing the stream.  Avoids displaying the following
+       failure message, which goes to stderr, on the same line.
+
+2013-05-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * gnumake.h (GMK_EXPORT) [_WIN32]: Move the dllexport declaration
+       here from makeint.h.
+
+       * makeint.h (GMK_BUILDING_MAKE) [WINDOWS32]: Define before
+       including gnumake.h.
+
+       * doc/make.texi (Loaded Object Example): Add a note about building
+       shared objects on MS-Windows.
+
+2013-05-05  Paul Smith  <psmith@gnu.org>
+
+       * makeint.h (OUTPUT_SYNC_LINE, OUTPUT_SYNC_RECURSE): Rename
+       output-sync options "job" to "line" and "make" to "recurse".
+       * main.c (decode_output_sync_flags): Ditto.
+       * job.c (reap_children): Ditto.
+       (start_job_command): Ditto.
+       * make.1: Ditto.
+       * doc/make.texi (Parallel Output): Ditto.
+
+       * job.c (child_out): Write newlines explicitly, and don't do
+       anything if the message is empty.
+       (sync_output): Put working dir messages around stdout AND stderr.
+       (start_job_command): Move the tmp file assignment earlier.  After
+       we do it, write the command line to the temp file to get the order
+       correct.
+
+       * misc.c (message): Remove special handling for output_sync.
+       (error): Ditto.
+
+2013-05-04  Paul Smith  <psmith@gnu.org>
+
+       * loadapi.c (gmk_alloc): New function.
+       * gnumake.h: Add gmk_alloc().  Clean GMK_EXPORT a bit to avoid MAIN.
+       * makeint.h (GMK_EXPORT): New handling, vs. MAIN.
+       * doc/make.texi (Loaded Object API): Add information on the memory
+       handling functions.
+       (Loaded Object Example): Create an example.
+
+       * job.c (pump_from_tmp): (Rename) Write to stdout/stderr using
+       FILE* rather than fd.  It's not a good idea to mix and match.
+
+2013-05-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * makeint.h (ftruncate) [_MSC_VER]: Redirect to _chsize.
+       (_S_ISDIR): If not defined (MinGW64), define to S_ISDIR.
+
+2013-05-04  Paul Smith  <psmith@gnu.org>
+
+       * job.c (child_out): Handle EINTR and incomplete write scenarios.
+       (sync_init): New function: separate the initialization code.
+       (assign_child_tempfiles): Remove truncation from this function,
+       (sync_output): and add it here after output is generated.
+       (reap_children): Always call sync_output() in case output_sync was
+       reset after the child started, due to error.
+       (start_job_command): Create new sync_cmd variable.  Use new method
+       for initializing the handle.
+       If we're not syncing the output be sure any output we've saved is
+       dumped immediately before starting the child.
+
+2013-05-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (start_job_command): Make the condition for creating a
+       temporary output file be identical to the Posix code branch.
+       Suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
+
+2013-05-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/subproc/sub_proc.c: Include makeint.h.  Remove a private
+       incompatible prototype of xmalloc.
+       (batch_file_with_spaces): New function, detects Windows batch
+       files whose names include whitespace characters.
+       (process_begin): If exec_name is a batch file with whitespace
+       characters in its name, pass NULL as the first argument to
+       CreateProcess.  This avoids weird failures due to buggy quoting by
+       CreateProcess.  For the details, see the discussion starting at
+       http://lists.gnu.org/archive/html/make-w32/2013-04/msg00008.html.
+
+       * load.c (load_object, load_file): Accept an additional argument
+       DLP and return in it a pointer that can be used to unload the
+       dynamic object.
+
+       * read.c (eval): Call load_file with an additional argument, and
+       record the pointer returned there in the 'struct file' object of
+       dynamic objects in that object's 'struct file'.
+
+       * commands.c (execute_file_commands): Unload dynamic objects
+       before remaking them, to avoid failure to remake if the OS doesn't
+       allow overwriting objects that are in use.
+
+       * filedef.h (struct file): New member dlopen_ptr.
+
+       * gnumake.h (GMK_EXPORT): Define to dllexport/dllimport
+       decorations for Windows and to nothing on other platforms.
+       (gmk_eval, gmk_expand, gmk_add_function): Add GMK_EXPORT qualifier
+       to prototypes.
+
+       * makeint.h (MAIN): Define before including gnumake.h, to give
+       correct dllexport decorations to exported functions.
+       (load_file): Adjust prototype.
+
+       * loadapi.c: Don't include gnumake.h, since makeint.h already
+       includes it, and takes care of defining MAIN before doing so.
+
+       * build_w32.bat (LinkGCC): Produce an import library for functions
+       exported by Make for loadable dynamic objects.
+
+       * w32/compat/posixfcn.c (dlclose): New function.
+
+       * w32/include/dlfcn.h (dlclose): Add prototype.
+
+2013-05-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (start_job_command) [WINDOWS32]: Make the same fix for
+       MS-Windows as the previous commit did for Posix platforms.
+       (construct_command_argv_internal): Don't treat a backslash as an
+       escape character before whitespace, if the shell is not a Posix
+       shell.   For the description of the problem, see
+       http://lists.gnu.org/archive/html/make-w32/2013-04/msg00014.html.
+
+2013-05-01  Paul Smith  <psmith@gnu.org>
+
+       * job.c (start_job_command): Don't redirect output for recursive
+       make jobs, unless we're in makefile synchronization mode.
+
+2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
+
+       build: enable the 'silent-rules' automake options
+
+       * configure.ac (AM_INIT_AUTOMAKE): Here.  The future major Automake
+       version 2.0 (ETA about one, one and half year from now) will enable
+       it by default, so better prepare ourselves.
+
+2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
+
+       build: require Autoconf >= 2.62 and Automake >= 1.11.1
+
+       Older versions of those tools should be considered fully obsolete.
+       Also, GNU make already requires Gettext >= 0.18.1, which has been
+       released six months after Automake 1.11.1 and two years after
+       Autoconf 2.62; so the new requirement shouldn't be problematic
+       for people already bootstrapping GNU make from the Git repository.
+
+       * configure.ac (AC_PREREQ): Require Autoconf 2.62 or later.
+       (AM_INIT_AUTOMAKE): Require Automake 1.11.1 or later (1.11 had
+       some serious bugs, and should not be used).
+
+2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
+
+       build: get rid of 'HAVE_ANSI_COMPILER' C preprocessor conditional
+
+       GNU make already assume C89 or later throughout the codebase, and
+       that preprocessor conditional was no longer used anyway.
+
+       * configure.ac: Remove AC_DEFINE of HAVE_ANSI_COMPILER.
+       * config.ami.template: Remove #define of HAVE_ANSI_COMPILER.
+       * config.h-vms.template: Likewise.
+       * config.h.W32.template: Likewise.
+       * configh.dos.template: Likewise.
+
+2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
+
+       cosmetics: fix few innocuous typos
+
+       Most of these were found using Lucas De Marchi's 'codespell' tool.
+
+       * ChangeLog: Fix minor typos.
+       * ChangeLog.2: Likewise.
+       * README.Amiga: Likewise.
+       * TODO.private: Likewise.
+       * function.c: Likewise.
+       * glob/glob.h: Likewise.
+       * job.c: Likewise.
+       * main.c: Likewise.
+       * readme.vms: Likewise.
+       * remake.c: Likewise.
+       * tests/ChangeLog: Likewise.
+       * tests/NEWS: Likewise.
+       * tests/README: Likewise.
+       * tests/scripts/variables/private: Likewise.
+       * vmsdir.h: Likewise.
+       * signame.c: Likewise.  While at it, improve line wrapping in the
+       touched comment.
+
+2013-04-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/include/dlfcn.h: New file.
+
+       * w32/compat/posixfcn.c: Include dlfcn.h.
+       (dlopen, dlerror, dlsym) [MAKE_LOAD]: New functions, in support of
+       dynamic loading.
+
+       * config.h.W32.template (MAKE_LOAD): Define.
+
+       * load.c (load_object) [HAVE_DOS_PATHS]: Support backslashes and
+       drive letters in file names of dynamic objects.
+
+       * job.c (construct_command_argv_internal) [WINDOWS32]: Return
+       right after generating new_argv for one_shell case.  This fixes
+       the Windows build for both Unixy shell and stock Windows shells.
+
+2013-04-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * dir.c (local_stat) [WINDOWS32]: Use the wrapper on MS-Windows.
+       If the argument ends in "dir/.", make sure the parent dir exists
+       and is indeed a directory.  Fixes Savannah bug #37065.
+
+2013-04-28  Paul Smith  <psmith@gnu.org>
+
+       * makeint.h (message_s, error_s): Functions that print to strings
+       rather than directly to files.
+       * misc.c (message_s, error_s): Create them.
+       * job.c (child_error): Print error messages to the output sync
+       logs, if one exists, rather then directly to the terminal.
+       (reap_children): Move the per-line sync after child_error().
+
+       * configure.ac: Remove support for pre-ANSI variadic function calls.
+       * makeint.h: Ditto.
+       * misc.c: Ditto.
+       * config.ami.template: Ditto.
+       * config.h-vms.template: Ditto.
+       * config.h.W32.template: Ditto.
+       * configh.dos.template: Ditto.
+
+       Implement a "per-job" output synchronization option.
+
+       * main.c (decode_output_sync_flags): Recognize the new option.
+       * makeint.h (OUTPUT_SYNC_JOB): Add new values for "job"
+       * job.c (assign_child_tempfiles): In per-job mode, truncate the
+       temp file for re-use by the next job.
+       (sync_output): Don't close the temp files as we may still use them.
+       (free_child): Close the temp files here as we definitely don't
+       need them.
+       (new_job): In per-job output mode, sync_output() after each job.
+       * job.h (struct child): Avoid ifdefs.
+       * make.1: Add new options to the man page.
+       * doc/make.texi (Parallel Output): Break documentation on input
+       and output into separate sections for readability.  Document the
+       new "job" and "none" modes.
+
+2013-04-27  Paul Smith  <psmith@gnu.org>
+
+       * job.c (construct_command_argv_internal): Fix oneshell support
+       for non-POSIX-sh shells.
+
+       * load.c (load_object): Extract all POSIX-isms into a separate
+       function for portability.
+       (load_file): Check the .LOADED variable first and don't invoke
+       load_object() if it's already been loaded.
+
+2013-04-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * read.c (record_files): Pay attention to .ONESHELL in MS-Windows.
+
+       * job.c (construct_command_argv_internal): Support .ONESHELL on
+       MS-Windows, when the shell is not a Unixy shell.
+
+2013-04-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c: Fix compilation error on GNU/Linux due to "label at end
+       of compound statement".
+
+2013-04-27  Frank Heckenbach <f.heckenbach@fh-soft.de>  (tiny change)
+
+       * job.c (sync_output): Don't discard the output if
+       acquire_semaphore fails; instead, dump the output unsynchronized.
+
+2013-04-27  Eli Zaretskii  <eliz@gnu.org>
+
+       Support --output-sync on MS-Windows.
+       * w32/compat/posixfcn.c: New file, with emulations of Posix
+       functions and Posix functionality for MS-Windows.
+
+       * w32/subproc/sub_proc.c: Include io.h.
+       (process_noinherit): New function, forces a file descriptor to not
+       be inherited by child processes.
+       (process_easy): Accept two additional arguments, and use them to
+       set up the standard output and standard error handles of the child
+       process.
+
+       * w32/include/sub_proc.h (process_easy): Adjust prototype.
+       (process_noinherit): Add prototype.
+
+       * read.c [WINDOWS32]: Include windows.h and sub_proc.h.
+
+       * makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
+       defined.  This is needed because the MS-Windows build doesn't have
+       a canonical place for LOCALEDIR.
+       (WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
+       windows.h header too much stuff that could conflict with the code.
+
+       * main.c <sync_mutex>: New static variable.
+       <switches>: Add support for "--sync-mutex" switch.
+       (decode_output_sync_flags): Decode the --sync-mutex= switch.
+       (prepare_mutex_handle_string) [WINDOWS32]: New function.
+       (main): Add "output-sync" to .FEATURES.
+
+       * job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
+       process_noinherit.
+       (F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
+       New macros.
+       (RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
+       (sync_handle_t): New typedef.
+
+       * job.c <sync_handle>: Change type to sync_handle_t.
+       (FD_NOT_EMPTY): Seek to the file's end.  Suggested by Frank
+       Heckenbach <f.heckenbach@fh-soft.de>.
+       (pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
+       the duration of this function, and then change back before
+       returning.
+       (start_job_command) [WINDOWS32]: Support output_sync mode on
+       MS-Windows.  Use a system-wide mutex instead of locking
+       stdout/stderr.  Call process_easy with two additional arguments:
+       child->outfd and child->errfd.
+       (exec_command) [WINDOWS32]: Pass two additional arguments, both
+       -1, to process_easy, to adjust for the changed function signature.
+
+       * function.c (windows32_openpipe) [WINDOWS32]: This function now
+       returns an int, which is -1 if it fails and zero otherwise.  It
+       also calls 'error' instead of 'fatal', to avoid exiting
+       prematurely.
+       (func_shell_base) [WINDOWS32]: Call perror_with_name if
+       windows32_openpipe fails, now that it always returns.  This avoids
+       a compiler warning that error_prefix is not used in the MS-Windows
+       build.
+
+       * config.h.W32.template (OUTPUT_SYNC): Define.
+
+       * build_w32.bat: Add w32/compat/posixfcn.c to compilation and
+       linking commands.
+
+2013-04-20  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
+
+       * README.git: Our autoconf input file is 'configure.ac', not
+       'configure.in'.  Adjust accordingly.
+       * build_w32.bat: Likewise.
+       * config.h-vms.template: Likewise.
+       * Makefile.DOS.template: Likewise.
+
+2013-04-16  Paul Smith  <psmith@gnu.org>
+
+       * misc.c (open_tmpfd): Add a new function that returns a temporary
+       file by file descriptor.
+       (open_tmpfile): Move here from main.c.
+       * job.c (assign_child_tempfiles): Use the new open_tmpfd().
+
+2013-04-15  Paul Smith  <psmith@gnu.org>
+
+       * makeint.h (OUTPUT_SYNC_TARGET, OUTPUT_SYNC_MAKE): Rename.
+       * job.c (start_job_command): Use new constants.
+       * main.c: New -O argument format.
+
+       * doc/make.texi (Options Summary): Document the argument to -O.
+       * make.1: Ditto.
+
+       * main.c (define_makeflags): Don't add space between a single-char
+       option and its argument.
+
+2013-04-06  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Implicit Variables): Clarify LDFLAGS vs. LDLIBS.
+       Fixes Savannah bug #37970.
+
+       * remake.c (check_dep): Reconsider files waiting on prerequisites,
+       as they may have finished.  Fixes Savannah bug #37703.
+
+2013-02-28  Paul Smith  <psmith@gnu.org>
+
+       * function.c (func_realpath): On Solaris (at least) realpath() can
+       fail due to EINTR, so loop it.  Fixes Savannah bug #38420.
+
+2013-02-25  Paul Smith  <psmith@gnu.org>
+
+       Add a proposed supported API for GNU make loaded objects.
+
+       * doc/make.texi (Loaded Object API): Document it.
+       * Makefile.am (make_SOURCES): Add new loadapi.c.
+       * dep.h: Remove eval_buffer(); moved to loadapi.c:gmk_eval().
+       * read.c (eval_buffer): Change eval_buffer() signature.
+       * main.c (main): Change eval_buffer() signature.
+       * variable.h (define_new_function): Change func_ptr signature.
+       * load.c (SYMBOL_EXTENSION): Change the extension.
+       * loadapi.c: Implement the new API.
+       * gnumake.h (gmk_eval): New function prototype.
+       (gmk_expand) Ditto.
+       (gmk_add_function) Ditto.
+       * gmk-default.scm (gmk-eval): Remove: now implemented in guile.c.
+       * guile.c (guile_expand_wrapper): Use gmk_expand()
+       (guile_eval_wrapper): Implement eval here to avoid double-expansion.
+       (guile_define_module): Define gmk-eval.
+       (func_guile): Use new func_ptr calling model.
+       (guile_gmake_setup): Use gmk_add_function() to declare $(guile ...)
+       * function.c (function_table_entry): Provide alternative func_ptr.
+       (func_eval): New signature for eval_buffer();
+       (function_table_init): New initialization for function_table_entry.
+       (expand_builtin_function): Support alternative invocation signature.
+       (define_new_function): Ditto.
+
+2013-01-20  Paul Smith  <psmith@gnu.org>
+
+       * gnumake.h: New file to contain externally-visible content.
+       * makeint.h: Include gnumake.h.  Move gmk_floc type to gnumake.h.
+       * Makefile.am (include_HEADERS): Install the gnumake.h header.
+
+       * makeint.h: Change struct floc to gmk_floc typedef.
+       * Many: Use the new typedef.
+
+       * make.h: Rename to makeint.h.
+       * Many: Use the new name makeint.h.
+
+2013-01-19  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (load Directive): Update to discuss location of
+       loaded object file.
+       (Remaking Loaded Objects): Document remaking of loaded objects.
+
+       * main.c (main): Rename READ_MAKEFILES to READ_FILES.
+       * read.c: Change READ_MAKEFILES to READ_FILES since it now
+       contains loaded object files as well.
+       (read_all_makefiles): Ditto.
+       (eval_makefile): Ditto.
+       (eval): Add any loaded file to the READ_FILES list, so that it
+       will be considered for re-build.
+
+       * load.c (load_file): Return the simple filename (no symbol) in
+       the LDNAME argument (now a const char **).
+       This filename should no longer have "./" prepended: modify the
+       function to always check the current directory if the name has no
+       "/", before using the normal methods.
+       * make.h: Change the load_file() prototype.
+
+       * README.git: Add a bit more documentation on Git workflow & rules.
+
+2013-01-13  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Restore all make flags after re-exec is complete.
+       Fixes Savannah bug #38051.
+
+2013-01-12  Paul Smith  <psmith@gnu.org>
+
+       Convert CVS archive to Git.
+
+       * configure.in: Rename to configure.ac.
+       * README.cvs: Rename to README.git and rework for Git.
+       * maintMakefile: Use git clean for cleanup.
+       * ChangeLog: Use new Git repository URL.
+       * ChangeLog.2: Ditto.
+       * Makefile.am: Change documentation for Git
+       * Makefile.DOS.template: Ditto.
+       * README.template: Ditto.
+       * build_w32.bat: Ditto.
+       * prepare_w32.bat: Ditto.
+       * .cvsignore: Rename to .gitignore, and change to Git format.
+
+2012-12-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (create_batch_file): Fix last change: always increment the
+       counter of batch files before trying to use it.
+
+2012-12-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (construct_command_argv_internal): Remove " from
+       sh_chars_dos[].  Ignore an escaped backslash inside a string
+       quoted with "..".  This lifts the 4KB or 8KB command-line length
+       limitation imposed by the Windows shells when a command uses quoted
+       strings, because we now don't call the shell in that case.
+
+       * job.c (create_batch_file): Declare the counter of batch files
+       static, to avoid having 2 jobs using the same file name and
+       stepping on each other's toes.  When all 64K names are used up,
+       make one more loop looking for slots that became vacant.  This
+       avoids leaving behind temporary batch files in the temporary
+       directory, which happens frequently on a fast machine when using
+       parallel builds.
+       (reap_children): Add debug message for when removal of a temporary
+       batch file fails.
+
+2012-10-29  Paul Smith  <psmith@gnu.org>
+
+       New feature: "load" directive for dynamically-loaded objects.
+
+       * NEWS: Document new "load" directive.
+       * doc/make.texi (Extending make): New chapter on extensions to make.
+       * configure.in: Check for dlopen/dlsym/dlerror and -ldl.
+       * Makefile.am (make_SOURCES): Add new file load.c.
+       * make.h: Prototype for load_file().
+       * main.c (main): Add "load" to .FEATURES if it's available.
+       * read.c (eval): Parse "load" and "-load" directives.
+
+2012-09-29  Paul Smith  <psmith@gnu.org>
+
+       * configure.in: Require a new version of gettext (1.18.1).
+       Fixes Savannah bug #37307.
+
+2012-09-09  Paul Smith  <psmith@gnu.org>
+
+       * configure.in (bsd_signal): Define _GNU_SOURCE, a la make.h.
+       Fixes Savannah bug #32247.
+
+       * remake.c (update_file_1): Force intermediate files to be
+       considered, not pruned, if their non-intermediate parent needs to
+       be remade.  Fixes Savannah bug #30653.
+
+       * job.c (construct_command_argv_internal): Keep the command line
+       on the heap for very long lines.  Fixes Savannah bug #36451.
+
+       * function.c (func_realpath): BSD realpath(3) doesn't fail if the
+       file does not exist: use stat.  Fixes Savannah bug #35919.
+
+       * file.c (expand_deps): Duplicate the current variable buffer, not
+       the old pointer.  Fixes Savannah bug #36925.
+
+       * read.c (eval): If we detect an initial UTF-8 BOM, skip it.
+       Fixes Savannah bug #36529.
+       (record_target_var): Remove unused variable "fname".
+       (eval): Use the correct pointer when adding to the variable buffer.
+       Fixes Savannah bug #36106.
+
+2012-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * read.c (unescape_char): Fix a thinko in the last change.
+
+2012-09-09  Paul Smith  <psmith@gnu.org>
+
+       * default.c (default_variables): Use a correct default LIBPPATERNS
+       for MacOS.  Fixes Savannah bug #37197.
+
+       * read.c (record_files): Reset the default macro values if .POSIX
+       is set.  Fixes Savannah bug #37069.
+       (parse_file_seq): Break out of an infinite loop if we're not
+       making progress when parsing archive references.
+
+2012-09-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * README.W32.template: Update for job-server and Guile support.
+
+       * read.c (unescape_char): Advance 'p' after copying the unescaped
+       characters.  Otherwise the backslashes are incorrectly erased from
+       the original string.
+
+2012-03-05  Paul Smith  <psmith@gnu.org>
+
+       Update copyright notices to use year ranges, as allowed by
+       clarifications in the GNU Maintainer's Manual.
+
+2012-03-04  Paul Smith  <psmith@gnu.org>
+
+       * read.c (unescape_char): New function to remove escapes from a char.
+       (record_files): Call it on the dependency string to unescape ":".
+       Fixes Savannah bug #12126 and bug #16545.
+
+       * make.h (CSTRLEN): Determine the length of a constant string.
+       * main.c: Use the new macro.
+       * read.c: Ditto.
+       * variable.h: Ditto.
+       * function.c: Simplify checks for function alternatives.
+
+       * expand.c (variable_append): If the current set is local and the
+       next one is not a parent, then treat the next set as
+       local as well.  Fixes Savannah bug #35468.
+
+2012-03-03  Paul Smith  <psmith@gnu.org>
+
+       * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for AIX 5.2+
+       nanosecond timestamps.  Fixes Savannah bug #32485.
+
+       Convert uses of `foo' for quoting to 'foo' to reflect changes in
+       the GNU Coding Standards.  Fixes Savannah bug #34530.
+
+       * job.c (construct_command_argv_internal): In oneshell we need to
+       break the SHELLFLAGS up for argv.  Fixes Savannah bug #35397.
+
+       * function.c (func_filter_filterout): Recompute the length of each
+       filter word in case it was compressed due to escape chars.  Don't
+       reset the string as it's freed.  Fixes Savannah bug #35410.
+
+       * misc.c (collapse_continuations): Only use POSIX-style
+       backslash/newline handling if the .POSIX target is set.
+       Addresses Savannah bug #16670 without backward-incompatibility.
+       * NEWS: Document behavior change.
+       * doc/make.texi (Splitting Lines): New section describing how to
+       use backslash/newline to split long lines.
+
+2012-02-26  Paul Smith  <psmith@gnu.org>
+
+       * implicit.c (pattern_search): Check the stem length to avoid
+       stack overflows in stem_str.  Fixes Savannah bug #35525.
+
+2012-02-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/subproc/sub_proc.c (proc_stdin_thread, proc_stdout_thread)
+       (proc_stderr_thread, process_pipe_io): Ifdef away unused
+       functions.
+
+       * w32/subproc/w32err.c (map_windows32_error_to_string) [_MSC_VER]:
+       Don't use TLS storage for szMessageBuffer.  Ifdef away special
+       code for handling Winsock error codes.  Make the function return a
+       `const char *'.  Suggested by Ozkan Sezer.  Fixes Savannah bug #34832.
+
+2012-01-29  Paul Smith  <psmith@gnu.org>
+
+       * gmk-default.scm (to-string-maybe): Variables map to empty strings.
+       In Guile 2.0, (define ...) results in a variable object so make
+       sure that maps to an empty string in make.
+
+       * variable.c (parse_variable_definition): New POSIX assignment ::=
+       Take a struct variable to return more information after parsing.
+       (assign_variable_definition): New parse_variable_definition() call.
+       * variable.h: New declaration of parse_variable_definition().
+       * read.c (do_define): New parse_variable_definition() call.
+       (parse_var_assignment): Ditto.
+       (get_next_mword): Parse ::= as a variable assignment.
+       * doc/make.texi (Flavors): Describe the new ::= syntax.
+       * NEWS: Mention the ::= operator.
+
+       * variable.h (struct variable): Rearrange elts to reduce struct size.
+
+       * function.c (func_file): Create a new function, $(file ...)
+       * doc/make.texi (File Function): Document the $(file ..) function.
+       * NEWS: Announce it.
+
+       * gmk-default.scm (to-string-maybe): Use a more portable way to
+       test for unprintable characters.
+       * configure.in [GUILE]: Guile 1.6 doesn't have pkg-config
+       * build_w32.bat: Ditto.
+
+2012-01-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * config.h.W32.template: Update from config.h.in.
+
+       Support a Windows build with Guile.
+
+       * README.W32.template: Update with instructions for building with
+       Guile.
+
+       * build_w32.bat: Support building with Guile.
+
+       * make.h [HAVE_STDINT_H]: Include stdint.h.
+
+       * main.c (main, clean_jobserver): Move declarations of variables
+       not used in the WINDOWS32 build to the #else branch, to avoid
+       compiler warnings.
+
+       Fix failures on MS-Windows when Make's standard handles are invalid.
+       This can happen when Make is invoked from a GUI application.
+
+       * w32/subproc/sub_proc.c (process_init_fd): Don't dereference
+       pproc if it is a NULL pointer.
+       (process_begin, process_cleanup): Don't try to close pipe handles
+       whose value is INVALID_HANDLE_VALUE.
+       (process_easy): Initialize hIn, hOut, and hErr to
+       INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
+       ERROR_INVALID_HANDLE, duplicate a handle for the null device
+       instead of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE or
+       STD_ERROR_HANDLE.  Don't try to close pipe handles whose value is
+       INVALID_HANDLE_VALUE.
+
+       * function.c (windows32_openpipe): Initialize hIn and hErr to
+       INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
+       ERROR_INVALID_HANDLE, duplicate a handle for the null device
+       instead of STD_INPUT_HANDLE or STD_ERROR_HANDLE.  Fix indentation.
+       Don't try to close handles whose value is INVALID_HANDLE_VALUE.
+
+2012-01-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * function.c (define_new_function): Fix format strings in calls to
+       `fatal'.
+
+2012-01-17  Paul Smith  <psmith@gnu.org>
+
+       * guile.c (func_guile): Handle NULL returns from Guile.
+
+2012-01-16  Paul Smith  <psmith@gnu.org>
+
+       * make.h (PATH_SEPARATOR_CHAR): Allow resetting for crosscompiling
+       for Windows.  Patch by Chris Sutcliffe <ir0nh34d@gmail.com>
+       Fixes Savannah bug #34818.
+
+2012-01-15  Paul Smith  <psmith@gnu.org>
+
+       * variable.h: Prototype an interface for defining new make functions.
+       * function.c (define_new_function): Define it.
+       (func_guile): Remove the "guile" function.
+       (function_table_init): Ditto.
+       * guile.c (func_guile): Add the "guile" function here.
+       (setup_guile): Call define_new_function() to define it.
+       (guile_eval_string): Obsolete.
+
+       * all: Update copyright notices.
+
+2012-01-12  Paul Smith  <psmith@gnu.org>
+
+       Support GNU Guile as an embedded extension language for GNU make.
+
+       * NEWS: Note the new Guile capability.
+       * Makefile.am (EXTRA_DIST, make_SOURCES): Add new guile source files.
+       (AM_CFLAGS): Add Guile compiler flags.
+       (guile): Add a rule for converting default SCM into a C header.
+       * configure.in: Add support for --with-guile.
+       Also, convert the entire file to properly escaped autoconf m4, and
+       utilize newer features such as AS_IF() and AS_CASE().
+       * doc/make.texi (Guile Function): Document the GNU guile integration.
+       * make.h (guile_eval_string, guile_boot): Prototypes for Guile.
+       * main.c (main): Run guile_boot() to handle main().
+       (real_main): All the previous content of main() is here.
+       (real_main): Add "guile" to the .FEATURES variable.
+       * function.c (func_guile): Call Guile.
+       * guile.c: New file implementing GNU make integration with GNU Guile.
+       * gmk-default.scm: The integration of GNU make with Guile uses
+       Guile itself for much of the parsing and conversion of return
+       types, etc.  This implementation is embedded into GNU make.
+       * config.h-vms.template: Disable Guile support.
+       * config.h.W32.template: Ditto.
+       * configh.dos.template: Ditto.
+       * config.ami.template: Ditto.
+       * makefile.vms: Add new Guile files.
+       * Makefile.DOS.template: Ditto.
+       * Makefile.ami: Ditto.
+       * NMakefile.template: Ditto.
+       * SMakefile.template: Ditto.
+       * build_w32.bat: Ditto.
+       * dosbuild.bat: Ditto.
+       * make_msvc_net2001.vcproj: Ditto.
+
+2011-11-15  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): Use %ld when printing DWORD values.
+       * job.c (new_job): Ditto.
+       * w32/include/sub_proc.h: Use const.
+       * w32/subproc/sub_proc.c (open_jobserver_semaphore): Use const.
+       Fixes Savannah bug #34830.  Changes suggested by Ozkan Sezer.
+
+       * configure.in (MAKE_JOBSERVER): Enable jobserver on W32 systems.
+       * config.h.W32.template (MAKE_JOBSERVER): Ditto.
+
+2011-11-14  Paul Smith  <psmith@gnu.org>
+
+       * read.c (eval): parse_file_seq() might shorten the string due to
+       backslash removal.  Start parsing again at the colon.
+       Fixes Savannah bug #33399.
+
+2011-11-13  Paul Smith  <psmith@gnu.org>
+
+       * file.c (file_timestamp_cons): Match up data types to avoid warnings.
+       * filedef.h: Ditto.
+       * misc.c (concat): Ditto.
+       * read.c (eval): Assign value to avoid warnings.
+       * function.c (func_shell_base): Use fork() instead of vfork() to
+       avoid warnings.
+       * make.h (INTEGER_TYPE_SIGNED): Use <=0 to avoid warnings.
+       Fixes Savannah bug #34608.
+
+       * job.c (construct_command_argv): Remove _p.
+       (construct_command_argv_internal): Remove _ptr.
+       Fixes Savannah bug #32567.
+
+       * main.c (clean_jobserver): Don't write the free token to the pipe.
+       Change suggested by Tim Newsome <tnewsome@aristanetworks.com>
+
+       * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for Darwin.
+       * filedef.h (FILE_TIMESTAMP_STAT_MODTIME): Ditto.
+       Patch provided by Troy Runkel <Troy.Runkel@mathworks.com>
+
+2011-10-11  Troy Runkel  <Troy.Runkel@mathworks.com>
+
+       * config.h.W32: Enable job server support for Windows.
+       * main.c [WINDOWS32]: Include sub_proc.h
+       (main): Create a named semaphore to implement the job server.
+       (clean_jobserver): Free the job server semaphore when make is finished.
+       * job.c [WINDOWS32]: Define WAIT_NOHANG
+       (reap_children): Support non-blocking wait for child processes.
+       (free_child): Release job server semaphore when child process finished.
+       (job_noop): Don't define function on Windows.
+       (set_child_handler_action_flags): Don't define function on Windows.
+       (new_job): Wait for job server semaphore or child process termination.
+       (exec_command): Pass new parameters to process_wait_for_any.
+       * w32/include/sub_proc.h [WINDOWS32]: New/updated EXTERN_DECL entries.
+       * w32/subproc/sub_proc.c [WINDOWS32]: Added job server implementation.
+       (open_jobserver_semaphore): Open existing job server semaphore by name.
+       (create_jobserver_semaphore): Create new job server named semaphore.
+       (free_jobserver_semaphore): Close existing job server semaphore.
+       (acquire_jobserver_semaphore): Decrement job server semaphore count.
+       (release_jobserver_semaphore): Increment job server semaphore count.
+       (has_jobserver_semaphore): Returns whether job server semaphore exists.
+       (get_jobserver_semaphore_name): Returns name of job server semaphore.
+       (wait_for_semaphore_or_child_process): Wait for either the job server
+       semaphore to become signalled or a child process to terminate.
+       (process_wait_for_any_private): Support for non-blocking wait for child.
+       (process_wait_for_any): Added support for non-blocking wait for child.
+       (process_file_io): Pass new parameters to process_wait_for_any_private.
+
+2011-09-18  Paul Smith  <psmith@gnu.org>
+
+       * main.c (main): If we're re-exec'ing and we're the master make,
+       then restore the job_slots value so it goes back into MAKEFLAGS
+       properly.  See Savannah bug #33873.
+
+       * remake.c (library_search): STD_DIRS is computed when other
+       static vars like buflen etc. are computed, so it must be static
+       as well.  See Savannah bug #32511.
+
+2011-09-16  Paul Smith  <psmith@gnu.org>
+
+       * maintMakefile (do-po-update): Apparently we have to avoid
+       certificate checks on the http://translationproject.org site now.
+
+2011-09-12  Paul Smith  <psmith@gnu.org>
+
+       * read.c (eval): Ensure exported variables are defined in the
+       global scope.  Fixes Savannah bug #32498.
+
+2011-09-11  Paul Smith  <psmith@gnu.org>
+
+       * Makefile.am (dist-hook): Remove w32/Makefile and .deps/ from the
+       dist file.  Fixes Savannah bug #31489.
+
+       * doc/make.texi (Complex Makefile): Add a hint about using
+       #!/usr/bin/make (for Savannah support request #106459)
+
+2011-09-02  Paul Smith  <psmith@gnu.org>
+
+       * remake.c (touch_file): If we have both -n and -t, -n takes
+       precedence.  Patch from Michael Witten <mfwitten@gmail.com>
+
+2011-08-29  Paul Smith  <psmith@gnu.org>
+
+       * expand.c (variable_expand_string): Always allocate a new buffer
+       for a string we're expanding.  The string we're working on can get
+       freed while we work on it (for example if it's the value of a
+       variable which modifies itself using an eval operation).
+       See Savannah patch #7534 for the original report by Lubomir Rintel.
+
+2011-06-12  Paul Smith  <psmith@gnu.org>
+
+       * read.c (parse_file_seq): Move the check for empty members out of
+       the loop so we can go to the next member properly.
+       Another fix for Savannah bug #30612.
+
+       * config.h-vms.template: Newer versions of VMS have strncasecmp()
+       Patch provided by: Hartmut Becker <becker.ismaning@freenet.de>
+
+2011-05-07  Paul Smith  <psmith@gnu.org>
+
+       * expand.c (variable_append): Add a LOCAL argument to track
+       whether this is the first invocation or not.  If it's not and
+       private_var is set, then skip this variable and try the next one.
+       Fixes Savannah bug #32872.
+
+       * read.c (parse_file_seq): Ensure existence checks use glob().
+
+2011-05-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * job.c (construct_command_argv_internal): Don't assume shellflags
+       is always non-NULL.  Escape-protect characters special to the
+       shell when copying the value of SHELL into new_line.  Fixes
+       Savannah bug #23922.
+
+2011-05-02  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Special Variables): Add documentation for the new
+       words in .FEATURES.  Fixes Savannah bug #32058.
+       (Flavor Function): Rewrite the section on the flavor function.
+       Fixes Savannah bug #31582.
+
+       * function.c (func_sort): Use the same algorithm to count the
+       number of words we will get after the split, as we use to split.
+       Based on a patch from Matthias Hopf.  Fixes Savannah bug #33125.
+
+       * make.h: Make global variable stack_limit extern.
+       Fixes Savannah bug #32753.
+
+2011-05-01  Paul Smith  <psmith@gnu.org>
+
+       * read.c (parse_file_seq): Don't try to invoke glob() unless there
+       are potential wildcard characters in the filename.  Performance
+       enhancement suggested by Michael Meeks <michael.meeks@novell.com>
+
+2011-04-29 Boris Kolpackov  <boris@codesynthesis.com>
+
+       * read.c (eval_makefile): Delay caching of the file name until after
+       all the expansions and searches.
+
+2011-04-17  David A. Wheeler  <dwheeler@dwheeler.com>
+
+       * doc/make.texi (Reading Makefiles): Document "!=".
+       (Setting): Ditto.
+       (Features): Ditto.
+       * variable.h (enum variable_flavor): New type "f_shell".
+       * variable.c (shell_result): Send a string to the shell and store
+       the output.
+       (do_variable_definition): Handle f_shell variables: expand the
+       value, then send it to the shell and store the result.
+       (parse_variable_definition): Parse "!=" shell assignments.
+       * read.c (get_next_mword): Treat "!=" as a varassign word.
+       * function.c (fold_newlines): If trim_newlines is set remove all
+       trailing newlines; otherwise remove only the last newline.
+       (func_shell_base): Move the guts of the shell function here.
+       (func_shell): Call func_shell_base().
+
+2011-02-21  Paul Smith  <psmith@gnu.org>
+
+       * strcache.c (various): Increase performance based on comments
+       from Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.  Stop looking for
+       a buffer when we find the first one that fits, not the best fit.
+       If there is not enough free space in a buffer move it to a
+       separate list so we don't have to walk it again.
+       * make.h (NDEBUG): Turn off asserts unless maintainer mode is set.
+       (strcache_add_len, strcache_setbufsize): Use unsigned length/size.
+       * maintMakefile (AM_CPPFLAGS): Enable MAKE_MAINTAINER_MODE.
+
+       * remake.c (complain): Move translation lookups closer to use.
+
+2011-02-13  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi: Clean up references to "static" variables and
+       semicolon errors.  Patch from Michael Witten <mfwitten@gmail.com>.
+
+2010-12-27  Paul Smith  <psmith@gnu.org>
+
+       * make.1: Update the header/footer info in the man page.
+
+2010-11-28  Paul Smith  <psmith@gnu.org>
+
+       * read.c (record_target_var): Don't reset v if it's the same as
+       the global version.  Fixes Savannah bug #31743.
+
+2010-11-06  Paul Smith  <psmith@gnu.org>
+
+       * variable.c (print_auto_variable): Print auto variables; ignore others.
+       (print_noauto_variable): Print non-auto variables; ignore others.
+       (print_variable_set): Allow the caller to select which type to print.
+       (print_target_variables): Show all the non-auto variables for a target.
+
+       * default.c (install_default_suffix_rules): Initialize recipe_prefix.
+       * rule.c (install_pattern_rule): Ditto.
+       * read.c (record_files): Pass in the current recipe prefix.  Remember
+       it in the struct command for these targets.
+       (eval): Remember the value of RECIPEPREFIX when we start parsing.
+       Do not remove recipe prefixes from the recipe here: we'll do it later.
+       * job.c (start_job_command): Remove recipe prefix characters early,
+       before we print the output or chop it up.
+       * file.c (print_file): If recipe_prefix is not standard, reset it
+       in -p output.  Assign target variables in -p output as well.
+
+       * commands.c (chop_commands): Max command lines is USHRT_MAX.
+       Set any_recurse as a bitfield.
+       * make.h (USHRT_MAX): Define if not set.
+
+2010-10-27  Paul Smith  <psmith@gnu.org>
+
+       * commands.h (struct commands): Rearrange to make better use of
+       memory.  Add new recipe_prefix value.
+
+2010-10-26  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Setting): Document the treatment of
+       backslash-newline in variable values.
+       * misc.c (collapse_continuations): Do not collapse multiple
+       backslash-newlines into a single space.  Fixes Savannah bug #16670.
+
+2010-08-29  Paul Smith  <psmith@gnu.org>
+
+       * doc/make.texi (Implicit Variables): Document LDLIBS and LOADLIBES.
+       Fixes Savannah bug #30807.
+       (Instead of Execution): Mention that included makefiles are still
+       rebuilt even with -n.  Fixes Savannah bug #30762.
+
+       * configure.in: Bump to 3.82.90.
+
+       * make.h: Add trace_flag variable.
+       * main.c (switches): Add --trace option.
+       (trace_flag): Declare variable.
+       * job.c (start_job_command): Show recipe if trace_flag is set.
+       (new_job): Show trace messages if trace_flag is set.
+       * doc/make.texi (Options Summary): Document the new --trace option.
+       * make.1: Add --trace documentation.
+       * NEWS: Mention --trace.
+
+       * job.c (child_error): Show recipe filename/linenumber on error.
+       Also show "(ignored)" when appropriate even for signals/coredumps.
+       * NEWS: Mention file/linenumber change.
+
+       * main.c (main): Print version info when DB_BASIC is set.
+
+       * job.c (construct_command_argv_internal): If shellflags is not
+       set, choose an appropriate default value.  Fixes Savannah bug #30748.
+
+2010-08-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * variable.c (define_automatic_variables) [__MSDOS__ || WINDOWS32]:
+       Remove trailing backslashes in $(@D), $(<D), etc., for consistency
+       with forward slashes.  Fixes Savannah bug #30795.
+
+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
+       environment when re-exec'ing.  Fixes Savannah bug #30723.
+
+2010-08-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32/subproc/build.bat: Make all 3 cl.exe compile command lines
+       use the same /I switches.  Fixes Savannah bug #30662.
+
+       * function.c (func_shell) [WINDOWS32]: Reset just_print_flag
+       around the call to construct_command_argv, so that a temporary
+       batch file _is_ created when needed for $(shell).
+       Fixes Savannah bug #16362.
+
+2010-08-07 Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       * configh.dos.template (HAVE_STRNCASECMP): Define.
+
 2010-07-28  Paul Smith  <psmith@gnu.org>
 
        Version 3.82 released.
 
 \f
 
-See ChangeLog.2, available in the CVS repository at:
+See ChangeLog.2, available in the Git repository at:
 
-       http://savannah.gnu.org/cvs/?group=make
+       http://git.savannah.gnu.org/cgit/make.git/tree/
 
 for earlier changes.
 
 
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
-Software Foundation, Inc.
+Copyright (C) 2000-2013 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
index 58c950c..42cd487 100644 (file)
@@ -1,8 +1,7 @@
 # -*-Makefile-*- template for DJGPP
 # 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1994-2013 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
@@ -72,13 +71,13 @@ PACKAGE = make
 PERL = perl
 RANLIB = ranlib
 REMOTE = stub
-VERSION = 3.82
+VERSION = 4.0
 
 AUTOMAKE_OPTIONS = 1.2
 
 bin_PROGRAMS = make$(EXEEXT)
 
-make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c function.c getopt.c getopt1.c implicit.c job.c main.c misc.c read.c remake.c rule.c signame.c strcache.c variable.c version.c vpath.c hash.c remote-$(REMOTE).c
+make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c function.c getopt.c getopt1.c implicit.c job.c load.c loadapi.c main.c misc.c output.c read.c remake.c rule.c signame.c strcache.c variable.c version.c vpath.c hash.c guile.c remote-$(REMOTE).c
 # This should include the glob/ prefix
 libglob_a_SOURCES =    glob/fnmatch.c glob/glob.c glob/fnmatch.h glob/glob.h
 make_LDADD =     glob/libglob.a
@@ -89,7 +88,7 @@ INCLUDES =    -I$(srcdir)/glob -DLIBDIR=\"$(prefix)$(libdir)\" -DINCLUDEDIR=\"$(pre
 
 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
+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 gmk-default.scm gmk-default.h
 
 SUBDIRS =      glob doc
 mkinstalldirs = ${exec_prefix}/bin/gmkdir -p
@@ -104,7 +103,7 @@ DEFS =  -I. -I$(srcdir) -I.
 CPPFLAGS = -DHAVE_CONFIG_H
 LDFLAGS =
 LIBS =
-make_OBJECTS =  ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o remote-$(REMOTE).o
+make_OBJECTS =  ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o implicit.o job.o load.o loadapi.o main.o misc.o output.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o guile.o remote-$(REMOTE).o
 make_DEPENDENCIES =    glob/libglob.a
 make_LDFLAGS =
 libglob_a_LIBADD =
@@ -123,7 +122,7 @@ man1dir = $(mandir)/man1
 MANS = $(man_MANS)
 
 NROFF = nroff
-DIST_COMMON =  README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am  Makefile.in NEWS acconfig.h aclocal.m4 alloca.c build.sh-in config.h-in  configure configure.in getloadavg.c
+DIST_COMMON =  README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am  Makefile.in NEWS acconfig.h aclocal.m4 alloca.c build.sh-in config.h-in  configure configure.ac getloadavg.c
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
@@ -507,7 +506,7 @@ html
 #
 dist-hook:
        (cd $(srcdir); \
-        w32=`find w32 -follow \( -name CVS -prune \) -o -type f -print`; \
+        w32=`find w32 -follow \( -name .git -prune \) -o -type f -print`; \
         tar chf - $$w32) \
        | (cd $(distdir); tar xfBp -)
 
@@ -594,60 +593,67 @@ check-regression:
 # dummy
 
 # .deps/ar.Po
-ar.o: ar.c make.h config.h \
+ar.o: ar.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h dep.h \
 
 # .deps/arscan.Po
-arscan.o: arscan.c make.h config.h \
+arscan.o: arscan.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/commands.Po
-commands.o: commands.c make.h config.h \
+commands.o: commands.c \
+ makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
  commands.h
 
 # .deps/default.Po
-default.o: default.c make.h config.h \
+default.o: default.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h rule.h dep.h \
- job.h \
+ filedef.h hash.h variable.h rule.h dep.h job.h output.h \
  commands.h
 
 # .deps/dir.Po
-dir.o: dir.c make.h config.h \
+dir.o: dir.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- hash.h \
+ hash.h filedef.h dep.h \
 
 # .deps/expand.Po
-expand.o: expand.c make.h config.h \
+expand.o: expand.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h \
- job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/file.Po
-file.o: file.c make.h config.h \
+file.o: file.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
+ filedef.h hash.h dep.h job.h output.h \
  commands.h variable.h \
  debug.h
 
 # .deps/function.Po
-function.o: function.c make.h config.h \
+function.o: function.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h dep.h job.h \
+ filedef.h hash.h \
+ variable.h dep.h job.h output.h \
  commands.h debug.h
 
 # .deps/getloadavg.Po
@@ -659,96 +665,143 @@ getopt.o: getopt.c config.h \
 # .deps/getopt1.Po
 getopt1.o: getopt1.c config.h getopt.h \
 
+# .deps/guile.Po
+guile.o: guile.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ debug.h filedef.h hash.h \
+ dep.h variable.h \
+ gmk-default.h
+
 # .deps/hash.Po
-hash.o: hash.c make.h config.h \
+hash.o: hash.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/implicit.Po
-implicit.o: implicit.c make.h config.h \
+implicit.o: implicit.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h rule.h dep.h debug.h \
variable.h job.h \
+ filedef.h hash.h rule.h \
dep.h debug.h variable.h job.h output.h \
  commands.h
 
 # .deps/job.Po
-job.o: job.c make.h config.h \
+job.o: job.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
+ job.h output.h \
+ debug.h filedef.h hash.h \
+ commands.h variable.h
+
+# .deps/load.Po
+load.o: load.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ debug.h filedef.h hash.h \
  variable.h
 
+# .deps/loadapi.Po
+loadapi.o: loadapi.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h \
+ variable.h dep.h
+
 # .deps/loadavg-getloadavg.Po
 # dummy
 
 # .deps/main.Po
-main.o: main.c make.h config.h \
+main.o: main.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h getopt.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
+ commands.h rule.h debug.h \
+ getopt.h
 
 # .deps/misc.Po
-misc.o: misc.c make.h config.h \
+misc.o: misc.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h dep.h \
+ debug.h \
+
+# .deps/output.Po
+output.o: output.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h debug.h
+ job.h output.h \
 
 # .deps/read.Po
-read.o: read.c make.h config.h \
+read.o: read.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h rule.h debug.h \
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h \
+ debug.h
 
 # .deps/remake.Po
-remake.o: remake.c make.h config.h \
+remake.o: remake.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
- commands.h dep.h variable.h debug.h \
+ output.h \
+ commands.h dep.h variable.h \
+ debug.h
 
 # .deps/remote-cstms.Po
 # dummy
 
 # .deps/remote-stub.Po
-remote-stub.o: remote-stub.c make.h config.h \
+remote-stub.o: remote-stub.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
+ output.h \
  commands.h
 
 # .deps/rule.Po
-rule.o: rule.c make.h config.h \
+rule.o: rule.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/signame.Po
-signame.o: signame.c make.h config.h \
+signame.o: signame.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/strcache.Po
-strcache.o: strcache.c make.h config.h \
+strcache.o: strcache.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/variable.Po
-variable.o: variable.c make.h config.h \
+variable.o: variable.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/version.Po
 version.o: version.c config.h
@@ -757,7 +810,9 @@ version.o: version.c config.h
 # dummy
 
 # .deps/vpath.Po
-vpath.o: vpath.c make.h config.h \
+vpath.o: vpath.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h
+ filedef.h hash.h \
+ variable.h
index 92acdc2..5156f47 100644 (file)
@@ -1,7 +1,6 @@
 # This is a -*-Makefile-*-, or close enough
 #
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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
@@ -32,6 +31,7 @@ endif
 SUBDIRS =      glob config po doc $(MAYBE_W32)
 
 bin_PROGRAMS = make
+include_HEADERS = gnumake.h
 
 if USE_CUSTOMS
   remote =     remote-cstms.c
@@ -39,18 +39,23 @@ else
   remote =     remote-stub.c
 endif
 
-
 make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c \
-               function.c getopt.c getopt1.c implicit.c job.c main.c \
-               misc.c read.c remake.c $(remote) rule.c signame.c \
-               strcache.c variable.c version.c vpath.c hash.c
+               function.c getopt.c getopt1.c implicit.c job.c load.c \
+               loadapi.c main.c misc.c output.c read.c remake.c rule.c \
+               signame.c strcache.c variable.c version.c vpath.c hash.c \
+               $(remote)
+
+if HAVE_GUILE
+  make_SOURCES += guile.c
+endif
 
 EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
 
-noinst_HEADERS = commands.h dep.h filedef.h job.h make.h rule.h variable.h \
-               debug.h getopt.h gettext.h hash.h
+noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \
+               debug.h getopt.h gettext.h hash.h output.h
 
-make_LDADD =   @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@
+make_LDADD =   @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \
+               $(GUILE_LIBS)
 # Only process if target is MS-Windows
 if WINDOWSENV
     make_LDADD += $(W32LIB)
@@ -61,6 +66,7 @@ man_MANS =    make.1
 DEFS =         -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
 
 AM_CPPFLAGS =  $(GLOBINC)
+AM_CFLAGS =    $(GUILE_CFLAGS)
 # Only process if target is MS-Windows
 if WINDOWSENV
     AM_CPPFLAGS +=     $(W32INC)
@@ -76,8 +82,9 @@ EXTRA_DIST =  README build.sh.in $(man_MANS) \
                README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
                README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
                make_msvc_net2003.sln make_msvc_net2003.vcproj \
-               readme.vms makefile.vms makefile.com config.h-vms \
-               vmsdir.h vmsfunctions.c vmsify.c
+               README.VMS makefile.vms makefile.com config.h-vms \
+               vmsdir.h vmsfunctions.c vmsify.c \
+               gmk-default.scm gmk-default.h
 
 # This is built during configure, but behind configure's back
 
@@ -100,8 +107,8 @@ localedir = $(datadir)/locale
 #
 
 # Whether or not make needs to be installed setgid.
-# The value should be either `true' or `false'.
-# On many systems, the getloadavg function (used to implement the `-l'
+# The value should be either 'true' or 'false'.
+# On many systems, the getloadavg function (used to implement the '-l'
 # switch) will not work unless make is installed setgid kmem.
 #
 inst_setgid = @NEED_SETGID@
@@ -117,19 +124,28 @@ install-exec-local:
             echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
           else \
             echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
-            echo "otherwise the \`-l' option will probably not work."; \
+            echo "otherwise the '-l' option will probably not work."; \
             echo "You may need special privileges to complete the installation"; \
             echo "of $$app."; \
           fi; \
         else true; fi
 
+# --------------- Generate the Guile default module content
+
+guile.$(OBJEXT): gmk-default.h
+gmk-default.h: $(srcdir)/gmk-default.scm
+       (echo 'static const char *const GUILE_module_defn = " '\\ \
+         && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \
+                $(srcdir)/gmk-default.scm \
+          && echo '";') > $@
+
 # --------------- Local DIST Section
 
 # Install the w32 and tests subdirectories
 #
 dist-hook:
        (cd $(srcdir); \
-        sub=`find w32 tests -follow \( -name CVS -prune -o -name .cvsignore -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
+        sub=`find w32 tests -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \
         tar chf - $$sub) \
        | (cd $(distdir); tar xfBp -)
 
@@ -168,18 +184,18 @@ loadavg_LDADD = @GETLOADAVG_LIBS@
 MAKETESTFLAGS =
 
 check-regression:
-       @if test -f "$(srcdir)/tests/run_make_tests"; then \
+       @if test -f '$(srcdir)/tests/run_make_tests'; then \
          if $(PERL) -v >/dev/null 2>&1; then \
-           case `cd $(srcdir); pwd` in `pwd`) : ;; \
+           case `cd '$(srcdir)'; pwd` in `pwd`) : ;; \
              *) test -d tests || mkdir tests; \
                 rm -f srctests; \
-                if ln -s "$(srcdir)/tests" srctests; then \
+                if ln -s '$(srcdir)/tests' srctests; then \
                   for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
                     rm -f tests/$$f; ln -s ../srctests/$$f tests; \
                   done; fi ;; \
            esac; \
-           echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
-           cd tests && $(PERL) ./run_make_tests.pl -make ../make$(EXEEXT) $(MAKETESTFLAGS); \
+           echo "cd tests && $(PERL) ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
+           cd tests && $(PERL) ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
          else \
            echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
          fi; \
@@ -191,7 +207,7 @@ check-regression:
 # --------------- Maintainer's Section
 
 # Tell automake that I haven't forgotten about this file and it will be
-# created before we build a distribution (see maintMakefile in the CVS
+# created before we build a distribution (see maintMakefile in the Git
 # distribution).
 
 README:
index 8cc67df..efbab01 100644 (file)
@@ -1,10 +1,9 @@
 # -*-Makefile-*- for GNU make on Amiga
 #
-# NOTE: If you have no `make' program at all to process this makefile, run
-# `build.sh' instead.
+# NOTE: If you have no 'make' program at all to process this makefile, run
+# 'build.sh' instead.
 #
-# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1995-2013 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
@@ -32,18 +31,18 @@ CPPFLAGS =
 LDFLAGS =
 
 # Define these for your system as follows:
-#      -DNO_ARCHIVES           To disable `ar' archive support.
+#      -DNO_ARCHIVES           To disable 'ar' archive support.
 #      -DNO_FLOAT              To avoid using floating-point numbers.
 #      -DENUM_BITFIELDS        If the compiler isn't GCC but groks enum foo:2.
 #                              Some compilers apparently accept this
 #                              without complaint but produce losing code,
 #                              so beware.
 # NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
-# See also `config.h'.
+# See also 'config.h'.
 defines =
 
 # Which flavor of remote job execution support to use.
-# The code is found in `remote-$(REMOTE).c'.
+# The code is found in 'remote-$(REMOTE).c'.
 REMOTE = stub
 
 # If you are using the GNU C library, or have the GNU getopt functions in
@@ -77,9 +76,9 @@ prefix =
 # Common prefix for machine-dependent installed files.
 exec_prefix =
 
-# Directory to install `make' in.
+# Directory to install 'make' in.
 bindir = sc:c
-# Directory to find libraries in for `-lXXX'.
+# Directory to find libraries in for '-lXXX'.
 libdir = lib:
 # Directory to search by default for included makefiles.
 includedir = include:
@@ -89,20 +88,20 @@ infodir = doc:
 mandir = t:
 # Number to put on the man page filename.
 manext = 1
-# Prefix to put on installed `make' binary file name.
+# Prefix to put on installed 'make' binary file name.
 binprefix =
-# Prefix to put on installed `make' man page file name.
+# Prefix to put on installed 'make' man page file name.
 manprefix = $(binprefix)
 
 # Whether or not make needs to be installed setgid.
-# The value should be either `true' or `false'.
-# On many systems, the getloadavg function (used to implement the `-l'
+# The value should be either 'true' or 'false'.
+# On many systems, the getloadavg function (used to implement the '-l'
 # switch) will not work unless make is installed setgid kmem.
 install_setgid = false
 # Install make setgid to this group so it can read /dev/kmem.
 group = sys
 
-# Program to install `make'.
+# Program to install 'make'.
 INSTALL_PROGRAM = copy
 # Program to install the man page.
 INSTALL_DATA = copy
@@ -118,21 +117,24 @@ TEXI2DVI = texi2dvi
 ETAGS = etags -w
 CTAGS = ctags -w
 
-objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o     \
-       rule.o implicit.o default.o variable.o expand.o function.o      \
-       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o      \
-       remote-$(REMOTE).o $(GETOPT) $(ALLOCA) $(extras)
+#guile = guile.o
+
+objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o   \
+       rule.o implicit.o default.o variable.o expand.o function.o    \
+       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o   \
+       remote-$(REMOTE).o $(GETOPT) $(ALLOCA) $(extras) $(guile)
+
 srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
        $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c         \
        $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c             \
        $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c        \
        $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c     \
        $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c           \
-       $(srcdir)remote-$(REMOTE).c                                     \
-       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c              \
-       $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)            \
-       $(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h            \
-       $(srcdir)job.h $(srcdir)make.h $(srcdir)rule.h                \
+       $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c                  \
+       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c           \
+       $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)           \
+       $(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h         \
+       $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h             \
        $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
 
 
@@ -142,7 +144,7 @@ srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
 all: make
 info: make.info
 dvi: make.dvi
-# Some makes apparently use .PHONY as the default goal if it is before `all'.
+# Some makes apparently use .PHONY as the default goal if it is before 'all'.
 .PHONY: all check info dvi
 
 make.info: make.texinfo
@@ -179,8 +181,6 @@ glob/libglob.a: FORCE config.h
        cd glob; $(MAKE) libglob.a
 FORCE:
 
-tagsrcs = $(srcs) $(srcdir)remote-*.c
-
 .PHONY: install installdirs
 install: installdirs \
         $(bindir)$(binprefix)make $(infodir)make.info \
@@ -196,7 +196,7 @@ $(bindir)$(binprefix)make: make
             echo "chgrp $(group) $@.new && chmod g+s $@.new"; \
           else \
             echo "$@ needs to be owned by group $(group) and setgid;"; \
-            echo "otherwise the \`-l' option will probably not work."; \
+            echo "otherwise the '-l' option will probably not work."; \
             echo "You may need special privileges to install $@."; \
           fi; \
         else true; fi
@@ -213,9 +213,9 @@ $(infodir)make.info: make.info
            `echo $@ | sed "s,make.info\$$,$$name,"`; \
        done
 # Run install-info only if it exists.
-# Use `if' instead of just prepending `-' to the
+# 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
+# We use '$(SHELL) -c' because some shells do not
 # fail gracefully when there is an unknown command.
        if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
          if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
@@ -266,42 +266,43 @@ glob-clean glob-realclean:
 .NOEXPORT:
 
 # The automatically generated dependencies below may omit config.h
-# because it is included with ``#include <config.h>'' rather than
-# ``#include "config.h"''.  So we add the explicit dependency to make sure.
+# because it is included with '#include <config.h>' rather than
+# '#include "config.h"'.  So we add the explicit dependency to make sure.
 $(objs): config.h
 
 # Automatically generated dependencies will be put at the end of the file.
 
 # Automatically generated dependencies.
-commands.o: commands.c make.h dep.h filedef.h variable.h job.h \
+commands.o: commands.c makeint.h dep.h filedef.h variable.h job.h \
  commands.h
-job.o: job.c make.h job.h filedef.h commands.h variable.h
-dir.o: dir.c make.h
-file.o: file.c make.h dep.h filedef.h job.h commands.h variable.h
-misc.o: misc.c make.h dep.h
-main.o: main.c make.h dep.h filedef.h variable.h job.h commands.h \
+job.o: job.c makeint.h job.h filedef.h commands.h variable.h
+dir.o: dir.c makeint.h
+file.o: file.c makeint.h dep.h filedef.h job.h commands.h variable.h
+misc.o: misc.c makeint.h dep.h
+main.o: main.c makeint.h dep.h filedef.h variable.h job.h commands.h \
  getopt.h
-read.o: read.c make.h dep.h filedef.h job.h commands.h variable.h \
+guile.o: guile.c makeint.h dep.h debug.h variable.h gmk-default.h
+read.o: read.c makeint.h dep.h filedef.h job.h commands.h variable.h \
  glob/glob.h
-remake.o: remake.c make.h filedef.h job.h commands.h dep.h
-rule.o: rule.c make.h dep.h filedef.h job.h commands.h variable.h \
+remake.o: remake.c makeint.h filedef.h job.h commands.h dep.h
+rule.o: rule.c makeint.h dep.h filedef.h job.h commands.h variable.h \
  rule.h
-implicit.o: implicit.c make.h rule.h dep.h filedef.h
-default.o: default.c make.h rule.h dep.h filedef.h job.h commands.h \
+implicit.o: implicit.c makeint.h rule.h dep.h filedef.h
+default.o: default.c makeint.h rule.h dep.h filedef.h job.h commands.h \
  variable.h
-variable.o: variable.c make.h dep.h filedef.h job.h commands.h \
+variable.o: variable.c makeint.h dep.h filedef.h job.h commands.h \
  variable.h
-expand.o: expand.c make.h filedef.h job.h commands.h variable.h
-function.o: function.c make.h filedef.h variable.h dep.h job.h \
+expand.o: expand.c makeint.h filedef.h job.h commands.h variable.h
+function.o: function.c makeint.h filedef.h variable.h dep.h job.h \
  commands.h amiga.h
-vpath.o: vpath.c make.h filedef.h variable.h
-strcache.o: strcache.c make.h hash.h
+vpath.o: vpath.c makeint.h filedef.h variable.h
+strcache.o: strcache.c makeint.h hash.h
 version.o: version.c
-ar.o: ar.c make.h filedef.h dep.h
-arscan.o: arscan.c make.h
+ar.o: ar.c makeint.h filedef.h dep.h
+arscan.o: arscan.c makeint.h
 signame.o: signame.c signame.h
-remote-stub.o: remote-stub.c make.h filedef.h job.h commands.h
+remote-stub.o: remote-stub.c makeint.h filedef.h job.h commands.h
 getopt.o: getopt.c
 getopt1.o : getopt1.c getopt.h
 getloadavg.o: getloadavg.c
-amiga.o: amiga.c make.h variable.h amiga.h
+amiga.o: amiga.c makeint.h variable.h amiga.h
index 6481e99..9814180 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
@@ -17,8 +17,7 @@
 
 # This is a -*-Makefile-*-, or close enough
 #
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -55,66 +71,85 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = make$(EXEEXT)
+@HAVE_GUILE_TRUE@am__append_1 = guile.c
 # Only process if target is MS-Windows
-@WINDOWSENV_TRUE@am__append_1 = $(W32LIB)
+@WINDOWSENV_TRUE@am__append_2 = $(W32LIB)
 # Only process if target is MS-Windows
-@WINDOWSENV_TRUE@am__append_2 = $(W32INC)
+@WINDOWSENV_TRUE@am__append_3 = $(W32INC)
 check_PROGRAMS = loadavg$(EXEEXT)
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
+       $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
        $(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \
        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/intlmacosx.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
        $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
+       "$(DESTDIR)$(includedir)"
 PROGRAMS = $(bin_PROGRAMS)
 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 \
        expand.c file.c function.c getopt.c getopt1.c implicit.c job.c \
-       main.c misc.c read.c remake.c remote-stub.c remote-cstms.c \
-       rule.c signame.c strcache.c variable.c version.c vpath.c \
-       hash.c
+       load.c loadapi.c main.c misc.c output.c read.c remake.c rule.c \
+       signame.c strcache.c variable.c version.c vpath.c hash.c \
+       remote-stub.c remote-cstms.c guile.c
 @USE_CUSTOMS_FALSE@am__objects_1 = remote-stub.$(OBJEXT)
 @USE_CUSTOMS_TRUE@am__objects_1 = remote-cstms.$(OBJEXT)
+@HAVE_GUILE_TRUE@am__objects_2 = guile.$(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)
+       load.$(OBJEXT) loadapi.$(OBJEXT) main.$(OBJEXT) misc.$(OBJEXT) \
+       output.$(OBJEXT) read.$(OBJEXT) remake.$(OBJEXT) \
+       rule.$(OBJEXT) signame.$(OBJEXT) strcache.$(OBJEXT) \
+       variable.$(OBJEXT) version.$(OBJEXT) vpath.$(OBJEXT) \
+       hash.$(OBJEXT) $(am__objects_1) $(am__objects_2)
 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)
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(nodist_loadavg_SOURCES) $(make_SOURCES) \
        $(EXTRA_make_SOURCES)
 DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES)
@@ -125,6 +160,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        install-pdf-recursive install-ps-recursive install-recursive \
        installcheck-recursive installdirs-recursive pdf-recursive \
        ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -146,10 +186,16 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
-HEADERS = $(noinst_HEADERS)
+HEADERS = $(include_HEADERS) $(noinst_HEADERS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -162,9 +208,11 @@ 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)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -193,10 +241,14 @@ am__relativize = \
 DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -216,16 +268,21 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 KMEM_GROUP = @KMEM_GROUP@
 LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
@@ -238,8 +295,8 @@ LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NEED_SETGID = @NEED_SETGID@
 OBJEXT = @OBJEXT@
@@ -252,6 +309,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REMOTE = @REMOTE@
@@ -261,6 +321,8 @@ STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -321,21 +383,23 @@ ACLOCAL_AMFLAGS = -I config
 @WINDOWSENV_TRUE@W32INC = -I $(top_srcdir)/w32/include
 @WINDOWSENV_TRUE@W32LIB = -Lw32 -lw32
 SUBDIRS = glob config po doc $(MAYBE_W32)
+include_HEADERS = gnumake.h
 @USE_CUSTOMS_FALSE@remote = remote-stub.c
 @USE_CUSTOMS_TRUE@remote = remote-cstms.c
-make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c \
-               function.c getopt.c getopt1.c implicit.c job.c main.c \
-               misc.c read.c remake.c $(remote) rule.c signame.c \
-               strcache.c variable.c version.c vpath.c hash.c
-
+make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c \
+       file.c function.c getopt.c getopt1.c implicit.c job.c load.c \
+       loadapi.c main.c misc.c output.c read.c remake.c rule.c \
+       signame.c strcache.c variable.c version.c vpath.c hash.c \
+       $(remote) $(am__append_1)
 EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
-noinst_HEADERS = commands.h dep.h filedef.h job.h make.h rule.h variable.h \
-               debug.h getopt.h gettext.h hash.h
+noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \
+               debug.h getopt.h gettext.h hash.h output.h
 
 make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \
-       $(am__append_1)
+       $(GUILE_LIBS) $(am__append_2)
 man_MANS = make.1
-AM_CPPFLAGS = $(GLOBINC) $(am__append_2)
+AM_CPPFLAGS = $(GLOBINC) $(am__append_3)
+AM_CFLAGS = $(GUILE_CFLAGS)
 
 # Extra stuff to include in the distribution.
 EXTRA_DIST = README build.sh.in $(man_MANS) \
@@ -345,8 +409,9 @@ EXTRA_DIST = README build.sh.in $(man_MANS) \
                README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
                README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
                make_msvc_net2003.sln make_msvc_net2003.vcproj \
-               readme.vms makefile.vms makefile.com config.h-vms \
-               vmsdir.h vmsfunctions.c vmsify.c
+               README.VMS makefile.vms makefile.com config.h-vms \
+               vmsdir.h vmsfunctions.c vmsify.c \
+               gmk-default.scm gmk-default.h
 
 
 # This is built during configure, but behind configure's back
@@ -358,8 +423,8 @@ DISTCLEANFILES = build.sh
 #
 
 # Whether or not make needs to be installed setgid.
-# The value should be either `true' or `false'.
-# On many systems, the getloadavg function (used to implement the `-l'
+# The value should be either 'true' or 'false'.
+# On many systems, the getloadavg function (used to implement the '-l'
 # switch) will not work unless make is installed setgid kmem.
 #
 inst_setgid = @NEED_SETGID@
@@ -383,7 +448,7 @@ all: config.h
 
 .SUFFIXES:
 .SUFFIXES: .c .o .obj
-am--refresh:
+am--refresh: Makefile
        @:
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
@@ -419,10 +484,8 @@ $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @if test ! -f $@; then \
-         rm -f stamp-h1; \
-         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-       else :; fi
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -436,8 +499,11 @@ distclean-hdr:
        -rm -f config.h stamp-h1
 install-binPROGRAMS: $(bin_PROGRAMS)
        @$(NORMAL_INSTALL)
-       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
        while read p p1; do if test -f $$p; \
@@ -474,12 +540,12 @@ clean-binPROGRAMS:
 
 clean-checkPROGRAMS:
        -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
-loadavg$(EXEEXT): $(loadavg_OBJECTS) $(loadavg_DEPENDENCIES) 
+loadavg$(EXEEXT): $(loadavg_OBJECTS) $(loadavg_DEPENDENCIES) $(EXTRA_loadavg_DEPENDENCIES) 
        @rm -f loadavg$(EXEEXT)
-       $(LINK) $(loadavg_OBJECTS) $(loadavg_LDADD) $(LIBS)
-make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(loadavg_OBJECTS) $(loadavg_LDADD) $(LIBS)
+make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES) 
        @rm -f make$(EXEEXT)
-       $(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -499,12 +565,16 @@ distclean-compile:
 @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)/guile.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)/load.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadapi.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)/output.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@
@@ -518,39 +588,46 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpath.Po@am__quote@
 
 .c.o:
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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.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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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=''; 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'; \
+       @list1=''; \
+       list2='$(man_MANS)'; \
+       test -n "$(man1dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.1[a-z]*$$/p'; \
+       fi; \
        } | while read p; do \
          if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; echo "$$p"; \
@@ -579,9 +656,28 @@ uninstall-man1:
          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; }
+       dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-includeHEADERS: $(include_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+       fi; \
+       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_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+       done
+
+uninstall-includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -771,13 +867,10 @@ distdir: $(DISTFILES)
        done
        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
-           test -d "$(distdir)/$$subdir" \
-           || $(MKDIR_P) "$(distdir)/$$subdir" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
            $(am__relativize); \
            new_distdir=$$reldir; \
@@ -811,7 +904,11 @@ dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        $(am__remove_distdir)
 dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
        $(am__remove_distdir)
 
 dist-lzma: distdir
@@ -819,7 +916,7 @@ dist-lzma: distdir
        $(am__remove_distdir)
 
 dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__remove_distdir)
 
 dist-tarZ: distdir
@@ -837,7 +934,7 @@ dist-zip: distdir
 
 dist dist-all: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
        $(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
@@ -851,6 +948,8 @@ distcheck: dist
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
        *.tar.lzma*) \
          lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
          xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
@@ -860,7 +959,7 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       chmod -R a-w $(distdir); chmod u+w $(distdir)
        mkdir $(distdir)/_build
        mkdir $(distdir)/_inst
        chmod a-w $(distdir)
@@ -870,6 +969,7 @@ distcheck: dist
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -898,8 +998,16 @@ distcheck: dist
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-       @$(am__cd) '$(distuninstallcheck_dir)' \
-       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
           || { echo "ERROR: files left after uninstall:" ; \
                if test -n "$(DESTDIR)"; then \
                  echo "  (check DESTDIR support)"; \
@@ -922,7 +1030,7 @@ check: check-recursive
 all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -935,10 +1043,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -973,7 +1086,7 @@ info: info-recursive
 
 info-am:
 
-install-data-am: install-man
+install-data-am: install-includeHEADERS install-man
 
 install-dvi: install-dvi-recursive
 
@@ -1020,7 +1133,8 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS uninstall-man
+uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
+       uninstall-man
 
 uninstall-man: uninstall-man1
 
@@ -1031,19 +1145,21 @@ uninstall-man: uninstall-man1
        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-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 mostlyclean mostlyclean-compile \
-       mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
-       uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \
+       dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+       distcheck distclean distclean-compile distclean-generic \
+       distclean-hdr 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-includeHEADERS 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 mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-includeHEADERS uninstall-man \
        uninstall-man1
 
 
@@ -1061,19 +1177,28 @@ install-exec-local:
             echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
           else \
             echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
-            echo "otherwise the \`-l' option will probably not work."; \
+            echo "otherwise the '-l' option will probably not work."; \
             echo "You may need special privileges to complete the installation"; \
             echo "of $$app."; \
           fi; \
         else true; fi
 
+# --------------- Generate the Guile default module content
+
+guile.$(OBJEXT): gmk-default.h
+gmk-default.h: $(srcdir)/gmk-default.scm
+       (echo 'static const char *const GUILE_module_defn = " '\\ \
+         && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \
+                $(srcdir)/gmk-default.scm \
+          && echo '";') > $@
+
 # --------------- Local DIST Section
 
 # Install the w32 and tests subdirectories
 #
 dist-hook:
        (cd $(srcdir); \
-        sub=`find w32 tests -follow \( -name CVS -prune -o -name .cvsignore -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
+        sub=`find w32 tests -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \
         tar chf - $$sub) \
        | (cd $(distdir); tar xfBp -)
 
@@ -1097,18 +1222,18 @@ check-loadavg: loadavg$(EXEEXT)
        -./loadavg$(EXEEXT)
 
 check-regression:
-       @if test -f "$(srcdir)/tests/run_make_tests"; then \
+       @if test -f '$(srcdir)/tests/run_make_tests'; then \
          if $(PERL) -v >/dev/null 2>&1; then \
-           case `cd $(srcdir); pwd` in `pwd`) : ;; \
+           case `cd '$(srcdir)'; pwd` in `pwd`) : ;; \
              *) test -d tests || mkdir tests; \
                 rm -f srctests; \
-                if ln -s "$(srcdir)/tests" srctests; then \
+                if ln -s '$(srcdir)/tests' srctests; then \
                   for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
                     rm -f tests/$$f; ln -s ../srctests/$$f tests; \
                   done; fi ;; \
            esac; \
-           echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
-           cd tests && $(PERL) ./run_make_tests.pl -make ../make$(EXEEXT) $(MAKETESTFLAGS); \
+           echo "cd tests && $(PERL) ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
+           cd tests && $(PERL) ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
          else \
            echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
          fi; \
@@ -1119,7 +1244,7 @@ check-regression:
 # --------------- Maintainer's Section
 
 # Tell automake that I haven't forgotten about this file and it will be
-# created before we build a distribution (see maintMakefile in the CVS
+# created before we build a distribution (see maintMakefile in the Git
 # distribution).
 
 README:
diff --git a/NEWS b/NEWS
index 523c9a7..2227a35 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  28 July 2010
+  09 Oct 2013
 
 See the end of this file for copyrights and conditions.
 
@@ -9,7 +9,111 @@ 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
+Version 4.0 (09 Oct 2013)
+
+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=101&set=custom
+
+* WARNING: Backward-incompatibility!
+  If .POSIX is specified, then make adheres to the POSIX backslash/newline
+  handling requirements, which introduces the following changes to the
+  standard backslash/newline handling in non-recipe lines:
+  * Any trailing space before the backslash is preserved
+  * Each backslash/newline (plus subsequent whitespace) is converted to a
+    single space
+
+* New feature: GNU Guile integration
+  This version of GNU make can be compiled with GNU Guile integration.
+  GNU Guile serves as an embedded extension language for make.
+  See the "Guile Function" section in the GNU Make manual for details.
+  Currently GNU Guile 1.8 and 2.0+ are supported.  In Guile 1.8 there is no
+  support for internationalized character sets.  In Guile 2.0+, scripts can be
+  encoded in UTF-8.
+
+* New command line option: --output-sync (-O) enables grouping of output by
+  target or by recursive make.  This is useful during parallel builds to avoid
+  mixing output from different jobs together giving hard-to-understand
+  results.  Original implementation by David Boyce <dsb@boyski.com>.
+  Reworked and enhanced by Frank Heckenbach <f.heckenbach@fh-soft.de>.
+  Windows support by Eli Zaretskii <eliz@gnu.org>.
+
+* New command line option: --trace enables tracing of targets.  When enabled
+  the recipe to be invoked is printed even if it would otherwise be suppressed
+  by .SILENT or a "@" prefix character.  Also before each recipe is run the
+  makefile name and linenumber where it was defined are shown as well as the
+  prerequisites that caused the target to be considered out of date.
+
+* New command line option argument: --debug now accepts a "n" (none) flag
+  which disables all debugging settings that are currently enabled.
+
+* New feature: The "job server" capability is now supported on Windows.
+  Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
+
+* New feature: The .ONESHELL capability is now supported on Windows.  Support
+  added by Eli Zaretskii <eliz@gnu.org>.
+
+* New feature: "!=" shell assignment operator as an alternative to the
+  $(shell ...) function.  Implemented for compatibility with BSD makefiles.
+  Note there are subtle differences between "!=" and $(shell ...).  See the
+  description in the GNU make manual.
+  WARNING: Backward-incompatibility!
+  Variables ending in "!" previously defined as "variable!= value" will now be
+  interpreted as shell assignment.  Change your assignment to add whitespace
+  between the "!" and "=": "variable! = value"
+
+* New feature: "::=" simple assignment operator as defined by POSIX in 2012.
+  This operator has identical functionality to ":=" in GNU make, but will be
+  portable to any implementation of make conforming to a sufficiently new
+  version of POSIX (see http://austingroupbugs.net/view.php?id=330).  It is
+  not necessary to define the .POSIX target to access this operator.
+
+* New feature: Loadable objects
+  This version of GNU make contains a "technology preview": the ability to
+  load dynamic objects into the make runtime.  These objects can be created by
+  the user and can add extended functionality, usable by makefiles.
+
+* New function: $(file ...) writes to a file.
+
+* New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like
+  MAKEFLAGS is.  It can be set in the environment or the makefile, containing
+  GNU make-specific flags to allow your makefile to be portable to other
+  versions of make.  Once this variable is parsed, GNU make will set it to the
+  empty string so that flags will not be duplicated on recursion.
+
+* New variable: `MAKE_HOST' gives the name of the host architecture
+  make was compiled for.  This is the same value you see after 'Built for'
+  when running 'make --version'.
+
+* Behavior of MAKEFLAGS and MFLAGS is more rigorously defined.  All simple
+  flags are grouped together in the first word of MAKEFLAGS.  No options that
+  accept arguments appear in the first word.  If no simple flags are present
+  MAKEFLAGS begins with a space.  Flags with both short and long versions
+  always use the short versions in MAKEFLAGS.  Flags are listed in
+  alphabetical order using ASCII ordering.  MFLAGS never begins with "- ".
+
+* Setting the -r and -R options in MAKEFLAGS inside a makefile now works as
+  expected, removing all built-in rules and variables, respectively.
+
+* If a recipe fails, the makefile name and linenumber of the recipe are shown.
+
+* A .RECIPEPREFIX setting is remembered per-recipe and variables expanded
+  in that recipe also use that recipe prefix setting.
+
+* In -p output, .RECIPEPREFIX settings are shown and all target-specific
+  variables are output as if in a makefile, instead of as comments.
+
+* On MS-Windows, recipes that use ".." quoting will no longer force
+  invocation of commands via temporary batch files and stock Windows
+  shells, they will be short-circuited and invoked directly.  (In
+  other words, " is no longer a special character for stock Windows
+  shells.)  This avoids hitting shell limits for command length when
+  quotes are used, but nothing else in the command requires the shell.
+  This change could potentially mean some minor incompatibilities in
+  behavior when the recipe uses quoted string on shell command lines.
+
+\f
+Version 3.82 (28 Jul 2010)
 
 A complete list of bugs fixed in this version is available here:
 
@@ -18,14 +122,6 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
 * 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 +138,21 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
   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
@@ -115,7 +226,7 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set
   multi-line variable assignment.
 
 \f
-Version 3.81
+Version 3.81 (01 Apr 2006)
 
 * GNU make is ported to OS/2.
 
@@ -238,7 +349,7 @@ Version 3.81
   could be found on the system.
 
 * On VMS there is now support for case-sensitive filesystems such as ODS5.
-  See the readme.vms file for information.
+  See the README.VMS file for information.
 
 * Parallel builds (-jN) no longer require a working Bourne shell on
   Windows platforms.  They work even with the stock Windows shells, such
@@ -256,7 +367,7 @@ A complete list of bugs fixed in this version is available here:
   http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
 
 \f
-Version 3.80
+Version 3.80 (03 Oct 2002)
 
 * A new feature exists: order-only prerequisites.  These prerequisites
   affect the order in which targets are built, but they do not impact
@@ -338,7 +449,7 @@ A complete list of bugs fixed in this version is available here:
   http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
 
 \f
-Version 3.79.1
+Version 3.79.1 (23 Jun 2000)
 
 * .SECONDARY with no prerequisites now prevents any target from being
   removed because make thinks it's an intermediate file, not just those
@@ -347,7 +458,7 @@ Version 3.79.1
 * New configure option --disable-nsec-timestamps, but this was
   superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target.
 \f
-Version 3.79
+Version 3.79 (04 Apr 2000)
 
 * GNU make optionally supports internationalization and locales via the
   GNU gettext (or local gettext if suitable) package.  See the ABOUT-NLS
@@ -388,9 +499,9 @@ Version 3.79
   returned.
 
 * Hartmut Becker provided many updates for the VMS port of GNU make.
-  See the readme.vms file for more details.
+  See the README.VMS file for more details.
 \f
-Version 3.78
+Version 3.78 (22 Sep 1999)
 
 * Two new functions, $(error ...) and $(warning ...) are available.  The
   former will cause make to fail and exit immediately upon expansion of
@@ -446,7 +557,7 @@ Version 3.78
   by running "make check" in the distribution.  Note that it requires
   Perl (either Perl 4 or Perl 5) to run.
 \f
-Version 3.77
+Version 3.77 (28 Jul 1998)
 
 * Implement BSD make's "?=" variable assignment operator.  The variable
   is assigned the specified value only if that variable is not already
@@ -492,11 +603,11 @@ Version 3.77
 * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32),
   and to the DOS port from Eli Zaretski (see README.DOS).
 \f
-Version 3.76.1
+Version 3.76.1 (19 Sep 1997)
 
 * Small (but serious) bug fix.  Quick rollout to get into the GNU source CD.
 \f
-Version 3.76
+Version 3.76 (16 Sep 1997)
 
 * GNU make now uses automake to control Makefile.in generation.  This
   should make it more consistent with the GNU standards.
@@ -541,7 +652,7 @@ Version 3.76
 
 * John W. Eaton has updated the VMS port to support libraries and VPATH.
 \f
-Version 3.75
+Version 3.75 (27 Aug 1996)
 
 * The directory messages printed by `-w' and implicitly in sub-makes,
   are now omitted if Make runs no commands and has no other messages to print.
@@ -562,7 +673,7 @@ Version 3.75
   See README.W32 for details, and direct all Windows-related questions to
   <rob_tulloh@tivoli.com>.
 \f
-Version 3.73
+Version 3.73 (05 Apr 1995)
 
 * Converted to use Autoconf version 2, so `configure' has some new options.
   See INSTALL for details.
@@ -570,7 +681,7 @@ Version 3.73
 * You can now send a SIGUSR1 signal to Make to toggle printing of debugging
   output enabled by -d, at any time during the run.
 \f
-Version 3.72
+Version 3.72 (04 Nov 1994)
 
 * DJ Delorie has ported Make to MS-DOS using the GO32 extender.
   He is maintaining the DOS port, not the GNU Make maintainer;
@@ -604,7 +715,7 @@ Version 3.72
   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
+Version 3.71 (21 May 1994)
 
 * The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
   `$(^D)' now omit the trailing slash from the directory name.  (This change
@@ -626,7 +737,7 @@ Version 3.71
   The exit status is 1 only when using -q and some target is not up to date.
   (This change was made to comply with POSIX.2.)
 \f
-Version 3.70
+Version 3.70 (03 Jan 1994)
 
 * It is no longer a fatal error to have a NUL character in a makefile.
   You should never put a NUL in a makefile because it can have strange
@@ -637,7 +748,7 @@ Version 3.70
   makefile name and line number where the `include' appeared, so Emacs's
   C-x ` command takes you there (in case it's a typo you need to fix).
 \f
-Version 3.69
+Version 3.69 (07 Nov 1993)
 
 * Implicit rule search for archive member references is now done in the
   opposite order from previous versions: the whole target name `LIB(MEM)'
@@ -667,7 +778,7 @@ Version 3.69
 * The recipe given for `.DEFAULT' is now used for phony targets with no
   recipe.
 \f
-Version 3.68
+Version 3.68 (28 Jul 1993)
 
 * You can list several archive member names inside parenthesis:
   `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
@@ -693,16 +804,16 @@ Version 3.68
   to set up variables for them.  They used to run with the environment
   that `make' started with.
 \f
-Version 3.66
+Version 3.66 (21 May 1993)
 
 * `make --version' (or `make -v') now exits immediately after printing
   the version number.
 \f
-Version 3.65
+Version 3.65 (09 May 1993)
 
 * Make now supports long-named members in `ar' archive files.
 \f
-Version 3.64
+Version 3.64 (21 Apr 1993)
 
 * Make now supports the `+=' syntax for a variable definition which appends
   to the variable's previous value.  See the section `Appending More Text
@@ -716,7 +827,7 @@ Version 3.64
 * The built-in implicit rules now support the alternative extension
   `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
 \f
-Version 3.63
+Version 3.63 (22 Jan 1993)
 
 * Make now uses a standard GNU `configure' script.  See the new file
   INSTALL for the new (and much simpler) installation procedure.
@@ -1096,9 +1207,8 @@ Version 3.05
 (Changes from versions 1 through 3.05 were never recorded.  Sorry.)
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1988, 1989, 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 file is part of GNU Make.
+Copyright (C) 1988-2013 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
index f4a6fe5..176535a 100644 (file)
--- a/NMakefile
+++ b/NMakefile
@@ -3,8 +3,7 @@
 # NOTE: If you have no 'make' program at all to process this makefile,
 # run 'build_w32.bat' instead.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 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
@@ -73,6 +72,8 @@ $(OUTDIR):
 
 LIBS = kernel32.lib user32.lib advapi32.lib
 
+#guile = $(OUTDIR)/guile.obj
+
 OBJS = \
        $(OUTDIR)/ar.obj \
        $(OUTDIR)/arscan.obj \
@@ -90,6 +91,7 @@ OBJS = \
        $(OUTDIR)/job.obj \
        $(OUTDIR)/main.obj \
        $(OUTDIR)/misc.obj \
+       $(OUTDIR)/output.obj \
        $(OUTDIR)/read.obj \
        $(OUTDIR)/remake.obj \
        $(OUTDIR)/remote-stub.obj \
@@ -102,7 +104,8 @@ OBJS = \
        $(OUTDIR)/glob.obj \
        $(OUTDIR)/fnmatch.obj \
        $(OUTDIR)/dirent.obj \
-       $(OUTDIR)/pathstuff.obj
+       $(OUTDIR)/pathstuff.obj \
+       $(guile)
 
 $(OUTDIR)/make.exe: $(OUTDIR) $(OBJS)
        $(LINK) @<<
@@ -128,60 +131,67 @@ $(OUTDIR)/pathstuff.obj : w32/pathstuff.c
 # dummy
 
 # .deps/ar.Po
-$(OUTDIR)/ar.obj: ar.c make.h config.h \
+$(OUTDIR)/ar.obj: ar.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h dep.h \
 
 # .deps/arscan.Po
-$(OUTDIR)/arscan.obj: arscan.c make.h config.h \
+$(OUTDIR)/arscan.obj: arscan.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/commands.Po
-$(OUTDIR)/commands.obj: commands.c make.h config.h \
+$(OUTDIR)/commands.obj: commands.c \
+ makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
  commands.h
 
 # .deps/default.Po
-$(OUTDIR)/default.obj: default.c make.h config.h \
+$(OUTDIR)/default.obj: default.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h rule.h dep.h \
- job.h \
+ filedef.h hash.h variable.h rule.h dep.h job.h output.h \
  commands.h
 
 # .deps/dir.Po
-$(OUTDIR)/dir.obj: dir.c make.h config.h \
+$(OUTDIR)/dir.obj: dir.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- hash.h \
+ hash.h filedef.h dep.h \
 
 # .deps/expand.Po
-$(OUTDIR)/expand.obj: expand.c make.h config.h \
+$(OUTDIR)/expand.obj: expand.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h \
- job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/file.Po
-$(OUTDIR)/file.obj: file.c make.h config.h \
+$(OUTDIR)/file.obj: file.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
+ filedef.h hash.h dep.h job.h output.h \
  commands.h variable.h \
  debug.h
 
 # .deps/function.Po
-$(OUTDIR)/function.obj: function.c make.h config.h \
+$(OUTDIR)/function.obj: function.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h dep.h job.h \
+ filedef.h hash.h \
+ variable.h dep.h job.h output.h \
  commands.h debug.h
 
 # .deps/getloadavg.Po
@@ -193,96 +203,143 @@ $(OUTDIR)/getopt.obj: getopt.c config.h \
 # .deps/getopt1.Po
 $(OUTDIR)/getopt1.obj: getopt1.c config.h getopt.h \
 
+# .deps/guile.Po
+$(OUTDIR)/guile.obj: guile.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ debug.h filedef.h hash.h \
+ dep.h variable.h \
+ gmk-default.h
+
 # .deps/hash.Po
-$(OUTDIR)/hash.obj: hash.c make.h config.h \
+$(OUTDIR)/hash.obj: hash.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/implicit.Po
-$(OUTDIR)/implicit.obj: implicit.c make.h config.h \
+$(OUTDIR)/implicit.obj: implicit.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h rule.h dep.h debug.h \
variable.h job.h \
+ filedef.h hash.h rule.h \
dep.h debug.h variable.h job.h output.h \
  commands.h
 
 # .deps/job.Po
-$(OUTDIR)/job.obj: job.c make.h config.h \
+$(OUTDIR)/job.obj: job.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ job.h output.h \
+ debug.h filedef.h hash.h \
+ commands.h variable.h
+
+# .deps/load.Po
+$(OUTDIR)/load.obj: load.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
+ debug.h filedef.h hash.h \
  variable.h
 
+# .deps/loadapi.Po
+$(OUTDIR)/loadapi.obj: loadapi.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h \
+ variable.h dep.h
+
 # .deps/loadavg-getloadavg.Po
 # dummy
 
 # .deps/main.Po
-$(OUTDIR)/main.obj: main.c make.h config.h \
+$(OUTDIR)/main.obj: main.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h getopt.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
+ commands.h rule.h debug.h \
+ getopt.h
 
 # .deps/misc.Po
-$(OUTDIR)/misc.obj: misc.c make.h config.h \
+$(OUTDIR)/misc.obj: misc.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h dep.h \
+ debug.h \
+
+# .deps/output.Po
+$(OUTDIR)/output.obj: output.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h debug.h
+ job.h output.h \
 
 # .deps/read.Po
-$(OUTDIR)/read.obj: read.c make.h config.h \
+$(OUTDIR)/read.obj: read.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h rule.h debug.h \
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h \
+ debug.h
 
 # .deps/remake.Po
-$(OUTDIR)/remake.obj: remake.c make.h config.h \
+$(OUTDIR)/remake.obj: remake.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
- commands.h dep.h variable.h debug.h \
+ output.h \
+ commands.h dep.h variable.h \
+ debug.h
 
 # .deps/remote-cstms.Po
 # dummy
 
 # .deps/remote-stub.Po
-$(OUTDIR)/remote-stub.obj: remote-stub.c make.h config.h \
+$(OUTDIR)/remote-stub.obj: remote-stub.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
+ output.h \
  commands.h
 
 # .deps/rule.Po
-$(OUTDIR)/rule.obj: rule.c make.h config.h \
+$(OUTDIR)/rule.obj: rule.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/signame.Po
-$(OUTDIR)/signame.obj: signame.c make.h config.h \
+$(OUTDIR)/signame.obj: signame.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/strcache.Po
-$(OUTDIR)/strcache.obj: strcache.c make.h config.h \
+$(OUTDIR)/strcache.obj: strcache.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/variable.Po
-$(OUTDIR)/variable.obj: variable.c make.h config.h \
+$(OUTDIR)/variable.obj: variable.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/version.Po
 $(OUTDIR)/version.obj: version.c config.h
@@ -291,7 +348,9 @@ $(OUTDIR)/version.obj: version.c config.h
 # dummy
 
 # .deps/vpath.Po
-$(OUTDIR)/vpath.obj: vpath.c make.h config.h \
+$(OUTDIR)/vpath.obj: vpath.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h
+ filedef.h hash.h \
+ variable.h
diff --git a/README b/README
index 07e5dc5..8b10c42 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This directory contains the 3.82 release of GNU Make.
+This directory contains the 4.0 release of GNU Make.
 
 See the file NEWS for the user-visible changes from previous releases.
 In addition, there have been bugs fixed.
@@ -8,20 +8,22 @@ your operating system.
 
 For general building and installation instructions, see the file INSTALL.
 
-If you need to build GNU Make and have no other `make' program to use,
-you can use the shell script `build.sh' instead.  To do this, first run
-`configure' as described in INSTALL.  Then, instead of typing `make' to
-build the program, type `sh build.sh'.  This should compile the program
+If you need to build GNU Make and have no other 'make' program to use,
+you can use the shell script 'build.sh' instead.  To do this, first run
+'configure' as described in INSTALL.  Then, instead of typing 'make' to
+build the program, type 'sh build.sh'.  This should compile the program
 in the current directory.  Then you will have a Make program that you can
-use for `./make install', or whatever else.
+use for './make install', or whatever else.
 
 Some systems' Make programs are broken and cannot process the Makefile for
 GNU Make.  If you get errors from your system's Make when building GNU
-Make, try using `build.sh' instead.
+Make, try using 'build.sh' instead.
 
 
 GNU Make is free software.  See the file COPYING for copying conditions.
-
+GNU Make is copyright by the Free Software Foundation.  Copyright notices
+condense sequential years into a range; e.g. "1987-1994" means all years
+from 1987 to 1994 inclusive.
 
 Downloading
 -----------
@@ -64,7 +66,7 @@ Bug Reporting
 -------------
 
 You can send GNU make bug reports to <bug-make@gnu.org>.  Please see the
-section of the GNU make manual entitled `Problems and Bugs' for
+section of the GNU make manual entitled 'Problems and Bugs' for
 information on submitting useful and complete bug reports.
 
 You can also use the online bug tracking system in the Savannah GNU Make
@@ -79,31 +81,20 @@ If you need help using GNU make, try these forums:
   news:gnu.utils.help
   news:gnu.utils.bug
 
-  http://savannah.gnu.org/support/?group=make
-
-You may also find interesting patches to GNU Make available here:
-
-  http://savannah.gnu.org/patch/?group=make
-
-Note these patches are provided by our users as a service and we make no
-statements regarding their correctness.  Please contact the authors
-directly if you have a problem or suggestion for a patch available on
-this page.
-
 
-CVS Access
+Git Access
 ----------
 
-The GNU make source repository is available via anonymous CVS from the
-GNU Subversions CVS server; look here for details:
+The GNU make source repository is available via Git from the
+GNU Savannah Git server; look here for details:
 
-  http://savannah.gnu.org/cvs/?group=make
+  http://savannah.gnu.org/git/?group=make
 
-Please note: you won't be able to build GNU make from CVS without
+Please note: you won't be able to build GNU make from Git without
 installing appropriate maintainer's tools, such as GNU m4, automake,
-autoconf, Perl, GNU make, and GCC.  See the README.cvs file for hints on
+autoconf, Perl, GNU make, and GCC.  See the README.git file for hints on
 how to build GNU make once these tools are available.  We make no
-guarantees about the contents or quality of the latest code in the CVS
+guarantees about the contents or quality of the latest code in the Git
 repository: it is not unheard of for code that is known to be broken to
 be checked in.  Use at your own risk.
 
@@ -112,8 +103,8 @@ System-specific Notes
 ---------------------
 
 It has been reported that the XLC 1.2 compiler on AIX 3.2 is buggy such
-that if you compile make with `cc -O' on AIX 3.2, it will not work
-correctly.  It is said that using `cc' without `-O' does work.
+that if you compile make with 'cc -O' on AIX 3.2, it will not work
+correctly.  It is said that using 'cc' without '-O' does work.
 
 The standard /bin/sh on SunOS 4.1.3_U1 and 4.1.4 is broken and cannot be
 used to configure GNU make.  Please install a different shell such as
@@ -123,15 +114,15 @@ information:
 
 One area that is often a problem in configuration and porting is the code
 to check the system's current load average.  To make it easier to test and
-debug this code, you can do `make check-loadavg' to see if it works
-properly on your system.  (You must run `configure' beforehand, but you
+debug this code, you can do 'make check-loadavg' to see if it works
+properly on your system.  (You must run 'configure' beforehand, but you
 need not build Make itself to run this test.)
 
 Another potential source of porting problems is the support for large
 files (LFS) in configure for those operating systems that provide it.
 Please report any bugs that you find in this area.  If you run into
 difficulties, then as a workaround you should be able to disable LFS by
-adding the `--disable-largefile' option to the `configure' script.
+adding the '--disable-largefile' option to the 'configure' script.
 
 On systems that support micro- and nano-second timestamp values and
 where stat(2) provides this information, GNU make will use it when
@@ -151,7 +142,7 @@ Ports
   - See README.customs for details on integrating GNU make with the
     Customs distributed build environment from the Pmake distribution.
 
-  - See readme.vms for details about GNU Make on OpenVMS.
+  - See README.VMS for details about GNU Make on OpenVMS.
 
   - See README.Amiga for details about GNU Make on AmigaDOS.
 
@@ -171,9 +162,7 @@ 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
index 091b8b4..1fabe07 100644 (file)
@@ -11,7 +11,7 @@ GNU make):
 - Can run multi-line statements
 - Allows to use Device-Names in targets:
 
-       c:make : make.o
+        c:make : make.o
 
     is ok. To distinguish between device-names and target : or ::, MAKE
     looks for spaces. If there are any around :, it's taken as a target
@@ -19,14 +19,14 @@ GNU make):
     that "make:make.o" tries to create "make.o" on the device "make:".
 - Replaces @@ by a newline in any command line:
 
-       if exists make @@\
-           delete make.bak quiet @@\
-           rename make make.bak @@\
-       endif @@\
-       $(CC) Link Make.o To make
+        if exists make @@\
+            delete make.bak quiet @@\
+            rename make make.bak @@\
+        endif @@\
+        $(CC) Link Make.o To make
 
-    works. Note that the @@ must stand alone (ie. "make@@\" is illegal).
-    Also be carefull that there is a space after the "\" (ie, at the
+    works. Note that the @@ must stand alone (i.e., "make@@\" is illegal).
+    Also be careful that there is a space after the "\" (i.e., at the
     beginning of the next line).
 - Can be made resident to save space and time
 - Amiga specific wildcards can be used in $(wildcard ...)
@@ -36,17 +36,17 @@ BUGS:
 
     dummy.h : src/*.c
 
-tries to make dummy.h from "src/*.c" (ie. no wildcard-expansion takes
+tries to make dummy.h from "src/*.c" (i.e., no wildcard-expansion takes
 place). You have to use "$(wildcard src/*.c)" instead.
 
 COMPILING FROM SCRATCH
 ----------------------
 
-To recompile, you need SAS/C 6.51. make itself is not neccessary, there
+To recompile, you need SAS/C 6.51. make itself is not necessary, there
 is an smakefile.
 
 1. Copy config.ami to config.h
-2. If you use make to compie, copy Makefile.ami to Makefile and
+2. If you use make to compile, copy Makefile.ami to Makefile and
     glob/Makefile.ami to glob/Makefile. Copy make into the current
     directory.
 
@@ -54,15 +54,14 @@ is an smakefile.
 
 INSTALLATION
 
-Copy make somewhere in your search path (eg. sc:c or sc:bin).
+Copy make somewhere in your search path (e.g., sc:c or sc:bin).
 If you plan to use recursive makes, install make resident:
 
     Resident make Add
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 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
index 52529ab..158560d 100644 (file)
@@ -8,12 +8,12 @@ New (since 3.74) DOS-specific features:
    1. Supports long filenames when run from DOS box on Windows 9x.
 
    2. Supports both stock DOS COMMAND.COM and Unix-style shells
-      (details in ``Notes'' below).
+      (details in 'Notes' below).
 
    3. Supports DOS drive letters in dependencies and pattern rules.
 
    4. Better support for DOS-style backslashes in pathnames (but see
-      ``Notes'' below).
+      'Notes' below).
 
    5. The $(shell) built-in can run arbitrary complex commands,
       including pipes and redirection, even when COMMAND.COM is your
@@ -55,20 +55,20 @@ To build from sources:
       either DJTAR (which is part of the DJGPP development
       environment), or the DJGPP port of GNU Tar.
 
-   2. Invoke the `configure.bat' batch file.
+   2. Invoke the 'configure.bat' batch file.
 
       If you are building Make in-place, i.e. in the same directory
       where its sources are kept, just type "configure.bat" and press
       [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.82\configure.bat c:/djgpp/gnu/make-3.82
+        c:\djgpp\gnu\make-4.0\configure.bat c:/djgpp/gnu/make-4.0
 
       Note the forward slashes in the source path argument: you MUST
       use them here.
 
    3. If configure.bat doesn't find a working Make, it will suggest to
-      use the `dosbuild.bat' batch file to build Make.  Either do as it
+      use the 'dosbuild.bat' batch file to build Make.  Either do as it
       suggests or install another Make program (a pre-compiled binary
       should be available from the usual DJGPP sites) and rerun
       configure.bat.
@@ -84,14 +84,14 @@ 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.82
+                make srcdir=c:/djgpp/gnu/make-4.0
 
       (configure.bat will tell you this when it finishes).  You MUST
       use a full, not relative, name of the source directory here, or
       else Make might fail.
 
    6. After Make finishes, if you have a Unix-style shell installed,
-      you can use the `install' target to install the package.  You
+      you can use the 'install' target to install the package.  You
       will also need GNU Fileutils and GNU Sed for this (they should
       be available from the DJGPP sites).
 
@@ -99,7 +99,7 @@ To build from sources:
       area.  If you wish to use a different directory, override the
       DESTDIR variable when invoking "make install", like this:
 
-               make install DESTDIR=c:/other/dir
+                make install DESTDIR=c:/other/dir
 
       This causes the make executable to be placed in c:/other/dir/bin,
       the man pages in c:/other/dir/man, etc.
@@ -107,21 +107,21 @@ To build from sources:
       Without a Unix-style shell, you will have to install programs
       and the docs manually.  Copy make.exe to a directory on your
       PATH, make.i* info files to your Info directory, and update the
-      file `dir' in your Info directory by adding the following item
+      file 'dir' in your Info directory by adding the following item
       to the main menu:
 
-       * Make: (make.info).           The GNU make utility.
+        * Make: (make.info).           The GNU make utility.
 
-      If you have the `install-info' program (from the GNU Texinfo
+      If you have the 'install-info' program (from the GNU Texinfo
       package), it will do that for you if you invoke it like this:
 
-       install-info --info-dir=c:/djgpp/info c:/djgpp/info/make.info
+        install-info --info-dir=c:/djgpp/info c:/djgpp/info/make.info
 
       (If your Info directory is other than C:\DJGPP\INFO, change this
       command accordingly.)
 
-   7. The `clean' targets also require Unix-style shell, and GNU Sed
-      and `rm' programs (the latter from Fileutils).
+   7. The 'clean' targets also require Unix-style shell, and GNU Sed
+      and 'rm' programs (the latter from Fileutils).
 
    8. To run the test suite, type "make check".  This requires a Unix
       shell (I used the DJGPP port of Bash 2.03), Perl, Sed, Fileutils
@@ -144,7 +144,7 @@ Notes:
 
       This port supports both DOS shells (the stock COMMAND.COM and its
       4DOS/NDOS replacements), and Unix-style shells (tested with the
-      venerable Stewartson's `ms_sh' 2.3 and the DJGPP port of `bash' by
+      venerable Stewartson's 'ms_sh' 2.3 and the DJGPP port of 'bash' by
       Daisuke Aoyama <jack@st.rim.or.jp>).
 
       When the $SHELL variable points to a Unix-style shell, Make
@@ -166,17 +166,17 @@ Notes:
       redirection and pipes, and shall only call the shell when a
       batch file or a command internal to the shell is invoked.  (Even
       when a command is an internal shell command, Make will first
-      search the $PATH for it, so that if a Makefile calls `mkdir',
-      you can install, say, a port of GNU `mkdir' and have it called
+      search the $PATH for it, so that if a Makefile calls 'mkdir',
+      you can install, say, a port of GNU 'mkdir' and have it called
       in that case.)
 
-      The key to all this is the extended functionality of `spawn' and
-      `system' functions from the DJGPP library; this port just calls
-      `system' where it would invoke the shell on Unix.  The most
+      The key to all this is the extended functionality of 'spawn' and
+      'system' functions from the DJGPP library; this port just calls
+      'system' where it would invoke the shell on Unix.  The most
       important aspect of these functions is that they use a special
       mechanism to pass long (up to 16KB) command lines to DJGPP
-      programs.  In addition, `system' emulates some internal
-      commands, like `cd' (so that you can now use forward slashes
+      programs.  In addition, 'system' emulates some internal
+      commands, like 'cd' (so that you can now use forward slashes
       with it, and can also change the drive if the directory is on
       another drive).  Another aspect worth mentioning is that you can
       call Unix shell scripts directly, provided that the shell whose
@@ -186,7 +186,7 @@ Notes:
       reference for more details.
 
       The $(shell) built-in is implemented in this port by calling
-      `popen'.  Since `popen' calls `system', the above considerations
+      'popen'.  Since 'popen' calls 'system', the above considerations
       are valid for $(shell) as well.  In particular, you can put
       arbitrary complex commands, including pipes and redirection,
       inside $(shell), which is in many cases a valid substitute for
@@ -197,12 +197,12 @@ Notes:
 
       Many Unix Makefiles include a line which sets the SHELL, for
       those versions of Make which don't have this as the default.
-      Since many DOS systems don't have `sh' installed (in fact, most
-      of them don't even have a `/bin' directory), this port takes
+      Since many DOS systems don't have 'sh' installed (in fact, most
+      of them don't even have a '/bin' directory), this port takes
       such directives with a grain of salt.  It will only honor such a
-      directive if the basename of the shell name (like `sh' in the
+      directive if the basename of the shell name (like 'sh' in the
       above example) can indeed be found in the directory that is
-      mentioned in the SHELL= line (`/bin' in the above example), or
+      mentioned in the SHELL= line ('/bin' in the above example), or
       in the current working directory, or anywhere on the $PATH (in
       that order).  If the basename doesn't include a filename
       extension, Make will look for any known extension that indicates
@@ -237,8 +237,8 @@ Notes:
       require such a shell).  More important, you can convert Unix
       Makefiles to MSDOS and leave the line which sets the shell
       intact, so that people who do have Unixy shell could use it for
-      targets which aren't converted to DOS (like `install' and
-      `uninstall', for example).
+      targets which aren't converted to DOS (like 'install' and
+      'uninstall', for example).
 
 
    3. Default directories.
@@ -258,14 +258,14 @@ Notes:
       If you run Make on Windows 9x, you should be aware of the
       letter-case issue.  Make is internally case-sensitive, but all
       file operations are case-insensitive on Windows 9x, so
-      e.g. files `FAQ', `faq' and `Faq' all refer to the same file, as
+      e.g. files 'FAQ', 'faq' and 'Faq' all refer to the same file, as
       far as Windows is concerned.  The underlying DJGPP C library
       functions honor the letter-case of the filenames they get from
       the OS, except that by default, they down-case 8+3 DOS filenames
       which are stored in upper case in the directory and would break
       many Makefiles otherwise.  (The details of which filenames are
       converted to lower case are explained in the DJGPP libc docs,
-      under the `_preserve_fncase' and `_lfn_gen_short_fname'
+      under the '_preserve_fncase' and '_lfn_gen_short_fname'
       functions, but as a thumb rule, any filename that is stored in
       upper case in the directory, is a valid DOS 8+3 filename and
       doesn't include characters invalid on MSDOS FAT filesystems,
@@ -282,8 +282,8 @@ Notes:
 
       There are a lot of places throughout the program sources which
       make implicit assumptions about the pathname syntax.  In
-      particular, the directories are assumed to be separated by `/',
-      and any pathname which doesn't begin with a `/' is assumed to be
+      particular, the directories are assumed to be separated by '/',
+      and any pathname which doesn't begin with a '/' is assumed to be
       relative to the current directory.  This port attempts to
       support DOS-style pathnames which might include the drive letter
       and use backslashes instead of forward slashes.  However, this
@@ -296,7 +296,7 @@ Notes:
       is the standard programs which come with MSDOS.  Otherwise, you
       are advised to stay away from backslashes whenever possible.  In
       particular, filename globbing won't work on pathnames with
-      backslashes, because the GNU `glob' library doesn't support them
+      backslashes, because the GNU 'glob' library doesn't support them
       (backslash is special in filename wildcards, and I didn't want
       to break that).
 
@@ -315,17 +315,16 @@ Bug reports:
    <djgpp@delorie.com>, which is an email gateway into the above news
    group).  For other bugs, please follow the procedure explained in
    the "Bugs" chapter of the Info docs.  If you don't have an Info
-   reader, look up that chapter in the `make.i1' file with any text
+   reader, look up that chapter in the 'make.i1' file with any text
    browser/editor.
 
 
    Enjoy,
-                       Eli Zaretskii <eliz@is.elta.co.il>
+                        Eli Zaretskii <eliz@is.elta.co.il>
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index 0da6385..792c4bb 100644 (file)
@@ -140,7 +140,7 @@ to do this but the testsuite ignores the environment. -DNO_CHDIR2 causes
 make not to use drive letters for directory names (i.e. _chdir2() and
 _getcwd2() are NOT used).  The testsuite interpretes the whole output of
 make, especially statements like make[1]: Entering directory
-`C:/somewhere/make-3.79.1/tests' where the testsuite does not expect the
+'C:/somewhere/make-3.79.1/tests' where the testsuite does not expect the
 drive letter. This would be interpreted as an error even if there is
 none.
 
@@ -160,8 +160,7 @@ from the make source tree.
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-Foundation, Inc.
+Copyright (C) 2003-2013 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
similarity index 63%
rename from readme.vms
rename to README.VMS
index ec3d624..f7b064d 100644 (file)
@@ -1,23 +1,33 @@
-This is the VMS version of GNU Make, updated by Hartmut Becker
-
-Changes are based on GNU make 3.82.
-
-This version was built and tested on OpenVMS V7.3 (VAX), V7.3-2 (Alpha) and
-V8.3-1H1 (I64).
+This version of GNU make has been tested on
+OpenVMS V8.3 (Alpha) and V8.4 (Integrity).
 
 Build instructions
+------------------
 Make a 1st version
        $ @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
+       $ copy make.exe 1st-make.exe
+  Use the 1st version to generate a 2nd version
+       $ mc sys$disk:[]1st-make clean  ! ignore any file not found messages
        $ mc sys$disk:[]1st-make
-Verify your 2nd version
-       $ rena make.exe 2nd-make.exe
+  Verify your 2nd version
+       $ copy make.exe 2nd-make.exe
        $ mc sys$disk:[]2nd-make clean
        $ mc sys$disk:[]2nd-make
+  Don't use the HP C V7.2-001 compiler, which has an incompatible change
+  how __STDC__ is defined. This results at least in compile time warnings.
+\f
+Changes since GNU make 3.82
+---------------------------
 
-Changes (3.81.90)
+Fix build problems.
+
+The new feature "Loadable objects" is not yet supported. If you need it,
+please send a change request or submit a bug report.
+
+The new option --output-sync (-O) is accepted but has no effect: GNU make
+for VMS does not support running multiple commands simultaneously.
+\f
+Changes for GNU make 3.82
 
 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
@@ -34,30 +44,6 @@ 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
@@ -78,117 +64,24 @@ 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 the Ctrl+Y handling. The CtrlY handler now uses $delprc to delete all
+children. This way also actions with DCL commands will be stopped. As before
+the CtrlY handler 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.
+Change in deleteing temporary command files. Temporary command files are now
+deleted in the vms child termination handler. That deletes 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)
+Changes for GNU make 3.80
 
 . In default.c define variable ARCH as IA64 for VMS on Itanium systems.
 
 . In makefile.vms avoid name collision for glob and globfree.
-
-In newer version of the VMS CRTL there are glob and globfree implemented.
-Compiling and linking may result in
-
-  %ILINK-W-MULDEFLNKG, symbol DECC$GLOBFREE has subsequent linkage definition
-       in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1
-  %ILINK-W-MULDEF, symbol DECC$GLOBFREE multiply defined
-       in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1
-
-linker messages (and similar for DECC$GLOB). The messages just say, that
-globfree is a known CRTL whose name was mapped by the compiler to
-DECC$GLOBFREE.  This is done in glob.c as well, so this name is defined
-twice. One possible solution is to use the VMS versions of glob and
-globfree. However, then the build environment needs to figure out if
-there is a new CRTL supporting these or not. This adds complexity. Even
-more, these functions return VMS file specifications, which is not
-expected by the other make sources. There is a switch at run time (a VMS
-logical DECC$GLOB_UNIX_STYLE), which can be set to get Unix style
-names. This may conflict with other software. The recommended solution
-for this is to set this switch just prior to calling main: in an
-initialization routine. This adds more complexity and more VMS specific
-code. It is easier to tell the compiler NOT to map the routine names
-with a simple change in makefile.vms.
-
-Some notes on case sensitive names in rules and on the disk. In the VMS
-template for CONFIG.H case sensitive rules can be enabled with defining
-WANT_CASE_SENSITIVE_TARGETS. For recent version of VMS there is a case
-sensitive file system: ODS5. To make use of that, additionally un-defining
-the HAVE_CASE_INSENSITIVE_FS is required. As these are C macros, different
-versions of make need to be built to have any case sensitivity for VMS
-working. Unfortunately, for ODS5 disks that's not all.
-
-- Usually DCL upcases command line tokens (except strings) and usually the
-  file system is case blind (similar to how Windows systems work)
-       $ set proc/parse=extended/case=sensitive
-  preserves lower and UPPER on the command line and (for this process and all
-  sub-processes) enables case sensitivity in the file system
-
-- Usually the CRTL tries to reverse what DCL did with command line tokens, it
-  lowercases all tokens (except strings)
-       $ define DECC$ARGV_PARSE_STYLE enable
-  passes (the now preserved) lower and UPPER from the command line to main()
-
-- Usually the CRTL upcases the arguments to open() and friends
-       $ define DECC$EFS_CASE_PRESERVE enable
-  preserves the names as is.
-
-It is important to know that not all VMS tools are ready for case sensitivity.
-With this setup some tools may not work as expected. The setup should not
-blindly be applied for all users in default login procedures.
-
-Example? The poor coding gives a compiler message, showing that there are
-different files:
-
-$ dir
-
-Directory ODS5DISK[HB]
-
-A.c;1               B.c;1               c.c;1               X.c;1
-x.c;1
-
-Total of 5 files.
-$ ods5make x.obj
-cc    /obj=x.obj x.c
-
-foo(){lowercase_x();}
-......^
-%CC-I-IMPLICITFUNC, In this statement, the identifier "lowercase_x" is implicitly declared as a function.
-at line number 1 in file ODS5DISK[HB]x.c;1
-$ mc SYS$SYSDEVICE:[HARTMUT.MAKE_3_80P]ods5make X.obj
-cc    /obj=X.obj X.c
-
-foo() {UPPERCASE_X();}
-.......^
-%CC-I-IMPLICITFUNC, In this statement, the identifier "UPPERCASE_X" is implicitly declared as a function.
-at line number 1 in file ODS5DISK[HB]X.c;1
-$ dir
-
-Directory ODS5DISK[HB]
-
-A.c;1               B.c;1               c.c;1               X.c;1
-x.c;1               X.obj;1             x.obj;1
-
-Total of 7 files.
-$
 \f
 This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
 
@@ -212,7 +105,7 @@ returns a modification time 1 hour ahead. This results in GNU make
 warning messages. For a just created source you will see:
 
  $ gmake x.exe
- gmake.exe;1: *** Warning: File `x.c' has modification time in the future (940582863 > 940579269)
+ gmake.exe;1: *** Warning: File 'x.c' has modification time in the future (940582863 > 940579269)
  cc    /obj=x.obj x.c
  link  x.obj    /exe=x.exe
  gmake.exe;1: *** Warning:  Clock skew detected.  Your build may be incomplete.
@@ -353,7 +246,7 @@ replaced it with a hack in vmsfunctions.c. I will provide a full rewrite
 somewhere in the future. Be warned, the time resolution inside make is
 less than what vms provides. This might be a problem on the faster Alphas.
 
-You can use a : in a filename only if you preceed it with a backslash ('\').
+You can use a : in a filename only if you precede it with a backslash ('\').
 E.g.- hobbes\:[bogas.files]
 
 Make ignores success, informational, or warning errors (-S-, -I-, or
@@ -375,8 +268,7 @@ Long command lines are now converted to command files.
 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index 60025d0..e311170 100644 (file)
@@ -1,4 +1,5 @@
-This version of GNU make has been tested on Microsoft Windows 2000/XP/2003.
+This version of GNU make has been tested on
+Microsoft Windows 2000/XP/2003/Vista/7/2008.
 It has also been used on Windows 95/98/NT, and on OS/2.
 
 It builds with the MinGW port of GCC (tested with GCC 3.4.2).
@@ -6,6 +7,23 @@ It builds with the MinGW port of GCC (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.
 
+As of version 4.0, a build with Guile is supported (tested with Guile
+2.0.3).  To build with Guile, you will need, in addition to Guile
+itself, its dependency libraries and the pkg-config program.  The
+latter is used to figure out which compilation and link switches and
+libraries need to be mentioned on the compiler command lines to
+correctly link with Guile.  A Windows port of pkg-config can be found
+on the Windows download page of the GTK+ project:
+
+  http://www.gtk.org/download/win32.php
+
+The libraries on which Guile depends can vary depending on your
+version and build of Guile.  At the very least, the Boehm's GC library
+will be needed, and typically also GNU MP, libffi, libunistring, and
+libtool's libltdl.  Whoever built the port of Guile you have should
+also provide you with these dependencies or a URL where to download
+them.
+
 The Windows 32-bit port of GNU make is maintained jointly by various
 people.  It was originally made by Rob Tulloh.
 
@@ -37,10 +55,16 @@ Building with (MinGW-)GCC using build_w32.bat
  2. Open a W32 command prompt for your installed (MinGW-)GCC, setup a
     correct PATH and other environment variables for it, then execute ...
 
-       build_w32.bat gcc
+        build_w32.bat gcc
 
     This produces gnumake.exe in the current directory.
 
+    The batch file will probe for Guile installation, and will build
+    gnumake.exe with Guile if it finds it.  If you have Guile
+    installed, but want to build Make without Guile support, type
+
+        build_w32.bat --without-guile gcc
+
 
 Building with (MSVC++-)cl using build_w32.bat or NMakefile
 ----------------------------------------------------------
@@ -51,16 +75,21 @@ Building with (MSVC++-)cl using build_w32.bat or NMakefile
     e.g. "%VS71COMNTOOLS%vsvars32.bat"; or using a corresponding start
     menue entry from the cl-installation), then execute EITHER ...
 
-       build_w32.bat
+        build_w32.bat
 
     (this produces WinDebug/gnumake.exe and WinRel/gnumake.exe)
 
     ... OR ...
 
-       nmake /f NMakefile
+        nmake /f NMakefile
 
     (this produces WinDebug/make.exe and WinRel/make.exe).
 
+    The batch file will probe for Guile installation, and will build
+    gnumake.exe with Guile if it finds it.  If you have Guile
+    installed, but want to build Make without Guile support, type
+
+        build_w32.bat --without-guile
 
 -------------------
 -- Notes/Caveats --
@@ -68,212 +97,203 @@ 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 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.
+        This version of make is ported natively to 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
-       and are not connected to this port effort.
+        Do not confuse this port of GNU make with other Windows32 projects
+        which provide a GNU make binary. These are separate projects
+        and are not connected to this port effort.
 
 GNU make and 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).
+        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"
-       porting effort (http://www.cygwin.com/).
-       Other possibilities are the MKS version of sh.exe, or building
+        There are very few true ports of Bourne shell for NT right now.
+        There is a version of GNU bash available from Cygnus "Cygwin"
+        porting effort (http://www.cygwin.com/).
+        Other possibilities are the MKS version of sh.exe, or building
         your own with a package like NutCracker (DataFocus) or Portage
         (Consensys).  Also MinGW includes sh (http://mingw.org/).
 
 GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL):
 
-       Some versions of Bourne shell do not behave well when invoked
-       as 'sh -c' from CreateProcess().  The main problem is they seem
-       to have a hard time handling quoted strings correctly. This can
-       be circumvented by writing commands to be executed to a batch
-       file and then executing the command by calling 'sh file'.
-
-       To work around this difficulty, this version of make supports
-       a batch mode.  When BATCH_MODE_ONLY_SHELL is defined at compile
-       time, make forces all command lines to be executed via script
-       files instead of by command line.  In this mode you must have a
-       working sh.exe in order to use parallel builds (-j).
-
-       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%).  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.
+        Some versions of Bourne shell do not behave well when invoked
+        as 'sh -c' from CreateProcess().  The main problem is they seem
+        to have a hard time handling quoted strings correctly. This can
+        be circumvented by writing commands to be executed to a batch
+        file and then executing the command by calling 'sh file'.
+
+        To work around this difficulty, this version of make supports
+        a batch mode.  When BATCH_MODE_ONLY_SHELL is defined at compile
+        time, make forces all command lines to be executed via script
+        files instead of by command line.  In this mode you must have a
+        working sh.exe in order to use parallel builds (-j).
+
+        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%).  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.
+        Parallel builds (-jN) are supported in this port, with 1
+        limitation: The number of concurrent processes has a hard
+        limit of 64, due to the way this port implements waiting for
+        its subprocesses.
 
 GNU make and Cygnus GNU Windows32 tools:
 
-       Good news! Make now has native support for Cygwin sh. To enable,
-       define the HAVE_CYGWIN_SHELL in config.h and rebuild make
-       from scratch. This version of make tested with B20.1 of Cygwin.
-       Do not define BATCH_MODE_ONLY_SHELL if you use HAVE_CYGWIN_SHELL.
+        Good news! Make now has native support for Cygwin sh. To enable,
+        define the HAVE_CYGWIN_SHELL in config.h and rebuild make
+        from scratch. This version of make tested with B20.1 of Cygwin.
+        Do not define BATCH_MODE_ONLY_SHELL if you use HAVE_CYGWIN_SHELL.
 
 GNU make and the MKS shell:
 
-       There is now semi-official support for the MKS shell. To turn this
-       support on, define HAVE_MKS_SHELL in the config.h.W32 before you
-       build make.  Do not define BATCH_MODE_ONLY_SHELL if you turn
-       on HAVE_MKS_SHELL.
+        There is now semi-official support for the MKS shell. To turn this
+        support on, define HAVE_MKS_SHELL in the config.h.W32 before you
+        build make.  Do not define BATCH_MODE_ONLY_SHELL if you turn
+        on HAVE_MKS_SHELL.
 
 GNU make handling of drive letters in pathnames (PATH, vpath, VPATH):
 
-       There is a caveat that should be noted with respect to handling
-       single character pathnames on Windows systems.  When colon is
-       used in PATH variables, make tries to be smart about knowing when
-       you are using colon as a separator versus colon as a drive
-       letter.  Unfortunately, something as simple as the string 'x:/'
-       could be interpreted 2 ways: (x and /) or (x:/).
-
-       Make chooses to interpret a letter plus colon (e.g. x:/) as a
-       drive letter pathname.  If it is necessary to use single
-       character directories in paths (VPATH, vpath, Path, PATH), the
-       user must do one of two things:
-
-        a. Use semicolon as the separator to disambiguate colon. For
-           example use 'x;/' if you want to say 'x' and '/' are
-           separate components.
-
-        b. Qualify the directory name so that there is more than
-           one character in the path(s) used. For example, none
-           of these settings are ambiguous:
-
-             ./x:./y
-             /some/path/x:/some/path/y
-             x:/some/path/x:x:/some/path/y
-
-       Please note that you are free to mix colon and semi-colon in the
-       specification of paths.  Make is able to figure out the intended
-       result and convert the paths internally to the format needed
-       when interacting with the operating system, providing the path
-       is not within quotes, e.g. "x:/test/test.c".
-
-       You are encouraged to use colon as the separator character.
-       This should ease the pain of deciding how to handle various path
-       problems which exist between platforms.  If colon is used on
-       both Unix and Windows systems, then no ifdef'ing will be
-       necessary in the makefile source.
+        There is a caveat that should be noted with respect to handling
+        single character pathnames on Windows systems.  When colon is
+        used in PATH variables, make tries to be smart about knowing when
+        you are using colon as a separator versus colon as a drive
+        letter.  Unfortunately, something as simple as the string 'x:/'
+        could be interpreted 2 ways: (x and /) or (x:/).
+
+        Make chooses to interpret a letter plus colon (e.g. x:/) as a
+        drive letter pathname.  If it is necessary to use single
+        character directories in paths (VPATH, vpath, Path, PATH), the
+        user must do one of two things:
+
+         a. Use semicolon as the separator to disambiguate colon. For
+            example use 'x;/' if you want to say 'x' and '/' are
+            separate components.
+
+         b. Qualify the directory name so that there is more than
+            one character in the path(s) used. For example, none
+            of these settings are ambiguous:
+
+              ./x:./y
+              /some/path/x:/some/path/y
+              x:/some/path/x:x:/some/path/y
+
+        Please note that you are free to mix colon and semi-colon in the
+        specification of paths.  Make is able to figure out the intended
+        result and convert the paths internally to the format needed
+        when interacting with the operating system, providing the path
+        is not within quotes, e.g. "x:/test/test.c".
+
+        You are encouraged to use colon as the separator character.
+        This should ease the pain of deciding how to handle various path
+        problems which exist between platforms.  If colon is used on
+        both Unix and Windows systems, then no ifdef'ing will be
+        necessary in the makefile source.
 
 GNU make test suite:
 
-       I verified all functionality with a slightly modified version
-       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.
+        I verified all functionality with a slightly modified version
+        of make-test-4.0 (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.
 
 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 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
-       that these sorts of paths could be handled. I offer these
-       suggestions as workarounds:
+        Unlike Unix, Windows 95/NT systems encourage pathnames which
+        contain white space (e.g. C:\Program Files\). These sorts of
+        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
+        that these sorts of paths could be handled. I offer these
+        suggestions as workarounds:
 
-               1. Use 8.3 notation. i.e. "x:/long~1/", which is actually
-                  "x:\longpathtest".  Type "dir /x" to view these filenames
-                  within the cmd.exe shell.
-               2. Rename the directory so it does not contain white space.
+                1. Use 8.3 notation. i.e. "x:/long~1/", which is actually
+                   "x:\longpathtest".  Type "dir /x" to view these filenames
+                   within the cmd.exe shell.
+                2. Rename the directory so it does not contain white space.
 
-       If you are unhappy with this choice, this is free software
-       and you are free to take a crack at making this work. The code
-       in w32/pathstuff.c and vpath.c would be the places to start.
+        If you are unhappy with this choice, this is free software
+        and you are free to take a crack at making this work. The code
+        in w32/pathstuff.c and vpath.c would be the places to start.
 
 Pathnames and Case insensitivity:
 
-       Unlike Unix, Windows 95/NT systems are case insensitive but case
-       preserving.  For example if you tell the file system to create a
-       file named "Target", it will preserve the case.  Subsequent access to
-       the file with other case permutations will succeed (i.e. opening a
-       file named "target" or "TARGET" will open the file "Target").
+        Unlike Unix, Windows 95/NT systems are case insensitive but case
+        preserving.  For example if you tell the file system to create a
+        file named "Target", it will preserve the case.  Subsequent access to
+        the file with other case permutations will succeed (i.e. opening a
+        file named "target" or "TARGET" will open the file "Target").
 
-       By default, GNU make retains its case sensitivity when comparing
-       target names and existing files or directories.  It can be
-       configured, however, into a case preserving and case insensitive
-       mode by adding a define for HAVE_CASE_INSENSITIVE_FS to
-       config.h.W32.
+        By default, GNU make retains its case sensitivity when comparing
+        target names and existing files or directories.  It can be
+        configured, however, into a case preserving and case insensitive
+        mode by adding a define for HAVE_CASE_INSENSITIVE_FS to
+        config.h.W32.
 
-       For example, the following makefile will create a file named
-       Target in the directory subdir which will subsequently be used
-       to satisfy the dependency of SUBDIR/DepTarget on SubDir/TARGET.
-       Without HAVE_CASE_INSENSITIVE_FS configured, the dependency link
-       will not be made:
+        For example, the following makefile will create a file named
+        Target in the directory subdir which will subsequently be used
+        to satisfy the dependency of SUBDIR/DepTarget on SubDir/TARGET.
+        Without HAVE_CASE_INSENSITIVE_FS configured, the dependency link
+        will not be made:
 
-       subdir/Target:
-               touch $@
+        subdir/Target:
+                touch $@
 
-       SUBDIR/DepTarget: SubDir/TARGET
-               cp $^ $@
+        SUBDIR/DepTarget: SubDir/TARGET
+                cp $^ $@
 
-       Reliance on this behavior also eliminates the ability of GNU make
-       to use case in comparison of matching rules.  For example, it is
-       not possible to set up a C++ rule using %.C that is different
-       than a C rule using %.c.  GNU make will consider these to be the
-       same rule and will issue a warning.
+        Reliance on this behavior also eliminates the ability of GNU make
+        to use case in comparison of matching rules.  For example, it is
+        not possible to set up a C++ rule using %.C that is different
+        than a C rule using %.c.  GNU make will consider these to be the
+        same rule and will issue a warning.
 
 SAMBA/NTFS/VFAT:
 
-       I have not had any success building the debug version of this
-       package using SAMBA as my file server. The reason seems to be
-       related to the way VC++ 4.0 changes the case name of the pdb
-       filename it is passed on the command line. It seems to change
-       the name always to to lower case. I contend that the VC++
-       compiler should not change the casename of files that are passed
-       as arguments on the command line. I don't think this was a
-       problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.
+        I have not had any success building the debug version of this
+        package using SAMBA as my file server. The reason seems to be
+        related to the way VC++ 4.0 changes the case name of the pdb
+        filename it is passed on the command line. It seems to change
+        the name always to to lower case. I contend that the VC++
+        compiler should not change the casename of files that are passed
+        as arguments on the command line. I don't think this was a
+        problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.
 
-       The package builds fine on VFAT and NTFS filesystems.
+        The package builds fine on VFAT and NTFS filesystems.
 
-       Most all of the development I have done to date has been using
-       NTFS and long file names. I have not done any considerable work
-       under VFAT. VFAT users may wish to be aware that this port of
-       make does respect case sensitivity.
+        Most all of the development I have done to date has been using
+        NTFS and long file names. I have not done any considerable work
+        under VFAT. VFAT users may wish to be aware that this port of
+        make does respect case sensitivity.
 
 FAT:
 
-       Version 3.76 added support for FAT filesystems. Make works
-       around some difficulties with stat'ing of files and caching of
-       filenames and directories internally.
+        Version 3.76 added support for FAT filesystems. Make works
+        around some difficulties with stat'ing of files and caching of
+        filenames and directories internally.
 
 Bug reports:
 
-       Please submit bugs via the normal bug reporting mechanism which
-       is described in the GNU make manual and the base README.
+        Please submit bugs via the normal bug reporting mechanism which
+        is described in the GNU make manual and the base README.
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index 0ad1837..8b3fa74 100644 (file)
@@ -35,19 +35,19 @@ you'll need to re-apply them by hand.
 Install the Customs library and header files according to the
 documentation.  You should also install the man pages (contrary to
 comments in the documentation, they weren't installed automatically for
-me; I had to cd to the ``pmake-2.1.33/doc'' directory and run ``pmake
-install'' there directly).
+me; I had to cd to the 'pmake-2.1.33/doc' directory and run 'pmake
+install' there directly).
 
 
 BUILDING GNU MAKE
 -----------------
 
 Once you've installed Customs, you can build GNU make to use it.  When
-configuring GNU make, merely use the ``--with-customs=DIR'' option.
-Provide the directory containing the ``lib'' and ``include/customs''
+configuring GNU make, merely use the '--with-customs=DIR' option.
+Provide the directory containing the 'lib' and 'include/customs'
 subdirectories as DIR.  For example, if you installed the customs
 library in /usr/local/lib and the headers in /usr/local/include/customs,
-then you'd pass ``--with-customs=/usr/local'' as an option to configure.
+then you'd pass '--with-customs=/usr/local' as an option to configure.
 
 Run make (or use build.sh) normally to build GNU make as described in
 the INSTALL file.
@@ -96,8 +96,7 @@ SunOS 4.1.x:
 
 \f
 -------------------------------------------------------------------------------
-Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1998-2013 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
index 2a46032..766a5c6 100644 (file)
--- a/SMakefile
+++ b/SMakefile
@@ -3,8 +3,7 @@
 # NOTE: If you have no 'make' program at all to process this makefile,
 # run 'build.sh' instead.
 #
-# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1995-2013 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
@@ -25,9 +24,9 @@
 #
 
 # Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /make-3.82/
-# This must repeat the value, because configure will remove `VPATH = .'.
-srcdir = /make-3.82/
+VPATH = /make-4.0/
+# This must repeat the value, because configure will remove 'VPATH = .'.
+srcdir = /make-4.0/
 
 CC = sc
 RM = delete
@@ -38,18 +37,18 @@ CPPFLAGS =
 LDFLAGS =
 
 # Define these for your system as follows:
-#      -DNO_ARCHIVES           To disable `ar' archive support.
+#      -DNO_ARCHIVES           To disable 'ar' archive support.
 #      -DNO_FLOAT              To avoid using floating-point numbers.
 #      -DENUM_BITFIELDS        If the compiler isn't GCC but groks enum foo:2.
 #                              Some compilers apparently accept this
 #                              without complaint but produce losing code,
 #                              so beware.
 # NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
-# See also `config.h'.
+# See also 'config.h'.
 defines =
 
 # Which flavor of remote job execution support to use.
-# The code is found in `remote-$(REMOTE).c'.
+# The code is found in 'remote-$(REMOTE).c'.
 REMOTE = stub
 
 # If you are using the GNU C library, or have the GNU getopt functions in
@@ -83,9 +82,9 @@ prefix =
 # Common prefix for machine-dependent installed files.
 exec_prefix =
 
-# Directory to install `make' in.
+# Directory to install 'make' in.
 bindir = sc:c
-# Directory to find libraries in for `-lXXX'.
+# Directory to find libraries in for '-lXXX'.
 libdir = lib:
 # Directory to search by default for included makefiles.
 includedir = include:
@@ -95,20 +94,20 @@ infodir = doc:
 mandir = t:
 # Number to put on the man page filename.
 manext = 1
-# Prefix to put on installed `make' binary file name.
+# Prefix to put on installed 'make' binary file name.
 binprefix =
-# Prefix to put on installed `make' man page file name.
+# Prefix to put on installed 'make' man page file name.
 manprefix = $(binprefix)
 
 # Whether or not make needs to be installed setgid.
-# The value should be either `true' or `false'.
-# On many systems, the getloadavg function (used to implement the `-l'
+# The value should be either 'true' or 'false'.
+# On many systems, the getloadavg function (used to implement the '-l'
 # switch) will not work unless make is installed setgid kmem.
 install_setgid = false
 # Install make setgid to this group so it can read /dev/kmem.
 group = sys
 
-# Program to install `make'.
+# Program to install 'make'.
 INSTALL_PROGRAM = copy
 # Program to install the man page.
 INSTALL_DATA = copy
@@ -124,21 +123,26 @@ TEXI2DVI = texi2dvi
 ETAGS = etags -w
 CTAGS = ctags -w
 
-objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o     \
-       rule.o implicit.o default.o variable.o expand.o function.o      \
-       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o      \
-       remote-$(REMOTE).o $(GLOB) $(GETOPT) $(ALLOCA) $(extras)
+#guile = guile.o
+
+objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o   \
+       rule.o implicit.o default.o variable.o expand.o function.o    \
+       vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o   \
+       output.o remote-$(REMOTE).o $(GLOB) $(GETOPT) $(ALLOCA)       \
+       $(extras) $(guile)
+
 srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
        $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c         \
        $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c             \
        $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c        \
        $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c     \
        $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c           \
-       $(srcdir)remote-$(REMOTE).c                                     \
-       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c              \
-       $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)            \
+       $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c                  \
+       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c           \
+       $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)           \
        $(srcdir)commands.h $(srcdir)dep.h $(srcdir)file.h            \
-       $(srcdir)job.h $(srcdir)make.h $(srcdir)rule.h                \
+       $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h             \
+       $(srcdir)output.c $(srcdir)output.h                           \
        $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
 
 
@@ -148,7 +152,7 @@ srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
 all: make
 info: make.info
 dvi: make.dvi
-# Some makes apparently use .PHONY as the default goal if it is before `all'.
+# Some makes apparently use .PHONY as the default goal if it is before 'all'.
 .PHONY: all check info dvi
 
 make.info: make.texinfo
@@ -220,60 +224,67 @@ glob-clean glob-realclean:
 # dummy
 
 # .deps/ar.Po
-ar.o: ar.c make.h config.h \
+ar.o: ar.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h dep.h \
 
 # .deps/arscan.Po
-arscan.o: arscan.c make.h config.h \
+arscan.o: arscan.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/commands.Po
-commands.o: commands.c make.h config.h \
+commands.o: commands.c \
+ makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
  commands.h
 
 # .deps/default.Po
-default.o: default.c make.h config.h \
+default.o: default.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h rule.h dep.h \
- job.h \
+ filedef.h hash.h variable.h rule.h dep.h job.h output.h \
  commands.h
 
 # .deps/dir.Po
-dir.o: dir.c make.h config.h \
+dir.o: dir.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- hash.h \
+ hash.h filedef.h dep.h \
 
 # .deps/expand.Po
-expand.o: expand.c make.h config.h \
+expand.o: expand.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h \
- job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/file.Po
-file.o: file.c make.h config.h \
+file.o: file.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
+ filedef.h hash.h dep.h job.h output.h \
  commands.h variable.h \
  debug.h
 
 # .deps/function.Po
-function.o: function.c make.h config.h \
+function.o: function.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h dep.h job.h \
+ filedef.h hash.h \
+ variable.h dep.h job.h output.h \
  commands.h debug.h
 
 # .deps/getloadavg.Po
@@ -285,96 +296,143 @@ getopt.o: getopt.c config.h \
 # .deps/getopt1.Po
 getopt1.o: getopt1.c config.h getopt.h \
 
+# .deps/guile.Po
+guile.o: guile.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ debug.h filedef.h hash.h \
+ dep.h variable.h \
+ gmk-default.h
+
 # .deps/hash.Po
-hash.o: hash.c make.h config.h \
+hash.o: hash.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/implicit.Po
-implicit.o: implicit.c make.h config.h \
+implicit.o: implicit.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h rule.h dep.h debug.h \
variable.h job.h \
+ filedef.h hash.h rule.h \
dep.h debug.h variable.h job.h output.h \
  commands.h
 
 # .deps/job.Po
-job.o: job.c make.h config.h \
+job.o: job.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- job.h \
- debug.h filedef.h hash.h commands.h \
+ job.h output.h \
+ debug.h filedef.h hash.h \
+ commands.h variable.h
+
+# .deps/load.Po
+load.o: load.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ debug.h filedef.h hash.h \
  variable.h
 
+# .deps/loadapi.Po
+loadapi.o: loadapi.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h \
+ variable.h dep.h
+
 # .deps/loadavg-getloadavg.Po
 # dummy
 
 # .deps/main.Po
-main.o: main.c make.h config.h \
+main.o: main.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h variable.h job.h \
- commands.h rule.h debug.h getopt.h \
+ filedef.h hash.h dep.h \
+ variable.h job.h output.h \
+ commands.h rule.h debug.h \
+ getopt.h
 
 # .deps/misc.Po
-misc.o: misc.c make.h config.h \
+misc.o: misc.c makeint.h config.h \
+ gnumake.h \
+ getopt.h \
+ gettext.h \
+ filedef.h hash.h dep.h \
+ debug.h \
+
+# .deps/output.Po
+output.o: output.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h debug.h
+ job.h output.h \
 
 # .deps/read.Po
-read.o: read.c make.h config.h \
+read.o: read.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h hash.h job.h \
- commands.h variable.h rule.h debug.h \
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h \
+ debug.h
 
 # .deps/remake.Po
-remake.o: remake.c make.h config.h \
+remake.o: remake.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
- commands.h dep.h variable.h debug.h \
+ output.h \
+ commands.h dep.h variable.h \
+ debug.h
 
 # .deps/remote-cstms.Po
 # dummy
 
 # .deps/remote-stub.Po
-remote-stub.o: remote-stub.c make.h config.h \
+remote-stub.o: remote-stub.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  filedef.h hash.h job.h \
+ output.h \
  commands.h
 
 # .deps/rule.Po
-rule.o: rule.c make.h config.h \
+rule.o: rule.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/signame.Po
-signame.o: signame.c make.h config.h \
+signame.o: signame.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
 
 # .deps/strcache.Po
-strcache.o: strcache.c make.h config.h \
+strcache.o: strcache.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
  hash.h
 
 # .deps/variable.Po
-variable.o: variable.c make.h config.h \
+variable.o: variable.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- dep.h filedef.h \
- hash.h job.h \
- commands.h variable.h \
- rule.h
+ filedef.h hash.h dep.h job.h output.h \
+ commands.h variable.h rule.h
 
 # .deps/version.Po
 version.o: version.c config.h
@@ -383,7 +441,9 @@ version.o: version.c config.h
 # dummy
 
 # .deps/vpath.Po
-vpath.o: vpath.c make.h config.h \
+vpath.o: vpath.c makeint.h config.h \
+ gnumake.h \
  getopt.h \
  gettext.h \
- filedef.h hash.h variable.h
+ filedef.h hash.h \
+ variable.h
index 0e56441..b7d8efd 100644 (file)
@@ -1,8 +1,7 @@
 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, 2007,
-dnl 2008, 2009, 2010 Free Software Foundation, Inc.
+dnl Copyright (C) 1998-2013 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 under
@@ -100,22 +99,26 @@ changequote([,])dnl
 
 dnl ---------------------------------------------------------------------------
 dnl From Paul Eggert <eggert@twinsun.com>
+dnl Update for Darwin by Troy Runkel <Troy.Runkel@mathworks.com>
+dnl Update for AIX by Olexiy Buyanskyy (Savannah bug 32485)
 
 AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC],
- [AC_CACHE_CHECK([for nanoseconds field of struct stat.st_mtim],
+ [AC_CACHE_CHECK([for nanoseconds field of struct stat],
    ac_cv_struct_st_mtim_nsec,
    [ac_save_CPPFLAGS="$CPPFLAGS"
     ac_cv_struct_st_mtim_nsec=no
-    # tv_nsec -- the usual case
-    # _tv_nsec -- Solaris 2.6, if
+    # st_mtim.tv_nsec -- the usual case
+    # st_mtim._tv_nsec -- Solaris 2.6, if
     #  (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
     #   && !defined __EXTENSIONS__)
-    # st__tim.tv_nsec -- UnixWare 2.1.2
-    for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do
+    # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2
+    # st_mtime_n -- AIX 5.2 and above
+    # st_mtimespec.tv_nsec -- Darwin (Mac OSX)
+    for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do
       CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
       AC_TRY_COMPILE([#include <sys/types.h>
 #include <sys/stat.h>
-       ], [struct stat s; s.st_mtim.ST_MTIM_NSEC;],
+       ], [struct stat s; s.ST_MTIM_NSEC;],
         [ac_cv_struct_st_mtim_nsec=$ac_val; break])
     done
     CPPFLAGS="$ac_save_CPPFLAGS"
index b3ea5ea..833ec7d 100644 (file)
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
 
 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.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 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.
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 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 1
+
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
@@ -34,7 +198,7 @@ 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], [],
+m4_if([$1], [1.11.6], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,19 +214,21 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # 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.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])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 -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 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 1
+
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
 # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@@ -144,14 +310,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 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 10
+# serial 12
 
 # 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,
@@ -191,6 +357,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -255,7 +422,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
        break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | 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.
@@ -320,10 +487,13 @@ AC_DEFUN([AM_DEP_TRACK],
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
@@ -407,20 +577,19 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 ])
 
 
-# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2010
 # 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
 
 AC_DEFUN([AM_WITH_DMALLOC],
 [AC_MSG_CHECKING([if malloc debugging is wanted])
 AC_ARG_WITH(dmalloc,
-[  --with-dmalloc          use dmalloc, as in
-                         http://www.dmalloc.com/dmalloc.tar.gz],
+[  --with-dmalloc          use dmalloc, as in http://www.dmalloc.com],
 [if test "$withval" = yes; then
   AC_MSG_RESULT(yes)
   AC_DEFINE(WITH_DMALLOC,1,
@@ -573,12 +742,15 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 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 1
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
@@ -745,12 +917,15 @@ else
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 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 1
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check for `mkdir -p'.
@@ -773,13 +948,14 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 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_MANGLE_OPTION(NAME)
 # -----------------------
@@ -787,13 +963,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
 [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -869,12 +1045,71 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011  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_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005, 2011 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 1
+
 # AM_PROG_INSTALL_STRIP
 # ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
@@ -897,13 +1132,13 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 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
+# serial 3
 
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
@@ -912,13 +1147,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 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.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -940,10 +1175,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -1015,7 +1251,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/intlmacosx.m4])
 m4_include([config/lib-ld.m4])
 m4_include([config/lib-link.m4])
 m4_include([config/lib-prefix.m4])
index 6e009b4..02ac921 100644 (file)
--- a/alloca.c
+++ b/alloca.c
@@ -116,7 +116,7 @@ static int stack_dir;               /* 1 or -1 once known.  */
 static void
 find_stack_direction (void)
 {
-  static char *addr = NULL;    /* Address of first `dummy', once known.  */
+  static char *addr = NULL;    /* Address of first 'dummy', once known.  */
   auto char dummy;             /* To get stack address.  */
 
   if (addr == NULL)
diff --git a/amiga.c b/amiga.c
index 6e70f65..73ed59a 100644 (file)
--- a/amiga.c
+++ b/amiga.c
@@ -1,6 +1,5 @@
 /* Running commands on Amiga
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 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
@@ -15,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "variable.h"
 #include "amiga.h"
 #include <assert.h>
@@ -25,7 +24,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <proto/dos.h>
 
 static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n"
-                   "Amiga Port by A. Digulla (digulla@home.lake.de)";
+                    "Amiga Port by A. Digulla (digulla@home.lake.de)";
 
 int
 MyExecute (char **argv)
@@ -37,7 +36,7 @@ MyExecute (char **argv)
 
     for (aptr=argv; *aptr; aptr++)
     {
-       len += strlen (*aptr) + 4;
+        len += strlen (*aptr) + 4;
     }
 
     buffer = AllocMem (len, MEMF_ANY);
@@ -49,41 +48,41 @@ MyExecute (char **argv)
 
     for (aptr=argv; *aptr; aptr++)
     {
-       if (((*aptr)[0] == ';' && !(*aptr)[1]))
-       {
-           *ptr ++ = '"';
-           strcpy (ptr, *aptr);
-           ptr += strlen (ptr);
-           *ptr ++ = '"';
-       }
-       else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2])
-       {
-           *ptr ++ = '\n';
-           continue;
-       }
-       else
-       {
-           strcpy (ptr, *aptr);
-           ptr += strlen (ptr);
-       }
-       *ptr ++ = ' ';
-       *ptr = 0;
+        if (((*aptr)[0] == ';' && !(*aptr)[1]))
+        {
+            *ptr ++ = '"';
+            strcpy (ptr, *aptr);
+            ptr += strlen (ptr);
+            *ptr ++ = '"';
+        }
+        else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2])
+        {
+            *ptr ++ = '\n';
+            continue;
+        }
+        else
+        {
+            strcpy (ptr, *aptr);
+            ptr += strlen (ptr);
+        }
+        *ptr ++ = ' ';
+        *ptr = 0;
     }
 
     ptr[-1] = '\n';
 
     status = SystemTags (buffer,
-       SYS_UserShell, TRUE,
-       TAG_END);
+        SYS_UserShell, TRUE,
+        TAG_END);
 
     FreeMem (buffer, len);
 
-    if (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
-       status = 20;
+    if (SetSignal (0L,0L) & SIGBREAKF_CTRL_C)
+        status = 20;
 
     /* Warnings don't count */
     if (status == 5)
-       status = 0;
+        status = 0;
 
     return status;
 }
@@ -91,27 +90,27 @@ MyExecute (char **argv)
 char *
 wildcard_expansion (char *wc, char *o)
 {
-#   define PATH_SIZE   1024
+#   define PATH_SIZE    1024
     struct AnchorPath * apath;
 
     if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE,
-           MEMF_CLEAR))
-       )
+            MEMF_CLEAR))
+        )
     {
-       apath->ap_Strlen = PATH_SIZE;
-
-       if (MatchFirst (wc, apath) == 0)
-       {
-           do
-           {
-               o = variable_buffer_output (o, apath->ap_Buf,
-                       strlen (apath->ap_Buf));
-               o = variable_buffer_output (o, " ",1);
-           } while (MatchNext (apath) == 0);
-       }
-
-       MatchEnd (apath);
-       FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE);
+        apath->ap_Strlen = PATH_SIZE;
+
+        if (MatchFirst (wc, apath) == 0)
+        {
+            do
+            {
+                o = variable_buffer_output (o, apath->ap_Buf,
+                        strlen (apath->ap_Buf));
+                o = variable_buffer_output (o, " ",1);
+            } while (MatchNext (apath) == 0);
+        }
+
+        MatchEnd (apath);
+        FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE);
     }
 
     return o;
diff --git a/amiga.h b/amiga.h
index ee2aa32..a11a128 100644 (file)
--- a/amiga.h
+++ b/amiga.h
@@ -1,6 +1,5 @@
 /* Definitions for amiga specific things
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 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
diff --git a/ar.c b/ar.c
index 95dcbbb..afed591 100644 (file)
--- a/ar.c
+++ b/ar.c
@@ -1,7 +1,5 @@
-/* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+/* Interface to 'ar' archives for GNU Make.
+Copyright (C) 1988-2013 Free Software Foundation, Inc.
 
 This file is part of GNU Make.
 
@@ -17,18 +15,18 @@ 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 "make.h"
+#include "makeint.h"
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
 
 #include "filedef.h"
 #include "dep.h"
 #include <fnmatch.h>
 
 /* 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
+   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
+   If a name like 'lib((entry))' is used, a fatal error is signaled at
    the attempt to use this unsupported feature.  */
 
 int
@@ -45,7 +43,7 @@ ar_name (const char *name)
     return 0;
 
   if (p[1] == '(' && end[-1] == ')')
-    fatal (NILF, _("attempt to use unsupported feature: `%s'"), name);
+    fatal (NILF, _("attempt to use unsupported feature: '%s'"), name);
 
   return 1;
 }
@@ -63,20 +61,20 @@ ar_parse_name (const char *name, char **arname_p, char **memname_p)
   *arname_p = xstrdup (name);
   p = strchr (*arname_p, '(');
   *(p++) = '\0';
-  p[strlen(p) - 1] = '\0';
+  p[strlen (p) - 1] = '\0';
   *memname_p = p;
 }
 \f
 
-/* This function is called by `ar_scan' to find which member to look at.  */
+/* 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 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)
+                  const void *name)
 {
   return ar_name_equal (name, mem, truncated) ? date : 0;
 }
@@ -146,24 +144,24 @@ ar_touch (const char *name)
   switch (ar_member_touch (arname, memname))
     {
     case -1:
-      error (NILF, _("touch: Archive `%s' does not exist"), arname);
+      error (NILF, _("touch: Archive '%s' does not exist"), arname);
       break;
     case -2:
-      error (NILF, _("touch: `%s' is not a valid archive"), arname);
+      error (NILF, _("touch: '%s' is not a valid archive"), arname);
       break;
     case -3:
       perror_with_name ("touch: ", arname);
       break;
     case 1:
       error (NILF,
-             _("touch: Member `%s' does not exist in `%s'"), memname, arname);
+             _("touch: Member '%s' does not exist in '%s'"), memname, arname);
       break;
     case 0:
       val = 0;
       break;
     default:
       error (NILF,
-             _("touch: Bad return code from ar_member_touch on `%s'"), name);
+             _("touch: Bad return code from ar_member_touch on '%s'"), name);
     }
 
   free (arname);
@@ -172,7 +170,7 @@ ar_touch (const char *name)
 }
 #endif /* !VMS */
 \f
-/* State of an `ar_glob' run, passed to `ar_glob_match'.  */
+/* State of an 'ar_glob' run, passed to 'ar_glob_match'.  */
 
 struct ar_glob_state
   {
@@ -183,12 +181,12 @@ struct ar_glob_state
     unsigned int n;
   };
 
-/* This function is called by `ar_scan' to match one archive
+/* This function is called by 'ar_scan' to match one archive
    element against the pattern in STATE.  */
 
 static long int
 ar_glob_match (int desc UNUSED, const char *mem, int truncated UNUSED,
-              long int hdrpos UNUSED, long int datapos 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, const void *arg)
 {
@@ -220,21 +218,21 @@ glob_pattern_p (const char *pattern, int quote)
       {
       case '?':
       case '*':
-       return 1;
+        return 1;
 
       case '\\':
-       if (quote)
-         ++p;
-       break;
+        if (quote)
+          ++p;
+        break;
 
       case '[':
-       opened = 1;
-       break;
+        opened = 1;
+        break;
 
       case ']':
-       if (opened)
-         return 1;
-       break;
+        if (opened)
+          return 1;
+        break;
       }
 
   return 0;
@@ -284,4 +282,4 @@ ar_glob (const char *arname, const char *member_pattern, unsigned int size)
   return state.chain;
 }
 
-#endif /* Not NO_ARCHIVES.  */
+#endif  /* Not NO_ARCHIVES.  */
index 4ef8375..2b3cd5d 100644 (file)
--- a/arscan.c
+++ b/arscan.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1987-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
@@ -24,7 +22,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <sys/file.h>
 #endif
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
 
 #ifdef VMS
 #include <lbrdef.h>
@@ -63,11 +61,11 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
   bufdesc.dsc$w_length = sizeof (filename);
 
   status = lbr$set_module (&VMS_lib_idx, rfa, &bufdesc,
-                          &bufdesc.dsc$w_length, 0);
+                           &bufdesc.dsc$w_length, 0);
   if (! (status & 1))
     {
       error (NILF, _("lbr$set_module() failed to extract module info, status = %d"),
-            status);
+             status);
 
       lbr$close (&VMS_lib_idx);
 
@@ -114,7 +112,7 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
 
   fnval =
     (*VMS_function) (-1, filename, 0, 0, 0, 0, val, 0, 0, 0,
-                    VMS_saved_memname);
+                     VMS_saved_memname);
 
   if (fnval)
     {
@@ -184,8 +182,8 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 
   if (! (status & 1))
     {
-      error (NILF, _("unable to open library `%s' to lookup member `%s'"),
-            archive, (char *)arg);
+      error (NILF, _("unable to open library '%s' to lookup member '%s'"),
+             archive, (char *)arg);
       return -1;
     }
 
@@ -214,8 +212,8 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 #else /* !VMS */
 
 /* SCO Unix's compiler defines both of these.  */
-#ifdef M_UNIX
-#undef M_XENIX
+#ifdef  M_UNIX
+#undef  M_XENIX
 #endif
 
 /* On the sun386i and in System V rel 3, ar.h defines two different archive
@@ -224,7 +222,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
    to have a nonzero value.  */
 
 #if (!defined (PORTAR) || PORTAR == 0) && (!defined (PORT5AR) || PORT5AR == 0)
-#undef PORTAR
+#undef  PORTAR
 #ifdef M_XENIX
 /* According to Jim Sievert <jas1@rsvl.unisys.com>, for SCO XENIX defining
    PORTAR to 1 gets the wrong archive format, and defining it to 0 gets the
@@ -259,17 +257,17 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
    /* BeOS 5 doesn't have <ar.h> but has archives in the same format
     * as many other Unices.  This was taken from GNU binutils for BeOS.
     */
-#  define ARMAG        "!<arch>\n"     /* String that begins an archive file.  */
-#  define SARMAG 8             /* Size of that string.  */
-#  define ARFMAG "`\n"         /* String in ar_fmag at end of each header.  */
+#  define ARMAG "!<arch>\n"     /* String that begins an archive file.  */
+#  define SARMAG 8              /* Size of that string.  */
+#  define ARFMAG "`\n"          /* String in ar_fmag at end of each header.  */
 struct ar_hdr
   {
-    char ar_name[16];          /* Member file name, sometimes / terminated. */
-    char ar_date[12];          /* File date, decimal seconds since Epoch.  */
-    char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal.  */
-    char ar_mode[8];           /* File mode, in ASCII octal.  */
-    char ar_size[10];          /* File size, in ASCII decimal.  */
-    char ar_fmag[2];           /* Always contains ARFMAG.  */
+    char ar_name[16];           /* Member file name, sometimes / terminated. */
+    char ar_date[12];           /* File date, decimal seconds since Epoch.  */
+    char ar_uid[6], ar_gid[6];  /* User and group IDs, in ASCII decimal.  */
+    char ar_mode[8];            /* File mode, in ASCII octal.  */
+    char ar_size[10];           /* File size, in ASCII decimal.  */
+    char ar_fmag[2];            /* Always contains ARFMAG.  */
   };
 # endif
 # define TOCHAR(_m)     (_m)
@@ -294,8 +292,8 @@ struct ar_hdr
 #endif
 
 /* Cray's <ar.h> apparently defines this.  */
-#ifndef        AR_HDR_SIZE
-# define   AR_HDR_SIZE (sizeof (struct ar_hdr))
+#ifndef AR_HDR_SIZE
+# define   AR_HDR_SIZE  (sizeof (struct ar_hdr))
 #endif
 \f
 /* Takes three arguments ARCHIVE, FUNCTION and ARG.
@@ -330,12 +328,10 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 {
 #ifdef AIAMAG
   FL_HDR fl_header;
-#ifdef AIAMAGBIG
+# ifdef AIAMAGBIG
   int big_archive = 0;
   FL_HDR_BIG fl_header_big;
-#endif
-#else
-  int long_name = 0;
+# endif
 #endif
   char *namemap = 0;
   int desc = open (archive, O_RDONLY, 0);
@@ -347,8 +343,8 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
     register int nread = read (desc, buf, SARMAG);
     if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG))
       {
-       (void) close (desc);
-       return -2;
+        (void) close (desc);
+        return -2;
       }
   }
 #else
@@ -358,39 +354,39 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 
     if (nread != FL_HSZ)
       {
-       (void) close (desc);
-       return -2;
+        (void) close (desc);
+        return -2;
       }
 #ifdef AIAMAGBIG
     /* If this is a "big" archive, then set the flag and
        re-read the header into the "big" structure. */
     if (!memcmp (fl_header.fl_magic, AIAMAGBIG, SAIAMAG))
       {
-       big_archive = 1;
-
-       /* seek back to beginning of archive */
-       if (lseek (desc, 0, 0) < 0)
-         {
-           (void) close (desc);
-           return -2;
-         }
-
-       /* re-read the header into the "big" structure */
-       nread = read (desc, &fl_header_big, FL_HSZ_BIG);
-       if (nread != FL_HSZ_BIG)
-         {
-           (void) close (desc);
-           return -2;
-         }
+        big_archive = 1;
+
+        /* seek back to beginning of archive */
+        if (lseek (desc, 0, 0) < 0)
+          {
+            (void) close (desc);
+            return -2;
+          }
+
+        /* re-read the header into the "big" structure */
+        nread = read (desc, &fl_header_big, FL_HSZ_BIG);
+        if (nread != FL_HSZ_BIG)
+          {
+            (void) close (desc);
+            return -2;
+          }
       }
     else
 #endif
        /* Check to make sure this is a "normal" archive. */
       if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG))
-       {
+        {
           (void) close (desc);
           return -2;
-       }
+        }
   }
 #else
   {
@@ -399,11 +395,11 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 #else
     unsigned short int buf;
 #endif
-    register int nread = read(desc, &buf, sizeof (buf));
+    register int nread = read (desc, &buf, sizeof (buf));
     if (nread != sizeof (buf) || buf != ARMAG)
       {
-       (void) close (desc);
-       return -2;
+        (void) close (desc);
+        return -2;
       }
   }
 #endif
@@ -421,143 +417,144 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 #ifdef AIAMAGBIG
     if ( big_archive )
       {
-       sscanf (fl_header_big.fl_fstmoff, "%20ld", &member_offset);
-       sscanf (fl_header_big.fl_lstmoff, "%20ld", &last_member_offset);
+        sscanf (fl_header_big.fl_fstmoff, "%20ld", &member_offset);
+        sscanf (fl_header_big.fl_lstmoff, "%20ld", &last_member_offset);
       }
     else
 #endif
       {
-       sscanf (fl_header.fl_fstmoff, "%12ld", &member_offset);
-       sscanf (fl_header.fl_lstmoff, "%12ld", &last_member_offset);
+        sscanf (fl_header.fl_fstmoff, "%12ld", &member_offset);
+        sscanf (fl_header.fl_lstmoff, "%12ld", &last_member_offset);
       }
 
     if (member_offset == 0)
       {
-       /* Empty archive.  */
-       close (desc);
-       return 0;
+        /* Empty archive.  */
+        close (desc);
+        return 0;
       }
 #else
-#ifndef        M_XENIX
+#ifndef M_XENIX
     register long int member_offset = sizeof (int);
-#else  /* Xenix.  */
+#else   /* Xenix.  */
     register long int member_offset = sizeof (unsigned short int);
-#endif /* Not Xenix.  */
+#endif  /* Not Xenix.  */
 #endif
 #endif
 
     while (1)
       {
-       register int nread;
-       struct ar_hdr member_header;
+        register int nread;
+        struct ar_hdr member_header;
 #ifdef AIAMAGBIG
-       struct ar_hdr_big member_header_big;
+        struct ar_hdr_big member_header_big;
 #endif
 #ifdef AIAMAG
-       char name[256];
-       int name_len;
-       long int dateval;
-       int uidval, gidval;
-       long int data_offset;
+        char name[256];
+        int name_len;
+        long int dateval;
+        int uidval, gidval;
+        long int data_offset;
 #else
-       char namebuf[sizeof member_header.ar_name + 1];
-       char *name;
-       int is_namemap;         /* Nonzero if this entry maps long names.  */
+        char namebuf[sizeof member_header.ar_name + 1];
+        char *name;
+        int is_namemap;         /* Nonzero if this entry maps long names.  */
+        int long_name = 0;
 #endif
-       long int eltsize;
-       int eltmode;
-       long int fnval;
+        long int eltsize;
+        int eltmode;
+        long int fnval;
 
-       if (lseek (desc, member_offset, 0) < 0)
-         {
-           (void) close (desc);
-           return -2;
-         }
+        if (lseek (desc, member_offset, 0) < 0)
+          {
+            (void) close (desc);
+            return -2;
+          }
 
 #ifdef AIAMAG
 #define       AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name))
 
 #ifdef AIAMAGBIG
-       if (big_archive)
-         {
-           nread = read (desc, &member_header_big,
-                         AR_MEMHDR_SZ(member_header_big) );
-
-           if (nread != AR_MEMHDR_SZ(member_header_big))
-             {
-               (void) close (desc);
-               return -2;
-             }
-
-           sscanf (member_header_big.ar_namlen, "%4d", &name_len);
-           nread = read (desc, name, name_len);
-
-           if (nread != name_len)
-             {
-               (void) close (desc);
-               return -2;
-             }
-
-           name[name_len] = 0;
-
-           sscanf (member_header_big.ar_date, "%12ld", &dateval);
-           sscanf (member_header_big.ar_uid, "%12d", &uidval);
-           sscanf (member_header_big.ar_gid, "%12d", &gidval);
-           sscanf (member_header_big.ar_mode, "%12o", &eltmode);
-           sscanf (member_header_big.ar_size, "%20ld", &eltsize);
-
-           data_offset = (member_offset + AR_MEMHDR_SZ(member_header_big)
-                          + name_len + 2);
-         }
-       else
+        if (big_archive)
+          {
+            nread = read (desc, &member_header_big,
+                          AR_MEMHDR_SZ(member_header_big) );
+
+            if (nread != AR_MEMHDR_SZ(member_header_big))
+              {
+                (void) close (desc);
+                return -2;
+              }
+
+            sscanf (member_header_big.ar_namlen, "%4d", &name_len);
+            nread = read (desc, name, name_len);
+
+            if (nread != name_len)
+              {
+                (void) close (desc);
+                return -2;
+              }
+
+            name[name_len] = 0;
+
+            sscanf (member_header_big.ar_date, "%12ld", &dateval);
+            sscanf (member_header_big.ar_uid, "%12d", &uidval);
+            sscanf (member_header_big.ar_gid, "%12d", &gidval);
+            sscanf (member_header_big.ar_mode, "%12o", &eltmode);
+            sscanf (member_header_big.ar_size, "%20ld", &eltsize);
+
+            data_offset = (member_offset + AR_MEMHDR_SZ(member_header_big)
+                           + name_len + 2);
+          }
+        else
 #endif
-         {
-           nread = read (desc, &member_header,
-                         AR_MEMHDR_SZ(member_header) );
-
-           if (nread != AR_MEMHDR_SZ(member_header))
-             {
-               (void) close (desc);
-               return -2;
-             }
-
-           sscanf (member_header.ar_namlen, "%4d", &name_len);
-           nread = read (desc, name, name_len);
-
-           if (nread != name_len)
-             {
-               (void) close (desc);
-               return -2;
-             }
-
-           name[name_len] = 0;
-
-           sscanf (member_header.ar_date, "%12ld", &dateval);
-           sscanf (member_header.ar_uid, "%12d", &uidval);
-           sscanf (member_header.ar_gid, "%12d", &gidval);
-           sscanf (member_header.ar_mode, "%12o", &eltmode);
-           sscanf (member_header.ar_size, "%12ld", &eltsize);
-
-           data_offset = (member_offset + AR_MEMHDR_SZ(member_header)
-                          + name_len + 2);
-         }
-       data_offset += data_offset % 2;
-
-       fnval =
-         (*function) (desc, name, 0,
-                      member_offset, data_offset, eltsize,
-                      dateval, uidval, gidval,
-                      eltmode, arg);
-
-#else  /* Not AIAMAG.  */
-       nread = read (desc, &member_header, AR_HDR_SIZE);
-       if (nread == 0)
-         /* No data left means end of file; that is OK.  */
-         break;
-
-       if (nread != AR_HDR_SIZE
+          {
+            nread = read (desc, &member_header,
+                          AR_MEMHDR_SZ(member_header) );
+
+            if (nread != AR_MEMHDR_SZ(member_header))
+              {
+                (void) close (desc);
+                return -2;
+              }
+
+            sscanf (member_header.ar_namlen, "%4d", &name_len);
+            nread = read (desc, name, name_len);
+
+            if (nread != name_len)
+              {
+                (void) close (desc);
+                return -2;
+              }
+
+            name[name_len] = 0;
+
+            sscanf (member_header.ar_date, "%12ld", &dateval);
+            sscanf (member_header.ar_uid, "%12d", &uidval);
+            sscanf (member_header.ar_gid, "%12d", &gidval);
+            sscanf (member_header.ar_mode, "%12o", &eltmode);
+            sscanf (member_header.ar_size, "%12ld", &eltsize);
+
+            data_offset = (member_offset + AR_MEMHDR_SZ(member_header)
+                           + name_len + 2);
+          }
+        data_offset += data_offset % 2;
+
+        fnval =
+          (*function) (desc, name, 0,
+                       member_offset, data_offset, eltsize,
+                       dateval, uidval, gidval,
+                       eltmode, arg);
+
+#else   /* Not AIAMAG.  */
+        nread = read (desc, &member_header, AR_HDR_SIZE);
+        if (nread == 0)
+          /* No data left means end of file; that is OK.  */
+          break;
+
+        if (nread != AR_HDR_SIZE
 #if defined(ARFMAG) || defined(ARFZMAG)
-           || (
+            || (
 # ifdef ARFMAG
                 memcmp (member_header.ar_fmag, ARFMAG, 2)
 # else
@@ -571,152 +568,152 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
 # endif
                )
 #endif
-           )
-         {
-           (void) close (desc);
-           return -2;
-         }
-
-       name = namebuf;
-       memcpy (name, member_header.ar_name, sizeof member_header.ar_name);
-       {
-         register char *p = name + sizeof member_header.ar_name;
-         do
-           *p = '\0';
-         while (p > name && *--p == ' ');
+            )
+          {
+            (void) close (desc);
+            return -2;
+          }
+
+        name = namebuf;
+        memcpy (name, member_header.ar_name, sizeof member_header.ar_name);
+        {
+          register char *p = name + sizeof member_header.ar_name;
+          do
+            *p = '\0';
+          while (p > name && *--p == ' ');
 
 #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, "//")
-                       || !strcmp (name, "ARFILENAMES/"));
-#endif /* Not AIAMAG. */
-         /* On some systems, there is a slash after each member name.  */
-         if (*p == '/')
-           *p = '\0';
+          /* 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, "//")
+                        || !strcmp (name, "ARFILENAMES/"));
+#endif  /* Not AIAMAG. */
+          /* On some systems, there is a slash after each member name.  */
+          if (*p == '/')
+            *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)
-           {
-             name = namemap + atoi (name + 1);
-             long_name = 1;
-           }
-         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;
-           }
+          /* 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 = 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 (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;
-#endif /* Not Xenix.  */
-
-       fnval =
-         (*function) (desc, name, ! long_name, member_offset,
-                      member_offset + AR_HDR_SIZE, eltsize,
-#ifndef        M_XENIX
-                      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,
-                      member_header.ar_gid,
-#endif /* Not Xenix.  */
-                      eltmode, arg);
+        }
+
+#ifndef M_XENIX
+        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;
+#endif  /* Not Xenix.  */
+
+        fnval =
+          (*function) (desc, name, ! long_name, member_offset,
+                       member_offset + AR_HDR_SIZE, eltsize,
+#ifndef M_XENIX
+                       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,
+                       member_header.ar_gid,
+#endif  /* Not Xenix.  */
+                       eltmode, arg);
 
 #endif  /* AIAMAG.  */
 
-       if (fnval)
-         {
-           (void) close (desc);
-           return fnval;
-         }
+        if (fnval)
+          {
+            (void) close (desc);
+            return fnval;
+          }
 
 #ifdef AIAMAG
-       if (member_offset == last_member_offset)
-         /* End of the chain.  */
-         break;
+        if (member_offset == last_member_offset)
+          /* End of the chain.  */
+          break;
 
 #ifdef AIAMAGBIG
-       if (big_archive)
+        if (big_archive)
          sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset);
-       else
+        else
 #endif
-         sscanf (member_header.ar_nxtmem, "%12ld", &member_offset);
+          sscanf (member_header.ar_nxtmem, "%12ld", &member_offset);
 
-       if (lseek (desc, member_offset, 0) != member_offset)
-         {
-           (void) close (desc);
-           return -2;
-         }
+        if (lseek (desc, member_offset, 0) != member_offset)
+          {
+            (void) close (desc);
+            return -2;
+          }
 #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 (is_namemap)
-         {
-           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)
-         member_offset++;
+        /* 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 = 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)
+          member_offset++;
 #endif
       }
   }
@@ -748,9 +745,9 @@ ar_name_equal (const char *name, const char *mem, int truncated)
 #else
       struct ar_hdr hdr;
 #if !defined (__hpux) && !defined (cray)
-      return strneq (name, mem, sizeof(hdr.ar_name) - 1);
+      return strneq (name, mem, sizeof (hdr.ar_name) - 1);
 #else
-      return strneq (name, mem, sizeof(hdr.ar_name) - 2);
+      return strneq (name, mem, sizeof (hdr.ar_name) - 2);
 #endif /* !__hpux && !cray */
 #endif /* !AIAMAG */
     }
@@ -763,7 +760,7 @@ ar_name_equal (const char *name, const char *mem, int truncated)
 /* ARGSUSED */
 static long int
 ar_member_pos (int desc UNUSED, const char *mem, int truncated,
-              long int hdrpos, long int datapos UNUSED, long int size UNUSED,
+               long int hdrpos, long int datapos UNUSED, long int size UNUSED,
                long int date UNUSED, int uid UNUSED, int gid UNUSED,
                int mode UNUSED, const void *name)
 {
@@ -817,7 +814,7 @@ ar_member_touch (const char *arname, const char *memname)
     ar_hdr.ar_date[ui] = ' ';
   sprintf (TOCHAR (ar_hdr.ar_date), "%ld", (long int) statbuf.st_mtime);
 #ifdef AIAMAG
-  ar_hdr.ar_date[strlen(ar_hdr.ar_date)] = ' ';
+  ar_hdr.ar_date[strlen (ar_hdr.ar_date)] = ' ';
 #endif
 #else
   ar_hdr.ar_date = statbuf.st_mtime;
@@ -842,14 +839,14 @@ ar_member_touch (const char *arname, const char *memname)
 
 long int
 describe_member (int desc, const char *name, int truncated,
-                long int hdrpos, long int datapos, long int size,
+                 long int hdrpos, long int datapos, long int size,
                  long int date, int uid, int gid, int mode, const void *arg)
 {
   extern char *ctime ();
 
-  printf (_("Member `%s'%s: %ld bytes at %ld (%ld).\n"),
-         name, truncated ? _(" (name might be truncated)") : "",
-         size, hdrpos, datapos);
+  printf (_("Member '%s'%s: %ld bytes at %ld (%ld).\n"),
+          name, truncated ? _(" (name might be truncated)") : "",
+          size, hdrpos, datapos);
   printf (_("  Date %s"), ctime (&date));
   printf (_("  uid = %d, gid = %d, mode = 0%o.\n"), uid, gid, mode);
 
@@ -863,5 +860,5 @@ main (int argc, char **argv)
   return 0;
 }
 
-#endif /* TEST.  */
-#endif /* NO_ARCHIVES.  */
+#endif  /* TEST.  */
+#endif  /* NO_ARCHIVES.  */
index 213df8d..92957bd 100755 (executable)
@@ -1,9 +1,8 @@
 #!/bin/sh
-# Shell script to build GNU Make in the absence of any `make' program.
+# Shell script to build GNU Make in the absence of any 'make' program.
 # @configure_input@
 
-# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1993-2013 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
@@ -39,7 +38,7 @@ EXEEXT='@EXEEXT@'
 prefix='@prefix@'
 # Common prefix for machine-dependent installed files.
 exec_prefix=`eval echo @exec_prefix@`
-# Directory to find libraries in for `-lXXX'.
+# Directory to find libraries in for '-lXXX'.
 libdir=${exec_prefix}/lib
 # Directory to search by default for included makefiles.
 includedir=${prefix}/include
@@ -53,7 +52,7 @@ defines="-DALIASPATH=\"${aliaspath}\" -DLOCALEDIR=\"${localedir}\" -DLIBDIR=\"${
 set -e
 
 # These are all the objects we need to link together.
-objs="ar.${OBJEXT} arscan.${OBJEXT} commands.${OBJEXT} default.${OBJEXT} dir.${OBJEXT} expand.${OBJEXT} file.${OBJEXT} function.${OBJEXT} getopt.${OBJEXT} getopt1.${OBJEXT} implicit.${OBJEXT} job.${OBJEXT} main.${OBJEXT} misc.${OBJEXT} read.${OBJEXT} remake.${OBJEXT} rule.${OBJEXT} signame.${OBJEXT} strcache.${OBJEXT} variable.${OBJEXT} version.${OBJEXT} vpath.${OBJEXT} hash.${OBJEXT} remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
+objs="ar.${OBJEXT} arscan.${OBJEXT} commands.${OBJEXT} default.${OBJEXT} dir.${OBJEXT} expand.${OBJEXT} file.${OBJEXT} function.${OBJEXT} getopt.${OBJEXT} getopt1.${OBJEXT} implicit.${OBJEXT} job.${OBJEXT} load.${OBJEXT} loadapi.${OBJEXT} main.${OBJEXT} misc.${OBJEXT} output.${OBJEXT} read.${OBJEXT} remake.${OBJEXT} rule.${OBJEXT} signame.${OBJEXT} strcache.${OBJEXT} variable.${OBJEXT} version.${OBJEXT} vpath.${OBJEXT} hash.${OBJEXT} guile.${OBJEXT} remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
 
 if [ x"$GLOBLIB" != x ]; then
   objs="$objs glob/fnmatch.${OBJEXT} glob/glob.${OBJEXT}"
index de758b0..148dfac 100644 (file)
@@ -1,6 +1,5 @@
 @echo off\r
-rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
-rem 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
+rem Copyright (C) 1996-2013 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
@@ -16,21 +15,84 @@ rem
 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
-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
+if "%1" == "-h" GoTo Usage\r
+if "%1" == "--help" GoTo Usage\r
+if not exist config.h.W32.template GoTo NotSCM\r
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > 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
+echo static const char *const GUILE_module_defn = ^" \> gmk-default.h\r
+sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\/" gmk-default.scm >> gmk-default.h\r
+echo ^";>> gmk-default.h\r
+:NotSCM\r
+copy config.h.W32 config.h\r
+\r
+rem Guile configuration\r
+set GUILECFLAGS=\r
+set GUILELIBS=\r
+set GUILESRC=\r
+set NOGUILE=\r
+set OPT=-O2\r
+set COMPILER=\r
+set PKGMSC=\r
+:ParseSW\r
+if "%1" == "--debug" GoTo SetOpt\r
+if "%1" == "--without-guile" GoTo NoGuile\r
+if "%1" == "gcc" GoTo SetCC\r
+if "%1" == "" GoTo ChkGuile\r
+:SetOpt\r
+set OPT=-O0\r
+shift\r
+GoTo ParseSW\r
+:NoGuile\r
+set NOGUILE=Y\r
+echo "Building without Guile"\r
+shift\r
+GoTo ParseSW\r
+:SetCC\r
+set COMPILER=gcc\r
+echo "Building with GCC"\r
+shift\r
+GoTo ParseSW\r
+rem Build with Guile is supported only on NT and later versions\r
+:ChkGuile\r
+if "%NOGUILE%" == "Y" GoTo GuileDone\r
+if not "%OS%" == "Windows_NT" GoTo NoGuile\r
+pkg-config --help > guile.tmp 2> NUL\r
+if ERRORLEVEL 1 GoTo NoPkgCfg\r
+echo "Checking for Guile 2.0"\r
+if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax\r
+pkg-config --cflags --short-errors "guile-2.0" > guile.tmp\r
+if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp\r
+pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > guile.tmp\r
+if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp\r
+if not "%GUILECFLAGS%" == "" GoTo GuileDone\r
+echo "Checking for Guile 1.8"\r
+pkg-config --cflags --short-errors "guile-1.8" > guile.tmp\r
+if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp\r
+pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > guile.tmp\r
+if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp\r
+if not "%GUILECFLAGS%" == "" GoTo GuileDone\r
+echo "No Guile found, building without Guile"\r
+GoTo GuileDone\r
+:NoPkgCfg\r
+echo "pkg-config not found, building without Guile"\r
+:GuileDone\r
+if not "%GUILECFLAGS%" == "" echo "Guile found, building with Guile"\r
+if not "%GUILECFLAGS%" == "" set GUILESRC=guile.c\r
+if not "%GUILECFLAGS%" == "" set GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE\r
+if "%COMPILER%" == "gcc" if "%OPT%" == "-O0" echo "Building without compiler optimizations"\r
 cd w32\subproc\r
+echo.\r
 echo "Creating the subproc library"\r
-%ComSpec% /c build.bat %1\r
+%ComSpec% /c build.bat\r
 cd ..\..\r
 \r
 if exist link.dbg del link.dbg\r
 if exist link.rel del link.rel\r
-echo "Creating GNU Make for Windows 9X/NT/2K/XP"\r
-if "%1" == "gcc" GoTo GCCBuild\r
+echo.\r
+echo "Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8"\r
+if "%COMPILER%" == "gcc" GoTo GCCBuild\r
 set make=gnumake\r
 echo on\r
 if not exist .\WinDebug\nul mkdir .\WinDebug\r
@@ -54,12 +116,14 @@ cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D
 echo WinDebug\expand.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c\r
 echo WinDebug\dir.obj >>link.dbg\r
-cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od %GUILECFLAGS% /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c\r
 echo WinDebug\main.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c\r
 echo WinDebug\getopt1.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c\r
 echo WinDebug\job.obj >>link.dbg\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c output.c\r
+echo WinDebug\output.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c\r
 echo WinDebug\read.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c\r
@@ -84,18 +148,28 @@ cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D
 echo WinDebug\vpath.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c\r
 echo WinDebug\implicit.obj >>link.dbg\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c loadapi.c\r
+echo WinDebug\loadapi.obj >>link.dbg\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c load.c\r
+echo WinDebug\load.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\compat\dirent.c\r
 echo WinDebug\dirent.obj >>link.dbg\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\compat\posixfcn.c\r
+echo WinDebug\posixfcn.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\glob.c\r
 echo WinDebug\glob.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\glob\fnmatch.c\r
 echo WinDebug\fnmatch.obj >>link.dbg\r
 cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c  .\w32\pathstuff.c\r
 echo WinDebug\pathstuff.obj >>link.dbg\r
+if "%GUILESRC%" == "" GoTo LinkDbg\r
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od %GUILECFLAGS%% /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c guile.c\r
+echo WinDebug\guile.obj >>link.dbg\r
+:LinkDbg\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 /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
+rem link.exe %GUILELIBS% 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/output.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 %GUILELIBS% 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 /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
@@ -121,12 +195,14 @@ cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WIND
 echo WinRel\expand.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c\r
 echo WinRel\dir.obj >>link.rel\r
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 %GUILECFLAGS% /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c\r
 echo WinRel\main.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c\r
 echo WinRel\getopt1.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c\r
 echo WinRel\job.obj >>link.rel\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c output.c\r
+echo WinRel\output.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c\r
 echo WinRel\read.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c\r
@@ -151,18 +227,28 @@ cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WIND
 echo WinRel\vpath.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c\r
 echo WinRel\implicit.obj >>link.rel\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c loadapi.c\r
+echo WinRel\loadapi.obj >>link.rel\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c load.c\r
+echo WinRel\load.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\compat\dirent.c\r
 echo WinRel\dirent.obj >>link.rel\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\compat\posixfcn.c\r
+echo WinRel\posixfcn.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\glob.c\r
 echo WinRel\glob.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\glob\fnmatch.c\r
 echo WinRel\fnmatch.obj >>link.rel\r
 cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c  .\w32\pathstuff.c\r
 echo WinRel\pathstuff.obj >>link.rel\r
+if "%GUILESRC%" == "" GoTo LinkRel\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c guile.c\r
+echo WinRel\guile.obj >>link.rel\r
+:LinkRel\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 /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
+rem link.exe %GUILELIBS% 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/output.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 %GUILELIBS% 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 /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
@@ -170,34 +256,66 @@ set make=
 GoTo BuildEnd\r
 :GCCBuild\r
 echo on\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
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %GUILECFLAGS% -c main.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c output.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c loadapi.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c load.c\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/compat/posixfcn.c -o posixfcn.o\r
+@echo off\r
+set GUILEOBJ=\r
+if "%GUILESRC%" == "" GoTo LinkGCC\r
+set GUILEOBJ=guile.o\r
+echo on\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% %GUILECFLAGS% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c guile.c\r
+:LinkGCC\r
+@echo off\r
+Rem The version NN of libgnumake-NN.dll.a should be bumped whenever\r
+Rem the API changes in binary-incompatible manner.\r
+@echo on\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 %GUILEOBJ% job.o output.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 loadapi.o load.o glob.o fnmatch.o pathstuff.o posixfcn.o w32_misc.o sub_proc.o w32err.o %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -Wl,--out-implib=libgnumake-1.dll.a\r
+@GoTo BuildEnd\r
+:Usage\r
+echo Usage: %0 [options] [gcc]\r
+echo Options:\r
+echo.  --debug           For GCC only, make a debug build\r
+echo.                    (MSVC build always makes both debug and release)\r
+echo.  --without-guile   Do not compile Guile support even if found\r
+echo.  --help            Display these instructions and exit\r
 :BuildEnd\r
+@echo off\r
+set GUILEOBJ=\r
+set GUILESRC=\r
+set GUILELIBS=\r
+set GUILECFLAGS=\r
+set PKGMSC=\r
+set OPT=\r
+set COMPILER=\r
+set NOGUILE=\r
 echo on\r
index f360bd4..f910358 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,9 +14,11 @@ 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 "make.h"
-#include "dep.h"
+#include <dlfcn.h>
+
+#include "makeint.h"
 #include "filedef.h"
+#include "dep.h"
 #include "variable.h"
 #include "job.h"
 #include "commands.h"
@@ -35,7 +35,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 int remote_kill (int id, int sig);
 
-#ifndef        HAVE_UNISTD_H
+#ifndef HAVE_UNISTD_H
 int getpid ();
 #endif
 \f
@@ -70,9 +70,9 @@ set_file_variables (struct file *file)
   struct dep *d;
   const char *at, *percent, *star, *less;
 
-#ifndef        NO_ARCHIVES
-  /* If the target is an archive member `lib(member)',
-     then $@ is `lib' and $% is `member'.  */
+#ifndef NO_ARCHIVES
+  /* If the target is an archive member 'lib(member)',
+     then $@ is 'lib' and $% is 'member'.  */
 
   if (ar_name (file->name))
     {
@@ -92,7 +92,7 @@ set_file_variables (struct file *file)
       percent = p;
     }
   else
-#endif /* NO_ARCHIVES.  */
+#endif  /* NO_ARCHIVES.  */
     {
       at = file->name;
       percent = "";
@@ -102,35 +102,35 @@ set_file_variables (struct file *file)
   if (file->stem == 0)
     {
       /* 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.  */
+         any suffix in the .SUFFIXES list stripped off for
+         explicit rules.  We store this in the 'stem' member.  */
       const char *name;
       unsigned int len;
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
       if (ar_name (file->name))
-       {
-         name = strchr (file->name, '(') + 1;
-         len = strlen (name) - 1;
-       }
+        {
+          name = strchr (file->name, '(') + 1;
+          len = strlen (name) - 1;
+        }
       else
 #endif
-       {
-         name = file->name;
-         len = strlen (name);
-       }
+        {
+          name = file->name;
+          len = strlen (name);
+        }
 
       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 = strcache_add_len (name, len - slen);
-             break;
-           }
-       }
+        {
+          unsigned int slen = strlen (dep_name (d));
+          if (len > slen && strneq (dep_name (d), name + (len - slen), slen))
+            {
+              file->stem = strcache_add_len (name, len - slen);
+              break;
+            }
+        }
       if (d == 0)
-       file->stem = "";
+        file->stem = "";
     }
   star = file->stem;
 
@@ -149,7 +149,7 @@ set_file_variables (struct file *file)
        In this case $< is the same as $@.  */
     less = at;
 
-#define        DEFINE_VARIABLE(name, len, value) \
+#define DEFINE_VARIABLE(name, len, value) \
   (void) define_variable_for_file (name,len,value,o_automatic,0,file)
 
   /* Define the variables.  */
@@ -202,13 +202,13 @@ set_file_variables (struct file *file)
 
     cp = plus_value;
 
-    qmark_len = plus_len + 1;  /* Will be this or less.  */
+    qmark_len = plus_len + 1;   /* Will be this or less.  */
     for (d = file->deps; d != 0; d = d->next)
       if (! d->ignore_mtime && ! d->need_2nd_expansion)
         {
           const char *c = dep_name (d);
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
           if (ar_name (c))
             {
               c = strchr (c, '(') + 1;
@@ -222,7 +222,7 @@ set_file_variables (struct file *file)
           cp += len;
           *cp++ = FILE_LIST_SEPARATOR;
           if (! (d->changed || always_make_flag))
-            qmark_len -= len + 1;      /* Don't space in $? for this one.  */
+            qmark_len -= len + 1;       /* Don't space in $? for this one.  */
         }
 
     /* Kill the last space and define the variable.  */
@@ -277,23 +277,23 @@ set_file_variables (struct file *file)
           continue;
 
         c = dep_name (d);
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
         if (ar_name (c))
-         {
-           c = strchr (c, '(') + 1;
-           len = strlen (c) - 1;
-         }
-       else
+          {
+            c = strchr (c, '(') + 1;
+            len = strlen (c) - 1;
+          }
+        else
 #endif
-         len = strlen (c);
+          len = strlen (c);
 
         if (d->ignore_mtime)
           {
             memcpy (bp, c, len);
-           bp += len;
-           *bp++ = FILE_LIST_SEPARATOR;
-         }
-       else
+            bp += len;
+            *bp++ = FILE_LIST_SEPARATOR;
+          }
+        else
           {
             memcpy (cp, c, len);
             cp += len;
@@ -321,11 +321,11 @@ set_file_variables (struct file *file)
     DEFINE_VARIABLE ("|", 1, bar_value);
   }
 
-#undef DEFINE_VARIABLE
+#undef  DEFINE_VARIABLE
 }
 \f
 /* Chop CMDS up into individual command lines if necessary.
-   Also set the `lines_flags' and `any_recurse' members.  */
+   Also set the 'lines_flags' and 'any_recurse' members.  */
 
 void
 chop_commands (struct commands *cmds)
@@ -402,6 +402,9 @@ chop_commands (struct commands *cmds)
   /* Finally, set the corresponding CMDS->lines_flags elements and the
      CMDS->any_recurse flag.  */
 
+  if (nlines > USHRT_MAX)
+    fatal (&cmds->fileinfo, _("Recipe has too many lines (%ud)"), nlines);
+
   cmds->ncommand_lines = nlines;
   cmds->command_lines = lines;
 
@@ -433,7 +436,7 @@ chop_commands (struct commands *cmds)
         flags |= COMMANDS_RECURSE;
 
       cmds->lines_flags[idx] = flags;
-      cmds->any_recurse |= flags & COMMANDS_RECURSE;
+      cmds->any_recurse |= flags & COMMANDS_RECURSE ? 1 : 0;
     }
 }
 \f
@@ -456,7 +459,7 @@ execute_file_commands (struct file *file)
     {
       /* If there are no commands, assume everything worked.  */
       set_command_state (file, cs_running);
-      file->update_status = 0;
+      file->update_status = us_success;
       notice_finished_file (file);
       return;
     }
@@ -467,6 +470,11 @@ execute_file_commands (struct file *file)
 
   set_file_variables (file);
 
+  /* If this is a loaded dynamic object, unload it before remaking.
+     Some systems don't support overwriting a loaded object.  */
+  if (file->loaded)
+    unload_file (file->name);
+
   /* Start the commands running.  */
   new_job (file);
 }
@@ -511,14 +519,14 @@ fatal_error_signal (int sig)
       DWORD susp_count = SuspendThread (main_thread);
 
       if (susp_count != 0)
-       fprintf (stderr, "SuspendThread: suspend count = %ld\n", susp_count);
+        fprintf (stderr, "SuspendThread: suspend count = %ld\n", susp_count);
       else if (susp_count == (DWORD)-1)
-       {
-         DWORD ierr = GetLastError ();
+        {
+          DWORD ierr = GetLastError ();
 
-         fprintf (stderr, "SuspendThread: error %ld: %s\n",
-                  ierr, map_windows32_error_to_string (ierr));
-       }
+          fprintf (stderr, "SuspendThread: error %ld: %s\n",
+                   ierr, map_windows32_error_to_string (ierr));
+        }
     }
 #endif
   handling_fatal_signal = 1;
@@ -534,8 +542,8 @@ fatal_error_signal (int sig)
     {
       struct child *c;
       for (c = children; c != 0; c = c->next)
-       if (!c->remote)
-         (void) kill (c->pid, SIGTERM);
+        if (!c->remote)
+          (void) kill (c->pid, SIGTERM);
     }
 
   /* If we got a signal that means the user
@@ -553,18 +561,18 @@ fatal_error_signal (int sig)
       struct child *c;
 
       /* Remote children won't automatically get signals sent
-        to the process group, so we must send them.  */
+         to the process group, so we must send them.  */
       for (c = children; c != 0; c = c->next)
-       if (c->remote)
-         (void) remote_kill (c->pid, sig);
+        if (c->remote)
+          (void) remote_kill (c->pid, sig);
 
       for (c = children; c != 0; c = c->next)
-       delete_child_targets (c);
+        delete_child_targets (c);
 
       /* Clean up the children.  We don't just use the call below because
-        we don't want to print the "Waiting for children" message.  */
+         we don't want to print the "Waiting for children" message.  */
       while (job_slots_used > 0)
-       reap_children (1, 0);
+        reap_children (1, 0);
     }
   else
     /* Wait for our children to die.  */
@@ -614,17 +622,17 @@ delete_target (struct file *file, const char *on_behalf_of)
   if (ar_name (file->name))
     {
       time_t file_date = (file->last_mtime == NONEXISTENT_MTIME
-                         ? (time_t) -1
-                         : (time_t) FILE_TIMESTAMP_S (file->last_mtime));
+                          ? (time_t) -1
+                          : (time_t) FILE_TIMESTAMP_S (file->last_mtime));
       if (ar_member_date (file->name) != file_date)
-       {
-         if (on_behalf_of)
-           error (NILF, _("*** [%s] Archive member `%s' may be bogus; not deleted"),
-                  on_behalf_of, file->name);
-         else
-           error (NILF, _("*** Archive member `%s' may be bogus; not deleted"),
-                  file->name);
-       }
+        {
+          if (on_behalf_of)
+            error (NILF, _("*** [%s] Archive member '%s' may be bogus; not deleted"),
+                   on_behalf_of, file->name);
+          else
+            error (NILF, _("*** Archive member '%s' may be bogus; not deleted"),
+                   file->name);
+        }
       return;
     }
 #endif
@@ -635,12 +643,12 @@ delete_target (struct file *file, const char *on_behalf_of)
       && FILE_TIMESTAMP_STAT_MODTIME (file->name, st) != file->last_mtime)
     {
       if (on_behalf_of)
-       error (NILF, _("*** [%s] Deleting file `%s'"), on_behalf_of, file->name);
+        error (NILF, _("*** [%s] Deleting file '%s'"), on_behalf_of, file->name);
       else
-       error (NILF, _("*** Deleting file `%s'"), file->name);
+        error (NILF, _("*** Deleting file '%s'"), file->name);
       if (unlink (file->name) < 0
-         && errno != ENOENT)   /* It disappeared; so what.  */
-       perror_with_name ("unlink: ", file->name);
+          && errno != ENOENT)   /* It disappeared; so what.  */
+        perror_with_name ("unlink: ", file->name);
     }
 }
 
@@ -659,7 +667,7 @@ delete_child_targets (struct child *child)
   /* Delete the target file if it changed.  */
   delete_target (child->file, NULL);
 
-  /* Also remove any non-precious targets listed in the `also_make' member.  */
+  /* Also remove any non-precious targets listed in the 'also_make' member.  */
   for (d = child->file->also_make; d != 0; d = d->next)
     delete_target (d->file, child->file->name);
 
@@ -678,17 +686,23 @@ print_commands (const struct commands *cmds)
   if (cmds->fileinfo.filenm == 0)
     puts (_(" (built-in):"));
   else
-    printf (_(" (from `%s', line %lu):\n"),
+    printf (_(" (from '%s', line %lu):\n"),
             cmds->fileinfo.filenm, cmds->fileinfo.lineno);
 
   s = cmds->commands;
   while (*s != '\0')
     {
       const char *end;
+      int bs;
 
-      end = strchr (s, '\n');
-      if (end == 0)
-       end = s + strlen (s);
+      /* Print one full logical recipe line: find a non-escaped newline.  */
+      for (end = s, bs = 0; *end != '\0'; ++end)
+        {
+          if (*end == '\n' && !bs)
+            break;
+
+          bs = *end == '\\' ? !bs : 0;
+        }
 
       printf ("%c%.*s\n", cmd_prefix, (int) (end - s), s);
 
index 24426fa..7829e40 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -21,19 +19,20 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 struct commands
   {
-    struct floc fileinfo;      /* Where commands were defined.  */
-    char *commands;            /* Commands text.  */
-    unsigned int ncommand_lines;/* Number of command lines.  */
-    char **command_lines;      /* Commands chopped up into lines.  */
-    char *lines_flags;         /* One set of flag bits for each line.  */
-    int any_recurse;           /* Nonzero if any `lines_recurse' elt has */
-                               /* the COMMANDS_RECURSE bit set.  */
+    gmk_floc fileinfo;          /* Where commands were defined.  */
+    char *commands;             /* Commands text.  */
+    char **command_lines;       /* Commands chopped up into lines.  */
+    char *lines_flags;          /* One set of flag bits for each line.  */
+    unsigned short ncommand_lines;/* Number of command lines.  */
+    char recipe_prefix;         /* Recipe prefix for this command set.  */
+    unsigned int any_recurse:1; /* Nonzero if any 'lines_flags' elt has */
+                                /* the COMMANDS_RECURSE bit set.  */
   };
 
-/* Bits in `lines_flags'.  */
-#define        COMMANDS_RECURSE        1 /* Recurses: + or $(MAKE).  */
-#define        COMMANDS_SILENT         2 /* Silent: @.  */
-#define        COMMANDS_NOERROR        4 /* No errors: -.  */
+/* Bits in 'lines_flags'.  */
+#define COMMANDS_RECURSE        1 /* Recurses: + or $(MAKE).  */
+#define COMMANDS_SILENT         2 /* Silent: @.  */
+#define COMMANDS_NOERROR        4 /* No errors: -.  */
 
 void execute_file_commands (struct file *file);
 void print_commands (const struct commands *cmds);
index 6d86c23..126a0e5 100644 (file)
@@ -1,6 +1,5 @@
 /* config.h -- hand-massaged for Amiga                                  -*-C-*-
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 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
@@ -17,7 +16,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Define if on AIX 3.
    System headers sometimes define this.
-   We just want to avoid a redefinition error message. */
+   We just want to avoid a redefinition error message.  */
 #ifndef _ALL_SOURCE
 /* #undef _ALL_SOURCE */
 #endif
@@ -38,14 +37,14 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define for DGUX with <sys/dg_sys_info.h>.  */
 /* #undef DGUX */
 
-/* Define if the `getloadavg' function needs to be run setuid or setgid.  */
+/* Define if the 'getloadavg' function needs to be run setuid or setgid.  */
 /* #undef GETLOADAVG_PRIVILEGED */
 
-/* Define to `unsigned long' or `unsigned long long'
+/* Define to 'unsigned long' or 'unsigned long long'
    if <inttypes.h> doesn't define.  */
 #define uintmax_t unsigned long
 
-/* Define to `int' if <sys/types.h> doesn't define.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 #define gid_t int
 
 /* Define if you have alloca, as a function or macro.  */
@@ -54,25 +53,25 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define 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.  */
-/* #undef HAVE_DOPRNT */
-
 /* Define if your system has a working fnmatch function.  */
 /* #undef HAVE_FNMATCH */
 
-/* Define if your system has its own `getloadavg' function.  */
+/* Define if your system has its own 'getloadavg' function.  */
 /* #undef HAVE_GETLOADAVG */
 
 /* Define if you have the getmntent function.  */
 /* #undef HAVE_GETMNTENT */
 
-/* Define if the `long double' type works.  */
+/* Embed GNU Guile support */
+/* #undef HAVE_GUILE */
+
+/* Define if the 'long double' type works.  */
 /* #undef HAVE_LONG_DOUBLE */
 
-/* Define if you support file names longer than 14 characters. */
+/* Define 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 if you have a working 'mmap' system call.  */
 /* #undef HAVE_MMAP */
 
 /* Define if system calls automatically restart after interruption
@@ -85,7 +84,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if your struct stat has st_blocks.  */
 /* #undef HAVE_ST_BLOCKS */
 
-/* Define if you have the strcoll function and it is properly defined. */
+/* Define if you have the strcoll function and it is properly defined.  */
 #define HAVE_STRCOLL 1
 
 /* Define if your struct stat has st_rdev.  */
@@ -94,7 +93,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if you have the strftime function.  */
 #define HAVE_STRFTIME 1
 
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
 /* #undef HAVE_SYS_WAIT_H */
 
 /* Define if your struct tm has tm_zone.  */
@@ -110,16 +109,10 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if utime(file, NULL) sets file's timestamp to the present.  */
 /* #undef HAVE_UTIME_NULL */
 
-/* Define if you have <vfork.h>.  */
-/* #undef HAVE_VFORK_H */
-
-/* Define if you have the vprintf function.  */
-#define HAVE_VPRINTF 1
-
 /* Define if you have the wait3 system call.  */
 /* #undef HAVE_WAIT3 */
 
-/* Define if on MINIX. */
+/* Define if on MINIX.  */
 /* #undef _MINIX */
 
 /* Define if your struct nlist has an n_un member.  */
@@ -131,7 +124,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define 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.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 #define pid_t int
 
 /* Define if the system does not provide POSIX.1 features except
@@ -152,28 +145,25 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
-       STACK_DIRECTION > 0 => grows toward higher addresses
-       STACK_DIRECTION < 0 => grows toward lower addresses
-       STACK_DIRECTION = 0 => direction of growth unknown
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown
  */
 #define STACK_DIRECTION -1
 
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
+/* Define if the 'S_IS*' macros in <sys/stat.h> do not work properly.  */
 /* #undef STAT_MACROS_BROKEN */
 
-/* Define if your compiler conforms to the ANSI C standard. */
-#define HAVE_ANSI_COMPILER 1
-
-/* Define if you have the ANSI C header files. */
+/* Define if you have the ANSI C header files.  */
 #define STDC_HEADERS
 
 /* Define on System V Release 4.  */
 /* #undef SVR4 */
 
-/* Define if `sys_siglist' is declared by <signal.h>.  */
+/* Define if 'sys_siglist' is declared by <signal.h>.  */
 /* #undef SYS_SIGLIST_DECLARED */
 
-/* Define to `int' if <sys/types.h> doesn't define.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 #define uid_t int
 
 /* Define for Encore UMAX.  */
@@ -183,19 +173,16 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    instead of <sys/cpustats.h>.  */
 /* #undef UMAX4_3 */
 
-/* Define vfork as fork if vfork does not work.  */
-/* #undef vfork */
-
 /* Name of this package (needed by automake) */
 #define PACKAGE "make"
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.82"
+#define VERSION "4.0"
 
-/* Define to the name of the SCCS `get' command.  */
+/* Define to the name of the SCCS 'get' command.  */
 #define SCCS_GET "get"
 
-/* Define this if the SCCS `get' command understands the `-G<file>' option.  */
+/* Define this if the SCCS 'get' command understands the '-G<file>' option.  */
 /* #undef SCCS_GET_MINUS_G */
 
 /* Define this to enable job server support in GNU make.  */
@@ -205,13 +192,13 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    if it exists.  */
 /* #undef ST_MTIM_NSEC */
 
-/* Define this if the C library defines the variable `sys_siglist'.  */
+/* Define this if the C library defines the variable 'sys_siglist'.  */
 /* #undef HAVE_SYS_SIGLIST */
 
-/* Define this if the C library defines the variable `_sys_siglist'.  */
+/* Define this 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 this if you have the 'union wait' type in <sys/wait.h>.  */
 /* #undef HAVE_UNION_WAIT */
 
 /* Define if you have the dup2 function.  */
@@ -247,7 +234,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if you have the seteuid function.  */
 /* #undef HAVE_SETEUID */
 
-/* Define if you have the setlinebuf function. */
+/* Define if you have the setlinebuf function.  */
 /* #undef HAVE_SETLINEBUF */
 
 /* Define if you have the setregid function.  */
@@ -256,7 +243,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if you have the setreuid function.  */
 /* #undef HAVE_SETREUID */
 
-/* Define if you have the sigsetmask function. */
+/* Define if you have the sigsetmask function.  */
 /* #undef HAVE_SIGSETMASK */
 
 /* Define if you have the socket function.  */
@@ -301,9 +288,6 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if you have the <ndir.h> header file.  */
 /* #undef HAVE_NDIR_H */
 
-/* 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.  */
 /* #undef HAVE_STDLIB_H */
 
@@ -337,6 +321,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define if you have the sun library (-lsun).  */
 /* #undef HAVE_LIBSUN */
 
+/* Output sync sypport */
+#define NO_OUTPUT_SYNC
+
 /* Define for Case Insensitve behavior */
 #define HAVE_CASE_INSENSITIVE_FS
 
index a6f19b6..8d307ee 100644 (file)
@@ -1,7 +1,6 @@
 /* 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -17,7 +16,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/>.  */
 
 /* config.h.  Generated automatically by configure.  */
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+/* config.h.in.  Generated automatically from configure.ac by autoheader.  */
 
 /* Define to 1 if on AIX 3.
    System headers sometimes define this.
@@ -35,6 +34,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define as 1 if you have gettext and don't want to use GNU gettext.  */
 /* #undef HAVE_GETTEXT */
 
+/* Embed GNU Guile support */
+/* #undef HAVE_GUILE */
+
 /* Define to 1 if your locale.h file contains LC_MESSAGES.  */
 /* #undef HAVE_LC_MESSAGES */
 
@@ -57,14 +59,14 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define for DGUX with <sys/dg_sys_info.h>.  */
 /* #undef DGUX */
 
-/* Define to 1 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'
+/* Define to 'unsigned long' or 'unsigned long long'
    if <inttypes.h> doesn't define.  */
 #define uintmax_t unsigned long
 
-/* Define to `int' if <sys/types.h> doesn't define.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 /* #undef gid_t */
 
 /* Define to 1 if you have alloca, as a function or macro.  */
@@ -73,28 +75,25 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).  */
 /* #undef HAVE_ALLOCA_H */
 
-/* Define to 1 if you don't have vprintf but do have _doprnt.  */
-/* #undef HAVE_DOPRNT */
-
 /* 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 to 1 if your system has its own `getloadavg' function.  */
+/* Define to 1 if your system has its own 'getloadavg' function.  */
 /* #undef HAVE_GETLOADAVG */
 
 /* Define to 1 if you have the getmntent function.  */
 /* #undef HAVE_GETMNTENT */
 
-/* Define to 1 if the `long double' type works.  */
+/* Define to 1 if the 'long double' type works.  */
 /* #undef HAVE_LONG_DOUBLE */
 
 /* Define to 1 if you support file names longer than 14 characters.  */
 #define HAVE_LONG_FILE_NAMES 1
 
-/* Define to 1 if you have a working `mmap' system call.  */
+/* Define to 1 if you have a working 'mmap' system call.  */
 /* #undef HAVE_MMAP */
 
 /* Define to 1 if system calls automatically restart after interruption
@@ -110,6 +109,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the strcoll function and it is properly defined.  */
 /* #undef HAVE_STRCOLL */
 
+/* Define to 1 if you have the strncasecmp' function. */
+#if __CRTL_VER >= 70000000
+#define HAVE_STRNCASECMP 1
+#endif
+
 /* Define to 1 if your struct stat has st_rdev.  */
 /* #undef HAVE_ST_RDEV */
 
@@ -134,12 +138,6 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if utime(file, NULL) sets file's timestamp to the present.  */
 /* #undef HAVE_UTIME_NULL */
 
-/* Define to 1 if you have <vfork.h>.  */
-/* #undef HAVE_VFORK_H */
-
-/* Define to 1 if you have the vprintf function.  */
-#define HAVE_VPRINTF 1
-
 /* Define to 1 if you have the wait3 system call.  */
 /* #undef HAVE_WAIT3 */
 
@@ -155,7 +153,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* 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.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 /* I assume types.h is available for all 5.0 cc/cxx compilers */
 #if __DECC_VER < 50090000
 #define pid_t int
@@ -179,13 +177,13 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
-       STACK_DIRECTION > 0 => grows toward higher addresses
-       STACK_DIRECTION < 0 => grows toward lower addresses
-       STACK_DIRECTION = 0 => direction of growth unknown
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown
  */
 /* #undef STACK_DIRECTION */
 
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
+/* Define to 1 if the 'S_IS*' macros in <sys/stat.h> do not work properly.  */
 /* #undef STAT_MACROS_BROKEN */
 
 /* Define to 1 if you have the ANSI C header files.  */
@@ -194,10 +192,10 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define on System V Release 4.  */
 /* #undef SVR4 */
 
-/* Define to 1 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.  */
+/* Define to 'int' if <sys/types.h> doesn't define.  */
 #if __DECC_VER < 50090000
 #define uid_t int
 #endif
@@ -209,19 +207,16 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    instead of <sys/cpustats.h>.  */
 /* #undef UMAX4_3 */
 
-/* Define vfork as fork if vfork does not work.  */
-/* #undef vfork */
-
 /* Name of this package (needed by automake) */
 #define PACKAGE "make"
 
 /* Version of this package (needed by automake) */
-#define VERSION "3.82"
+#define VERSION "4.0"
 
-/* Define to the name of the SCCS `get' command.  */
+/* 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 this if the SCCS 'get' command understands the '-G<file>' option.  */
 /* #undef SCCS_GET_MINUS_G */
 
 /* Define this to enable job server support in GNU make.  */
@@ -231,13 +226,13 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    if it exists.  */
 /* #undef ST_MTIM_NSEC */
 
-/* Define to 1 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 to 1 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 to 1 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 dup2 function.  */
@@ -255,9 +250,6 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the gethostname function.  */
 /* #undef HAVE_GETHOSTNAME */
 
-/* Define to 1 if you have the getloadavg function.  */
-/* #undef HAVE_GETLOADAVG */
-
 /* Define to 1 if you have the memmove function.  */
 #define HAVE_MEMMOVE 1
 
@@ -332,12 +324,6 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the <ndir.h> header file.  */
 /* #undef HAVE_NDIR_H */
 
-/* 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 to 1 if you have the <stdlib.h> header file.  */
 #define HAVE_STDLIB_H 1
 
@@ -420,10 +406,13 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Define if using alloca.c.  */
 /* #undef C_ALLOCA */
-/* maybe this should be placed into make.h */
-#if    defined(__VAX) && defined(__DECC)
-#define alloca(n)      __ALLOCA(n)
+/* maybe this should be placed into makeint.h */
+#if     defined(__VAX) && defined(__DECC)
+#define alloca(n)       __ALLOCA(n)
 #endif
 
+/* Output sync sypport */
+#define NO_OUTPUT_SYNC
+
 /* Build host information. */
 #define MAKE_HOST "VMS"
index 4ac84f7..664816d 100644 (file)
@@ -1,7 +1,6 @@
 /* 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -28,19 +27,19 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 # define _CRT_NONSTDC_NO_WARNINGS /* functions w/o a leading underscore */
 #endif
 
-/* Define to 1 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 one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
+/* Define to one of '_getb67', 'GETB67', 'getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for 'alloca.c' support on those systems.
    */
 /* #undef CRAY_STACKSEG_END */
 
-/* Define to 1 if using `alloca.c'. */
+/* Define to 1 if using 'alloca.c'. */
 /* #undef C_ALLOCA */
 
-/* Define to 1 if using `getloadavg.c'. */
-/*#define C_GETLOADAVG 1*/
+/* Define to 1 if using 'getloadavg.c'. */
+#define C_GETLOADAVG 1
 
 /* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
 /* #undef DGUX */
@@ -52,34 +51,51 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Use high resolution file timestamps if nonzero. */
 #define FILE_TIMESTAMP_HI_RES 0
 
-/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid.
+/* Define to 1 if the 'getloadavg' function needs to be run setuid or setgid.
    */
 /* #undef GETLOADAVG_PRIVILEGED */
 
-/* Define to 1 if you have `alloca', as a function or macro. */
+/* Define to 1 if you have 'alloca', as a function or macro. */
 #define HAVE_ALLOCA 1
 
 /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
 /* #undef HAVE_ALLOCA_H */
 
-/* Define if your compiler conforms to the ANSI C standard. */
-#define HAVE_ANSI_COMPILER 1
-
-/* Define to 1 if you have the `bsd_signal' function. */
-/* #undef HAVE_BSD_SIGNAL */
+/* Define to 1 if you have the 'atexit' function. */
+#define HAVE_ATEXIT 1
 
 /* 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 */
 
+/* Embed GNU Guile support.  Windows build sets this on the
+   compilation command line.  */
+/* #undef HAVE_GUILE */
+
 /* Define if the GNU dcgettext() function is already present or preinstalled.
    */
 /* #undef HAVE_DCGETTEXT */
 
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+/* Define to 1 if you have the declaration of 'bsd_signal', and to 0 if you
+   don't. */
+#define HAVE_DECL_BSD_SIGNAL 0
+
+/* Define to 1 if you have the declaration of 'sys_siglist', and to 0 if you
+   don't. */
+#define HAVE_DECL_SYS_SIGLIST 0
+
+/* Define to 1 if you have the declaration of '_sys_siglist', and to 0 if you
+   don't. */
+#define HAVE_DECL__SYS_SIGLIST 0
+
+/* Define to 1 if you have the declaration of '__sys_siglist', and to 0 if you
+   don't. */
+#define HAVE_DECL___SYS_SIGLIST 0
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines 'DIR'.
    */
 #define HAVE_DIRENT_H 1
 
@@ -90,58 +106,61 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 # define HAVE_DIRECT_H 1
 #endif
 
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
 /* Use platform specific coding */
 #define HAVE_DOS_PATHS 1
 
-/* Define to 1 if you have the `dup2' function. */
+/* Define to 1 if you have the 'dup2' function. */
 #define HAVE_DUP2 1
 
 /* Define to 1 if you have the <fcntl.h> header file. */
 #define HAVE_FCNTL_H 1
 
-/* Define to 1 if you have the `fdopen' function. */
-/*#define HAVE_FDOPEN 1*/
+/* Define to 1 if you have the 'fdopen' function. */
+#ifdef __MINGW32__
+#define HAVE_FDOPEN 1
+#endif
 
-/* Define to 1 if you have the `fork' function. */
-/* #undef HAVE_FORK */
+/* Define to 1 if you have the 'fileno' function. */
+#define HAVE_FILENO 1
 
-/* Define to 1 if you have the `getcwd' function.  */
+/* Define to 1 if you have the 'getcwd' function.  */
 #define HAVE_GETCWD 1
 
-/* Define to 1 if you have the `getgroups' function. */
+/* Define to 1 if you have the 'getgroups' function. */
 /* #undef HAVE_GETGROUPS */
 
-/* Define to 1 if you have the `gethostbyname' function. */
+/* Define to 1 if you have the 'gethostbyname' function. */
 /* #undef HAVE_GETHOSTBYNAME */
 
-/* Define to 1 if you have the `gethostname' function. */
+/* Define to 1 if you have the 'gethostname' function. */
 /* #undef HAVE_GETHOSTNAME */
 
-/* Define to 1 if you have the `getloadavg' function. */
+/* Define to 1 if you have the 'getloadavg' function. */
 /* #undef HAVE_GETLOADAVG */
 
-/* Define to 1 if you have the `getrlimit' function. */
+/* Define to 1 if you have the 'getrlimit' function. */
 /* #undef HAVE_GETRLIMIT */
 
 /* Define if the GNU gettext() function is already present or preinstalled. */
 /* #undef HAVE_GETTEXT */
 
-/* Define if you have a standard gettimeofday function */
-/* #undef HAVE_GETTIMEOFDAY */
+/* Define to 1 if you have a standard gettimeofday function */
+#ifdef __MINGW32__
+#define HAVE_GETTIMEOFDAY 1
+#endif
 
 /* Define if you have the iconv() function. */
 /* #undef HAVE_ICONV */
 
 /* Define to 1 if you have the <inttypes.h> header file. */
-/*#define HAVE_INTTYPES_H 1*/
+#ifdef __MINGW32__
+#define HAVE_INTTYPES_H 1
+#endif
 
-/* Define to 1 if you have the `dgc' library (-ldgc). */
+/* Define to 1 if you have the 'dgc' library (-ldgc). */
 /* #undef HAVE_LIBDGC */
 
-/* Define to 1 if you have the `kstat' library (-lkstat). */
+/* Define to 1 if you have the 'kstat' library (-lkstat). */
 /* #undef HAVE_LIBKSTAT */
 
 /* Define to 1 if you have the <limits.h> header file. */
@@ -150,195 +169,196 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the <locale.h> header file. */
 /*#define HAVE_LOCALE_H 1*/
 
+/* Define to 1 if you have the 'lstat' function. */
+/* #undef HAVE_LSTAT */
+
 /* Define to 1 if you have the <mach/mach.h> header file. */
 /* #undef HAVE_MACH_MACH_H */
 
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
 /* Define to 1 if you have the <memory.h> header file. */
 #define HAVE_MEMORY_H 1
 
-/* Define to 1 if you have the `mkstemp' function. */
+/* Define to 1 if you have the 'mkstemp' function. */
 /* #undef HAVE_MKSTEMP */
 
-/* Define to 1 if you have the `mktemp' function. */
+/* Define to 1 if you have the 'mktemp' function. */
 #define HAVE_MKTEMP 1
 
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* Define to 1 if you have the <ndir.h> header file, and it defines 'DIR'. */
 /* #undef HAVE_NDIR_H */
 
 /* Define to 1 if you have the <nlist.h> header file. */
 /* #undef HAVE_NLIST_H */
 
-/* Define to 1 if you have the `pipe' function. */
+/* Define to 1 if you have the 'pipe' function. */
 /* #undef HAVE_PIPE */
 
-/* Define to 1 if you have the `pstat_getdynamic' function. */
+/* Define to 1 if you have the 'pstat_getdynamic' function. */
 /* #undef HAVE_PSTAT_GETDYNAMIC */
 
-/* Define to 1 if you have the `realpath' function. */
+/* Define to 1 if you have the 'readlink' function. */
+/* #undef HAVE_READLINK */
+
+/* Define to 1 if you have the 'realpath' function. */
 /* #undef HAVE_REALPATH */
 
-/* Define if <signal.h> defines the SA_RESTART constant. */
+/* 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 'setegid' function. */
 /* #undef HAVE_SETEGID */
 
-/* Define to 1 if you have the `seteuid' function. */
+/* Define to 1 if you have the 'seteuid' function. */
 /* #undef HAVE_SETEUID */
 
-/* Define to 1 if you have the `setlinebuf' function. */
+/* Define to 1 if you have the 'setlinebuf' function. */
 /* #undef HAVE_SETLINEBUF */
 
-/* Define to 1 if you have the `setlocale' function. */
+/* Define to 1 if you have the 'setlocale' function. */
 /*#define HAVE_SETLOCALE 1*/
 
-/* Define to 1 if you have the `setregid' function. */
+/* Define to 1 if you have the 'setregid' function. */
 /* #undef HAVE_SETREGID */
 
-/* Define to 1 if you have the `setreuid' function. */
+/* Define to 1 if you have the 'setreuid' function. */
 /* #undef HAVE_SETREUID */
 
-/* Define to 1 if you have the `setrlimit' function. */
+/* Define to 1 if you have the 'setrlimit' function. */
 /* #undef HAVE_SETRLIMIT */
 
-/* Define to 1 if you have the `setvbuf' function. */
-/*#define HAVE_SETVBUF 1 */
+/* Define to 1 if you have the 'setvbuf' function. */
+#define HAVE_SETVBUF 1
 
-/* Define to 1 if you have the `sigaction' function. */
+/* Define to 1 if you have the 'sigaction' function. */
 /* #undef HAVE_SIGACTION */
 
-/* Define to 1 if you have the `sigsetmask' function. */
+/* Define to 1 if you have the 'sigsetmask' function. */
 /* #undef HAVE_SIGSETMASK */
 
-/* Define to 1 if you have the `socket' function. */
+/* Define to 1 if you have the 'socket' function. */
 /* #undef HAVE_SOCKET */
 
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
 /* Define to 1 if you have the <stdint.h> header file. */
-/*#define HAVE_STDINT_H 1*/
+#ifdef __MINGW32__
+#define HAVE_STDINT_H 1
+#endif
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
-/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
-
-/* Define to 1 if you have the `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 'strcasecmp' function. */
+#ifdef __MINGW32__
+#define HAVE_STRCASECMP 1
+#endif
 
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
+/* Define to 1 if you have the 'strcmpi' function. */
+#define HAVE_STRCMPI 1
 
-/* Define to 1 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.
    */
 #define HAVE_STRCOLL 1
 
-/* Define to 1 if you have the `strdup' function. */
-/* #define HAVE_STRDUP 1*/
+/* Define to 1 if you have the 'strdup' function. */
+#define HAVE_STRDUP 1
 
-/* Define to 1 if you have the `strerror' function. */
+/* Define to 1 if you have the 'strerror' function. */
 #define HAVE_STRERROR 1
 
+/* Define to 1 if you have the 'stricmp' function. */
+#define HAVE_STRICMP 1
+
 /* Define to 1 if you have the <strings.h> header file. */
 /* #define HAVE_STRINGS_H 1 */
 
 /* Define to 1 if you have the <string.h> header file. */
 #define HAVE_STRING_H 1
 
-/* Define to 1 if you have the `strsignal' function. */
+/* Define to 1 if you have the 'strncasecmp' function. */
+#ifdef __MINGW32__
+#define HAVE_STRNCASECMP 1
+#endif
+
+/* 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. */
+#ifdef __MINGW32__
+#define HAVE_STRNICMP 1
+#endif
+
+/* 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 a 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/dir.h> header file, and it defines 'DIR'.
    */
 /* #undef HAVE_SYS_DIR_H */
 
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines 'DIR'.
    */
 /* #undef HAVE_SYS_NDIR_H */
 
 /* Define to 1 if you have the <sys/param.h> header file. */
-/* #define HAVE_SYS_PARAM_H 1 */
+#ifdef __MINGW32__
+#define HAVE_SYS_PARAM_H 1
+#endif
 
 /* Define to 1 if you have the <sys/resource.h> header file. */
 /* #undef HAVE_SYS_RESOURCE_H */
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
-/* #define HAVE_SYS_STAT_H 1 */
+#define HAVE_SYS_STAT_H 1
 
 /* Define to 1 if you have the <sys/timeb.h> header file. */
-/*#define HAVE_SYS_TIMEB_H 1*/
+#define HAVE_SYS_TIMEB_H 1
 
 /* Define to 1 if you have the <sys/time.h> header file. */
-/*#define HAVE_SYS_TIME_H 1*/
+#ifdef __MINGW32__
+#define HAVE_SYS_TIME_H 1
+#endif
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-/*#define HAVE_SYS_TYPES_H 1*/
+#define HAVE_SYS_TYPES_H 1
 
 /* Define to 1 if you have the <sys/wait.h> header file. */
 /* #undef HAVE_SYS_WAIT_H */
 
-/* Define this if you have the \`union wait' type in <sys/wait.h>. */
+/* 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. */
-/* #define HAVE_UNISTD_H 1*/
-
-/* Define to 1 if you have the <varargs.h> header file. */
-/* #undef HAVE_VARARGS_H */
-
-/* Define to 1 if you have the `vfork' function. */
-/* #undef HAVE_VFORK */
-
-/* Define to 1 if you have the <vfork.h> header file. */
-/* #undef HAVE_VFORK_H */
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
+#ifdef __MINGW32__
+#define HAVE_UNISTD_H 1
+#endif
 
-/* Define to 1 if you have the `wait3' function. */
+/* Define to 1 if you have the 'wait3' function. */
 /* #undef HAVE_WAIT3 */
 
-/* Define to 1 if you have the `waitpid' function. */
+/* Define to 1 if you have the 'waitpid' function. */
 /* #undef HAVE_WAITPID */
 
-/* Define to 1 if `fork' works. */
-/* #undef HAVE_WORKING_FORK */
-
-/* Define to 1 if `vfork' works. */
-/* #undef HAVE_WORKING_VFORK */
-
 /* Build host information. */
 #define MAKE_HOST "Windows32"
 
-/* Define this to enable job server support in GNU make. */
-/* #undef MAKE_JOBSERVER */
+/* Define to 1 to enable job server support in GNU make. */
+#define MAKE_JOBSERVER 1
+
+/* Define to 1 to enable 'load' support in GNU make. */
+#define MAKE_LOAD 1
 
-/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend
-   on `HAVE_STRUCT_NLIST_N_UN_N_NAME */
+/* 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. */
@@ -347,10 +367,22 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Name of this package (needed by automake) */
 #define PACKAGE "make"
 
-/* Define to 1 if the C compiler supports function prototypes. */
-#define PROTOTYPES 1
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-make@gnu.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GNU make"
 
-/* Define as the return type of signal handlers (`int' or `void'). */
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.gnu.org/software/make/"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "4.0"
+
+/* Define to the character that separates directories in PATH. */
+#define PATH_SEPARATOR_CHAR ';'
+
+/* Define as the return type of signal handlers ('int' or 'void'). */
 #define RETSIGTYPE void
 
 /* Define to the name of the SCCS 'get' command. */
@@ -359,20 +391,20 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define this if the SCCS 'get' command understands the '-G<file>' option. */
 /* #undef SCCS_GET_MINUS_G */
 
-/* Define to 1 if the `setvbuf' function takes the buffering type as its
+/* Define to 1 if the 'setvbuf' function takes the buffering type as its
    second argument and the buffer pointer as the third, as on System V before
    release 3. */
 /* #undef SETVBUF_REVERSED */
 
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
-       STACK_DIRECTION > 0 => grows toward higher addresses
-       STACK_DIRECTION < 0 => grows toward lower addresses
-       STACK_DIRECTION = 0 => direction of growth unknown */
+   automatically deduced at run time.
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
 /* #undef STACK_DIRECTION */
 
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* Define to 1 if the 'S_IS*' macros in <sys/stat.h> do not work properly. */
 /* #undef STAT_MACROS_BROKEN */
 
 /* Define to 1 if you have the ANSI C header files. */
@@ -385,7 +417,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* #undef SVR4 */
 
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #define TIME_WITH_SYS_TIME 1 */
+#ifdef __MINGW32__
+#define TIME_WITH_SYS_TIME 1
+#endif
 
 /* Define to 1 for Encore UMAX. */
 /* #undef UMAX */
@@ -395,7 +429,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* #undef UMAX4_3 */
 
 /* Version number of package */
-#define VERSION "3.82"
+#define VERSION "4.0"
 
 /* Define if using the dmalloc debugging malloc package */
 /* #undef WITH_DMALLOC */
@@ -420,21 +454,18 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    this defined. */
 /* #undef _POSIX_1_SOURCE */
 
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#define _POSIX_SOURCE 1
+/* Define 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. */
-/*#define __PROTOTYPES 1*/
-
-/* Define to empty if `const' does not conform to ANSI C. */
+/* 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 to 'int' if <sys/types.h> doesn't define. */
 #define gid_t int
 
-/* Define to `int' if <sys/types.h> does not define. */
+/* Define to 'int' if <sys/types.h> does not define. */
 /* GCC 4.x reportedly defines pid_t.  */
 #ifndef _PID_T_
 #ifdef _WIN64
@@ -444,45 +475,17 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #endif
 #endif
 
-/* Define to `int' if <sys/types.h> doesn't define. */
+/* Define to 'int' if <sys/types.h> doesn't define. */
 #define uid_t int
 
 /* Define uintmax_t if not defined in <stdint.h> or <inttypes.h>. */
+#if !HAVE_STDINT_H && !HAVE_INTTYPES_H
 #define uintmax_t unsigned long
-
-/* Define as `fork' if `vfork' does not work. */
-/*#define vfork fork*/
-
-/* Define to `unsigned long' or `unsigned long long'
-   if <inttypes.h> doesn't define.  */
-#define uintmax_t unsigned long
-
-/* Define if you support file names longer than 14 characters.  */
-#define HAVE_LONG_FILE_NAMES 1
-
-/* Define if your struct stat has st_rdev.  */
-#undef HAVE_ST_RDEV
-#define HAVE_ST_RDEV 1
-
-/* Define if you have the strftime function.  */
-#undef HAVE_STRFTIME
-#define HAVE_STRFTIME 1
+#endif
 
 /* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
 /* #undef HAVE_SYS_WAIT_H */
 
-/* Define if your struct tm has tm_zone.  */
-/* #undef HAVE_TM_ZONE */
-
-/* Define if you don't have tm_zone but do have the external array
-   tzname.  */
-#undef HAVE_TZNAME
-#define HAVE_TZNAME 1
-
-/* Define if utime(file, NULL) sets file's timestamp to the present.  */
-#undef HAVE_UTIME_NULL
-#define HAVE_UTIME_NULL 1
-
 /* Define to the installation directory for locales.  */
 #define LOCALEDIR ""
 
index da28f93..bd6843f 100644 (file)
@@ -1,4 +1,4 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Define to 1 if the `closedir' function returns void instead of `int'. */
 #undef CLOSEDIR_VOID
    */
 #undef HAVE_ALLOCA_H
 
-/* 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
 
 /* Use case insensitive file names */
 #undef HAVE_CASE_INSENSITIVE_FS
 
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
 /* Define to 1 if you have the clock_gettime function. */
 #undef HAVE_CLOCK_GETTIME
 
    don't. */
 #undef HAVE_DECL_BSD_SIGNAL
 
+/* Define to 1 if you have the declaration of `dlerror', and to 0 if you
+   don't. */
+#undef HAVE_DECL_DLERROR
+
+/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't.
+   */
+#undef HAVE_DECL_DLOPEN
+
+/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't.
+   */
+#undef HAVE_DECL_DLSYM
+
 /* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_SIGLIST
    */
 #undef HAVE_DIRENT_H
 
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
 /* Use platform specific coding */
 #undef HAVE_DOS_PATHS
 
+/* Define to 1 if you have the `dup' function. */
+#undef HAVE_DUP
+
 /* Define to 1 if you have the `dup2' function. */
 #undef HAVE_DUP2
 
 /* 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 to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
 /* Define to 1 if you have a standard gettimeofday function */
 #undef HAVE_GETTIMEOFDAY
 
-/* Define if you have the iconv() function. */
+/* Embed GNU Guile support */
+#undef HAVE_GUILE
+
+/* Define if you have the iconv() function and it works. */
 #undef HAVE_ICONV
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 /* Define to 1 if you have the `socket' function. */
 #undef HAVE_SOCKET
 
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
 /* Define to 1 if you have the <sys/wait.h> header file. */
 #undef HAVE_SYS_WAIT_H
 
-/* Define to 1 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. */
 #undef HAVE_UNISTD_H
 
-/* Define to 1 if you have the <varargs.h> header file. */
-#undef HAVE_VARARGS_H
-
-/* Define to 1 if you have the `vfork' function. */
-#undef HAVE_VFORK
-
-/* Define to 1 if you have the <vfork.h> header file. */
-#undef HAVE_VFORK_H
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
 /* Define to 1 if you have the `wait3' function. */
 #undef HAVE_WAIT3
 
 /* Define to 1 if you have the `waitpid' function. */
 #undef HAVE_WAITPID
 
-/* Define to 1 if `fork' works. */
-#undef HAVE_WORKING_FORK
-
-/* Define to 1 if `vfork' works. */
-#undef HAVE_WORKING_VFORK
-
 /* Build host information. */
 #undef MAKE_HOST
 
 /* Define to 1 to enable job server support in GNU make. */
 #undef MAKE_JOBSERVER
 
+/* Define to 1 to enable 'load' support in GNU make. */
+#undef MAKE_LOAD
+
 /* Define to 1 to enable symbolic link timestamp checking. */
 #undef MAKE_SYMLINKS
 
 /* Define if using the dmalloc debugging malloc package */
 #undef WITH_DMALLOC
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
 /* Define to `int' if <sys/types.h> doesn't define. */
 #undef uid_t
 
 /* Define uintmax_t if not defined in <stdint.h> or <inttypes.h>. */
 #undef uintmax_t
-
-/* Define as `fork' if `vfork' does not work. */
-#undef vfork
index aed4694..4e3155b 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-15  Paul Smith  <psmith@gnu.org>
+
+       * dospaths.m4: Use AC_LANG_PROGRAM to encapsulate the test code.
+       Fixes Savannah bug #35256.  Patch from Sebastian Pipping.
+
 2006-03-09  Paul Smith  <psmith@gnu.org>
 
        * dospaths.m4: Add MSYS to the list of targets allowing DOS-style
@@ -28,8 +33,7 @@
        * Makefile.am: New file.
 \f
 
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
-Foundation, Inc.
+Copyright (C) 2002-2013 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
index 203a5ee..f770e64 100644 (file)
@@ -1,6 +1,5 @@
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-# Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -16,9 +15,4 @@
 # You should have received a copy of the GNU General Public License along with
 # 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 \
-               isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \
-               progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 longlong.m4 \
-               dospaths.m4 po.m4 signed.m4 longdouble.m4 wchar_t.m4 \
-               wint_t.m4 intmax.m4 printf-posix.m4 xsize.m4 size_max.m4
+# Autoconf / automake know how to handle this directory.
index 41127d6..3a05524 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
@@ -16,8 +16,7 @@
 @SET_MAKE@
 
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-# Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
 # You should have received a copy of the GNU General Public License along with
 # this program.  If not, see <http://www.gnu.org/licenses/>.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -54,28 +70,41 @@ host_triplet = @host@
 subdir = config
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
        compile config.guess config.rpath config.sub depcomp \
-       install-sh mdate-sh missing mkinstalldirs texinfo.tex
+       install-sh mdate-sh missing texinfo.tex
 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/intlmacosx.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
        $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -95,16 +124,21 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 KMEM_GROUP = @KMEM_GROUP@
 LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
@@ -117,8 +151,8 @@ LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NEED_SETGID = @NEED_SETGID@
 OBJEXT = @OBJEXT@
@@ -131,6 +165,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REMOTE = @REMOTE@
@@ -140,6 +177,8 @@ STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -190,13 +229,6 @@ 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 \
-               progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 longlong.m4 \
-               dospaths.m4 po.m4 signed.m4 longdouble.m4 wchar_t.m4 \
-               wint_t.m4 intmax.m4 printf-posix.m4 xsize.m4 size_max.m4
-
 all: all-am
 
 .SUFFIXES:
@@ -281,10 +313,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -375,6 +412,8 @@ uninstall-am:
        mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
 
 
+# Autoconf / automake know how to handle this directory.
+
 # 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/config/codeset.m4 b/config/codeset.m4
deleted file mode 100644 (file)
index 59535eb..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# codeset.m4 serial AM1 (gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
-  AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
-    [AC_TRY_LINK([#include <langinfo.h>],
-      [char* cs = nl_langinfo(CODESET);],
-      am_cv_langinfo_codeset=yes,
-      am_cv_langinfo_codeset=no)
-    ])
-  if test $am_cv_langinfo_codeset = yes; then
-    AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
-      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-  fi
-])
index c0096a7..862a14e 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-03-05.13; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
-# Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -29,21 +29,219 @@ scriptversion=2009-10-06.20; # UTC
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
     cat <<\EOF
 Usage: compile [--help] [--version] PROGRAM [ARGS]
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
 arguments, and rename the output as expected.
 
 If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
@@ -53,11 +251,13 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
 esac
 
 ofile=
 cfile=
-eat=
 
 for arg
 do
@@ -66,8 +266,8 @@ do
   else
     case $1 in
       -o)
-       # configure might choose to run compile as `compile cc -o foo foo.c'.
-       # So we strip `-o arg' only if arg is an object.
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
        eat=1
        case $2 in
          *.o | *.obj)
@@ -94,10 +294,10 @@ do
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
+  # If no '-o' option was seen then we might have been invoked from a
   # pattern rule where we don't need one.  That is ok -- this is a
   # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
+  # '.c' file was seen then we are probably linking.  That is also
   # ok.
   exec "$@"
 fi
@@ -106,7 +306,7 @@ fi
 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
index 115f944..b79252d 100644 (file)
@@ -1,14 +1,12 @@
 #! /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, 2007, 2008, 2009, 2010
-#   Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2010-04-03'
+timestamp='2013-06-10'
 
 # 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
-# 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, but
@@ -17,26 +15,22 @@ timestamp='2010-04-03'
 # 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
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 #
-# 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.
+# Originally written by Per Bothner.
 #
 # 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
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,9 +50,7 @@ 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, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright 1992-2013 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."
@@ -92,7 +84,7 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' HUP INT TERM
+trap 'exit 1' 1 2 15
 
 # 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
@@ -106,7 +98,7 @@ trap 'exit 1' HUP INT TERM
 
 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" HUP INT PIPE TERM ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
 : ${TMPDIR=/tmp} ;
  { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -140,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+       # If the system lacks a compiler, then just pick glibc.
+       # We could probably try harder.
+       LIBC=gnu
+
+       eval $set_cc_for_build
+       cat <<-EOF > $dummy.c
+       #include <features.h>
+       #if defined(__UCLIBC__)
+       LIBC=uclibc
+       #elif defined(__dietlibc__)
+       LIBC=dietlibc
+       #else
+       LIBC=gnu
+       #endif
+       EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       ;;
+esac
+
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
        # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
        # switched to ELF, *-*-netbsd* would select the old
        # object file format.  This provides both forward
@@ -181,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                fi
                ;;
            *)
-               os=netbsd
+               os=netbsd
                ;;
        esac
        # The OS release
@@ -202,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
        echo "${machine}-${os}${release}"
        exit ;;
+    *:Bitrig:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+       exit ;;
     *:OpenBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
        echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -224,7 +241,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
                ;;
        *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
                ;;
        esac
        # According to Compaq, /usr/sbin/psrinfo has been available on
@@ -270,7 +287,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
        echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       exit ;;
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # Should we change UNAME_MACHINE based on the output of uname instead
@@ -296,12 +316,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo s390-ibm-zvmoe
        exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+       echo powerpc-ibm-os400
        exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
        echo arm-unknown-riscos
        exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -395,23 +415,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint${UNAME_RELEASE}
        exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
        echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+       exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint${UNAME_RELEASE}
        exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
     m68k:machten:*:*)
        echo m68k-apple-machten${UNAME_RELEASE}
        exit ;;
@@ -481,8 +501,8 @@ EOF
        echo m88k-motorola-sysv3
        exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
        if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
        then
            if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -495,7 +515,7 @@ EOF
        else
            echo i586-dg-dgux${UNAME_RELEASE}
        fi
-       exit ;;
+       exit ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
        echo m88k-dolphin-sysv3
        exit ;;
@@ -552,7 +572,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
        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
@@ -595,52 +615,52 @@ EOF
            9000/[678][0-9][0-9])
                if [ -x /usr/bin/getconf ]; then
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
                          '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+                       esac ;;
+                   esac
                fi
                if [ "${HP_ARCH}" = "" ]; then
                    eval $set_cc_for_build
-                   sed 's/^              //' << EOF >$dummy.c
+                   sed 's/^            //' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-               {
-               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-               case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-                   switch (bits)
-                       {
-                       case 64: puts ("hppa2.0w"); break;
-                       case 32: puts ("hppa2.0n"); break;
-                       default: puts ("hppa2.0"); break;
-                       } break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-                   puts ("hppa2.0"); break;
-              #endif
-               default: puts ("hppa1.0"); break;
-               }
-                  exit (0);
-              }
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
 EOF
                    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -731,22 +751,22 @@ EOF
        exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
        echo c1-convex-bsd
-        exit ;;
+       exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
        if getsysinfo -f scalar_acc
        then echo c32-convex-bsd
        else echo c2-convex-bsd
        fi
-        exit ;;
+       exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
        echo c34-convex-bsd
-        exit ;;
+       exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
        echo c38-convex-bsd
-        exit ;;
+       exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
        echo c4-convex-bsd
-        exit ;;
+       exit ;;
     CRAY*Y-MP:*:*:*)
        echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit ;;
@@ -770,14 +790,14 @@ EOF
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
        FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -789,30 +809,35 @@ EOF
        echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
        exit ;;
     *:FreeBSD:*:*)
-       case ${UNAME_MACHINE} in
-           pc98)
-               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       case ${UNAME_PROCESSOR} in
            amd64)
                echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
            *)
-               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
        esac
        exit ;;
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit ;;
+    *:MINGW64*:*)
+       echo ${UNAME_MACHINE}-pc-mingw64
+       exit ;;
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
+    i*:MSYS*:*)
+       echo ${UNAME_MACHINE}-pc-msys
+       exit ;;
     i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
        exit ;;
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
     *:Interix*:*)
-       case ${UNAME_MACHINE} in
+       case ${UNAME_MACHINE} in
            x86)
                echo i586-pc-interix${UNAME_RELEASE}
                exit ;;
@@ -849,15 +874,22 @@ EOF
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
        exit ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
+    aarch64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    aarch64_be:Linux:*:*)
+       UNAME_MACHINE=aarch64_be
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
          EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -867,52 +899,56 @@ EOF
          EV6)   UNAME_MACHINE=alphaev6 ;;
          EV67)  UNAME_MACHINE=alphaev67 ;;
          EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
+       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}
+       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${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
+           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        else
-           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+           fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     cris:Linux:*:*)
-       echo cris-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
        exit ;;
     crisv32:Linux:*:*)
-       echo crisv32-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
        exit ;;
     frv:Linux:*:*)
-       echo frv-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    hexagon:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        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}"
+       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
@@ -931,51 +967,63 @@ EOF
        #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
+    or1k:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
     or32:Linux:*:*)
-       echo or32-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-gnu
+       echo sparc-unknown-linux-${LIBC}
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
+       echo hppa64-unknown-linux-${LIBC}
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-gnu ;;
-         PA8*) echo hppa2.0-unknown-linux-gnu ;;
-         *)    echo hppa-unknown-linux-gnu ;;
+         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+         *)    echo hppa-unknown-linux-${LIBC} ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
+       echo powerpc64-unknown-linux-${LIBC}
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
+       echo powerpc-unknown-linux-${LIBC}
+       exit ;;
+    ppc64le:Linux:*:*)
+       echo powerpc64le-unknown-linux-${LIBC}
+       exit ;;
+    ppcle:Linux:*:*)
+       echo powerpcle-unknown-linux-${LIBC}
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux
+       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-gnu
+       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
        exit ;;
     x86_64:Linux:*:*)
-       echo x86_64-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -984,11 +1032,11 @@ EOF
        echo i386-sequent-sysv4
        exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
        # I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+       # Use sysv4.2uw... so that sysv4* matches it.
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit ;;
     i*86:OS/2:*:*)
@@ -1020,7 +1068,7 @@ EOF
        fi
        exit ;;
     i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
        case `/bin/uname -X | grep "^Machine"` in
            *486*)           UNAME_MACHINE=i486 ;;
            *Pentium)        UNAME_MACHINE=i586 ;;
@@ -1048,13 +1096,13 @@ EOF
        exit ;;
     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 i586.
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # 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 ;;
+       exit ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
        exit ;;
@@ -1089,8 +1137,8 @@ EOF
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
          && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+       /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 \
@@ -1133,10 +1181,10 @@ EOF
                echo ns32k-sni-sysv
        fi
        exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <Richard.M.Bartel@ccMail.Census.GOV>
+       echo i586-unisys-sysv4
+       exit ;;
     *:UNIX_System_V:4*:FTX*)
        # From Gerald Hewes <hewes@openmarket.com>.
        # How about differentiating between stratus architectures? -djm
@@ -1162,11 +1210,11 @@ EOF
        exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
+               echo mips-nec-sysv${UNAME_RELEASE}
        else
-               echo mips-unknown-sysv${UNAME_RELEASE}
+               echo mips-unknown-sysv${UNAME_RELEASE}
        fi
-        exit ;;
+       exit ;;
     BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
        echo powerpc-be-beos
        exit ;;
@@ -1179,6 +1227,9 @@ EOF
     BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
        echo i586-pc-haiku
        exit ;;
+    x86_64:Haiku:*:*)
+       echo x86_64-unknown-haiku
+       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
@@ -1205,19 +1256,21 @@ EOF
        exit ;;
     *: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
+       eval $set_cc_for_build
+       if test "$UNAME_PROCESSOR" = unknown ; then
+           UNAME_PROCESSOR=powerpc
+       fi
+       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
+               case $UNAME_PROCESSOR in
+                   i386) UNAME_PROCESSOR=x86_64 ;;
+                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
+               esac
+           fi
+       fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1231,7 +1284,10 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
        echo nse-tandem-nsk${UNAME_RELEASE}
        exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1276,13 +1332,13 @@ EOF
        echo pdp10-unknown-its
        exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+       echo mips-sei-seiux${UNAME_RELEASE}
        exit ;;
     *:DragonFly:*:*)
        echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit ;;
     *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
        case "${UNAME_MACHINE}" in
            A*) echo alpha-dec-vms ; exit ;;
            I*) echo ia64-dec-vms ; exit ;;
@@ -1300,11 +1356,11 @@ EOF
     i*86:AROS:*:*)
        echo ${UNAME_MACHINE}-pc-aros
        exit ;;
+    x86_64:VMkernel:*:*)
+       echo ${UNAME_MACHINE}-unknown-esx
+       exit ;;
 esac
 
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
 eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
@@ -1322,11 +1378,11 @@ main ()
 #include <sys/param.h>
   printf ("m68k-sony-newsos%s\n",
 #ifdef NEWSOS4
-          "4"
+       "4"
 #else
-         ""
+       ""
 #endif
-         ); exit (0);
+       ); exit (0);
 #endif
 #endif
 
index 4db13e5..17298f2 100755 (executable)
@@ -2,28 +2,13 @@
 # Output a system dependent set of variables, describing how to set the
 # run time search path of shared libraries in an executable.
 #
-#   Copyright 1996-2003 Free Software Foundation, Inc.
+#   Copyright 1996-2010 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
-#   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
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program; if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-#   As a special exception to the GNU General Public License, if you
-#   distribute this file as part of a program that contains a
-#   configuration script generated by Autoconf, you may include it under
-#   the same distribution terms that you use for the rest of that program.
+#   This file is 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.
 #
 # The first argument passed to this file is the canonical host specification,
 #    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
@@ -40,7 +25,7 @@
 #   known workaround is to choose shorter directory names for the build
 #   directory and/or the installation directory.
 
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a `.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 shrext=.so
@@ -50,7 +35,19 @@ host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
 
 wl=
 if test "$GCC" = yes; then
@@ -60,7 +57,14 @@ else
     aix*)
       wl='-Wl,'
       ;;
-    mingw* | pw32* | os2*)
+    darwin*)
+      case $cc_basename in
+        xlc*)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       ;;
     hpux9* | hpux10* | hpux11*)
       wl='-Wl,'
@@ -70,20 +74,39 @@ else
       ;;
     newsos6)
       ;;
-    linux*)
-      case $CC in
-        icc|ecc)
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+        ecc*)
           wl='-Wl,'
           ;;
-        ccc)
+        icc* | ifort*)
           wl='-Wl,'
           ;;
+        lf95*)
+          wl='-Wl,'
+          ;;
+        pgcc | pgf77 | pgf90)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
       esac
       ;;
     osf3* | osf4* | osf5*)
       wl='-Wl,'
       ;;
-    sco3.2v5*)
+    rdos*)
       ;;
     solaris*)
       wl='-Wl,'
@@ -91,17 +114,23 @@ else
     sunos4*)
       wl='-Qoption ld '
       ;;
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    sysv4 | sysv4.2uw2* | sysv4.3*)
       wl='-Wl,'
       ;;
     sysv4*MP*)
       ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
     uts4*)
       ;;
   esac
 fi
 
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
 
 hardcode_libdir_flag_spec=
 hardcode_libdir_separator=
@@ -109,7 +138,7 @@ hardcode_direct=no
 hardcode_minus_L=no
 
 case "$host_os" in
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
@@ -117,6 +146,10 @@ case "$host_os" in
       with_gnu_ld=no
     fi
     ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
   openbsd*)
     with_gnu_ld=no
     ;;
@@ -124,8 +157,14 @@ esac
 
 ld_shlibs=yes
 if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
   case "$host_os" in
-    aix3* | aix4* | aix5*)
+    aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
         ld_shlibs=no
@@ -138,7 +177,7 @@ if test "$with_gnu_ld" = yes; then
       # that the semantics of dynamic libraries on AmigaOS, at least up
       # to version 4, is to share data among multiple programs linked
       # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can use
+      # behavior of shared libraries on other platforms, we cannot use
       # them.
       ld_shlibs=no
       ;;
@@ -149,7 +188,7 @@ if test "$with_gnu_ld" = yes; then
         ld_shlibs=no
       fi
       ;;
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
@@ -159,9 +198,20 @@ if test "$with_gnu_ld" = yes; then
         ld_shlibs=no
       fi
       ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
     netbsd*)
       ;;
-    solaris* | sysv5*)
+    solaris*)
       if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
         ld_shlibs=no
       elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
@@ -170,6 +220,20 @@ if test "$with_gnu_ld" = yes; then
         ld_shlibs=no
       fi
       ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
     sunos4*)
       hardcode_direct=yes
       ;;
@@ -181,10 +245,8 @@ if test "$with_gnu_ld" = yes; then
       fi
       ;;
   esac
-  if test "$ld_shlibs" = yes; then
-    # Unlike libtool, we use -rpath here, not --rpath, since the documented
-    # option of GNU ld is called -rpath, not --rpath.
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
   fi
 else
   case "$host_os" in
@@ -198,7 +260,7 @@ else
         hardcode_direct=unsupported
       fi
       ;;
-    aix4* | aix5*)
+    aix[4-9]*)
       if test "$host_cpu" = ia64; then
         # On IA64, the linker does run time linking by default, so we don't
         # have to do anything special.
@@ -208,13 +270,14 @@ else
         # Test if we are trying to use run time linking or normal
         # AIX style linking. If -brtl is somewhere in LDFLAGS, we
         # need to do runtime linking.
-        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
           for ld_flag in $LDFLAGS; do
             if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
               aix_use_runtimelinking=yes
               break
             fi
           done
+          ;;
         esac
       fi
       hardcode_direct=yes
@@ -226,7 +289,7 @@ else
             strings "$collect2name" | grep resolve_lib_name >/dev/null
           then
             # We have reworked collect2
-            hardcode_direct=yes
+            :
           else
             # We have old collect2
             hardcode_direct=unsupported
@@ -234,6 +297,7 @@ else
             hardcode_libdir_flag_spec='-L$libdir'
             hardcode_libdir_separator=
           fi
+          ;;
         esac
       fi
       # Begin _LT_AC_SYS_LIBPATH_AIX.
@@ -266,9 +330,9 @@ else
       # see comment about different semantics on the GNU ld section
       ld_shlibs=no
       ;;
-    bsdi4*)
+    bsdi[45]*)
       ;;
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -277,8 +341,17 @@ else
       libext=lib
       ;;
     darwin* | rhapsody*)
-      if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
-        hardcode_direct=no
+      hardcode_direct=no
+      if test "$GCC" = yes ; then
+        :
+      else
+        case $cc_basename in
+          xlc*)
+            ;;
+          *)
+            ld_shlibs=no
+            ;;
+        esac
       fi
       ;;
     dgux*)
@@ -295,7 +368,7 @@ else
       hardcode_direct=yes
       hardcode_minus_L=yes
       ;;
-    freebsd*)
+    freebsd* | dragonfly*)
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
       ;;
@@ -307,24 +380,25 @@ else
       # but as the default location of the library.
       hardcode_minus_L=yes
       ;;
-    hpux10* | hpux11*)
+    hpux10*)
       if test "$with_gnu_ld" = no; then
-        case "$host_cpu" in
-          hppa*64*)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
-            hardcode_direct=no
-            ;;
-          ia64*)
-            hardcode_libdir_flag_spec='-L$libdir'
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
             hardcode_direct=no
-            # hardcode_minus_L: Not really in the search PATH,
-            # but as the default location of the library.
-            hardcode_minus_L=yes
             ;;
           *)
-            hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-            hardcode_libdir_separator=:
             hardcode_direct=yes
             # hardcode_minus_L: Not really in the search PATH,
             # but as the default location of the library.
@@ -347,18 +421,22 @@ else
       hardcode_libdir_separator=:
       ;;
     openbsd*)
-      hardcode_direct=yes
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-        hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
       else
-        case "$host_os" in
-          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-            hardcode_libdir_flag_spec='-R$libdir'
-            ;;
-          *)
-            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-            ;;
-        esac
+        ld_shlibs=no
       fi
       ;;
     os2*)
@@ -378,8 +456,6 @@ else
       fi
       hardcode_libdir_separator=:
       ;;
-    sco3.2v5*)
-      ;;
     solaris*)
       hardcode_libdir_flag_spec='-R$libdir'
       ;;
@@ -408,14 +484,11 @@ else
         ld_shlibs=yes
       fi
       ;;
-    sysv4.2uw2*)
-      hardcode_direct=yes
-      hardcode_minus_L=no
-      ;;
-    sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
       ;;
-    sysv5*)
-      hardcode_libdir_flag_spec=
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
       ;;
     uts4*)
       hardcode_libdir_flag_spec='-L$libdir'
@@ -427,35 +500,55 @@ else
 fi
 
 # Check dynamic linker characteristics
-# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
 libname_spec='lib$name'
 case "$host_os" in
   aix3*)
+    library_names_spec='$libname.a'
     ;;
-  aix4* | aix5*)
+  aix[4-9]*)
+    library_names_spec='$libname$shrext'
     ;;
   amigaos*)
+    library_names_spec='$libname.a'
     ;;
   beos*)
+    library_names_spec='$libname$shrext'
     ;;
-  bsdi4*)
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
     ;;
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
     ;;
   darwin* | rhapsody*)
     shrext=.dylib
+    library_names_spec='$libname$shrext'
     ;;
   dgux*)
+    library_names_spec='$libname$shrext'
     ;;
   freebsd1*)
     ;;
-  freebsd*)
+  freebsd* | dragonfly*)
+    case "$host_os" in
+      freebsd[123]*)
+        library_names_spec='$libname$shrext$versuffix' ;;
+      *)
+        library_names_spec='$libname$shrext' ;;
+    esac
     ;;
   gnu*)
+    library_names_spec='$libname$shrext'
     ;;
   hpux9* | hpux10* | hpux11*)
-    case "$host_cpu" in
+    case $host_cpu in
       ia64*)
         shrext=.so
         ;;
@@ -466,8 +559,13 @@ case "$host_os" in
         shrext=.sl
         ;;
     esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
     ;;
   irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
     case "$host_os" in
       irix5* | nonstopux*)
         libsuff= shlibsuff=
@@ -484,42 +582,62 @@ case "$host_os" in
     ;;
   linux*oldld* | linux*aout* | linux*coff*)
     ;;
-  linux*)
+  linux* | k*bsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
     ;;
   netbsd*)
+    library_names_spec='$libname$shrext'
     ;;
   newsos6)
+    library_names_spec='$libname$shrext'
     ;;
-  nto-qnx)
+  nto-qnx*)
+    library_names_spec='$libname$shrext'
     ;;
   openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
     ;;
   os2*)
     libname_spec='$name'
     shrext=.dll
+    library_names_spec='$libname.a'
     ;;
   osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
     ;;
-  sco3.2v5*)
+  rdos*)
     ;;
   solaris*)
+    library_names_spec='$libname$shrext'
     ;;
   sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
     ;;
-  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
     ;;
   sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
     ;;
   uts4*)
+    library_names_spec='$libname$shrext'
     ;;
 esac
 
 sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
 shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
 escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
 
-sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
 
 # How to pass a linker flag through the compiler.
 wl="$escaped_wl"
@@ -530,6 +648,12 @@ libext="$libext"
 # Shared library suffix (normally "so").
 shlibext="$shlibext"
 
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
 # Flag to hardcode \$libdir into a binary during linking.
 # This must work even if \$libdir does not exist.
 hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
index 204218c..61cb4bc 100644 (file)
@@ -1,38 +1,31 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   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.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2010-05-21'
+timestamp='2013-10-01'
 
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
+# 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
+# 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.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# 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
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -75,9 +68,7 @@ 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, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright 1992-2013 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."
@@ -125,13 +116,17 @@ esac
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  linux-musl* | 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/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -154,12 +149,12 @@ 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 | -microblaze)
+       -apple | -axis | -knuth | -cray | -microblaze*)
                os=
                basic_machine=$1
                ;;
-        -bluegene*)
-               os=-cnk
+       -bluegene*)
+               os=-cnk
                ;;
        -sim | -cisco | -oki | -wec | -winbond)
                os=
@@ -175,10 +170,10 @@ case $os in
                os=-chorusos
                basic_machine=$1
                ;;
-       -chorusrdb)
-               os=-chorusrdb
+       -chorusrdb)
+               os=-chorusrdb
                basic_machine=$1
-               ;;
+               ;;
        -hiux*)
                os=-hiuxwe2
                ;;
@@ -223,6 +218,12 @@ case $os in
        -isc*)
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
                ;;
+       -lynx*178)
+               os=-lynxos178
+               ;;
+       -lynx*5)
+               os=-lynxos5
+               ;;
        -lynx*)
                os=-lynxos
                ;;
@@ -247,20 +248,28 @@ case $basic_machine in
        # Some are omitted here because they have special meanings below.
        1750a | 580 \
        | a29k \
+       | aarch64 | aarch64_be \
        | 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 | avr32 \
+       | arc | arceb \
+       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+       | avr | avr32 \
+       | be32 | be64 \
        | bfin \
-       | c4x | clipper \
+       | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
+       | epiphany \
        | fido | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
+       | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep | metag \
+       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
@@ -278,29 +287,32 @@ case $basic_machine in
        | mipsisa64r2 | mipsisa64r2el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipsr5900 | mipsr5900el \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
        | moxie \
        | mt \
        | msp430 \
-       | nios | nios2 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | or32 \
+       | open8 \
+       | or1k | or32 \
        | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
-       | rx \
+       | rl78 | 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 \
-       | spu | strongarm \
-       | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
-       | v850 | v850e \
+       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
        | we32k \
-       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
                basic_machine=$basic_machine-unknown
                ;;
@@ -313,8 +325,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-               # Motorola 68HC11/12.
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -324,6 +335,21 @@ case $basic_machine in
                basic_machine=mt-unknown
                ;;
 
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+       xgate)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
@@ -338,25 +364,31 @@ case $basic_machine in
        # Recognize the basic CPU types with company name.
        580-* \
        | a29k-* \
+       | aarch64-* | aarch64_be-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
+       | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
+       | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | microblaze-* | microblazeel-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
@@ -374,30 +406,34 @@ case $basic_machine in
        | mipsisa64r2-* | mipsisa64r2el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipsr5900-* | mipsr5900el-* \
        | mipstx39-* | mipstx39el-* \
        | mmix-* \
        | mt-* \
        | msp430-* \
-       | nios-* | nios2-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
        | pyramid-* \
-       | romp-* | rs6000-* | rx-* \
+       | rl78-* | 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-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile-* | tilegx-* \
+       | tile*-* \
        | tron-* \
        | ubicom32-* \
-       | v850-* | v850e-* | vax-* \
+       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+       | vax-* \
        | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
        | ymp-* \
        | z8k-* | z80-*)
@@ -422,7 +458,7 @@ case $basic_machine in
                basic_machine=a29k-amd
                os=-udi
                ;;
-       abacus)
+       abacus)
                basic_machine=abacus-unknown
                ;;
        adobe68k)
@@ -505,7 +541,7 @@ case $basic_machine in
                basic_machine=c90-cray
                os=-unicos
                ;;
-        cegcc)
+       cegcc)
                basic_machine=arm-unknown
                os=-cegcc
                ;;
@@ -537,7 +573,7 @@ case $basic_machine in
                basic_machine=craynv-cray
                os=-unicosmp
                ;;
-       cr16)
+       cr16 | cr16-*)
                basic_machine=cr16-unknown
                os=-elf
                ;;
@@ -695,7 +731,6 @@ case $basic_machine in
        i370-ibm* | ibm*)
                basic_machine=i370-ibm
                ;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
        i*86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
@@ -753,11 +788,15 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
-        microblaze)
+       microblaze*)
                basic_machine=microblaze-xilinx
                ;;
+       mingw64)
+               basic_machine=x86_64-pc
+               os=-mingw64
+               ;;
        mingw32)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -792,10 +831,18 @@ case $basic_machine in
        ms1-*)
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
+       msys)
+               basic_machine=i686-pc
+               os=-msys
+               ;;
        mvs)
                basic_machine=i370-ibm
                os=-mvs
                ;;
+       nacl)
+               basic_machine=le32-unknown
+               os=-nacl
+               ;;
        ncr3000)
                basic_machine=i486-ncr
                os=-sysv4
@@ -860,6 +907,12 @@ case $basic_machine in
        np1)
                basic_machine=np1-gould
                ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
        nsr-tandem)
                basic_machine=nsr-tandem
                ;;
@@ -942,9 +995,10 @@ case $basic_machine in
                ;;
        power)  basic_machine=power-ibm
                ;;
-       ppc)    basic_machine=powerpc-unknown
+       ppc | ppcbe)    basic_machine=powerpc-unknown
                ;;
-       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        ppcle | powerpclittle | ppc-le | powerpc-little)
                basic_machine=powerpcle-unknown
@@ -969,7 +1023,11 @@ case $basic_machine in
                basic_machine=i586-unknown
                os=-pw32
                ;;
-       rdos)
+       rdos | rdos64)
+               basic_machine=x86_64-pc
+               os=-rdos
+               ;;
+       rdos32)
                basic_machine=i386-pc
                os=-rdos
                ;;
@@ -1038,6 +1096,9 @@ case $basic_machine in
                basic_machine=i860-stratus
                os=-sysv4
                ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        sun2)
                basic_machine=m68000-sun
                ;;
@@ -1094,13 +1155,8 @@ case $basic_machine in
                basic_machine=t90-cray
                os=-unicos
                ;;
-        # This must be matched before tile*.
-        tilegx*)
-               basic_machine=tilegx-unknown
-               os=-linux-gnu
-               ;;
        tile*)
-               basic_machine=tile-unknown
+               basic_machine=$basic_machine-unknown
                os=-linux-gnu
                ;;
        tx39)
@@ -1170,6 +1226,9 @@ case $basic_machine in
        xps | xps100)
                basic_machine=xps100-honeywell
                ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
        ymp)
                basic_machine=ymp-cray
                os=-unicos
@@ -1267,11 +1326,11 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+       # 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
+       -auroraux)
+               os=-auroraux
                ;;
        -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1295,21 +1354,21 @@ case $os in
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
              | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* \
+             | -sym* | -kopensolaris* | -plan9* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
              | -aos* | -aros* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -openbsd* | -solidbsd* \
+             | -bitrig* | -openbsd* | -solidbsd* \
              | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-uclibc* \
+             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1356,7 +1415,7 @@ case $os in
        -opened*)
                os=-openedition
                ;;
-        -os400*)
+       -os400*)
                os=-os400
                ;;
        -wince*)
@@ -1405,7 +1464,7 @@ case $os in
        -sinix*)
                os=-sysv4
                ;;
-        -tpf*)
+       -tpf*)
                os=-tpf
                ;;
        -triton*)
@@ -1441,17 +1500,14 @@ case $os in
        -aros*)
                os=-aros
                ;;
-       -kaos*)
-               os=-kaos
-               ;;
        -zvmoe)
                os=-zvmoe
                ;;
        -dicos*)
                os=-dicos
                ;;
-        -nacl*)
-               ;;
+       -nacl*)
+               ;;
        -none)
                ;;
        *)
@@ -1474,10 +1530,10 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+       score-*)
                os=-elf
                ;;
-        spu-*)
+       spu-*)
                os=-elf
                ;;
        *-acorn)
@@ -1489,8 +1545,14 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
-        c4x-* | tic4x-*)
-               os=-coff
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       c8051-*)
+               os=-elf
+               ;;
+       hexagon-*)
+               os=-elf
                ;;
        tic54x-*)
                os=-coff
@@ -1519,14 +1581,11 @@ case $basic_machine in
                ;;
        m68000-sun)
                os=-sunos3
-               # This also exists in the configure program, but was not the
-               # default.
-               # os=-sunos4
                ;;
        m68*-cisco)
                os=-aout
                ;;
-        mep-*)
+       mep-*)
                os=-elf
                ;;
        mips*-cisco)
@@ -1535,6 +1594,9 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
+       or1k-*)
+               os=-elf
+               ;;
        or32-*)
                os=-coff
                ;;
@@ -1553,7 +1615,7 @@ case $basic_machine in
        *-ibm)
                os=-aix
                ;;
-       *-knuth)
+       *-knuth)
                os=-mmixware
                ;;
        *-wec)
index df8eea7..25a39e6 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-03-27.16; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011, 2012 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
@@ -28,7 +28,7 @@ scriptversion=2009-04-28.21; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
@@ -40,11 +40,11 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +57,12 @@ EOF
     ;;
 esac
 
+# A tabulation character.
+tab='  '
+# A newline character.
+nl='
+'
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -90,10 +96,24 @@ 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"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 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=msvc7
+fi
+
+if test "$depmode" = xlc; then
+   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+   gccflag=-qmakedep=gcc,-MF
+   depmode=gcc
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -148,20 +168,21 @@ gcc)
 ## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+  tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -193,18 +214,15 @@ sgi)
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    >> "$depfile"
   else
@@ -216,10 +234,17 @@ sgi)
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # 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
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # 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.
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
@@ -249,12 +274,11 @@ aix)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
+    # 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:'.
+    # '$object: dependent.h' and one to simply 'dependent.h:'.
     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"
+    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -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
@@ -265,23 +289,26 @@ aix)
   ;;
 
 icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+  # However on
+  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
   # ICC 7.0 will fill foo.d with something like
   #    foo.o: sub/foo.c
   #    foo.o: sub/foo.h
-  # which is wrong.  We want:
+  # which is wrong.  We want
   #    sub/foo.o: sub/foo.c
   #    sub/foo.o: sub/foo.h
   #    sub/foo.c:
   #    sub/foo.h:
   # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using :
+  # and will wrap long lines using '\':
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-
+  # tcc 0.9.26 (FIXME still under development at the moment of writing)
+  # will emit a similar output, but also prepend the continuation lines
+  # with horizontal tabulation characters.
   "$@" -MD -MF "$tmpdepfile"
   stat=$?
   if test $stat -eq 0; then :
@@ -290,15 +317,21 @@ icc)
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Each line is of the form 'foo.o: dependent.h',
+  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  # '$object: dependent.h' and one to simply 'dependent.h:'.
+  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
+    < "$tmpdepfile" > "$depfile"
+  sed '
+    s/[ '"$tab"'][ '"$tab"']*/ /g
+    s/^ *//
+    s/ *\\*$//
+    s/^[^:]*: *//
+    /^$/d
+    /:$/d
+    s/$/ :/
+  ' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -334,7 +367,7 @@ hp2)
   done
   if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
               s/^ *//
               s/ \\*$//
@@ -349,9 +382,9 @@ hp2)
 
 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'.
+   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
+   # dependencies in 'foo.d' instead, so we check for that too.
    # Subdirectories are respected.
    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    test "x$dir" = "x$object" && dir=
@@ -397,14 +430,59 @@ tru64)
    done
    if test -f "$tmpdepfile"; then
       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"
+      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    else
       echo "#dummy" > "$depfile"
    fi
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # 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
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
@@ -422,7 +500,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,15 +520,14 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
+  tr ' ' "$nl" < "$tmpdepfile" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -503,9 +580,10 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -525,7 +603,7 @@ cpp)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -594,8 +672,8 @@ msvisualcpp)
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
-  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
index da544f8..3686377 100644 (file)
@@ -1,8 +1,7 @@
 # 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1993-2013 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
 # You should have received a copy of the GNU General Public License along with
 # 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([
+AC_DEFUN([pds_AC_DOS_PATHS], [
+  AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths], [
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
 neither MSDOS nor Windows nor OS2
 #endif
-],
+]])],
         [ac_cv_dos_paths=yes],
-        [ac_cv_dos_paths=no])
-      ])
+        [ac_cv_dos_paths=no])])
 
-    if test x"$ac_cv_dos_paths" = xyes; then
-      AC_DEFINE_UNQUOTED([HAVE_DOS_PATHS], 1,
-                         [Define if the system uses DOS-style pathnames.])
-    fi
-  ])
+  AS_IF([test x"$ac_cv_dos_paths" = xyes],
+  [ AC_DEFINE_UNQUOTED([HAVE_DOS_PATHS], 1,
+                       [Define if the system uses DOS-style pathnames.])])
+])
index a374f03..f84e6a5 100644 (file)
@@ -1,10 +1,8 @@
-# gettext.m4 serial 28 (gettext-0.13)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# gettext.m4 serial 63 (gettext-0.18)
+dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 dnl
 dnl This file can can be used in projects which are not available under
 dnl the GNU General Public License or the GNU Library General Public
@@ -17,7 +15,7 @@ dnl They are *not* in the public domain.
 
 dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
 
 dnl Macro to add for using GNU gettext.
 
@@ -62,11 +60,18 @@ AC_DEFUN([AM_GNU_GETTEXT],
   ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
     [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
 ])])])])])
+  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
   ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
     [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
 ])])])])
-  define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
-  define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
+  define([gt_included_intl],
+    ifelse([$1], [external],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
 
   AC_REQUIRE([AM_PO_SUBDIRS])dnl
   ifelse(gt_included_intl, yes, [
@@ -80,7 +85,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
   dnl Sometimes libintl requires libiconv, so first search for libiconv.
   dnl Ideally we would do this search only after the
   dnl      if test "$USE_NLS" = "yes"; then
-  dnl        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
   dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
   dnl the configure script would need to contain the same shell code
   dnl again, outside any 'if'. There are two solutions:
@@ -92,8 +97,11 @@ AC_DEFUN([AM_GNU_GETTEXT],
     AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
   ])
 
+  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
   dnl Set USE_NLS.
-  AM_NLS
+  AC_REQUIRE([AM_NLS])
 
   ifelse(gt_included_intl, yes, [
     BUILD_INCLUDED_LIBINTL=no
@@ -103,16 +111,25 @@ AC_DEFUN([AM_GNU_GETTEXT],
   LTLIBINTL=
   POSUB=
 
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
   dnl If we use NLS figure out what method
   if test "$USE_NLS" = "yes"; then
     gt_use_preinstalled_gnugettext=no
     ifelse(gt_included_intl, yes, [
       AC_MSG_CHECKING([whether included gettext is requested])
-      AC_ARG_WITH(included-gettext,
+      AC_ARG_WITH([included-gettext],
         [  --with-included-gettext use the GNU gettext library included here],
         nls_cv_force_use_gnu_gettext=$withval,
         nls_cv_force_use_gnu_gettext=no)
-      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
 
       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
@@ -121,28 +138,35 @@ AC_DEFUN([AM_GNU_GETTEXT],
         dnl to use.  If GNU gettext is available we use this.  Else we have
         dnl to fall back to GNU NLS library.
 
-        dnl Add a version number to the cache macros.
-        define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
-        define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
-        define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-
-        AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
-         [AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
 #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
 #endif
 changequote(,)dnl
 typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
 changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
 extern int *_nl_domain_bindings;],
             [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
-            gt_cv_func_gnugettext_libc=yes,
-            gt_cv_func_gnugettext_libc=no)])
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
 
-        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
           dnl Sometimes libintl requires libiconv, so first search for libiconv.
           ifelse(gt_included_intl, yes, , [
             AM_ICONV_LINK
@@ -153,52 +177,40 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
           dnl even if libiconv doesn't exist.
           AC_LIB_LINKFLAGS_BODY([intl])
           AC_CACHE_CHECK([for GNU gettext in libintl],
-            gt_cv_func_gnugettext_libintl,
+            [$gt_func_gnugettext_libintl],
            [gt_save_CPPFLAGS="$CPPFLAGS"
             CPPFLAGS="$CPPFLAGS $INCINTL"
             gt_save_LIBS="$LIBS"
             LIBS="$LIBS $LIBINTL"
             dnl Now see whether libintl exists and does not depend on libiconv.
             AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();],
+const char *_nl_expand_alias (const char *);],
               [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-              gt_cv_func_gnugettext_libintl=yes,
-              gt_cv_func_gnugettext_libintl=no)
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
             dnl Now see whether libintl exists and depends on libiconv.
-            if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
               AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();],
+const char *_nl_expand_alias (const char *);],
                 [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
                [LIBINTL="$LIBINTL $LIBICONV"
                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                gt_cv_func_gnugettext_libintl=yes
+                eval "$gt_func_gnugettext_libintl=yes"
                ])
             fi
             CPPFLAGS="$gt_save_CPPFLAGS"
@@ -209,8 +221,8 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
         dnl use it.  But if this macro is used in GNU gettext, and GNU
         dnl gettext is already preinstalled in libintl, we update this
         dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
-        if test "$gt_cv_func_gnugettext_libc" = "yes" \
-           || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
                 && test "$PACKAGE" != gettext-runtime \
                 && test "$PACKAGE" != gettext-tools; }; then
           gt_use_preinstalled_gnugettext=yes
@@ -233,11 +245,12 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
         dnl Mark actions used to generate GNU NLS library.
         BUILD_INCLUDED_LIBINTL=yes
         USE_INCLUDED_LIBINTL=yes
-        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
-        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
         LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
       fi
 
+      CATOBJEXT=
       if test "$gt_use_preinstalled_gnugettext" = "yes" \
          || test "$nls_cv_use_gnu_gettext" = "yes"; then
         dnl Mark actions to use GNU gettext tools.
@@ -245,9 +258,18 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
       fi
     ])
 
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
     if test "$gt_use_preinstalled_gnugettext" = "yes" \
        || test "$nls_cv_use_gnu_gettext" = "yes"; then
-      AC_DEFINE(ENABLE_NLS, 1,
+      AC_DEFINE([ENABLE_NLS], [1],
         [Define to 1 if translation of program messages to the user's native language
    is requested.])
     else
@@ -260,7 +282,7 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
   if test "$USE_NLS" = "yes"; then
     AC_MSG_CHECKING([where the gettext function comes from])
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         gt_source="external libintl"
       else
         gt_source="libc"
@@ -274,16 +296,16 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
   if test "$USE_NLS" = "yes"; then
 
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         AC_MSG_CHECKING([how to link with libintl])
         AC_MSG_RESULT([$LIBINTL])
         AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
       fi
 
       dnl For backward compatibility. Some packages may be using this.
-      AC_DEFINE(HAVE_GETTEXT, 1,
+      AC_DEFINE([HAVE_GETTEXT], [1],
        [Define if the GNU gettext() function is already present or preinstalled.])
-      AC_DEFINE(HAVE_DCGETTEXT, 1,
+      AC_DEFINE([HAVE_DCGETTEXT], [1],
        [Define if the GNU dcgettext() function is already present or preinstalled.])
     fi
 
@@ -299,9 +321,9 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
     fi
 
     dnl Make all variables we use known to autoconf.
-    AC_SUBST(BUILD_INCLUDED_LIBINTL)
-    AC_SUBST(USE_INCLUDED_LIBINTL)
-    AC_SUBST(CATOBJEXT)
+    AC_SUBST([BUILD_INCLUDED_LIBINTL])
+    AC_SUBST([USE_INCLUDED_LIBINTL])
+    AC_SUBST([CATOBJEXT])
 
     dnl For backward compatibility. Some configure.ins may be using this.
     nls_cv_header_intl=
@@ -309,177 +331,51 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
 
     dnl For backward compatibility. Some Makefiles may be using this.
     DATADIRNAME=share
-    AC_SUBST(DATADIRNAME)
+    AC_SUBST([DATADIRNAME])
 
     dnl For backward compatibility. Some Makefiles may be using this.
     INSTOBJEXT=.mo
-    AC_SUBST(INSTOBJEXT)
+    AC_SUBST([INSTOBJEXT])
 
     dnl For backward compatibility. Some Makefiles may be using this.
     GENCAT=gencat
-    AC_SUBST(GENCAT)
+    AC_SUBST([GENCAT])
 
     dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
     if test "$USE_INCLUDED_LIBINTL" = yes; then
       INTLOBJS="\$(GETTOBJS)"
     fi
-    AC_SUBST(INTLOBJS)
+    AC_SUBST([INTLOBJS])
 
     dnl Enable libtool support if the surrounding package wishes it.
     INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
   ])
 
   dnl For backward compatibility. Some Makefiles may be using this.
   INTLLIBS="$LIBINTL"
-  AC_SUBST(INTLLIBS)
+  AC_SUBST([INTLLIBS])
 
   dnl Make all documented variables known to autoconf.
-  AC_SUBST(LIBINTL)
-  AC_SUBST(LTLIBINTL)
-  AC_SUBST(POSUB)
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  AC_SUBST([POSUB])
 ])
 
 
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
 [
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-  AC_REQUIRE([AC_PROG_RANLIB])dnl
-  AC_REQUIRE([AC_ISC_POSIX])dnl
-  AC_REQUIRE([AC_HEADER_STDC])dnl
-  AC_REQUIRE([AC_C_CONST])dnl
-  AC_REQUIRE([bh_C_SIGNED])dnl
-  AC_REQUIRE([AC_C_INLINE])dnl
-  AC_REQUIRE([AC_TYPE_OFF_T])dnl
-  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-  AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl
-  AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
-  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
-  AC_REQUIRE([gt_TYPE_WINT_T])dnl
-  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-  AC_REQUIRE([gt_TYPE_INTMAX_T])
-  AC_REQUIRE([gt_PRINTF_POSIX])
-  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-  AC_REQUIRE([AC_FUNC_MMAP])dnl
-  AC_REQUIRE([jm_GLIBC21])dnl
-  AC_REQUIRE([gt_INTDIV0])dnl
-  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
-  AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
-  AC_REQUIRE([gt_INTTYPES_PRI])dnl
-  AC_REQUIRE([gl_XSIZE])dnl
-
-  AC_CHECK_TYPE([ptrdiff_t], ,
-    [AC_DEFINE([ptrdiff_t], [long],
-       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
-    ])
-  AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h])
-  AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \
-mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \
-strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \
-__fsetlocking])
-
-  dnl Use the _snprintf function only if it is declared (because on NetBSD it
-  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
-  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
-  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
-
-  dnl Use the *_unlocked functions only if they are declared.
-  dnl (because some of them were defined without being declared in Solaris
-  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
-  dnl on Solaris 2.5.1 to run on Solaris 2.6).
-  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
-  gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
-  gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
-  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
-
-  case $gt_cv_func_printf_posix in
-    *yes) HAVE_POSIX_PRINTF=1 ;;
-    *) HAVE_POSIX_PRINTF=0 ;;
-  esac
-  AC_SUBST([HAVE_POSIX_PRINTF])
-  if test "$ac_cv_func_asprintf" = yes; then
-    HAVE_ASPRINTF=1
-  else
-    HAVE_ASPRINTF=0
-  fi
-  AC_SUBST([HAVE_ASPRINTF])
-  if test "$ac_cv_func_snprintf" = yes; then
-    HAVE_SNPRINTF=1
-  else
-    HAVE_SNPRINTF=0
-  fi
-  AC_SUBST([HAVE_SNPRINTF])
-  if test "$ac_cv_func_wprintf" = yes; then
-    HAVE_WPRINTF=1
-  else
-    HAVE_WPRINTF=0
-  fi
-  AC_SUBST([HAVE_WPRINTF])
-
-  AM_ICONV
-  AM_LANGINFO_CODESET
-  if test $ac_cv_header_locale_h = yes; then
-    AM_LC_MESSAGES
-  fi
-
-  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-  dnl because plural.y uses bison specific features. It requires at least
-  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-  dnl compile.
-  dnl bison is only needed for the maintainer (who touches plural.y). But in
-  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-  dnl the rule in general Makefile. Now, some people carelessly touch the
-  dnl files or have a broken "make" program, hence the plural.c rule will
-  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-  dnl present or too old.
-  AC_CHECK_PROGS([INTLBISON], [bison])
-  if test -z "$INTLBISON"; then
-    ac_verc_fail=yes
-  else
-    dnl Found it, now check the version.
-    AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
-    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-    case $ac_prog_version in
-      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
-         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-    esac
-    AC_MSG_RESULT([$ac_prog_version])
-  fi
-  if test $ac_verc_fail = yes; then
-    INTLBISON=:
-  fi
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
 ])
 
 
-dnl gt_CHECK_DECL(FUNC, INCLUDES)
-dnl Check whether a function is declared.
-AC_DEFUN([gt_CHECK_DECL],
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
 [
-  AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
-    [AC_TRY_COMPILE([$2], [
-#ifndef $1
-  char *p = (char *) $1;
-#endif
-], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
-  if test $ac_cv_have_decl_$1 = yes; then
-    gt_value=1
-  else
-    gt_value=0
-  fi
-  AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
-    [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
 ])
 
 
diff --git a/config/glibc21.m4 b/config/glibc21.m4
deleted file mode 100644 (file)
index 9c9f3db..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-# Test for the GNU C Library, version 2.1 or newer.
-# From Bruno Haible.
-
-AC_DEFUN([jm_GLIBC21],
-  [
-    AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
-      ac_cv_gnu_library_2_1,
-      [AC_EGREP_CPP([Lucky GNU user],
-       [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
-  Lucky GNU user
- #endif
-#endif
-       ],
-       ac_cv_gnu_library_2_1=yes,
-       ac_cv_gnu_library_2_1=no)
-      ]
-    )
-    AC_SUBST(GLIBC21)
-    GLIBC21="$ac_cv_gnu_library_2_1"
-  ]
-)
index c5f3579..e2041b9 100644 (file)
@@ -1,10 +1,8 @@
-# iconv.m4 serial AM4 (gettext-0.11.3)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# iconv.m4 serial 11 (gettext-0.18.1)
+dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
@@ -23,6 +21,7 @@ AC_DEFUN([AM_ICONV_LINK],
 [
   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
   dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
 
   dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
   dnl accordingly.
@@ -35,7 +34,7 @@ AC_DEFUN([AM_ICONV_LINK],
   am_save_CPPFLAGS="$CPPFLAGS"
   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
 
-  AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
     AC_TRY_LINK([#include <stdlib.h>
@@ -43,7 +42,7 @@ AC_DEFUN([AM_ICONV_LINK],
       [iconv_t cd = iconv_open("","");
        iconv(cd,NULL,NULL,NULL,NULL);
        iconv_close(cd);],
-      am_cv_func_iconv=yes)
+      [am_cv_func_iconv=yes])
     if test "$am_cv_func_iconv" != yes; then
       am_save_LIBS="$LIBS"
       LIBS="$LIBS $LIBICONV"
@@ -52,13 +51,110 @@ AC_DEFUN([AM_ICONV_LINK],
         [iconv_t cd = iconv_open("","");
          iconv(cd,NULL,NULL,NULL,NULL);
          iconv_close(cd);],
-        am_cv_lib_iconv=yes
-        am_cv_func_iconv=yes)
+        [am_cv_lib_iconv=yes]
+        [am_cv_func_iconv=yes])
       LIBS="$am_save_LIBS"
     fi
   ])
   if test "$am_cv_func_iconv" = yes; then
-    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\263";
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE([HAVE_ICONV], [1],
+      [Define if you have the iconv() function and it works.])
   fi
   if test "$am_cv_lib_iconv" = yes; then
     AC_MSG_CHECKING([how to link with libiconv])
@@ -70,16 +166,31 @@ AC_DEFUN([AM_ICONV_LINK],
     LIBICONV=
     LTLIBICONV=
   fi
-  AC_SUBST(LIBICONV)
-  AC_SUBST(LTLIBICONV)
+  AC_SUBST([LIBICONV])
+  AC_SUBST([LTLIBICONV])
 ])
 
-AC_DEFUN([AM_ICONV],
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl   warnings.
+m4_define([gl_iconv_AC_DEFUN],
+  m4_version_prereq([2.64],
+    [[AC_DEFUN_ONCE(
+        [$1], [$2])]],
+    [[AC_DEFUN(
+        [$1], [$2])]]))
+gl_iconv_AC_DEFUN([AM_ICONV],
 [
   AM_ICONV_LINK
   if test "$am_cv_func_iconv" = yes; then
     AC_MSG_CHECKING([for iconv declaration])
-    AC_CACHE_VAL(am_cv_proto_iconv, [
+    AC_CACHE_VAL([am_cv_proto_iconv], [
       AC_TRY_COMPILE([
 #include <stdlib.h>
 #include <iconv.h>
@@ -92,12 +203,12 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
 #else
 size_t iconv();
 #endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
       am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-    AC_MSG_RESULT([$]{ac_t:-
-         }[$]am_cv_proto_iconv)
-    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+    AC_MSG_RESULT([
+         $am_cv_proto_iconv])
+    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
       [Define as const if the declaration of iconv() needs const.])
   fi
 ])
index 6781b98..a9244eb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+       # Protect names problematic for `test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
        shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -200,7 +208,11 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for `test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
        /*) prefix='/';;
-       -*) prefix='./';;
+       [-=\(\)!]*) prefix='./';;
        *)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-       test -z "$d" && continue
+       test X"$d" = X && continue
 
        prefix=$prefix$d
        if test -d "$prefix"; then
diff --git a/config/intdiv0.m4 b/config/intdiv0.m4
deleted file mode 100644 (file)
index 55dddcf..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-# intdiv0.m4 serial 1 (gettext-0.11.3)
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gt_INTDIV0],
-[
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
-  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
-    gt_cv_int_divbyzero_sigfpe,
-    [
-      AC_TRY_RUN([
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-#ifdef __cplusplus
-sigfpe_handler (int sig)
-#else
-sigfpe_handler (sig) int sig;
-#endif
-{
-  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
-  exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
-  signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
-  signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL.  */
-#if defined (__sparc__) && defined (__linux__)
-  signal (SIGILL, sigfpe_handler);
-#endif
-
-  z = x / y;
-  nan = y / y;
-  exit (1);
-}
-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
-        [
-          # Guess based on the CPU.
-          case "$host_cpu" in
-            alpha* | i[34567]86 | m68k | s390*)
-              gt_cv_int_divbyzero_sigfpe="guessing yes";;
-            *)
-              gt_cv_int_divbyzero_sigfpe="guessing no";;
-          esac
-        ])
-    ])
-  case "$gt_cv_int_divbyzero_sigfpe" in
-    *yes) value=1;;
-    *) value=0;;
-  esac
-  AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
-    [Define if integer division by zero raises signal SIGFPE.])
-])
diff --git a/config/intlmacosx.m4 b/config/intlmacosx.m4
new file mode 100644 (file)
index 0000000..dd91025
--- /dev/null
@@ -0,0 +1,51 @@
+# intlmacosx.m4 serial 3 (gettext-0.18)
+dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in MacOS X 10.2.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    [gt_cv_func_CFPreferencesCopyAppValue],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+       [CFPreferencesCopyAppValue(NULL, NULL)],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/config/intmax.m4 b/config/intmax.m4
deleted file mode 100644 (file)
index dfb08cc..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# intmax.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-dnl Test whether the system has the 'intmax_t' type, but don't attempt to
-dnl find a replacement if it is lacking.
-
-AC_DEFUN([gt_TYPE_INTMAX_T],
-[
-  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-  AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
-    [AC_TRY_COMPILE([
-#include <stddef.h> 
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
-  if test $gt_cv_c_intmax_t = yes; then
-    AC_DEFINE(HAVE_INTMAX_T, 1,
-      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
diff --git a/config/inttypes-pri.m4 b/config/inttypes-pri.m4
deleted file mode 100644 (file)
index fd007c3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# inttypes-pri.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values.  This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
-  AC_REQUIRE([gt_HEADER_INTTYPES_H])
-  if test $gt_cv_header_inttypes_h = yes; then
-    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
-      gt_cv_inttypes_pri_broken,
-      [
-        AC_TRY_COMPILE([#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
-      ])
-  fi
-  if test "$gt_cv_inttypes_pri_broken" = yes; then
-    AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
-      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
-  fi
-])
diff --git a/config/inttypes.m4 b/config/inttypes.m4
deleted file mode 100644 (file)
index ab370ff..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# inttypes.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
-# <sys/types.h>.
-
-AC_DEFUN([gt_HEADER_INTTYPES_H],
-[
-  AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
-  [
-    AC_TRY_COMPILE(
-      [#include <sys/types.h>
-#include <inttypes.h>],
-      [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
-  ])
-  if test $gt_cv_header_inttypes_h = yes; then
-    AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
-      [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
-  fi
-])
diff --git a/config/inttypes_h.m4 b/config/inttypes_h.m4
deleted file mode 100644 (file)
index f342eba..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# inttypes_h.m4 serial 5 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
-[
-  AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <inttypes.h>],
-    [uintmax_t i = (uintmax_t) -1;],
-    jm_ac_cv_header_inttypes_h=yes,
-    jm_ac_cv_header_inttypes_h=no)])
-  if test $jm_ac_cv_header_inttypes_h = yes; then
-    AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
-      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
diff --git a/config/isc-posix.m4 b/config/isc-posix.m4
deleted file mode 100644 (file)
index 1319dd1..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# isc-posix.m4 serial 2 (gettext-0.11.2)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-# This file is not needed with autoconf-2.53 and newer.  Remove it in 2005.
-
-# This test replaces the one in autoconf.
-# Currently this macro should have the same name as the autoconf macro
-# because gettext's gettext.m4 (distributed in the automake package)
-# still uses it.  Otherwise, the use in gettext.m4 makes autoheader
-# give these diagnostics:
-#   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
-#   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-
-undefine([AC_ISC_POSIX])
-
-AC_DEFUN([AC_ISC_POSIX],
-  [
-    dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
-    AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
-  ]
-)
diff --git a/config/lcmessage.m4 b/config/lcmessage.m4
deleted file mode 100644 (file)
index ffd4008..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# lcmessage.m4 serial 3 (gettext-0.11.3)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl   Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([AM_LC_MESSAGES],
-[
-  AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
-    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
-       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
-  if test $am_cv_val_LC_MESSAGES = yes; then
-    AC_DEFINE(HAVE_LC_MESSAGES, 1,
-      [Define if your <locale.h> file defines LC_MESSAGES.])
-  fi
-])
index 38aeaec..ebb3052 100644 (file)
@@ -1,10 +1,8 @@
-# lib-ld.m4 serial 3 (gettext-0.13)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# lib-ld.m4 serial 4 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl Subroutines of libtool.m4,
 dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
@@ -12,7 +10,7 @@ dnl with libtool.m4.
 
 dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
 AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
@@ -25,7 +23,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
 
 dnl From libtool-1.4. Sets the variable LD.
 AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
+[AC_ARG_WITH([gnu-ld],
 [  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
 AC_REQUIRE([AC_PROG_CC])dnl
@@ -61,7 +59,7 @@ if test "$GCC" = yes; then
       # Canonicalize the path of ld
       ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
       done
       test -z "$LD" && LD="$ac_prog"
       ;;
@@ -79,7 +77,7 @@ elif test "$with_gnu_ld" = yes; then
 else
   AC_MSG_CHECKING([for non-GNU ld])
 fi
-AC_CACHE_VAL(acl_cv_path_LD,
+AC_CACHE_VAL([acl_cv_path_LD],
 [if test -z "$LD"; then
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
   for ac_dir in $PATH; do
@@ -91,9 +89,9 @@ AC_CACHE_VAL(acl_cv_path_LD,
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
       *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break ;;
+        test "$with_gnu_ld" != no && break ;;
       *)
-       test "$with_gnu_ld" != yes && break ;;
+        test "$with_gnu_ld" != yes && break ;;
       esac
     fi
   done
@@ -103,9 +101,9 @@ else
 fi])
 LD="$acl_cv_path_LD"
 if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
+  AC_MSG_RESULT([$LD])
 else
-  AC_MSG_RESULT(no)
+  AC_MSG_RESULT([no])
 fi
 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
 AC_LIB_PROG_LD_GNU
index eeb200d..c73bd8e 100644 (file)
@@ -1,58 +1,66 @@
-# lib-link.m4 serial 4 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# lib-link.m4 serial 21 (gettext-0.18)
+dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
+AC_PREREQ([2.54])
+
 dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
 dnl the libraries corresponding to explicit and implicit dependencies.
 dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
 dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
 AC_DEFUN([AC_LIB_LINKFLAGS],
 [
   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   AC_REQUIRE([AC_LIB_RPATH])
-  define([Name],[translit([$1],[./-], [___])])
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([Name],[translit([$1],[./-], [___])])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
   AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
     AC_LIB_LINKFLAGS_BODY([$1], [$2])
     ac_cv_lib[]Name[]_libs="$LIB[]NAME"
     ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
     ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
   ])
   LIB[]NAME="$ac_cv_lib[]Name[]_libs"
   LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
   INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
   AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
   AC_SUBST([LIB]NAME)
   AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
   dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
   dnl results of this search when this library appears as a dependency.
   HAVE_LIB[]NAME=yes
-  undefine([Name])
-  undefine([NAME])
+  popdef([NAME])
+  popdef([Name])
 ])
 
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
 dnl searches for libname and the libraries corresponding to explicit and
 dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
 dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
 dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
 AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
 [
   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   AC_REQUIRE([AC_LIB_RPATH])
-  define([Name],[translit([$1],[./-], [___])])
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([Name],[translit([$1],[./-], [___])])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
 
   dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
   dnl accordingly.
@@ -66,13 +74,25 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
 
   AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
     ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIB[]NAME"
-    AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
+    AC_TRY_LINK([$3], [$4],
+      [ac_cv_lib[]Name=yes],
+      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
     LIBS="$ac_save_LIBS"
   ])
   if test "$ac_cv_lib[]Name" = yes; then
     HAVE_LIB[]NAME=yes
-    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
     AC_MSG_CHECKING([how to link with lib[]$1])
     AC_MSG_RESULT([$LIB[]NAME])
   else
@@ -82,24 +102,32 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
     CPPFLAGS="$ac_save_CPPFLAGS"
     LIB[]NAME=
     LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
   fi
   AC_SUBST([HAVE_LIB]NAME)
   AC_SUBST([LIB]NAME)
   AC_SUBST([LTLIB]NAME)
-  undefine([Name])
-  undefine([NAME])
+  AC_SUBST([LIB]NAME[_PREFIX])
+  popdef([NAME])
+  popdef([Name])
 ])
 
 dnl Determine the platform dependent parameters needed to use rpath:
-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-dnl hardcode_direct, hardcode_minus_L.
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
 AC_DEFUN([AC_LIB_RPATH],
 [
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
   AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
   AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
   AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
   AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-  AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
     CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
     ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
     . ./conftest.sh
@@ -107,34 +135,66 @@ AC_DEFUN([AC_LIB_RPATH],
     acl_cv_rpath=done
   ])
   wl="$acl_cv_wl"
-  libext="$acl_cv_libext"
-  shlibext="$acl_cv_shlibext"
-  hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-  hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-  hardcode_direct="$acl_cv_hardcode_direct"
-  hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
   dnl Determine whether the user wants rpath handling at all.
-  AC_ARG_ENABLE(rpath,
+  AC_ARG_ENABLE([rpath],
     [  --disable-rpath         do not hardcode runtime library paths],
     :, enable_rpath=yes)
 ])
 
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  define([acl_frompackage_]NAME, [$2])
+  popdef([NAME])
+  pushdef([PACK],[$2])
+  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  define([acl_libsinpackage_]PACKUP,
+    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+  popdef([PACKUP])
+  popdef([PACK])
+])
+
 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
 dnl the libraries corresponding to explicit and implicit dependencies.
 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
 AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
 [
-  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
+                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+  dnl Autoconf >= 2.61 supports dots in --with options.
+  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
   dnl By default, look in $includedir and $libdir.
   use_additional=yes
   AC_LIB_WITH_FINAL_PREFIX([
     eval additional_includedir=\"$includedir\"
     eval additional_libdir=\"$libdir\"
   ])
-  AC_LIB_ARG_WITH([lib$1-prefix],
-[  --with-lib$1-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
-  --without-lib$1-prefix     don't search for lib$1 in includedir and libdir],
+  AC_ARG_WITH(P_A_C_K[-prefix],
+[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
+  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
 [
     if test "X$withval" = "Xno"; then
       use_additional=no
@@ -146,7 +206,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
         ])
       else
         additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
       fi
     fi
 ])
@@ -155,6 +219,10 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
   LIB[]NAME=
   LTLIB[]NAME=
   INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+  dnl computed. So it has to be reset here.
+  HAVE_LIB[]NAME=
   rpathdirs=
   ltrpathdirs=
   names_already_handled=
@@ -194,22 +262,55 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
           found_la=
           found_so=
           found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-              found_dir="$additional_libdir"
-              found_so="$additional_libdir/lib$name.$shlibext"
-              if test -f "$additional_libdir/lib$name.la"; then
-                found_la="$additional_libdir/lib$name.la"
-              fi
-            else
-              if test -f "$additional_libdir/lib$name.$libext"; then
-                found_dir="$additional_libdir"
-                found_a="$additional_libdir/lib$name.$libext"
-                if test -f "$additional_libdir/lib$name.la"; then
-                  found_la="$additional_libdir/lib$name.la"
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
                 fi
               fi
             fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
           fi
           if test "X$found_dir" = "X"; then
             for x in $LDFLAGS $LTLIB[]NAME; do
@@ -217,21 +318,46 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-                    found_dir="$dir"
-                    found_so="$dir/lib$name.$shlibext"
-                    if test -f "$dir/lib$name.la"; then
-                      found_la="$dir/lib$name.la"
-                    fi
-                  else
-                    if test -f "$dir/lib$name.$libext"; then
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
                       found_dir="$dir"
-                      found_a="$dir/lib$name.$libext"
-                      if test -f "$dir/lib$name.la"; then
-                        found_la="$dir/lib$name.la"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
                       fi
                     fi
                   fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
                   ;;
               esac
               if test "X$found_dir" != "X"; then
@@ -246,7 +372,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
               dnl Linking with a shared library. We attempt to hardcode its
               dnl directory into the executable's runpath, unless it's the
               dnl standard /usr/lib.
-              if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+              if test "$enable_rpath" = no \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
                 dnl No hardcoding is needed.
                 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
               else
@@ -265,12 +393,12 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
                   ltrpathdirs="$ltrpathdirs $found_dir"
                 fi
                 dnl The hardcoding into $LIBNAME is system dependent.
-                if test "$hardcode_direct" = yes; then
+                if test "$acl_hardcode_direct" = yes; then
                   dnl Using DIR/libNAME.so during linking hardcodes DIR into the
                   dnl resulting binary.
                   LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
                 else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
                     dnl Use an explicit option to hardcode DIR into the resulting
                     dnl binary.
                     LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
@@ -301,13 +429,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
                     if test -z "$haveit"; then
                       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
                     fi
-                    if test "$hardcode_minus_L" != no; then
+                    if test "$acl_hardcode_minus_L" != no; then
                       dnl FIXME: Not sure whether we should use
                       dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
                       dnl here.
                       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
                     else
-                      dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
                       dnl here, because this doesn't fit in flags passed to the
                       dnl compiler. So give up. No hardcoding. This affects only
                       dnl very old systems.
@@ -332,8 +460,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
             dnl Assume the include files are nearby.
             additional_includedir=
             case "$found_dir" in
-              */lib | */lib/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+              */$acl_libdirstem2 | */$acl_libdirstem2/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
                 additional_includedir="$basedir/include"
                 ;;
             esac
@@ -350,7 +488,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
                 if test "X$additional_includedir" = "X/usr/local/include"; then
                   if test -n "$GCC"; then
                     case $host_os in
-                      linux*) haveit=yes;;
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                     esac
                   fi
                 fi
@@ -394,12 +532,14 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
                     dnl   3. if it's already present in $LDFLAGS or the already
                     dnl      constructed $LIBNAME,
                     dnl   4. if it doesn't exist as a directory.
-                    if test "X$additional_libdir" != "X/usr/lib"; then
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
                       haveit=
-                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
                         if test -n "$GCC"; then
                           case $host_os in
-                            linux*) haveit=yes;;
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                           esac
                         fi
                       fi
@@ -495,18 +635,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
     done
   done
   if test "X$rpathdirs" != "X"; then
-    if test -n "$hardcode_libdir_separator"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
       dnl Weird platform: only the last -rpath option counts, the user must
       dnl pass all path elements in one option. We can arrange that for a
       dnl single library, but not when more than one $LIBNAMEs are used.
       alldirs=
       for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
       done
-      dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
       acl_save_libdir="$libdir"
       libdir="$alldirs"
-      eval flag=\"$hardcode_libdir_flag_spec\"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
       libdir="$acl_save_libdir"
       LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
     else
@@ -514,7 +654,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
       for found_dir in $rpathdirs; do
         acl_save_libdir="$libdir"
         libdir="$found_dir"
-        eval flag=\"$hardcode_libdir_flag_spec\"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
         libdir="$acl_save_libdir"
         LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
       done
@@ -527,6 +667,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
       LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
     done
   fi
+  popdef([P_A_C_K])
+  popdef([PACKLIBS])
+  popdef([PACKUP])
+  popdef([PACK])
+  popdef([NAME])
 ])
 
 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
@@ -549,3 +694,81 @@ AC_DEFUN([AC_LIB_APPENDTOVAR],
     fi
   done
 ])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem" \
+             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem" \
+                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
index 8aff5a9..1601cea 100644 (file)
@@ -1,10 +1,8 @@
-# lib-prefix.m4 serial 3 (gettext-0.13)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
 
@@ -26,6 +24,7 @@ AC_DEFUN([AC_LIB_PREFIX],
   AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
   dnl By default, look in $includedir and $libdir.
   use_additional=yes
@@ -47,7 +46,7 @@ AC_DEFUN([AC_LIB_PREFIX],
         ])
       else
         additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
+        additional_libdir="$withval/$acl_libdirstem"
       fi
     fi
 ])
@@ -71,7 +70,7 @@ AC_DEFUN([AC_LIB_PREFIX],
         if test "X$additional_includedir" = "X/usr/local/include"; then
           if test -n "$GCC"; then
             case $host_os in
-              linux*) haveit=yes;;
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
             esac
           fi
         fi
@@ -89,7 +88,7 @@ AC_DEFUN([AC_LIB_PREFIX],
     dnl   2. if it's already present in $LDFLAGS,
     dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
     dnl   4. if it doesn't exist as a directory.
-    if test "X$additional_libdir" != "X/usr/lib"; then
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
       haveit=
       for x in $LDFLAGS; do
         AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
@@ -99,7 +98,7 @@ AC_DEFUN([AC_LIB_PREFIX],
         fi
       done
       if test -z "$haveit"; then
-        if test "X$additional_libdir" = "X/usr/local/lib"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
           if test -n "$GCC"; then
             case $host_os in
               linux*) haveit=yes;;
@@ -153,3 +152,73 @@ AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
   exec_prefix="$acl_save_exec_prefix"
   prefix="$acl_save_prefix"
 ])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a variable acl_libdirstem, containing the basename of the libdir, either
+dnl   "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl   "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64.
+  dnl On glibc systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+  dnl the compiler's default mode by looking at the compiler's library search
+  dnl path. If at least one of its elements ends in /lib64 or points to a
+  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+  dnl Otherwise we use the default, namely "lib".
+  dnl On Solaris systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  acl_libdirstem=lib
+  acl_libdirstem2=
+  case "$host_os" in
+    solaris*)
+      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+      dnl symlink is missing, so we set acl_libdirstem2 too.
+      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+        [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+        ])
+      if test $gl_cv_solaris_64bit = yes; then
+        acl_libdirstem=lib/64
+        case "$host_cpu" in
+          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+        esac
+      fi
+      ;;
+    *)
+      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+      if test -n "$searchpath"; then
+        acl_save_IFS="${IFS=   }"; IFS=":"
+        for searchdir in $searchpath; do
+          if test -d "$searchdir"; then
+            case "$searchdir" in
+              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+              */../ | */.. )
+                # Better ignore directories of this form. They are misleading.
+                ;;
+              *) searchdir=`cd "$searchdir" && pwd`
+                 case "$searchdir" in
+                   */lib64 ) acl_libdirstem=lib64 ;;
+                 esac ;;
+            esac
+          fi
+        done
+        IFS="$acl_save_IFS"
+      fi
+      ;;
+  esac
+  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+])
diff --git a/config/longdouble.m4 b/config/longdouble.m4
deleted file mode 100644 (file)
index 1333d2f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# longdouble.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-dnl Test whether the compiler supports the 'long double' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_LONGDOUBLE],
-[
-  AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
-    [if test "$GCC" = yes; then
-       gt_cv_c_long_double=yes
-     else
-       AC_TRY_COMPILE([
-         /* The Stardent Vistra knows sizeof(long double), but does not support it.  */
-         long double foo = 0.0;
-         /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
-         int array [2*(sizeof(long double) >= sizeof(double)) - 1];
-         ], ,
-         gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
-     fi])
-  if test $gt_cv_c_long_double = yes; then
-    AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
-  fi
-])
diff --git a/config/longlong.m4 b/config/longlong.m4
deleted file mode 100644 (file)
index d7d7350..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# longlong.m4 serial 4
-dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_LONG_LONG if 'long long' works.
-
-AC_DEFUN([jm_AC_TYPE_LONG_LONG],
-[
-  AC_CACHE_CHECK([for long long], ac_cv_type_long_long,
-  [AC_TRY_LINK([long long ll = 1LL; int i = 63;],
-    [long long llmax = (long long) -1;
-     return ll << i | ll >> i | llmax / ll | llmax % ll;],
-    ac_cv_type_long_long=yes,
-    ac_cv_type_long_long=no)])
-  if test $ac_cv_type_long_long = yes; then
-    AC_DEFINE(HAVE_LONG_LONG, 1,
-      [Define if you have the 'long long' type.])
-  fi
-])
index e631b22..60dc485 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 # Get modification time of a file or directory and pretty-print it.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2010-08-21.06; # UTC
 
-# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010
+# 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
@@ -29,6 +29,15 @@ scriptversion=2009-04-28.21; # UTC
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+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
+fi
+
 case $1 in
   '')
      echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
@@ -38,7 +47,8 @@ case $1 in
     cat <<\EOF
 Usage: mdate-sh [--help] [--version] FILE
 
-Pretty-print the modification time of FILE.
+Pretty-print the modification day of FILE, in the format:
+1 January 1970
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
@@ -50,6 +60,13 @@ EOF
     ;;
 esac
 
+error ()
+{
+  echo "$0: $1" >&2
+  exit 1
+}
+
+
 # Prevent date giving response in another language.
 LANG=C
 export LANG
@@ -99,6 +116,7 @@ month=
 command=
 until test $month
 do
+  test $# -gt 0 || error "failed parsing \`$ls_command /' output"
   shift
   # Add another shift to the command.
   command="$command shift;"
@@ -118,8 +136,10 @@ do
   esac
 done
 
+test -n "$month" || error "failed parsing \`$ls_command /' output"
+
 # Get the extended ls output of the file or directory.
-set dummy x`eval "$ls_command \"\$save_arg1\""`
+set dummy x`eval "$ls_command \"\\\$save_arg1\""`
 
 # Remove all preceding arguments
 eval $command
index 28055d2..86a8fc3 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.13; # UTC
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 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
@@ -84,7 +84,6 @@ Supported PROGRAM values:
   help2man     touch the output file
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  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
@@ -122,15 +121,6 @@ case $1 in
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
@@ -226,7 +216,7 @@ WARNING: \`$1' $msg.  You should only need it if
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -256,7 +246,7 @@ WARNING: \`$1' is $msg.  You should only need it if
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -318,41 +308,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-       case $firstarg in
-       *o*)
-           firstarg=`echo "$firstarg" | sed s/o//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-       case $firstarg in
-       *h*)
-           firstarg=`echo "$firstarg" | sed s/h//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
 WARNING: \`$1' is needed, and is $msg.
diff --git a/config/mkinstalldirs b/config/mkinstalldirs
deleted file mode 100755 (executable)
index d2d5f21..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
-  case $1 in
-    -h | --help | --h*)         # -h for help
-      echo "$usage" 1>&2
-      exit 0
-      ;;
-    -m)                         # -m PERM arg
-      shift
-      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-      dirmode=$1
-      shift
-      ;;
-    --)                         # stop option processing
-      shift
-      break
-      ;;
-    -*)                         # unknown option
-      echo "$usage" 1>&2
-      exit 1
-      ;;
-    *)                          # first non-opt arg
-      break
-      ;;
-  esac
-done
-
-for file
-do
-  if test -d "$file"; then
-    shift
-  else
-    break
-  fi
-done
-
-case $# in
-  0) exit 0 ;;
-esac
-
-case $dirmode in
-  '')
-    if mkdir -p -- . 2>/dev/null; then
-      echo "mkdir -p -- $*"
-      exec mkdir -p -- "$@"
-    fi
-    ;;
-  *)
-    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
-      echo "mkdir -m $dirmode -p -- $*"
-      exec mkdir -m "$dirmode" -p -- "$@"
-    fi
-    ;;
-esac
-
-for file
-do
-  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
-  shift
-
-  pathcomp=
-  for d
-  do
-    pathcomp="$pathcomp$d"
-    case $pathcomp in
-      -*) pathcomp=./$pathcomp ;;
-    esac
-
-    if test ! -d "$pathcomp"; then
-      echo "mkdir $pathcomp"
-
-      mkdir "$pathcomp" || lasterr=$?
-
-      if test ! -d "$pathcomp"; then
-       errstatus=$lasterr
-      else
-       if test ! -z "$dirmode"; then
-         echo "chmod $dirmode $pathcomp"
-         lasterr=""
-         chmod "$dirmode" "$pathcomp" || lasterr=$?
-
-         if test ! -z "$lasterr"; then
-           errstatus=$lasterr
-         fi
-       fi
-      fi
-    fi
-
-    pathcomp="$pathcomp/"
-  done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# End:
-# mkinstalldirs ends here
index 36bc493..003704c 100644 (file)
@@ -1,10 +1,9 @@
-# nls.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 dnl
 dnl This file can can be used in projects which are not available under
 dnl the GNU General Public License or the GNU Library General Public
@@ -19,31 +18,15 @@ dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
 dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
 
+AC_PREREQ([2.50])
+
 AC_DEFUN([AM_NLS],
 [
   AC_MSG_CHECKING([whether NLS is requested])
   dnl Default is enabled NLS
-  AC_ARG_ENABLE(nls,
+  AC_ARG_ENABLE([nls],
     [  --disable-nls           do not use Native Language Support],
     USE_NLS=$enableval, USE_NLS=yes)
-  AC_MSG_RESULT($USE_NLS)
-  AC_SUBST(USE_NLS)
-])
-
-AC_DEFUN([AM_MKINSTALLDIRS],
-[
-  dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
-  dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
-  dnl Try to locate it.
-  MKINSTALLDIRS=
-  if test -n "$ac_aux_dir"; then
-    case "$ac_aux_dir" in
-      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-    esac
-  fi
-  if test -z "$MKINSTALLDIRS"; then
-    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-  fi
-  AC_SUBST(MKINSTALLDIRS)
+  AC_MSG_RESULT([$USE_NLS])
+  AC_SUBST([USE_NLS])
 ])
index e161998..47f36a4 100644 (file)
@@ -1,10 +1,8 @@
-# po.m4 serial 3 (gettext-0.14)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# po.m4 serial 17 (gettext-0.18)
+dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 dnl
 dnl This file can can be used in projects which are not available under
 dnl the GNU General Public License or the GNU Library General Public
@@ -19,14 +17,20 @@ dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
 dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
 
+AC_PREREQ([2.50])
+
 dnl Checks for all prerequisites of the po subdirectory.
 AC_DEFUN([AM_PO_SUBDIRS],
 [
   AC_REQUIRE([AC_PROG_MAKE_SET])dnl
   AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
   AC_REQUIRE([AM_NLS])dnl
 
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+
   dnl Perform the following tests also if --disable-nls has been given,
   dnl because they are needed for "make dist" to work.
 
@@ -34,59 +38,61 @@ AC_DEFUN([AM_PO_SUBDIRS],
   dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
   dnl The second test excludes FreeBSD msgfmt.
   AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
-    [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
      (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
     :)
-  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
 
   dnl Search for GNU xgettext 0.12 or newer in the PATH.
   dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
   dnl The second test excludes FreeBSD xgettext.
   AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
-    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
      (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
     :)
   dnl Remove leftover from FreeBSD xgettext call.
   rm -f messages.po
 
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
   dnl Search for GNU msgmerge 0.11 or newer in the PATH.
   AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
-    [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
 
-  dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-  dnl Test whether we really found GNU msgfmt.
-  if test "$GMSGFMT" != ":"; then
-    dnl If it is no GNU msgfmt we define it as : so that the
-    dnl Makefiles still can work.
-    if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
-       (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
-      AC_MSG_RESULT(
-        [found $GMSGFMT program is not GNU msgfmt; ignore it])
-      GMSGFMT=":"
-    fi
-  fi
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
 
-  dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
-  dnl Test whether we really found GNU xgettext.
-  if test "$XGETTEXT" != ":"; then
-    dnl If it is no GNU xgettext we define it as : so that the
-    dnl Makefiles still can work.
-    if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-       (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      AC_MSG_RESULT(
-        [found xgettext program is not GNU xgettext; ignore it])
-      XGETTEXT=":"
-    fi
-    dnl Remove leftover from FreeBSD xgettext call.
-    rm -f messages.po
-  fi
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
 
-  AC_OUTPUT_COMMANDS([
+  AC_CONFIG_COMMANDS([po-directories], [[
     for ac_file in $CONFIG_FILES; do
       # Support "outfile[:infile[:infile...]]"
       case "$ac_file" in
@@ -106,6 +112,9 @@ AC_DEFUN([AM_PO_SUBDIRS],
           /*) top_srcdir="$ac_given_srcdir" ;;
           *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
         esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
         if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
           rm -f "$ac_dir/POTFILES"
           test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
@@ -119,12 +128,13 @@ AC_DEFUN([AM_PO_SUBDIRS],
             if test -n "$OBSOLETE_ALL_LINGUAS"; then
               test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
             fi
-            ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-            # Hide the ALL_LINGUAS assigment from automake.
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
             eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
             POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
           else
             # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
             eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
           fi
           # Compute POFILES
@@ -194,10 +204,10 @@ AC_DEFUN([AM_PO_SUBDIRS],
         fi
         ;;
       esac
-    done],
+    done]],
    [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
     # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
-    # from automake.
+    # from automake < 1.5.
     eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
     # Capture the value of LINGUAS because we need it to compute CATALOGS.
     LINGUAS="${LINGUAS-%UNSET%}"
@@ -283,7 +293,7 @@ x
 changequote([,])dnl
 
   # Set POTFILES to the value of the Makefile variable POTFILES.
-  sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`"
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
   POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
   # Compute POTFILES_DEPS as
   #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
@@ -298,14 +308,14 @@ changequote([,])dnl
   fi
   if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
     # The LINGUAS file contains the set of available languages.
-    ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
     POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
   else
     # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
-    sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`"
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
     ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
   fi
-  # Hide the ALL_LINGUAS assigment from automake.
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
   eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
   # Compute POFILES
   # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
@@ -348,7 +358,7 @@ changequote([,])dnl
     QMFILES="$QMFILES $srcdirpre$lang.qm"
     frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
     MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
-    frobbedlang=`echo $lang | sed -e 's/_/-/g'`
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
     RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
   done
   # CATALOGS depends on both $ac_dir and the user's LINGUAS
@@ -389,7 +399,7 @@ changequote([,])dnl
       QTCATALOGS="$QTCATALOGS $lang.qm"
       frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
       TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
-      frobbedlang=`echo $lang | sed -e 's/_/-/g'`
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
       CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
     done
   fi
@@ -409,7 +419,7 @@ EOF
   if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
     # Add dependencies that cannot be formulated as a simple suffix rule.
     for lang in $ALL_LINGUAS; do
-      frobbedlang=`echo $lang | sed -e 's/_/-/g'`
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
       cat >> "$ac_file.tmp" <<EOF
 $frobbedlang/\$(DOMAIN).resources.dll: $lang.po
        @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
@@ -424,3 +434,16 @@ EOF
   fi
   mv "$ac_file.tmp" "$ac_file"
 ])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/config/printf-posix.m4 b/config/printf-posix.m4
deleted file mode 100644 (file)
index 186ba6a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# printf-posix.m4 serial 2 (gettext-0.13.1)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-dnl Test whether the printf() function supports POSIX/XSI format strings with
-dnl positions.
-
-AC_DEFUN([gt_PRINTF_POSIX],
-[
-  AC_REQUIRE([AC_PROG_CC])
-  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
-    gt_cv_func_printf_posix,
-    [
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
-   dollar expansion (possibly an autoconf bug).  */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
-  sprintf (buf, format, 33, 55);
-  return (strcmp (buf, "55 33") != 0);
-}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
-      [
-        AC_EGREP_CPP(notposix, [
-#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
-  notposix
-#endif
-        ], gt_cv_func_printf_posix="guessing no",
-           gt_cv_func_printf_posix="guessing yes")
-      ])
-    ])
-  case $gt_cv_func_printf_posix in
-    *yes)
-      AC_DEFINE(HAVE_POSIX_PRINTF, 1,
-        [Define if your printf() function supports format strings with positions.])
-      ;;
-  esac
-])
index 8fe527c..2d804ac 100644 (file)
@@ -1,10 +1,8 @@
-# progtest.m4 serial 3 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
+# progtest.m4 serial 6 (gettext-0.18)
+dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 dnl
 dnl This file can can be used in projects which are not available under
 dnl the GNU General Public License or the GNU Library General Public
@@ -18,6 +16,8 @@ dnl They are *not* in the public domain.
 dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
 
+AC_PREREQ([2.50])
+
 # Search path for a program which passes the given test.
 
 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
@@ -55,7 +55,7 @@ rm -f conf$$.file
 # Extract the first word of "$2", so it can be a program name with args.
 set dummy $2; ac_word=[$]2
 AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
+AC_CACHE_VAL([ac_cv_path_$1],
 [case "[$]$1" in
   [[\\/]]* | ?:[[\\/]]*)
     ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
@@ -67,6 +67,7 @@ AC_CACHE_VAL(ac_cv_path_$1,
       test -z "$ac_dir" && ac_dir=.
       for ac_exec_ext in '' $ac_executable_extensions; do
         if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
           if [$3]; then
             ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
             break 2
@@ -83,9 +84,9 @@ ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
 esac])dnl
 $1="$ac_cv_path_$1"
 if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
-  AC_MSG_RESULT([$]$1)
+  AC_MSG_RESULT([$][$1])
 else
-  AC_MSG_RESULT(no)
+  AC_MSG_RESULT([no])
 fi
-AC_SUBST($1)dnl
+AC_SUBST([$1])dnl
 ])
diff --git a/config/signed.m4 b/config/signed.m4
deleted file mode 100644 (file)
index dc1f54f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# signed.m4 serial 1 (gettext-0.10.40)
-dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([bh_C_SIGNED],
-[
-  AC_CACHE_CHECK([for signed], bh_cv_c_signed,
-   [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)])
-  if test $bh_cv_c_signed = no; then
-    AC_DEFINE(signed, ,
-              [Define to empty if the C compiler doesn't support this keyword.])
-  fi
-])
diff --git a/config/size_max.m4 b/config/size_max.m4
deleted file mode 100644 (file)
index 5762fc3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# size_max.m4 serial 2
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_SIZE_MAX],
-[
-  AC_CHECK_HEADERS(stdint.h)
-  dnl First test whether the system already has SIZE_MAX.
-  AC_MSG_CHECKING([for SIZE_MAX])
-  result=
-  AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], result=yes)
-  if test -z "$result"; then
-    dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
-    dnl than the type 'unsigned long'.
-    dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr',
-    dnl which is guaranteed to work from LONG_MIN to LONG_MAX.
-    _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi,
-      [#include <stddef.h>], result=?)
-    _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo,
-      [#include <stddef.h>], result=?)
-    _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint,
-      [#include <stddef.h>], result=?)
-    if test "$fits_in_uint" = 1; then
-      dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
-      dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
-      AC_TRY_COMPILE([#include <stddef.h>
-        extern size_t foo;
-        extern unsigned long foo;
-        ], [], fits_in_uint=0)
-    fi
-    if test -z "$result"; then
-      if test "$fits_in_uint" = 1; then
-        result="$res_hi$res_lo"U
-      else
-        result="$res_hi$res_lo"UL
-      fi
-    else
-      dnl Shouldn't happen, but who knows...
-      result='~(size_t)0'
-    fi
-  fi
-  AC_MSG_RESULT([$result])
-  if test "$result" != yes; then
-    AC_DEFINE_UNQUOTED([SIZE_MAX], [$result],
-      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
-  fi
-])
diff --git a/config/stdint_h.m4 b/config/stdint_h.m4
deleted file mode 100644 (file)
index 32ba7ae..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# stdint_h.m4 serial 3 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([jm_AC_HEADER_STDINT_H],
-[
-  AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
-  [AC_TRY_COMPILE(
-    [#include <sys/types.h>
-#include <stdint.h>],
-    [uintmax_t i = (uintmax_t) -1;],
-    jm_ac_cv_header_stdint_h=yes,
-    jm_ac_cv_header_stdint_h=no)])
-  if test $jm_ac_cv_header_stdint_h = yes; then
-    AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
-      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
-       and declares uintmax_t. ])
-  fi
-])
index bab1b33..bfd765d 100644 (file)
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2010-06-17.11}
+\def\texinfoversion{2013-09-11.11}
 %
 % 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.
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 %
 % 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
 %
 % As a special exception, when this file is read by TeX when processing
 % a Texinfo source document, you may use the result without
-% restriction.  (This has been our intent since Texinfo was invented.)
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
 %
 % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-%   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org).
+%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
 % The texinfo.tex in any given distribution could well be out
 % of date, so if that's what you're using, please check.
 %
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
 \ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
 \ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
 \ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
 \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
 \ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
 \def\spaceisspace{\catcode`\ =\spacecat}
 
 % sometimes characters are active, so we need control sequences.
+\chardef\ampChar   = `\&
 \chardef\colonChar = `\:
 \chardef\commaChar = `\,
 \chardef\dashChar  = `\-
 \chardef\dotChar   = `\.
 \chardef\exclamChar= `\!
+\chardef\hashChar  = `\#
 \chardef\lquoteChar= `\`
 \chardef\questChar = `\?
 \chardef\rquoteChar= `\'
 \chardef\semiChar  = `\;
+\chardef\slashChar = `\/
 \chardef\underChar = `\_
 
 % Ignore a token.
   \tracingmacros2
   \tracingrestores1
   \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\undefined\else % etex gives us more logging
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
     \tracingscantokens1
     \tracingifs1
     \tracinggroups1
   \errorcontextlines16
 }%
 
+% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+% 
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
 % add check for \lastpenalty to plain's definitions.  If the last thing
 % we did was a \nobreak, we don't want to insert more space.
 %
   \toks6=\expandafter{\prevsectiondefs}%
   \toks8=\expandafter{\lastcolordefs}%
   \mark{%
-                   \the\toks0 \the\toks2
-      \noexpand\or \the\toks4 \the\toks6
-    \noexpand\else \the\toks8
+                   \the\toks0 \the\toks2  % 0: top marks (\last...)
+      \noexpand\or \the\toks4 \the\toks6  % 1: bottom marks (default, \prev...)
+    \noexpand\else \the\toks8             % 2: color marks
   }%
 }
 % \topmark doesn't work for the very first chapter (after the title
   %
   % Do this outside of the \shipout so @code etc. will be expanded in
   % the headline as they should be, not taken literally (outputting ''code).
+  \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
+  %
   \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+  %
   \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
-  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
   %
   {%
     % Have to do this stuff outside the \shipout because we want it to
 }
 \def\inenvironment#1{%
   \ifx#1\empty
-    out of any environment%
+    outside of any environment%
   \else
     in environment \expandafter\string#1%
   \fi
 \parseargdef\end{%
   \if 1\csname iscond.#1\endcsname
   \else
-    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    % The general wording of \badenverr may not be ideal.
     \expandafter\checkenv\csname#1\endcsname
     \csname E#1\endcsname
     \endgroup
 \def\:{\spacefactor=1000 }
 
 % @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
 
 % @/ allows a line break.
 \let\/=\allowbreak
   \else\ifx\temp\offword \plainnonfrenchspacing
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
   \fi\fi
 }
 
@@ -690,15 +705,6 @@ where each line of input produces a line of output.}
 
 \newdimen\mil  \mil=0.001in
 
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
 \parseargdef\need{%
   % Ensure vertical mode, so we don't make a big box in the middle of a
   % paragraph.
@@ -849,6 +855,7 @@ where each line of input produces a line of output.}
     \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.
+    \wlog{texinfo.tex: doing @include of #1^^J}%
     \edef\temp{\noexpand\input #1 }%
     %
     % This trickery is to read FILE outside of a group, in case it makes
@@ -884,7 +891,7 @@ where each line of input produces a line of output.}
 \def\popthisfilestack{\errthisfilestackempty}
 \def\errthisfilestackempty{\errmessage{Internal error:
   the stack of filenames is empty.}}
-
+%
 \def\thisfile{}
 
 % @center line
@@ -892,36 +899,46 @@ where each line of input produces a line of output.}
 %
 \parseargdef\center{%
   \ifhmode
-    \let\next\centerH
+    \let\centersub\centerH
   \else
-    \let\next\centerV
+    \let\centersub\centerV
   \fi
-  \next{\hfil \ignorespaces#1\unskip \hfil}%
+  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+  \let\centersub\relax % don't let the definition persist, just in case
 }
-\def\centerH#1{%
-  {%
-    \hfil\break
-    \advance\hsize by -\leftskip
-    \advance\hsize by -\rightskip
-    \line{#1}%
-    \break
-  }%
+\def\centerH#1{{%
+  \hfil\break
+  \advance\hsize by -\leftskip
+  \advance\hsize by -\rightskip
+  \line{#1}%
+  \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+  % The idea here is the same as in \startdefun, \cartouche, etc.: if
+  % @center is the first thing after a section heading, we need to wipe
+  % out the negative parskip inserted by \sectionheading, but still
+  % prevent a page break here.
+  \centerpenalty = \lastpenalty
+  \ifnum\centerpenalty>10000 \vskip\parskip \fi
+  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+  \line{\kern\leftskip #1\kern\rightskip}%
 }
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
 
 % @sp n   outputs n lines of vertical space
-
+%
 \parseargdef\sp{\vskip #1\baselineskip}
 
 % @comment ...line which is ignored...
 % @c is the same as @comment
 % @ignore ... @end ignore  is another way to write a comment
-
+%
 \def\comment{\begingroup \catcode`\^^M=\other%
 \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
 \commentxxx}
 {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
 \let\c=\comment
 
 % @paragraphindent NCHARS
@@ -1078,9 +1095,8 @@ where each line of input produces a line of output.}
 \newif\ifpdfmakepagedest
 
 % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
 \else
   \ifx\pdfoutput\relax
   \else
@@ -1095,50 +1111,24 @@ where each line of input produces a line of output.}
 % for display in the outlines, and in other places.  Thus, we have to
 % double any backslashes.  Otherwise, a name like "\node" will be
 % interpreted as a newline (\n), followed by o, d, e.  Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
-%
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslashdouble{%
-   @catcode`@\=@active
-   @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters.  hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, 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%
-    \ifx\\##2\\%
-    \else
-      #2%
-      \HyReturnAfterFi{%
-        \HyPsdReplace##2\END
-      }%
-    \fi
-  }%
-  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
-  \xdef#1{#1}% redefine it as its expansion; the definition is simply
-             % \lastnode when called from \setref -> \pdfmkdest.
-  \HyPsdSubst{(}{\realbackslash(}{#1}%
-  \HyPsdSubst{)}{\realbackslash)}{#1}%
+% 
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages.  The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+  \ifx\pdfescapestring\thisisundefined
+    % No primitive available; should we give a warning or log?
+    % Many times it won't matter.
+  \else
+    % The expandable \pdfescapestring primitive escapes parentheses,
+    % backslashes, and other special chars.
+    \xdef#1{\pdfescapestring{#1}}%
+  \fi
 }
 
 \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1197,32 +1187,34 @@ output) for that.)}
   %
   % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
     \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
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
                   \errhelp = \nopdfimagehelp
                   \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
+                \else \gdef\pdfimgext{JPG}%
                 \fi
-              \else \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{jpeg}%
               \fi
-            \else \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{jpg}%
             \fi
-          \else \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{png}%
           \fi
-        \else \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{PDF}%
         \fi
-      \else \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{pdf}%
       \fi
       \closein 1
     \endgroup
@@ -1234,8 +1226,8 @@ output) for that.)}
     \else
       \immediate\pdfximage
     \fi
-      \ifdim \wd0 >0pt width \imagewidth \fi
-      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifdim \wd0 >0pt width \pdfimagewidth \fi
+      \ifdim \wd2 >0pt height \pdfimageheight \fi
       \ifnum\pdftexversion<13
          #1.\pdfimgext
        \else
@@ -1250,10 +1242,9 @@ output) for that.)}
     % such as \, aren't expanded when present in a section title.
     \indexnofonts
     \turnoffactive
-    \activebackslashdouble
     \makevalueexpandable
     \def\pdfdestname{#1}%
-    \backslashparens\pdfdestname
+    \txiescapepdf\pdfdestname
     \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
   }}
   %
@@ -1285,28 +1276,22 @@ output) for that.)}
     % page number.  We could generate a destination for the section
     % text in the case where a section has no node, but it doesn't
     % seem worth the trouble, since most documents are normally structured.
-    \def\pdfoutlinedest{#3}%
+    \edef\pdfoutlinedest{#3}%
     \ifx\pdfoutlinedest\empty
       \def\pdfoutlinedest{#4}%
     \else
-      % Doubled backslashes in the name.
-      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
-       \backslashparens\pdfoutlinedest}%
+      \txiescapepdf\pdfoutlinedest
     \fi
     %
-    % Also double the backslashes in the display string.
-    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
-     \backslashparens\pdfoutlinetext}%
+    % Also escape PDF chars in the display string.
+    \edef\pdfoutlinetext{#1}%
+    \txiescapepdf\pdfoutlinetext
     %
     \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
   }
   %
   \def\pdfmakeoutlines{%
     \begingroup
-      % Thanh's hack / proper braces in bookmarks
-      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-      \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{%
@@ -1362,25 +1347,41 @@ output) for that.)}
       % Latin 2 (0xea) gets translated to a | character.  Info from
       % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
       %
-      % xx to do this right, we have to translate 8-bit characters to
-      % their "best" equivalent, based on the @documentencoding.  Right
-      % now, I guess we'll just let the pdf reader have its way.
+      % TODO this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Too
+      % much work for too little return.  Just use the ASCII equivalents
+      % we use for the index sort strings.
+      % 
       \indexnofonts
       \setupdatafile
+      % We can have normal brace characters in the PDF outlines, unlike
+      % Texinfo index files.  So set that up.
+      \def\{{\lbracecharliteral}%
+      \def\}{\rbracecharliteral}%
       \catcode`\\=\active \otherbackslash
       \input \tocreadfilename
     \endgroup
   }
+  {\catcode`[=1 \catcode`]=2
+   \catcode`{=\other \catcode`}=\other
+   \gdef\lbracecharliteral[{]%
+   \gdef\rbracecharliteral[}]%
+  ]
   %
   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
     \ifx\PP\D\let\nextsp\relax
     \else\let\nextsp\skipspaces
-      \ifx\p\space\else\addtokens{\filename}{\PP}%
-        \advance\filenamelength by 1
-      \fi
+      \addtokens{\filename}{\PP}%
+      \advance\filenamelength by 1
     \fi
     \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \def\getfilename#1{%
+    \filenamelength=0
+    % If we don't expand the argument now, \skipspaces will get
+    % snagged on things like "@value{foo}".
+    \edef\temp{#1}%
+    \expandafter\skipspaces\temp|\relax
+  }
   \ifnum\pdftexversion < 14
     \let \startlink \pdfannotlink
   \else
@@ -1477,9 +1478,6 @@ output) for that.)}
 \def\ttsl{\setfontstyle{ttsl}}
 
 
-% Default leading.
-\newdimen\textleading  \textleading = 13.2pt
-
 % Set the baselineskip to #1, and the lineskip and strut size
 % correspondingly.  There is no deep meaning behind these magic numbers
 % used as factors; they just match (closely enough) what Knuth defined.
@@ -1491,6 +1489,7 @@ output) for that.)}
 % can get a sort of poor man's double spacing by redefining this.
 \def\baselinefactor{1}
 %
+\newdimen\textleading
 \def\setleading#1{%
   \dimen0 = #1\relax
   \normalbaselineskip = \baselinefactor\dimen0
@@ -1512,7 +1511,7 @@ output) for that.)}
 % 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
+\ifpdf \ifx\pdffontattr\thisisundefined \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
@@ -1763,28 +1762,34 @@ end
 \fi\fi
 
 
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
+% Set the font macro #1 to the font named \fontprefix#2.
 % #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).
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
 \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
+%
+% (end of cmaps)
 
 % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix
 % before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
 \def\fontprefix{cm}
 \fi
 % Support font families that don't use the same naming scheme as CM.
 \def\rmshape{r}
-\def\rmbshape{bx}               %where the normal face is bold
+\def\rmbshape{bx}               % where the normal face is bold
 \def\bfshape{b}
 \def\bxshape{bx}
 \def\ttshape{tt}
@@ -1799,8 +1804,7 @@ end
 \def\scshape{csc}
 \def\scbshape{csc}
 
-% Definitions for a main text size of 11pt.  This is the default in
-% Texinfo.
+% Definitions for a main text size of 11pt.  (The default in Texinfo.)
 %
 \def\definetextfontsizexi{%
 % Text fonts (11.2pt, magstep1).
@@ -1925,7 +1929,7 @@ end
 \textleading = 13.2pt % line spacing for 11pt CM
 \textfonts            % reset the current fonts
 \rm
-} % end of 11pt text font size definitions
+} % end of 11pt text font size definitions, \definetextfontsizexi
 
 
 % Definitions to make the main text be 10pt Computer Modern, with
@@ -2057,7 +2061,7 @@ end
 \textleading = 12pt   % line spacing for 10pt CM
 \textfonts            % reset the current fonts
 \rm
-} % end of 10pt text font size definitions
+} % end of 10pt text font size definitions, \definetextfontsizex
 
 
 % We provide the user-level command
@@ -2070,7 +2074,7 @@ end
 %
 \parseargdef\fonttextsize{%
   \def\textsizearg{#1}%
-  \wlog{doing @fonttextsize \textsizearg}%
+  %\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.
@@ -2252,12 +2256,14 @@ end
 
 % Markup style setup for left and right quotes.
 \defmarkupstylesetup\markupsetuplq{%
-  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+  \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
+  \expandafter\let\expandafter \temp
+    \csname markupsetuprq\currentmarkupstyle\endcsname
   \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
 }
 
@@ -2270,8 +2276,6 @@ end
 
 \gdef\markupsetcodequoteleft{\let`\codequoteleft}
 \gdef\markupsetcodequoteright{\let'\codequoteright}
-
-\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
 }
 
 \let\markupsetuplqcode \markupsetcodequoteleft
@@ -2280,6 +2284,9 @@ end
 \let\markupsetuplqexample \markupsetcodequoteleft
 \let\markupsetuprqexample \markupsetcodequoteright
 %
+\let\markupsetuplqkbd     \markupsetcodequoteleft
+\let\markupsetuprqkbd     \markupsetcodequoteright
+%
 \let\markupsetuplqsamp \markupsetcodequoteleft
 \let\markupsetuprqsamp \markupsetcodequoteright
 %
@@ -2289,14 +2296,11 @@ end
 \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.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead 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
@@ -2320,6 +2324,36 @@ end
   \else \char'22 \fi
 }
 
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
 % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
 \def\noligaturesquoteleft{\relax\lq}
 
@@ -2333,7 +2367,7 @@ end
 % and 2) do not add an italic correction.
 \def\dosmartslant#1#2{%
   \ifusingtt 
-    {\ttsl #2\let\next=\relax}%
+    {{\ttsl #2}\let\next=\relax}%
     {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
   \next
 }
@@ -2346,20 +2380,29 @@ end
   \ifx\next,%
   \else\ifx\next-%
   \else\ifx\next.%
+  \else\ifx\next\.%
+  \else\ifx\next\comma%
   \else\ptexslash
-  \fi\fi\fi}
+  \fi\fi\fi\fi\fi
+  \aftersmartic
+}
 
-% like \smartslanted except unconditionally uses \ttsl, and no ic.
-% @var is set to this for defun arguments.
+% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
 \def\ttslanted#1{{\ttsl #1}}
 
 % @cite is like \smartslanted except unconditionally use \sl.  We never want
 % ttsl for book titles, do we?
 \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
 
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
+
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2409,34 +2452,12 @@ end
 % @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.
-\let\file=\samp
-\let\option=\samp
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
 
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
 \def\tclose#1{%
   {%
     % Change normal interword space to be same as for the current font.
@@ -2455,18 +2476,18 @@ end
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
+% (But see \codedashfinish below.)
 % Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.
-
+%
 % Unfortunately, TeX uses one parameter (\hyphenchar) to control
 % both hyphenation at - and hyphenation within words.
 % We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-%  -- rms.
+% and arrange explicitly to hyphenate at a dash. -- rms.
 {
   \catcode`\-=\active \catcode`\_=\active
   \catcode`\'=\active \catcode`\`=\active
@@ -2480,15 +2501,38 @@ end
      \let-\codedash
      \let_\codeunder
     \else
-     \let-\realdash
+     \let-\normaldash
      \let_\realunder
     \fi
+    % Given -foo (with a single dash), we do not want to allow a break
+    % after the hyphen.
+    \global\let\codedashprev=\codedash
+    %
     \codex
   }
+  %
+  \gdef\codedash{\futurelet\next\codedashfinish}
+  \gdef\codedashfinish{%
+    \normaldash % always output the dash character itself.
+    % 
+    % Now, output a discretionary to allow a line break, unless
+    % (a) the next character is a -, or
+    % (b) the preceding character is a -.
+    % E.g., given --posix, we do not want to allow a break after either -.
+    % Given --foo-bar, we do want to allow a break between the - and the b.
+    \ifx\next\codedash \else
+      \ifx\codedashprev\codedash 
+      \else \discretionary{}{}{}\fi
+    \fi
+    % we need the space after the = for the case when \next itself is a
+    % space token; it would get swallowed otherwise.  As in @code{- a}.
+    \global\let\codedashprev= \next
+  }
 }
+\def\normaldash{-}
+%
+\def\codex #1{\tclose{#1}\endgroup}
 
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
 \def\codeunder{%
   % this is all so @math{@code{var_name}+1} can work.  In math mode, _
   % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
@@ -2500,12 +2544,11 @@ end
              \discretionary{}{}{}}%
             {\_}%
 }
-\def\codex #1{\tclose{#1}\endgroup}
 
 % An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general.  @allowcodebreaks provides a way to control this.
+% each of the four underscores in __typeof__.  This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
 %
 \newif\ifallowcodebreaks  \allowcodebreakstrue
 
@@ -2520,63 +2563,25 @@ end
     \allowcodebreaksfalse
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
   \fi\fi
 }
 
-% @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),
-%   or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\txiarg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\txiarg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% 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\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
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
 \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}
+\let\env=\code
+\let\file=\code
+\let\option=\code
 
 % @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
-% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself.  First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
   \unsepspaces
   \pdfurl{#1}%
   \setbox0 = \hbox{\ignorespaces #3}%
@@ -2597,6 +2602,103 @@ end
   \endlink
 \endgroup}
 
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \urefcode{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+  \catcode\ampChar=\active   \catcode\dotChar=\active
+  \catcode\hashChar=\active  \catcode\questChar=\active
+  \catcode\slashChar=\active
+}
+{
+  \urefcatcodes
+  %
+  \global\def\urefcode{\begingroup
+    \setupmarkupstyle{code}%
+    \urefcatcodes
+    \let&\urefcodeamp
+    \let.\urefcodedot
+    \let#\urefcodehash
+    \let?\urefcodequest
+    \let/\urefcodeslash
+    \codex
+  }
+  %
+  % By default, they are just regular characters.
+  \global\def&{\normalamp}
+  \global\def.{\normaldot}
+  \global\def#{\normalhash}
+  \global\def?{\normalquest}
+  \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's.  The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+  \catcode`\/=\active
+  \global\def\urefcodeslashfinish{%
+    \urefprestretch \slashChar
+    % Allow line break only after the final / in a sequence of
+    % slashes, to avoid line break between the slashes in http://.
+    \ifx\next/\else \urefpoststretch \fi
+  }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that.  Also allow no breaking at all, for manual control.
+% 
+\parseargdef\urefbreakstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\wordnone
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordbefore
+    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordafter
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
 % @url synonym for @uref, since that's how everyone uses it.
 %
 \let\url=\uref
@@ -2618,6 +2720,67 @@ end
   \let\email=\uref
 \fi
 
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+  \def\one{#1}\def\three{#3}\def\threex{??}%
+  \ifx\one\xkey\ifx\threex\three \key{#2}%
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% 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}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
 % 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.
 %
@@ -2639,6 +2802,7 @@ end
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2651,6 +2815,7 @@ end
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @asis just yields its argument.  Used with @table, for example.
@@ -2715,20 +2880,77 @@ end
   }
 }
 
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+% 
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+  \def\inlinefmtname{#1}%
+  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% 
+% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
+% FMTNAME is tex, else ELSE-TEXT.
+\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
+\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{%
+  \def\inlinefmtname{#1}%
+  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi
+}
+%
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely.  Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored.  But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too.  We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+% 
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+  \def\inlinerawname{#1}%
+  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+  \endgroup % close group opened by \tex.
+}
+
+% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set.
+%
+\long\def\inlineifset#1{\doinlineifset #1,\finish}
+\long\def\doinlineifset#1,#2,\finish{%
+  \def\inlinevarname{#1}%
+  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax
+  \else\ignorespaces#2\fi
+}
+
+% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set.
+%
+\long\def\inlineifclear#1{\doinlineifclear #1,\finish}
+\long\def\doinlineifclear#1,#2,\finish{%
+  \def\inlinevarname{#1}%
+  \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi
+}
+
 
 \message{glyphs,}
 % and logos.
 
-% @@ prints an @.
+% @@ prints an @, as does @atchar{}.
 \def\@{\char64 }
+\let\atchar=\@
 
-% 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.
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% 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
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
 \begingroup
   % Definitions to produce \{ and \} commands for indices,
   % and @{ and @} for the aux/toc files.
@@ -2856,7 +3078,7 @@ end
 {\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}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -2977,12 +3199,17 @@ end
   % 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
+  \ifmonospace
+    % typewriter:
+    \font\thisecfont = ectt\ecsize \space at \nominalsize
   \else
-    % regular:
-    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \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
   \fi
   \thisecfont
 }
@@ -3005,7 +3232,7 @@ end
 %  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
+\ifx\Orb\thisisundefined
 \def\Orb{\mathhexbox20D}
 \fi
 
@@ -3033,8 +3260,9 @@ end
 \newif\ifsetshortcontentsaftertitlepage
  \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
 
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-        \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+  \endgroup\page\hbox{}\page}
 
 \envdef\titlepage{%
   % Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -3094,14 +3322,28 @@ end
   \finishedtitlepagetrue
 }
 
-%%% Macros to be used within @titlepage:
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right.  This should be used
+% inside a \vbox, and fonts need to be set appropriately first.  Because
+% it is always used for titles, nothing else, we call \rmisbold.  \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+% 
+\def\raggedtitlesettings{%
+  \rmisbold
+  \hyphenpenalty=10000
+  \parindent=0pt
+  \tolerance=5000
+  \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
 
 \let\subtitlerm=\tenrm
 \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
 
 \parseargdef\title{%
   \checkenv\titlepage
-  \leftline{\titlefonts\rmisbold #1}
+  \vbox{\titlefonts \raggedtitlesettings #1\par}%
   % print a rule at the page bottom also.
   \finishedtitlepagefalse
   \vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -3127,7 +3369,7 @@ end
 }
 
 
-%%% Set up page headings and footings.
+% Set up page headings and footings.
 
 \let\thispage=\folio
 
@@ -3279,7 +3521,7 @@ end
 % This produces Day Month Year style of output.
 % Only define if not already defined, in case a txi-??.tex file has set
 % up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
 \def\today{%
   \number\day\space
   \ifcase\month
@@ -3826,18 +4068,18 @@ end
 \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
 \global\advance\multitablelinespace by-\ht0
 \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%%        If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+%        If so, set to same dimension as multitablelinespace.
 \ifdim\multitableparskip>\multitablelinespace
 \global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
 \fi%
 \ifdim\multitableparskip=0pt
 \global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
 \fi}
 
 
@@ -3989,7 +4231,7 @@ end
 \def\value{\begingroup\makevalueexpandable\valuexxx}
 \def\valuexxx#1{\expandablevalue{#1}\endgroup}
 {
-  \catcode`\- = \active \catcode`\_ = \active
+  \catcode`\-=\active \catcode`\_=\active
   %
   \gdef\makevalueexpandable{%
     \let\value = \expandablevalue
@@ -3998,7 +4240,7 @@ end
     % ..., but we might end up with active ones in the argument if
     % we're called from @code, as @code{@value{foo-bar_}}, though.
     % So \let them to their normal equivalents.
-    \let-\realdash \let_\normalunderscore
+    \let-\normaldash \let_\normalunderscore
   }
 }
 
@@ -4009,7 +4251,12 @@ end
 % variable's value contains other Texinfo commands, it's almost certain
 % it will fail (although perhaps we could fix that with sufficient work
 % to do a one-level expansion on the result, instead of complete).
-%
+% 
+% Unfortunately, this has the consequence that when _ is in the *value*
+% of an @set, it does not print properly in the roman fonts (get the cmr
+% dot accent at position 126 instead).  No fix comes to mind, and it's
+% been this way since 2003 or earlier, so just ignore it.
+% 
 \def\expandablevalue#1{%
   \expandafter\ifx\csname SET#1\endcsname\relax
     {[No value for ``#1'']}%
@@ -4021,8 +4268,9 @@ end
 
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
-%
-% To get special treatment of `@end ifset,' call \makeond and the redefine.
+% 
+% To get the special treatment we need for `@end ifset,' we call
+% \makecond and then redefine.
 %
 \makecond{ifset}
 \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
@@ -4038,7 +4286,7 @@ end
 }
 \def\ifsetfail{\doignore{ifset}}
 
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
 % defined with @set, or has been undefined with @clear.
 %
 % The `\else' inside the `\doifset' parameter is a trick to reuse the
@@ -4049,6 +4297,35 @@ end
 \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
 \def\ifclearfail{\doignore{ifclear}}
 
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined.  We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+% 
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname #2\endcsname\relax
+      #1% If not defined, \let\next as above.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
 % @dircategory CATEGORY  -- specify a category of the dir file
 % which this file should belong to.  Ignore this in TeX.
 \let\dircategory=\comment
@@ -4212,7 +4489,7 @@ end
 \def\commondummies{%
   %
   % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control% words,
+  % preventing its expansion.  This is used only for control words,
   % not control letters, because the \space would be incorrect for
   % control characters, but is needed to separate the control word
   % from whatever follows.
@@ -4231,6 +4508,7 @@ end
   \commondummiesnofonts
   %
   \definedummyletter\_%
+  \definedummyletter\-%
   %
   % Non-English letters.
   \definedummyword\AA
@@ -4267,6 +4545,7 @@ end
   \definedummyword\TeX
   %
   % Assorted special characters.
+  \definedummyword\arrow
   \definedummyword\bullet
   \definedummyword\comma
   \definedummyword\copyright
@@ -4277,11 +4556,14 @@ end
   \definedummyword\equiv
   \definedummyword\error
   \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
   \definedummyword\guillemetleft
   \definedummyword\guillemetright
   \definedummyword\guilsinglleft
   \definedummyword\guilsinglright
-  \definedummyword\expansion
+  \definedummyword\lbracechar
+  \definedummyword\leq
   \definedummyword\minus
   \definedummyword\ogonek
   \definedummyword\pounds
@@ -4293,6 +4575,7 @@ end
   \definedummyword\quoteleft
   \definedummyword\quoteright
   \definedummyword\quotesinglbase
+  \definedummyword\rbracechar
   \definedummyword\result
   \definedummyword\textdegree
   %
@@ -4338,19 +4621,27 @@ end
   \definedummyword\b
   \definedummyword\i
   \definedummyword\r
+  \definedummyword\sansserif
   \definedummyword\sc
+  \definedummyword\slanted
   \definedummyword\t
   %
   % Commands that take arguments.
+  \definedummyword\abbr
   \definedummyword\acronym
+  \definedummyword\anchor
   \definedummyword\cite
   \definedummyword\code
   \definedummyword\command
   \definedummyword\dfn
+  \definedummyword\dmn
   \definedummyword\email
   \definedummyword\emph
   \definedummyword\env
   \definedummyword\file
+  \definedummyword\image
+  \definedummyword\indicateurl
+  \definedummyword\inforef
   \definedummyword\kbd
   \definedummyword\key
   \definedummyword\math
@@ -4378,7 +4669,7 @@ end
   \def\definedummyaccent##1{\let##1\asis}%
   % We can just ignore other control letters.
   \def\definedummyletter##1{\let##1\empty}%
-  % Hopefully, all control words can become @asis.
+  % All control words become @asis by default; overrides below.
   \let\definedummyword\definedummyaccent
   %
   \commondummiesnofonts
@@ -4390,8 +4681,17 @@ end
   %
   \def\ { }%
   \def\@{@}%
-  % how to handle braces?
   \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\lbracechar{|a}%
+  %
+  \def\}{|b}%
+  \def\rbracechar{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
@@ -4419,6 +4719,7 @@ end
   %
   % Assorted special characters.
   % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
   \def\bullet{bullet}%
   \def\comma{,}%
   \def\copyright{copyright}%
@@ -4428,10 +4729,12 @@ end
   \def\error{error}%
   \def\euro{euro}%
   \def\expansion{==>}%
+  \def\geq{>=}%
   \def\guillemetleft{<<}%
   \def\guillemetright{>>}%
   \def\guilsinglleft{<}%
   \def\guilsinglright{>}%
+  \def\leq{<=}%
   \def\minus{-}%
   \def\point{.}%
   \def\pounds{pounds}%
@@ -4564,10 +4867,9 @@ end
 %
 % ..., ready, GO:
 %
-\def\safewhatsit#1{%
-\ifhmode
+\def\safewhatsit#1{\ifhmode
   #1%
-\else
+ \else
   % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
   \whatsitskip = \lastskip
   \edef\lastskipmacro{\the\lastskip}%
@@ -4591,7 +4893,6 @@ end
     % 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.
@@ -4604,8 +4905,7 @@ end
     % (the whatsit from the \write), so we must insert a \nobreak.
     \nobreak\vskip\whatsitskip
   \fi
-\fi
-}
+\fi}
 
 % The index entry written in the file actually looks like
 %  \entry {sortstring}{page}{topic}
@@ -5225,7 +5525,8 @@ end
   \global\let\subsubsection = \appendixsubsubsec
 }
 
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
 \def\unnumberedzzz#1{%
   \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
     \global\advance\unnumberedno by 1
@@ -5269,40 +5570,47 @@ end
 \let\top\unnumbered
 
 % Sections.
+% 
 \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
 \def\seczzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
 }
 
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
 \def\appendixsectionzzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
 }
 \let\appendixsec\appendixsection
 
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
 \def\unnumberedseczzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
 }
 
 % Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+% 
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
 \def\numberedsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
 }
 
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
 \def\appendixsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Yappendix}%
                  {\appendixletter.\the\secno.\the\subsecno}%
 }
 
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
 \def\unnumberedsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Ynothing}%
@@ -5310,21 +5618,25 @@ end
 }
 
 % Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+% 
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
 \def\numberedsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Ynumbered}%
                  {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
 \def\appendixsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Yappendix}%
                  {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
 \def\unnumberedsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5340,14 +5652,6 @@ end
 
 % Define @majorheading, @heading and @subheading
 
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-%       1) We use \vbox rather than the earlier \line to permit
-%          overlong headings to fold.
-%       2) \hyphenpenalty is set to 10000 because hyphenation in a
-%          heading is obnoxious; this forbids it.
-%       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
@@ -5355,10 +5659,8 @@ end
 
 \def\chapheading{\chapbreak \parsearg\chapheadingzzz}
 \def\chapheadingzzz#1{%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\ptexraggedright
-                    \rmisbold #1\hfill}}%
-  \bigskip \par\penalty 200\relax
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip \nobreak
   \suppressfirstparagraphindent
 }
 
@@ -5374,14 +5676,13 @@ end
 % (including whitespace, linebreaking, etc. around it),
 % given all the information in convenient, parsed form.
 
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
 \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
 
-%%% Define plain chapter starts, and page on/off switching for it
 % Parameter controlling skip before chapter headings (if needed)
-
 \newskip\chapheadingskip
 
+% Define plain chapter starts, and page on/off switching for it.
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
 \def\chappager{\par\vfill\supereject}
 % Because \domark is called before \chapoddpage, the filler page will
@@ -5518,8 +5819,7 @@ end
     %
     % Typeset the actual heading.
     \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0 \centerparametersmaybe
+    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
           \unhbox0 #1\par}%
   }%
   \nobreak\bigskip % no page break after a chapter title
@@ -5541,18 +5841,18 @@ end
 \def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
 %
 \def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\ptexraggedright
-                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip\nobreak
 }
 \def\chfopen #1#2{\chapoddpage {\chapfonts
 \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
 \par\penalty 5000 %
 }
 \def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+  \nobreak\bigskip \nobreak
 }
 \def\CHAPFopen{%
   \global\let\chapmacro=\chfopen
@@ -5584,6 +5884,8 @@ end
 %
 \def\sectionheading#1#2#3#4{%
   {%
+    \checkenv{}% should not be in an environment.
+    %
     % Switch to the right set of fonts.
     \csname #2fonts\endcsname \rmisbold
     %
@@ -5641,7 +5943,7 @@ end
     %
     % Now the second mark, after the heading break.  No break points
     % between here and the heading.
-    \let\prevsectiondefs=\lastsectiondefs
+    \global\let\prevsectiondefs=\lastsectiondefs
     \domark
     %
     % Only insert the space after the number if we have a section number.
@@ -5695,15 +5997,15 @@ end
   %
   % We'll almost certainly start a paragraph next, so don't let that
   % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)
+  % discardable item.)  However, when a paragraph is not started next
+  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+  % or the negative glue will cause weirdly wrong output, typically
+  % obscuring the section heading with something else.
   \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
+  % This is so the last item on the main vertical list is a known
+  % \penalty > 10000, so \startdefun, etc., can recognize the situation
+  % and do the needful.
   \penalty 10001
 }
 
@@ -6008,8 +6310,8 @@ end
   \catcode `\|=\other
   \catcode `\<=\other
   \catcode `\>=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
+  \catcode `\`=\other
+  \catcode `\'=\other
   \escapechar=`\\
   %
   % ' is active in math mode (mathcode"8000).  So reset it, and all our
@@ -6033,7 +6335,7 @@ end
   \let\/=\ptexslash
   \let\*=\ptexstar
   \let\t=\ptext
-  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \expandafter \let\csname top\endcsname=\ptextop  % we've made it outer
   \let\frenchspacing=\plainfrenchspacing
   %
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -6119,6 +6421,12 @@ end
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   % Flag to tell @lisp, etc., not to narrow margin.
   \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+  %
   \vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop
@@ -6132,7 +6440,7 @@ end
              \lineskip=\normlskip
              \parskip=\normpskip
              \vskip -\parskip
-             \comment % For explanation, see the end of \def\group.
+             \comment % For explanation, see the end of def\group.
 }
 \def\Ecartouche{%
               \ifhmode\par\fi
@@ -6152,7 +6460,7 @@ end
 \newdimen\nonfillparindent
 \def\nonfillstart{%
   \aboveenvbreak
-  \hfuzz = 12pt % Don't be fussy
+  \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy
   \sepspaces % Make spaces be word-separators rather than space tokens.
   \let\par = \lisppar % don't ignore blank lines
   \obeylines % each line of input is a line of output
@@ -6310,16 +6618,9 @@ end
 \makedispenvdef{quotation}{\quotationstart}
 %
 \def\quotationstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \indentedblockstart % same as \indentedblock, but increase right margin too.
   \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
     \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
   \fi
   \parsearg\quotationlabel
 }
@@ -6329,7 +6630,7 @@ end
 %
 \def\Equotation{%
   \par
-  \ifx\quotationauthor\undefined\else
+  \ifx\quotationauthor\thisisundefined\else
     % indent a bit.
     \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
   \fi
@@ -6345,6 +6646,32 @@ end
   \fi
 }
 
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+% 
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+  \par
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
 
 % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
 % If we want to allow any <char> as delimiter,
@@ -6488,6 +6815,7 @@ end
     \makevalueexpandable
     \setupverbatim
     \indexnofonts       % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
     \input #1
     \afterenvbreak
   }%
@@ -6537,7 +6865,7 @@ end
     % commands also insert a nobreak penalty, and we don't want to allow
     % a break between a section heading and a defun.
     %
-    % As a minor refinement, we avoid "club" headers by signalling
+    % As a further 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.
@@ -6604,13 +6932,36 @@ end
 \def\domakedefun#1#2#3{%
   \envdef#1{%
     \startdefun
+    \doingtypefnfalse    % distinguish typed functions from all else
     \parseargusing\activeparens{\printdefunline#3}%
   }%
   \def#2{\dodefunx#1}%
   \def#3%
 }
 
-%%% Untyped functions:
+\newif\ifdoingtypefn       % doing typed function?
+\newif\ifrettypeownline    % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line.  This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+% 
+\parseargdef\deftypefnnewline{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @txideftypefnnl value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% Untyped functions:
 
 % @deffn category name args
 \makedefun{deffn}{\deffngeneral{}}
@@ -6629,7 +6980,7 @@ end
   \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
 
-%%% Typed functions:
+% Typed functions:
 
 % @deftypefn category type name args
 \makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6644,10 +6995,11 @@ end
 %
 \def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
   \dosubind{fn}{\code{#4}}{#1}%
+  \doingtypefntrue
   \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-%%% Typed variables:
+% Typed variables:
 
 % @deftypevr category type var args
 \makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6665,7 +7017,7 @@ end
   \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-%%% Untyped variables:
+% Untyped variables:
 
 % @defvr category var args
 \makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6676,7 +7028,8 @@ end
 % \defcvof {category of}class var args
 \def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
 
-%%% Type:
+% Types:
+
 % @deftp category name args
 \makedefun{deftp}#1 #2 #3\endheader{%
   \doind{tp}{\code{#2}}%
@@ -6704,25 +7057,49 @@ end
 % We are followed by (but not passed) the arguments, if any.
 %
 \def\defname#1#2#3{%
+  \par
   % Get the values of \leftskip and \rightskip as they were outside the @def...
   \advance\leftskip by -\defbodyindent
   %
-  % How we'll format the type name.  Putting it in brackets helps
+  % Determine if we are typesetting the return type of a typed function
+  % on a line by itself.
+  \rettypeownlinefalse
+  \ifdoingtypefn  % doing a typed function specifically?
+    % then check user option for putting return type on its own line:
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
+  \fi
+  %
+  % How we'll format the category name.  Putting it in brackets helps
   % distinguish it from the body text that may end up on the next line
   % just below it.
   \def\temp{#1}%
   \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
   %
-  % Figure out line sizes for the paragraph shape.
+  % Figure out line sizes for the paragraph shape.  We'll always have at
+  % least two.
+  \tempnum = 2
+  %
   % The first line needs space for \box0; but if \rightskip is nonzero,
   % we need only space for the part of \box0 which exceeds it:
   \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  %
+  % If doing a return type on its own line, we'll have another line.
+  \ifrettypeownline
+    \advance\tempnum by 1
+    \def\maybeshapeline{0in \hsize}%
+  \else
+    \def\maybeshapeline{}%
+  \fi
+  %
   % The continuations:
   \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  % (plain.tex says that \dimen1 should be used only as global.)
-  \parshape 2 0in \dimen0 \defargsindent \dimen2
   %
-  % Put the type name to the right margin.
+  % The final paragraph shape:
+  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
+  %
+  % Put the category name at the right margin.
   \noindent
   \hbox to 0pt{%
     \hfil\box0 \kern-\hsize
@@ -6744,8 +7121,16 @@ end
     % . this still does not fix the ?` and !` ligatures, but so far no
     %   one has made identifiers using them :).
     \df \tt
-    \def\temp{#2}% return value type
-    \ifx\temp\empty\else \tclose{\temp} \fi
+    \def\temp{#2}% text of the return type
+    \ifx\temp\empty\else
+      \tclose{\temp}% typeset the return type
+      \ifrettypeownline
+        % put return type on its own line; prohibit line break following:
+        \hfil\vadjust{\nobreak}\break  
+      \else
+        \space  % type on same line, so just followed by a space
+      \fi
+    \fi           % no return type
     #3% output function name
   }%
   {\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6765,7 +7150,10 @@ end
   \df \sl \hyphenchar\font=0
   %
   % 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.
+  % want a way to get ttsl.  We used to recommend @var for that, so
+  % leave the code in, but it's strange for @var to lead to typewriter.
+  % Nowadays we recommend @code, since the difference between a ttsl hyphen
+  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
   \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
   #1%
   \sl\hyphenchar\font=45
@@ -6863,7 +7251,7 @@ end
 
 % To do this right we need a feature of e-TeX, \scantokens,
 % which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
   \newwrite\macscribble
   \def\scantokens#1{%
     \toks0={#1}%
@@ -6874,25 +7262,30 @@ end
   }
 \fi
 
-\def\scanmacro#1{%
-  \begingroup
-    \newlinechar`\^^M
-    \let\xeatspaces\eatspaces
-    % Undo catcode changes of \startcontents and \doprintindex
-    % When called from @insertcopying or (short)caption, we need active
-    % backslash to get it printed correctly.  Previously, we had
-    % \catcode`\\=\other instead.  We'll see whether a problem appears
-    % with macro expansion.                            --kasal, 19aug04
-    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-    % ... and \example
-    \spaceisspace
-    %
-    % 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}%
-  \endgroup
-}
+\def\scanmacro#1{\begingroup
+  \newlinechar`\^^M
+  \let\xeatspaces\eatspaces
+  %
+  % Undo catcode changes of \startcontents and \doprintindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.  Previously, we had
+  % \catcode`\\=\other instead.  We'll see whether a problem appears
+  % with macro expansion.                              --kasal, 19aug04
+  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+  %
+  % ... and for \example:
+  \spaceisspace
+  %
+  % The \empty here causes a following catcode 5 newline to be eaten as
+  % part of reading whitespace after a control sequence.  It does not
+  % eat a catcode 13 newline.  There's no good way to handle the two
+  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+  % would then have different behavior).  See the Macro Details node in
+  % the manual for the workaround we recommend for macros and
+  % line-oriented commands.
+  % 
+  \scantokens{#1\empty}%
+\endgroup}
 
 \def\scanexp#1{%
   \edef\temp{\noexpand\scanmacro{#1}}%
@@ -7025,9 +7418,15 @@ end
 \def\macroxxx#1{%
   \getargs{#1}% now \macname is the macname and \argl the arglist
   \ifx\argl\empty       % no arguments
-     \paramno=0
+     \paramno=0\relax
   \else
      \expandafter\parsemargdef \argl;%
+     \if\paramno>256\relax
+       \ifx\eTeXversion\thisisundefined
+         \errhelp = \EMsimple
+         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+       \fi
+     \fi
   \fi
   \if1\csname ismacro.\the\macname\endcsname
      \message{Warning: redefining \the\macname}%
@@ -7077,9 +7476,17 @@ end
 \def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
 
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
 % 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.
+% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded.  If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.  
+%
 % That gets used by \mbodybackslash (above).
 %
 % We need to get `macro parameter char #' into several definitions.
@@ -7089,12 +7496,33 @@ end
 %
 % The same technique is used to protect \eatspaces till just before
 % the macro is used.
-
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef  the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
 \def\parsemargdef#1;{%
   \paramno=0\def\paramlist{}%
   \let\hash\relax
   \let\xeatspaces\relax
   \parsemargdefxxx#1,;,%
+  % In case that there are 10 or more arguments we parse again the arguments
+  % list to set new definitions for the \macarg.BLAH macros corresponding to
+  % each BLAH argument. It was anyhow needed to parse already once this list
+  % in order to count the arguments, and as macros with at most 9 arguments
+  % are by far more frequent than macro with 10 or more arguments, defining
+  % twice the \macarg.BLAH macros does not cost too much processing power.
+  \ifnum\paramno<10\relax\else
+    \paramno0\relax
+    \parsemmanyargdef@@#1,;,% 10 or more arguments
+  \fi
 }
 \def\parsemargdefxxx#1,{%
   \if#1;\let\next=\relax
@@ -7105,16 +7533,205 @@ end
     \edef\paramlist{\paramlist\hash\the\paramno,}%
   \fi\next}
 
+\def\parsemmanyargdef@@#1,{%
+  \if#1;\let\next=\relax
+  \else 
+    \let\next=\parsemmanyargdef@@
+    \edef\tempb{\eatspaces{#1}}%
+    \expandafter\def\expandafter\tempa
+       \expandafter{\csname macarg.\tempb\endcsname}%
+    % Note that we need some extra \noexpand\noexpand, this is because we
+    % don't want \the  to be expanded in the \parsermacbody  as it uses an
+    % \xdef .
+    \expandafter\edef\tempa
+      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+    \advance\paramno by 1\relax
+  \fi\next}
+
 % These two commands read recursive and nonrecursive macro bodies.
 % (They're different since rec and nonrec macros end differently.)
 %
+
+\catcode `\@\texiatcatcode
 \long\def\parsemacbody#1@end macro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
 \long\def\parsermacbody#1@end rmacro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition.  It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+  \def\macargdeflist@{}%
+  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+  \def\paramlist{#2,\nil@}%
+  \def\macroname{#1}%
+  \begingroup
+  \macroargctxt
+  \def\argvaluelist{#3,\nil@}%
+  \def\@tempa{#3}%
+  \ifx\@tempa\empty
+    \setemptyargvalues@
+  \else
+    \getargvals@@
+  \fi
+}
+
+% 
+\def\getargvals@@{%
+  \ifx\paramlist\nilm@
+      % Some sanity check needed here that \argvaluelist is also empty.
+      \ifx\argvaluelist\nillm@
+      \else
+        \errhelp = \EMsimple
+        \errmessage{Too many arguments in macro `\macroname'!}%
+      \fi
+      \let\next\macargexpandinbody@
+  \else
+    \ifx\argvaluelist\nillm@
+       % No more arguments values passed to macro.  Set remaining named-arg
+       % macros to empty.
+       \let\next\setemptyargvalues@
+    \else
+      % pop current arg name into \@tempb
+      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\paramlist}%
+       % pop current argument value into \@tempc
+      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\argvaluelist}%
+       % Here \@tempb is the current arg name and \@tempc is the current arg value.
+       % First place the new argument macro definition into \@tempd
+       \expandafter\macname\expandafter{\@tempc}%
+       \expandafter\let\csname macarg.\@tempb\endcsname\relax
+       \expandafter\def\expandafter\@tempe\expandafter{%
+         \csname macarg.\@tempb\endcsname}%
+       \edef\@tempd{\long\def\@tempe{\the\macname}}%
+       \push@\@tempd\macargdeflist@
+       \let\next\getargvals@@
+    \fi
+  \fi
+  \next
+}
+
+\def\push@#1#2{%
+  \expandafter\expandafter\expandafter\def
+  \expandafter\expandafter\expandafter#2%
+  \expandafter\expandafter\expandafter{%
+  \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+  %  To do this we use the property that token registers that are \the'ed
+  % within an \edef  expand only once. So we are going to place all argument
+  % values into respective token registers.
+  %
+  % First we save the token context, and initialize argument numbering.
+  \begingroup
+    \paramno0\relax
+    % Then, for each argument number #N, we place the corresponding argument
+    % value into a new token list register \toks#N
+    \expandafter\putargsintokens@\saveparamlist@,;,%
+    % Then, we expand the body so that argument are replaced by their
+    % values. The trick for values not to be expanded themselves is that they
+    % are within tokens and that tokens expand only once in an \edef .
+    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+    % Now we restore the token stack pointer to free the token list registers
+    % which we have used, but we make sure that expanded body is saved after
+    % group.
+    \expandafter
+  \endgroup
+  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+  }
+
+\def\macargexpandinbody@{% 
+  %% Define the named-macro outside of this group and then close this group. 
+  \expandafter
+  \endgroup
+  \macargdeflist@
+  % First the replace in body the macro arguments by their values, the result
+  % is in \@tempa .
+  \macvalstoargs@
+  % Then we point at the \norecurse or \gobble (for recursive) macro value
+  % with \@tempb .
+  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+  % Depending on whether it is recursive or not, we need some tailing
+  % \egroup .
+  \ifx\@tempb\gobble
+     \let\@tempc\relax
+  \else
+     \let\@tempc\egroup
+  \fi
+  % And now we do the real job:
+  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+  \@tempd
+}
+
+\def\putargsintokens@#1,{%
+  \if#1;\let\next\relax
+  \else
+    \let\next\putargsintokens@
+    % First we allocate the new token list register, and give it a temporary
+    % alias \@tempb .
+    \toksdef\@tempb\the\paramno
+    % Then we place the argument value into that token list register.
+    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+    \expandafter\@tempb\expandafter{\@tempa}%
+    \advance\paramno by 1\relax
+  \fi
+  \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+  \ifx\paramlist\nilm@
+    \let\next\macargexpandinbody@
+  \else
+    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+    \let\next\setemptyargvalues@
+  \fi
+  \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+  \expandafter\def\expandafter\@tempa\expandafter{%
+    \expandafter\def\csname macarg.#1\endcsname{}}%
+  \push@\@tempa\macargdeflist@
+  \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+   \def#1{#3}%
+   \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+   \long\def#1{#3}%
+   \long\def#2{#4}%
+}
 
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
 % 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.
@@ -7133,17 +7750,25 @@ end
          \expandafter\noexpand\csname\the\macname xxx\endcsname}%
       \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
          \egroup\noexpand\scanmacro{\temp}}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \else
+      \ifnum\paramno<10\relax % at most 9
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+          \csname\the\macname xxx\endcsname
+            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+      \else % 10 or more
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%    
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+      \fi
     \fi
   \else
     \ifcase\paramno
@@ -7160,23 +7785,33 @@ end
         \egroup
         \noexpand\norecurse{\the\macname}%
         \noexpand\scanmacro{\temp}\egroup}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \expandafter\noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-      \csname\the\macname xxx\endcsname
-      \paramlist{%
-          \egroup
-          \noexpand\norecurse{\the\macname}%
-          \noexpand\scanmacro{\temp}\egroup}%
+    \else % at most 9
+      \ifnum\paramno<10\relax
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \expandafter\noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+        \paramlist{%
+            \egroup
+            \noexpand\norecurse{\the\macname}%
+            \noexpand\scanmacro{\temp}\egroup}%
+      \else % 10 or more:
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+      \fi
     \fi
   \fi}
 
+\catcode `\@\texiatcatcode\relax
+
 \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
 
 % \braceorline decides whether the next nonwhitespace character is a
@@ -7215,7 +7850,8 @@ end
 
 % @inforef is relatively simple.
 \def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
   node \samp{\ignorespaces#1{}}}
 
 % @node's only job in TeX is to define \lastnode, which is used in
@@ -7276,11 +7912,32 @@ end
       \toks0 = \expandafter{\lastsection}%
       \immediate \writexrdef{title}{\the\toks0 }%
       \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
     }%
   \fi
 }
 
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% \f
 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
 % node name, #4 the name of the Info file, #5 the name of the printed
@@ -7289,26 +7946,41 @@ end
 \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
 \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
 \def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
 \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
   \unsepspaces
-  \def\printedmanual{\ignorespaces #5}%
+  %
+  % Get args without leading/trailing spaces.
   \def\printedrefname{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual\unskip}%
-  \setbox0=\hbox{\printedrefname\unskip}%
-  \ifdim \wd0 = 0pt
+  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+  %
+  \def\infofilename{\ignorespaces #4}%
+  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+  %
+  \def\printedmanual{\ignorespaces #5}%
+  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
+  %
+  % If the printed reference name (arg #3) was not explicitly given in
+  % the @xref, figure out what we want to use.
+  \ifdim \wd\printedrefnamebox = 0pt
     % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
-      % Use the node name inside the square brackets.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+      % Not auto section-title: use node name inside the square brackets.
       \def\printedrefname{\ignorespaces #1}%
     \else
-      % Use the actual chapter/section title appear inside
-      % the square brackets.  Use the real section title if we have it.
-      \ifdim \wd1 > 0pt
-        % It is in another manual, so we don't have it.
+      % Auto section-title: use chapter/section title inside
+      % the square brackets if we have it.
+      \ifdim \wd\printedmanualbox > 0pt
+        % It is in another manual, so we don't have it; use node name.
         \def\printedrefname{\ignorespaces #1}%
       \else
         \ifhavexrefs
-          % We know the real title if we have the xref values.
+          % We (should) know the real title if we have the xref values.
           \def\printedrefname{\refx{#1-title}{}}%
         \else
           % Otherwise just copy the Info node name.
@@ -7322,13 +7994,20 @@ end
   \ifpdf
     {\indexnofonts
      \turnoffactive
+     \makevalueexpandable
      % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.
+     % etc. don't get their TeX definitions.  This ignores all spaces in
+     % #4, including (wrongly) those in the middle of the filename.
      \getfilename{#4}%
      %
-     % See comments at \activebackslashdouble.
-     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
-      \backslashparens\pdfxrefdest}%
+     % This (wrongly) does not take account of leading or trailing
+     % spaces in #1, which should be ignored.
+     \edef\pdfxrefdest{#1}%
+     \ifx\pdfxrefdest\empty
+       \def\pdfxrefdest{Top}% no empty targets
+     \else
+       \txiescapepdf\pdfxrefdest  % escape PDF special chars
+     \fi
      %
      \leavevmode
      \startlink attr{/Border [0 0 0]}%
@@ -7355,29 +8034,42 @@ end
   \iffloat\Xthisreftitle
     % If the user specified the print name (third arg) to the ref,
     % print it instead of our usual "Figure 1.2".
-    \ifdim\wd0 = 0pt
+    \ifdim\wd\printedrefnamebox = 0pt
       \refx{#1-snt}{}%
     \else
       \printedrefname
     \fi
     %
-    % if the user also gave the printed manual name (fifth arg), append
+    % If the user also gave the printed manual name (fifth arg), append
     % "in MANUALNAME".
-    \ifdim \wd1 > 0pt
+    \ifdim \wd\printedmanualbox > 0pt
       \space \putwordin{} \cite{\printedmanual}%
     \fi
   \else
     % node/anchor (non-float) references.
+    % 
+    % If we use \unhbox to print the node names, TeX does not insert
+    % empty discretionaries after hyphens, which means that it will not
+    % find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens,
+    % this 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 \wd\printedmanualbox > 0pt
+      % Cross-manual reference with a printed manual name.
+      % 
+      \crossmanualxref{\cite{\printedmanual\unskip}}%
+    %
+    \else\ifdim \wd\infofilenamebox > 0pt
+      % Cross-manual reference with only an info filename (arg 4), no
+      % printed manual name (arg 5).  This is essentially the same as
+      % the case above; we output the filename, since we have nothing else.
+      % 
+      \crossmanualxref{\code{\infofilename\unskip}}%
     %
-    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-    % insert empty discretionaries after hyphens, which means that it will
-    % not find a line break at a hyphen in a node names.  Since some manuals
-    % are best written with fairly long node names, containing hyphens, this
-    % 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}%
     \else
+      % Reference within this manual.
+      %
       % _ (for example) has to be the character _ for the purposes of the
       % control sequence corresponding to the node, but it has to expand
       % into the usual \leavevmode...\vrule stuff for purposes of
@@ -7389,7 +8081,7 @@ end
        \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
        \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
       }%
-      % output the `[mynode]' via a macro so it can be overridden.
+      % output the `[mynode]' via the macro below so it can be overridden.
       \xrefprintnodename\printedrefname
       %
       % But we always want a comma and a space:
@@ -7397,11 +8089,37 @@ end
       %
       % output the `page 3'.
       \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi
+    \fi\fi
   \fi
   \endlink
 \endgroup}
 
+% Output a cross-manual xref to #1.  Used just above (twice).
+% 
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+% 
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input.  By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font).  Hopefully it will never happen in practice.
+% 
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+% 
+\def\crossmanualxref#1{%
+  \setbox\toprefbox = \hbox{Top\kern7sp}%
+  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+  \ifdim \wd2 > 7sp  % nonempty?
+    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
+      \putwordSection{} ``\printedrefname'' \putwordin{}\space
+    \fi
+  \fi
+  #1%
+}
+
 % This macro is called from \xrefX for the `[nodename]' part of xref
 % output.  It's a separate macro only so it can be changed more easily,
 % since square brackets don't work well in some documents.  Particularly
@@ -7452,7 +8170,8 @@ end
     \angleleft un\-de\-fined\angleright
     \iflinks
       \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
       \else
         \ifwarnedxrefs\else
           \global\warnedxrefstrue
@@ -7616,7 +8335,7 @@ end
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -7679,6 +8398,8 @@ end
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo@t
 }
 }%end \catcode `\@=11
@@ -7766,7 +8487,7 @@ end
   it from ftp://tug.org/tex/epsf.tex.}
 %
 \def\image#1{%
-  \ifx\epsfbox\undefined
+  \ifx\epsfbox\thisisundefined
     \ifwarnednoepsf \else
       \errhelp = \noepsfhelp
       \errmessage{epsf.tex not found, images will be ignored}%
@@ -7790,6 +8511,13 @@ end
   % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
+  \else \ifx\centersub\centerV
+    % for @center @image, we need a vbox so we can have our vertical space
+    \imagevmodetrue
+    \vbox\bgroup % vbox has better behavior than vtop herev
+  \fi\fi
+  %
+  \ifimagevmode
     \nobreak\medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
@@ -7799,9 +8527,13 @@ end
   \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
+  %  environment such as @quotation is respected.
+  % However, if we're at the top level, we don't want the
+  %  normal paragraph indentation.
+  % On the other hand, if we are in the case of @center @image, we don't
+  %  want to start a paragraph, which will create a hsize-width box and
+  %  eradicate the centering.
+  \ifx\centersub\centerV\else \noindent \fi
   %
   % Output the image.
   \ifpdf
@@ -7813,7 +8545,10 @@ end
     \epsfbox{#1.eps}%
   \fi
   %
-  \ifimagevmode \medskip \fi  % space after the standalone image
+  \ifimagevmode
+    \medskip  % space after a standalone image
+  \fi  
+  \ifx\centersub\centerV \egroup \fi
 \endgroup}
 
 
@@ -8231,7 +8966,7 @@ directory should work if nowhere else does.}
 %
 % Latin1 (ISO-8859-1) character definitions.
 \def\latonechardefs{%
-  \gdef^^a0{~}
+  \gdef^^a0{\tie}
   \gdef^^a1{\exclamdown}
   \gdef^^a2{\missingcharmsg{CENT SIGN}}
   \gdef^^a3{{\pounds}}
@@ -8261,7 +8996,7 @@ directory should work if nowhere else does.}
   \gdef^^b9{$^1$}
   \gdef^^ba{\ordm}
   %
-  \gdef^^bb{\guilletright}
+  \gdef^^bb{\guillemetright}
   \gdef^^bc{$1\over4$}
   \gdef^^bd{$1\over2$}
   \gdef^^be{$3\over4$}
@@ -8353,7 +9088,7 @@ directory should work if nowhere else does.}
 
 % Latin2 (ISO-8859-2) character definitions.
 \def\lattwochardefs{%
-  \gdef^^a0{~}
+  \gdef^^a0{\tie}
   \gdef^^a1{\ogonek{A}}
   \gdef^^a2{\u{}}
   \gdef^^a3{\L}
@@ -8434,8 +9169,8 @@ directory should work if nowhere else does.}
   \gdef^^ea{\ogonek{e}}
   \gdef^^eb{\"e}
   \gdef^^ec{\v e}
-  \gdef^^ed{\'\i}
-  \gdef^^ee{\^\i}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
   \gdef^^ef{\v d}
   %
   \gdef^^f0{\dh}
@@ -8526,7 +9261,7 @@ directory should work if nowhere else does.}
 
   \gdef\DeclareUnicodeCharacter#1#2{%
     \countUTFz = "#1\relax
-    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
     \begingroup
       \parseXMLCharref
       \def\UTFviiiTwoOctets##1##2{%
@@ -9202,28 +9937,21 @@ directory should work if nowhere else does.}
 
 \message{and turning on texinfo input format.}
 
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
 % 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
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
 
 % This macro is used to make a character print one way in \tt
 % (where it can probably be output as-is), and another way in other fonts,
@@ -9250,11 +9978,9 @@ directory should work if nowhere else does.}
 \catcode`\"=\active
 \def\activedoublequote{{\tt\char34}}
 \let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
+\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
 \chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
+\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
 
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
@@ -9264,16 +9990,26 @@ directory should work if nowhere else does.}
 
 \catcode`\|=\active
 \def|{{\tt\char124}}
+
 \chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
+\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
 \chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
+\catcode`\+=\active \def+{{\tt \char 43}}
+\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% used for headline/footline in the output routine, in case the page
+% breaks in the middle of an @tex block.
+\def\texinfochars{%
+  \let< = \activeless
+  \let> = \activegtr
+  \let~ = \activetilde 
+  \let^ = \activehat
+  \markupsetuplqdefault \markupsetuprqdefault 
+  \let\b = \strong
+  \let\i = \smartitalic
+  % in principle, all other definitions in \tex have to be undone too.
+}
 
 % If a .fmt file is being used, characters that might appear in a file
 % name cannot be active until we have parsed the command line.
@@ -9301,34 +10037,48 @@ directory should work if nowhere else does.}
 
 % In texinfo, backslash is an active character; it prints the backslash
 % in fixed width font.
-\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
+\catcode`\\=\active  % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C).  We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
 % On startup, @fixbackslash assigns:
 %  @let \ = @normalbackslash
-
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
+% catcode other.  We switch back and forth between these.
 @gdef@rawbackslash{@let\=@backslashcurfont}
 @gdef@otherbackslash{@let\=@realbackslash}
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
-@def@normalturnoffactive{%
-  @let\=@normalbackslash
-  @let"=@normaldoublequote
-  @let~=@normaltilde
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let<=@normalless
-  @let>=@normalgreater
-  @let+=@normalplus
-  @let$=@normaldollar %$ font-lock fix
-  @markupsetuplqdefault
-  @markupsetuprqdefault
-  @unsepspaces
+% the literal character `\'.  Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+   @let-=@normaldash
+   @let"=@normaldoublequote
+   @let$=@normaldollar %$ font-lock fix
+   @let+=@normalplus
+   @let<=@normalless
+   @let>=@normalgreater
+   @let\=@normalbackslash
+   @let^=@normalcaret
+   @let_=@normalunderscore
+   @let|=@normalverticalbar
+   @let~=@normaltilde
+   @markupsetuplqdefault
+   @markupsetuprqdefault
+   @unsepspaces
+ }
 }
 
 % Make _ and + \other characters, temporarily.
@@ -9357,10 +10107,19 @@ directory should work if nowhere else does.}
 % Say @foo, not \foo, in error messages.
 @escapechar = `@@
 
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
 % These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
 
 @c Finally, make ` and ' active, so that txicodequoteundirected and
 @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
diff --git a/config/uintmax_t.m4 b/config/uintmax_t.m4
deleted file mode 100644 (file)
index b5f28d4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# uintmax_t.m4 serial 7 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-AC_PREREQ(2.13)
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
-[
-  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-  if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
-    AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
-    test $ac_cv_type_unsigned_long_long = yes \
-      && ac_type='unsigned long long' \
-      || ac_type='unsigned long'
-    AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
-      [Define to unsigned long or unsigned long long
-       if <stdint.h> and <inttypes.h> don't define.])
-  else
-    AC_DEFINE(HAVE_UINTMAX_T, 1,
-      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
-  fi
-])
diff --git a/config/ulonglong.m4 b/config/ulonglong.m4
deleted file mode 100644 (file)
index 1da8b80..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# ulonglong.m4 serial 3
-dnl Copyright (C) 1999-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
-
-AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
-[
-  AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
-  [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;],
-    [unsigned long long ullmax = (unsigned long long) -1;
-     return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
-    ac_cv_type_unsigned_long_long=yes,
-    ac_cv_type_unsigned_long_long=no)])
-  if test $ac_cv_type_unsigned_long_long = yes; then
-    AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
-      [Define if you have the 'unsigned long long' type.])
-  fi
-])
diff --git a/config/wchar_t.m4 b/config/wchar_t.m4
deleted file mode 100644 (file)
index d8fd1ec..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# wchar_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-dnl Test whether <stddef.h> has the 'wchar_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WCHAR_T],
-[
-  AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
-    [AC_TRY_COMPILE([#include <stddef.h>
-       wchar_t foo = (wchar_t)'\0';], ,
-       gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
-  if test $gt_cv_c_wchar_t = yes; then
-    AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
-  fi
-])
diff --git a/config/wint_t.m4 b/config/wint_t.m4
deleted file mode 100644 (file)
index 3d8d215..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# wint_t.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-dnl Test whether <wchar.h> has the 'wint_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WINT_T],
-[
-  AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
-    [AC_TRY_COMPILE([#include <wchar.h>
-       wint_t foo = (wchar_t)'\0';], ,
-       gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
-  if test $gt_cv_c_wint_t = yes; then
-    AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
-  fi
-])
diff --git a/config/xsize.m4 b/config/xsize.m4
deleted file mode 100644 (file)
index 9b7cf9b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# xsize.m4 serial 2
-dnl Copyright (C) 2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License.  As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-AC_DEFUN([gl_XSIZE],
-[
-  dnl Prerequisites of lib/xsize.h.
-  AC_REQUIRE([gl_SIZE_MAX])
-  AC_CHECK_HEADERS(stdint.h)
-])
index ee840f4..03bf8db 100644 (file)
@@ -1,7 +1,6 @@
 /* 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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1994-2013 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
@@ -25,10 +24,10 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #if __DJGPP__ > 2 || __DJGPP_MINOR__ > 1
 
-/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
+/* Define to 1 if 'sys_siglist' is declared by <signal.h> or <unistd.h>. */
 # define SYS_SIGLIST_DECLARED 1
 
-/* Define to 1 if the C library defines the variable `_sys_siglist'.  */
+/* Define to 1 if the C library defines the variable '_sys_siglist'.  */
 # define HAVE_DECL_SYS_SIGLIST 1
 
 #else
@@ -41,13 +40,13 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Use high resolution file timestamps if nonzero. */
 #define FILE_TIMESTAMP_HI_RES 0
 
-/* Define to 1 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 to 1 if you have the fdopen function.  */
 #define HAVE_FDOPEN 1
 
-/* Define to 1 if you have the `getgroups' function. */
+/* Define to 1 if you have the 'getgroups' function. */
 #define HAVE_GETGROUPS 1
 
 /* Define to 1 if you have the <memory.h> header file.  */
@@ -56,18 +55,18 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the mkstemp function.  */
 #define HAVE_MKSTEMP 1
 
-/* Define to 1 if you have the `mktemp' function. */
+/* Define to 1 if you have the 'mktemp' function. */
 #define HAVE_MKTEMP 1
 
-/* Define to 1 if you have the `setlinebuf' function. */
+/* Define to 1 if you have the 'setlinebuf' function. */
 #define HAVE_SETLINEBUF 1
 
-/* Define to 1 if you have the `setvbuf' function. */
+/* Define to 1 if you have the 'setvbuf' function. */
 #define HAVE_SETVBUF 1
 
 #define SCCS_GET "get"
 
-/* Define to `unsigned long' or `unsigned long long'
+/* Define to 'unsigned long' or 'unsigned long long'
    if <inttypes.h> doesn't define.  */
 #define uintmax_t unsigned long long
 
@@ -77,19 +76,12 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Define to 1 if you have the select function.  */
 #define HAVE_SELECT 1
 
-/* 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 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
 
+/* Define to 1 if you have the 'strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
 /* Name of the package */
 #define PACKAGE "make"
 
@@ -100,19 +92,19 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define PACKAGE_NAME "GNU make"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU make 3.82"
+#define PACKAGE_STRING "GNU make 4.0"
 
 /* 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.82"
+#define PACKAGE_VERSION "4.0"
 
-/* Define to 1 if the C compiler supports function prototypes. */
-#define PROTOTYPES 1
+/* Output sync sypport */
+#define NO_OUTPUT_SYNC
 
 /* Version number of package */
-#define VERSION "3.82"
+#define VERSION "4.0"
 
 /* Build host information. */
 #define MAKE_HOST "i386-pc-msdosdjgpp"
index 130f4f8..c9229f0 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,14 +1,11 @@
 #! /bin/sh
-# 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.65 for GNU make 3.82.
+# Generated by GNU Autoconf 2.69 for GNU make 4.0.
 #
 # Report bugs to <bug-make@gnu.org>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -92,6 +89,7 @@ fi
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -136,6 +134,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # 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.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 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
@@ -169,7 +192,8 @@ 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"
+test x\$exitcode = x0 || exit 1
+test -x / || 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'\" &&
@@ -214,14 +238,25 @@ 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+"$@"}
+  export CONFIG_SHELL
+             # 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.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -320,10 +355,18 @@ $as_echo X"$as_dir" |
       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"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -360,19 +403,19 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS 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.
+# 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
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -445,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   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; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # 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 sensitive to this).
@@ -479,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... 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'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -500,28 +547,8 @@ else
   as_mkdir_p=false
 fi
 
-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
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # 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'"
@@ -534,7 +561,7 @@ 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,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -553,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GNU make'
 PACKAGE_TARNAME='make'
-PACKAGE_VERSION='3.82'
-PACKAGE_STRING='GNU make 3.82'
+PACKAGE_VERSION='4.0'
+PACKAGE_STRING='GNU make 4.0'
 PACKAGE_BUGREPORT='bug-make@gnu.org'
 PACKAGE_URL='http://www.gnu.org/software/make/'
 
@@ -595,6 +622,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
+gt_needs=
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
@@ -605,6 +633,7 @@ USE_LOCAL_GLOB_FALSE
 USE_LOCAL_GLOB_TRUE
 GLOBLIB
 GLOBINC
+AM_LDFLAGS
 USE_CUSTOMS_FALSE
 USE_CUSTOMS_TRUE
 REMOTE
@@ -612,6 +641,13 @@ GETLOADAVG_LIBS
 KMEM_GROUP
 NEED_SETGID
 LIBOBJS
+HAVE_GUILE_FALSE
+HAVE_GUILE_TRUE
+GUILE_LIBS
+GUILE_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 ALLOCA
 POSUB
 LTLIBINTL
@@ -619,12 +655,17 @@ LIBINTL
 INTLLIBS
 LTLIBICONV
 LIBICONV
+INTL_MACOSX_LIBS
+XGETTEXT_EXTRA_OPTIONS
 MSGMERGE
+XGETTEXT_015
 XGETTEXT
+GMSGFMT_015
+MSGFMT_015
 GMSGFMT
 MSGFMT
+GETTEXT_MACRO_VERSION
 USE_NLS
-MKINSTALLDIRS
 EGREP
 GREP
 host_os
@@ -642,6 +683,7 @@ RANLIB
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -655,6 +697,10 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -719,6 +765,7 @@ SHELL'
 ac_subst_files='MAINT_MAKEFILE'
 ac_user_opts='
 enable_option_checking
+enable_silent_rules
 enable_dependency_tracking
 enable_nls
 with_gnu_ld
@@ -726,9 +773,11 @@ enable_rpath
 with_libiconv_prefix
 with_libintl_prefix
 enable_largefile
+with_guile
 with_customs
 enable_case_insensitive_file_system
 enable_job_server
+enable_load
 with_dmalloc
 '
       ac_precious_vars='build_alias
@@ -739,7 +788,12 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-CPP'
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+GUILE_CFLAGS
+GUILE_LIBS'
 
 
 # Initialize some variables set by options.
@@ -802,8 +856,9 @@ do
   fi
 
   case $ac_option in
-  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)   ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -848,7 +903,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      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
@@ -874,7 +929,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      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
@@ -1078,7 +1133,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      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
@@ -1094,7 +1149,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      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
@@ -1124,8 +1179,8 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
@@ -1133,7 +1188,7 @@ Try \`$0 --help' for more information."
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1143,7 +1198,7 @@ Try \`$0 --help' for more information."
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1151,13 +1206,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1180,7 +1235,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+  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'
@@ -1194,8 +1249,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $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
   fi
@@ -1210,9 +1263,9 @@ 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"
+  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"
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1251,11 +1304,11 @@ else
 fi
 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"
+  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"
+       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
@@ -1281,7 +1334,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.82 to adapt to many kinds of systems.
+\`configure' configures GNU make 4.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1295,7 +1348,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1351,7 +1404,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU make 3.82:";;
+     short | recursive ) echo "Configuration of GNU make 4.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1359,6 +1412,8 @@ 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]
+  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
   --disable-nls           do not use Native Language Support
@@ -1367,6 +1422,7 @@ Optional Features:
   --enable-case-insensitive-file-system
                           assume file systems are case insensitive
   --disable-job-server    disallow recursive make communication during -jN
+  --disable-load          disable support for the 'load' operation
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1376,9 +1432,9 @@ Optional Packages:
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
   --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
   --without-libintl-prefix     don't search for libintl in includedir and libdir
-  --with-customs=DIR      enable remote jobs via Customs--see README.customs
-  --with-dmalloc          use dmalloc, as in
-                         http://www.dmalloc.com/dmalloc.tar.gz
+  --with-guile            Support GNU Guile for embedded scripting
+   --with-customs=DIR      enable remote jobs via Customs--see README.customs
+  --with-dmalloc          use dmalloc, as in http://www.dmalloc.com
 
 Some influential environment variables:
   CC          C compiler command
@@ -1389,6 +1445,14 @@ Some influential environment variables:
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  GUILE_CFLAGS
+              C compiler flags for GUILE, overriding pkg-config
+  GUILE_LIBS  linker flags for GUILE, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1458,10 +1522,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU make configure 3.82
-generated by GNU Autoconf 2.65
+GNU make configure 4.0
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1505,7 +1569,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_compile
@@ -1531,7 +1595,7 @@ $as_echo "$ac_try_echo"; } >&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 $ac_status = 0; } > conftest.i && {
         test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
         test ! -s conftest.err
        }; then :
@@ -1542,7 +1606,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
     ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_cpp
@@ -1555,10 +1619,10 @@ fi
 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 :
+  if eval \${$3+:} false; 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 :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -1594,7 +1658,7 @@ if ac_fn_c_try_cpp "$LINENO"; then :
 else
   ac_header_preproc=no
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
 $as_echo "$ac_header_preproc" >&6; }
 
@@ -1617,17 +1681,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $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
-## ------------------------------- ##
+( $as_echo "## ------------------------------- ##
 ## 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 :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -1636,7 +1698,7 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_mongrel
 
@@ -1677,7 +1739,7 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_run
@@ -1691,7 +1753,7 @@ 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 :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1709,7 +1771,7 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_compile
 
@@ -1740,7 +1802,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
+        test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1754,7 +1816,7 @@ fi
   # 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_link
@@ -1768,7 +1830,7 @@ 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 :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -1809,7 +1871,7 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
 
@@ -1821,7 +1883,7 @@ 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 :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1876,19 +1938,22 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} 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 LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, 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_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1897,8 +1962,12 @@ $4
 int
 main ()
 {
-#ifndef $2
-  (void) $2;
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
 #endif
 
   ;
@@ -1915,7 +1984,7 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_decl
 
@@ -1928,7 +1997,7 @@ 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 :
+if eval \${$4+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1972,15 +2041,15 @@ 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;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} 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
+It was created by GNU make $as_me 4.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2090,11 +2159,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -2128,11 +2195,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -2145,11 +2210,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -2163,11 +2226,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -2222,7 +2283,12 @@ _ACEOF
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -2237,7 +2303,11 @@ do
     { $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"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -2258,6 +2328,7 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
+gt_needs="$gt_needs "
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -2313,7 +2384,7 @@ if $ac_cache_corrupted; then
 $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
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2329,20 +2400,25 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
 # Autoconf setup
 ac_aux_dir=
 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
+  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
 done
 if test -z "$ac_aux_dir"; then
-  as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2378,7 +2454,7 @@ am__api_version='1.11'
 { $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 :
+if ${ac_cv_path_install+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2398,7 +2474,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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+       if as_fn_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.
@@ -2465,11 +2541,11 @@ am_lf='
 '
 case `pwd` in
   *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+    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;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
 esac
 
 # Do `set' in a subshell so we don't clobber the current shell's
@@ -2491,7 +2567,7 @@ 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".
-      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" "$LINENO" 5
    fi
 
@@ -2501,7 +2577,7 @@ then
    # Ok.
    :
 else
-   as_fn_error "newly created file is older than distributed files!
+   as_fn_error $? "newly created file is older than distributed files!
 Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -2555,7 +2631,7 @@ if test "$cross_compiling" != no; then
 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 :
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
@@ -2567,7 +2643,7 @@ 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
+  if as_fn_executable_p "$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
@@ -2595,7 +2671,7 @@ if test -z "$ac_cv_prog_STRIP"; then
 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 :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
@@ -2607,7 +2683,7 @@ 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
+  if as_fn_executable_p "$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
@@ -2648,7 +2724,7 @@ 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 :
+  if ${ac_cv_path_mkdir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2658,7 +2734,7 @@ do
   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
+          as_fn_executable_p "$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) '* | \
@@ -2699,7 +2775,7 @@ do
 set dummy $ac_prog; 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_AWK+set}" = set; then :
+if ${ac_cv_prog_AWK+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
@@ -2711,7 +2787,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2739,7 +2815,7 @@ done
 $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 :
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2747,7 +2823,7 @@ SHELL = /bin/sh
 all:
        @echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2775,13 +2851,52 @@ else
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
 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
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -2797,7 +2912,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='make'
- VERSION='3.82'
+ VERSION='4.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2827,11 +2942,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
@@ -2849,7 +2964,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}gcc; 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_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2861,7 +2976,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2889,7 +3004,7 @@ if test -z "$ac_cv_prog_CC"; then
 set dummy gcc; 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_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2901,7 +3016,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2942,7 +3057,7 @@ if test -z "$CC"; then
 set dummy ${ac_tool_prefix}cc; 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_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2954,7 +3069,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2982,7 +3097,7 @@ if test -z "$CC"; then
 set dummy cc; 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_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2995,7 +3110,7 @@ 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
+  if as_fn_executable_p "$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
@@ -3041,7 +3156,7 @@ if test -z "$CC"; then
 set dummy $ac_tool_prefix$ac_prog; 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_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -3053,7 +3168,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3085,7 +3200,7 @@ do
 set dummy $ac_prog; 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_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -3097,7 +3212,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3139,8 +3254,8 @@ fi
 
 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; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3254,9 +3369,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $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; }; }
+as_fn_error 77 "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; }
@@ -3298,8 +3412,8 @@ done
 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 compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3356,9 +3470,9 @@ $as_echo "$ac_try_echo"; } >&5
     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.
+as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
@@ -3369,7 +3483,7 @@ 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 :
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3409,8 +3523,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 { { $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; }
+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
@@ -3420,7 +3534,7 @@ OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
 { $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 :
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3457,7 +3571,7 @@ ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 { $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 :
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -3535,7 +3649,7 @@ else
 fi
 { $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 :
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -3544,8 +3658,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3681,6 +3794,7 @@ fi
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -3696,7 +3810,7 @@ depcc="$CC"   am_compiler_list=
 
 { $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 :
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
@@ -3705,6 +3819,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -3764,7 +3879,7 @@ else
        break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | 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.
@@ -3825,7 +3940,7 @@ if test -n "$ac_tool_prefix"; then
 set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+set}" = set; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
@@ -3837,7 +3952,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3865,7 +3980,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
 set dummy ranlib; 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_RANLIB+set}" = set; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
@@ -3877,7 +3992,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3924,7 +4039,7 @@ if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then :
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -3954,7 +4069,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -3970,11 +4085,11 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
   break
 fi
@@ -4013,7 +4128,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -4029,18 +4144,18 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
 
 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 "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -4053,7 +4168,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 set dummy ar; 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_AR+set}" = set; then :
+if ${ac_cv_prog_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
@@ -4065,7 +4180,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="ar"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4092,7 +4207,7 @@ fi
 set dummy perl; 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_PERL+set}" = set; then :
+if ${ac_cv_prog_PERL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$PERL"; then
@@ -4104,7 +4219,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_PERL="perl"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4130,27 +4245,27 @@ fi
 # Specialized system macros
 # Make sure we can run config.sub.
 $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_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 :
+if ${ac_cv_build+:} false; 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
+  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
+  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;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -4168,14 +4283,14 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 { $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 :
+if ${ac_cv_host+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   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
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -4183,7 +4298,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -4203,7 +4318,7 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 { $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 :
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -4217,7 +4332,7 @@ do
     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
+      as_fn_executable_p "$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
@@ -4252,7 +4367,7 @@ esac
   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
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
@@ -4266,7 +4381,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
 
 { $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 :
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -4283,7 +4398,7 @@ do
     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
+      as_fn_executable_p "$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
@@ -4318,7 +4433,7 @@ esac
   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
+    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
@@ -4333,7 +4448,7 @@ $as_echo "$ac_cv_path_EGREP" >&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 :
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4450,8 +4565,7 @@ 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 :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -4463,7 +4577,7 @@ 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 :
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
   MINIX=yes
 else
   MINIX=
@@ -4485,14 +4599,14 @@ $as_echo "#define _MINIX 1" >>confdefs.h
 
   { $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 :
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#        define __EXTENSIONS__ 1
-         $ac_includes_default
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
 int
 main ()
 {
@@ -4523,14 +4637,12 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
 
 
 
-
-        { $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 "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if ${ac_cv_search_strerror+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcposix  $LIBS"
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -4549,22 +4661,37 @@ 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
+for ac_lib in '' cposix; 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"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_strerror=$ac_res
 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"
+    conftest$ac_exeext
+  if ${ac_cv_search_strerror+:} false; then :
+  break
 fi
+done
+if ${ac_cv_search_strerror+:} false; then :
 
+else
+  ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
+fi
 
 
 
@@ -4572,19 +4699,6 @@ fi
 
 
 
-        MKINSTALLDIRS=
-  if test -n "$ac_aux_dir"; then
-    case "$ac_aux_dir" in
-      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
-      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
-    esac
-  fi
-  if test -z "$MKINSTALLDIRS"; then
-    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-  fi
-
-
-
   { $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.
@@ -4600,6 +4714,9 @@ $as_echo "$USE_NLS" >&6; }
 
 
 
+      GETTEXT_MACRO_VERSION=0.18
+
+
 
 
 # Prepare PATH_SEPARATOR.
@@ -4634,7 +4751,7 @@ rm -f conf$$.file
 set dummy msgfmt; 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_path_MSGFMT+set}" = set; then :
+if ${ac_cv_path_MSGFMT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case "$MSGFMT" in
@@ -4648,7 +4765,8 @@ else
       test -z "$ac_dir" && ac_dir=.
       for ac_exec_ext in '' $ac_executable_extensions; do
         if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
      (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
             ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
             break 2
@@ -4674,7 +4792,7 @@ fi
 set dummy gmsgfmt; 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_path_GMSGFMT+set}" = set; then :
+if ${ac_cv_path_GMSGFMT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case $GMSGFMT in
@@ -4688,7 +4806,7 @@ 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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4712,6 +4830,17 @@ fi
 
 
 
+    case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+
+
 
 # Prepare PATH_SEPARATOR.
 # The user is always right.
@@ -4745,7 +4874,7 @@ rm -f conf$$.file
 set dummy xgettext; 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_path_XGETTEXT+set}" = set; then :
+if ${ac_cv_path_XGETTEXT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case "$XGETTEXT" in
@@ -4759,7 +4888,8 @@ else
       test -z "$ac_dir" && ac_dir=.
       for ac_exec_ext in '' $ac_executable_extensions; do
         if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
      (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
             ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
             break 2
@@ -4783,6 +4913,12 @@ fi
 
     rm -f messages.po
 
+    case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+
+
 
 # Prepare PATH_SEPARATOR.
 # The user is always right.
@@ -4816,7 +4952,7 @@ rm -f conf$$.file
 set dummy msgmerge; 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_path_MSGMERGE+set}" = set; then :
+if ${ac_cv_path_MSGMERGE+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   case "$MSGMERGE" in
@@ -4830,7 +4966,8 @@ else
       test -z "$ac_dir" && ac_dir=.
       for ac_exec_ext in '' $ac_executable_extensions; do
         if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
-          if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
             ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
             break 2
           fi
@@ -4852,31 +4989,13 @@ $as_echo "no" >&6; }
 fi
 
 
-      if test "$GMSGFMT" != ":"; then
-            if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
-       (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
-      { $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
+        test -n "$localedir" || localedir='${datadir}/locale'
+
+
+    test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
 
-      if test "$XGETTEXT" != ":"; then
-            if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
-       (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
-      : ;
-    else
-      { $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 po-directories"
 
 
 
@@ -4935,7 +5054,7 @@ $as_echo_n "checking for ld used by GCC... " >&6; }
       # Canonicalize the path of ld
       ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
       done
       test -z "$LD" && LD="$ac_prog"
       ;;
@@ -4955,7 +5074,7 @@ else
   { $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 :
+if ${acl_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
@@ -4969,9 +5088,9 @@ else
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
       *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break ;;
+        test "$with_gnu_ld" != no && break ;;
       *)
-       test "$with_gnu_ld" != yes && break ;;
+        test "$with_gnu_ld" != yes && break ;;
       esac
     fi
   done
@@ -4989,10 +5108,10 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+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 :
+if ${acl_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU ld's only accept -v.
@@ -5009,9 +5128,10 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
 
 
 
+
                                                 { $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 :
+if ${acl_cv_rpath+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -5025,12 +5145,14 @@ fi
 { $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"
-  hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-  hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-  hardcode_direct="$acl_cv_hardcode_direct"
-  hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
     # Check whether --enable-rpath was given.
 if test "${enable_rpath+set}" = set; then :
   enableval=$enable_rpath; :
@@ -5041,6 +5163,74 @@ fi
 
 
 
+  acl_libdirstem=lib
+  acl_libdirstem2=
+  case "$host_os" in
+    solaris*)
+                                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if ${gl_cv_solaris_64bit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef _LP64
+sixtyfour bits
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
+  gl_cv_solaris_64bit=yes
+else
+  gl_cv_solaris_64bit=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+$as_echo "$gl_cv_solaris_64bit" >&6; }
+      if test $gl_cv_solaris_64bit = yes; then
+        acl_libdirstem=lib/64
+        case "$host_cpu" in
+          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+        esac
+      fi
+      ;;
+    *)
+      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+      if test -n "$searchpath"; then
+        acl_save_IFS="${IFS=   }"; IFS=":"
+        for searchdir in $searchpath; do
+          if test -d "$searchdir"; then
+            case "$searchdir" in
+              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+              */../ | */.. )
+                # Better ignore directories of this form. They are misleading.
+                ;;
+              *) searchdir=`cd "$searchdir" && pwd`
+                 case "$searchdir" in
+                   */lib64 ) acl_libdirstem=lib64 ;;
+                 esac ;;
+            esac
+          fi
+        done
+        IFS="$acl_save_IFS"
+      fi
+      ;;
+  esac
+  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+
+
+
+
+
+
+
+
 
 
 
@@ -5080,7 +5270,11 @@ if test "${with_libiconv_prefix+set}" = set; then :
 
       else
         additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
       fi
     fi
 
@@ -5089,6 +5283,8 @@ fi
       LIBICONV=
   LTLIBICONV=
   INCICONV=
+  LIBICONV_PREFIX=
+      HAVE_LIBICONV=
   rpathdirs=
   ltrpathdirs=
   names_already_handled=
@@ -5122,22 +5318,52 @@ fi
           found_la=
           found_so=
           found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-              found_dir="$additional_libdir"
-              found_so="$additional_libdir/lib$name.$shlibext"
-              if test -f "$additional_libdir/lib$name.la"; then
-                found_la="$additional_libdir/lib$name.la"
-              fi
-            else
-              if test -f "$additional_libdir/lib$name.$libext"; then
-                found_dir="$additional_libdir"
-                found_a="$additional_libdir/lib$name.$libext"
-                if test -f "$additional_libdir/lib$name.la"; then
-                  found_la="$additional_libdir/lib$name.la"
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
                 fi
               fi
             fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
           fi
           if test "X$found_dir" = "X"; then
             for x in $LDFLAGS $LTLIBICONV; do
@@ -5153,21 +5379,44 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-                    found_dir="$dir"
-                    found_so="$dir/lib$name.$shlibext"
-                    if test -f "$dir/lib$name.la"; then
-                      found_la="$dir/lib$name.la"
-                    fi
-                  else
-                    if test -f "$dir/lib$name.$libext"; then
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
                       found_dir="$dir"
-                      found_a="$dir/lib$name.$libext"
-                      if test -f "$dir/lib$name.la"; then
-                        found_la="$dir/lib$name.la"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
                       fi
                     fi
                   fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
                   ;;
               esac
               if test "X$found_dir" != "X"; then
@@ -5178,7 +5427,9 @@ fi
           if test "X$found_dir" != "X"; then
                         LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
             if test "X$found_so" != "X"; then
-                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+                                                        if test "$enable_rpath" = no \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
                                 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
               else
                                                                                 haveit=
@@ -5191,10 +5442,10 @@ fi
                 if test -z "$haveit"; then
                   ltrpathdirs="$ltrpathdirs $found_dir"
                 fi
-                                if test "$hardcode_direct" = yes; then
+                                if test "$acl_hardcode_direct" = yes; then
                                                       LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
                 else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
                                                             LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
                                                             haveit=
                     for x in $rpathdirs; do
@@ -5226,7 +5477,7 @@ fi
                     if test -z "$haveit"; then
                       LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
                     fi
-                    if test "$hardcode_minus_L" != no; then
+                    if test "$acl_hardcode_minus_L" != no; then
                                                                                         LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
                     else
                                                                                                                                                                                 LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
@@ -5243,8 +5494,18 @@ fi
             fi
                         additional_includedir=
             case "$found_dir" in
-              */lib | */lib/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                if test "$name" = 'iconv'; then
+                  LIBICONV_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+              */$acl_libdirstem2 | */$acl_libdirstem2/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+                if test "$name" = 'iconv'; then
+                  LIBICONV_PREFIX="$basedir"
+                fi
                 additional_includedir="$basedir/include"
                 ;;
             esac
@@ -5254,7 +5515,7 @@ fi
                 if test "X$additional_includedir" = "X/usr/local/include"; then
                   if test -n "$GCC"; then
                     case $host_os in
-                      linux*) haveit=yes;;
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                     esac
                   fi
                 fi
@@ -5293,12 +5554,14 @@ fi
                 case "$dep" in
                   -L*)
                     additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
                       haveit=
-                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
                         if test -n "$GCC"; then
                           case $host_os in
-                            linux*) haveit=yes;;
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                           esac
                         fi
                       fi
@@ -5395,21 +5658,21 @@ fi
     done
   done
   if test "X$rpathdirs" != "X"; then
-    if test -n "$hardcode_libdir_separator"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
                         alldirs=
       for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
       done
             acl_save_libdir="$libdir"
       libdir="$alldirs"
-      eval flag=\"$hardcode_libdir_flag_spec\"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
       libdir="$acl_save_libdir"
       LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
     else
             for found_dir in $rpathdirs; do
         acl_save_libdir="$libdir"
         libdir="$found_dir"
-        eval flag=\"$hardcode_libdir_flag_spec\"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
         libdir="$acl_save_libdir"
         LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
       done
@@ -5438,17 +5701,93 @@ fi
 
 
 
-  { $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
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  USE_NLS=yes
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
 
 
 
@@ -5457,45 +5796,67 @@ $as_echo "$USE_NLS" >&6; }
   LTLIBINTL=
   POSUB=
 
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
     if test "$USE_NLS" = "yes"; then
     gt_use_preinstalled_gnugettext=no
 
 
-
-
-
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
 
         { $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 :
+if eval \${$gt_func_gnugettext_libc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
+$gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern int *_nl_domain_bindings;
 int
 main ()
 {
 bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  gt_cv_func_gnugettext1_libc=yes
+  eval "$gt_func_gnugettext_libc=yes"
 else
-  gt_cv_func_gnugettext1_libc=no
+  eval "$gt_func_gnugettext_libc=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: $gt_cv_func_gnugettext1_libc" >&5
-$as_echo "$gt_cv_func_gnugettext1_libc" >&6; }
+eval ac_res=\$$gt_func_gnugettext_libc
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
-        if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
 
 
 
@@ -5528,7 +5889,7 @@ $as_echo "$gt_cv_func_gnugettext1_libc" >&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 :
+if ${am_cv_func_iconv+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 { $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
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
 
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-  fi
-  if test "$am_cv_lib_iconv" = yes; then
-    { $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=
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\263";
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $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=
     LTLIBICONV=
   fi
 
@@ -5603,6 +6081,11 @@ $as_echo "$LIBICONV" >&6; }
 
 
 
+
+
+
+
+
     use_additional=yes
 
   acl_save_prefix="$prefix"
@@ -5638,7 +6121,11 @@ if test "${with_libintl_prefix+set}" = set; then :
 
       else
         additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && ! test -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
       fi
     fi
 
@@ -5647,6 +6134,8 @@ fi
       LIBINTL=
   LTLIBINTL=
   INCINTL=
+  LIBINTL_PREFIX=
+      HAVE_LIBINTL=
   rpathdirs=
   ltrpathdirs=
   names_already_handled=
@@ -5680,22 +6169,52 @@ fi
           found_la=
           found_so=
           found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-              found_dir="$additional_libdir"
-              found_so="$additional_libdir/lib$name.$shlibext"
-              if test -f "$additional_libdir/lib$name.la"; then
-                found_la="$additional_libdir/lib$name.la"
-              fi
-            else
-              if test -f "$additional_libdir/lib$name.$libext"; then
-                found_dir="$additional_libdir"
-                found_a="$additional_libdir/lib$name.$libext"
-                if test -f "$additional_libdir/lib$name.la"; then
-                  found_la="$additional_libdir/lib$name.la"
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
                 fi
               fi
             fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
           fi
           if test "X$found_dir" = "X"; then
             for x in $LDFLAGS $LTLIBINTL; do
@@ -5711,21 +6230,44 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-                    found_dir="$dir"
-                    found_so="$dir/lib$name.$shlibext"
-                    if test -f "$dir/lib$name.la"; then
-                      found_la="$dir/lib$name.la"
-                    fi
-                  else
-                    if test -f "$dir/lib$name.$libext"; then
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
                       found_dir="$dir"
-                      found_a="$dir/lib$name.$libext"
-                      if test -f "$dir/lib$name.la"; then
-                        found_la="$dir/lib$name.la"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
                       fi
                     fi
                   fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
                   ;;
               esac
               if test "X$found_dir" != "X"; then
@@ -5736,7 +6278,9 @@ fi
           if test "X$found_dir" != "X"; then
                         LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
             if test "X$found_so" != "X"; then
-                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+                                                        if test "$enable_rpath" = no \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
                                 LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
               else
                                                                                 haveit=
@@ -5749,10 +6293,10 @@ fi
                 if test -z "$haveit"; then
                   ltrpathdirs="$ltrpathdirs $found_dir"
                 fi
-                                if test "$hardcode_direct" = yes; then
+                                if test "$acl_hardcode_direct" = yes; then
                                                       LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
                 else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
                                                             LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
                                                             haveit=
                     for x in $rpathdirs; do
@@ -5784,7 +6328,7 @@ fi
                     if test -z "$haveit"; then
                       LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
                     fi
-                    if test "$hardcode_minus_L" != no; then
+                    if test "$acl_hardcode_minus_L" != no; then
                                                                                         LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
                     else
                                                                                                                                                                                 LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
@@ -5801,8 +6345,18 @@ fi
             fi
                         additional_includedir=
             case "$found_dir" in
-              */lib | */lib/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                if test "$name" = 'intl'; then
+                  LIBINTL_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+              */$acl_libdirstem2 | */$acl_libdirstem2/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+                if test "$name" = 'intl'; then
+                  LIBINTL_PREFIX="$basedir"
+                fi
                 additional_includedir="$basedir/include"
                 ;;
             esac
@@ -5812,7 +6366,7 @@ fi
                 if test "X$additional_includedir" = "X/usr/local/include"; then
                   if test -n "$GCC"; then
                     case $host_os in
-                      linux*) haveit=yes;;
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                     esac
                   fi
                 fi
@@ -5851,12 +6405,14 @@ fi
                 case "$dep" in
                   -L*)
                     additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
                       haveit=
-                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
                         if test -n "$GCC"; then
                           case $host_os in
-                            linux*) haveit=yes;;
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
                           esac
                         fi
                       fi
@@ -5953,21 +6509,21 @@ fi
     done
   done
   if test "X$rpathdirs" != "X"; then
-    if test -n "$hardcode_libdir_separator"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
                         alldirs=
       for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
       done
             acl_save_libdir="$libdir"
       libdir="$alldirs"
-      eval flag=\"$hardcode_libdir_flag_spec\"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
       libdir="$acl_save_libdir"
       LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
     else
             for found_dir in $rpathdirs; do
         acl_save_libdir="$libdir"
         libdir="$found_dir"
-        eval flag=\"$hardcode_libdir_flag_spec\"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
         libdir="$acl_save_libdir"
         LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
       done
@@ -5979,9 +6535,14 @@ fi
     done
   fi
 
+
+
+
+
+
           { $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 :
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   gt_save_CPPFLAGS="$CPPFLAGS"
@@ -5991,44 +6552,46 @@ else
                         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
+$gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
 int
 main ()
 {
 bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  gt_cv_func_gnugettext1_libintl=yes
+  eval "$gt_func_gnugettext_libintl=yes"
 else
-  gt_cv_func_gnugettext1_libintl=no
+  eval "$gt_func_gnugettext_libintl=no"
 fi
 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
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
+$gt_revision_test_code
 extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
 int
 main ()
 {
 bindtextdomain ("", "");
-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
   ;
   return 0;
 }
@@ -6036,7 +6599,7 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   LIBINTL="$LIBINTL $LIBICONV"
                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                gt_cv_func_gnugettext1_libintl=yes
+                eval "$gt_func_gnugettext_libintl=yes"
 
 fi
 rm -f core conftest.err conftest.$ac_objext \
@@ -6045,12 +6608,13 @@ rm -f core conftest.err conftest.$ac_objext \
             CPPFLAGS="$gt_save_CPPFLAGS"
             LIBS="$gt_save_LIBS"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5
-$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; }
+eval ac_res=\$$gt_func_gnugettext_libintl
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
         fi
 
-                                        if test "$gt_cv_func_gnugettext1_libc" = "yes" \
-           || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
                 && test "$PACKAGE" != gettext-runtime \
                 && test "$PACKAGE" != gettext-tools; }; then
           gt_use_preinstalled_gnugettext=yes
@@ -6062,6 +6626,14 @@ $as_echo "$gt_cv_func_gnugettext1_libintl" >&6; }
 
 
 
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
     if test "$gt_use_preinstalled_gnugettext" = "yes" \
        || test "$nls_cv_use_gnu_gettext" = "yes"; then
 
@@ -6080,7 +6652,7 @@ $as_echo "$USE_NLS" >&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
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         gt_source="external libintl"
       else
         gt_source="libc"
@@ -6095,7 +6667,7 @@ $as_echo "$gt_source" >&6; }
   if test "$USE_NLS" = "yes"; then
 
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         { $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
@@ -6158,7 +6730,7 @@ if test "$enable_largefile" != no; then
 
   { $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 :
+if ${ac_cv_sys_largefile_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_sys_largefile_CC=no
@@ -6209,7 +6781,7 @@ $as_echo "$ac_cv_sys_largefile_CC" >&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 :
+if ${ac_cv_sys_file_offset_bits+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -6278,7 +6850,7 @@ 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 :
+if ${ac_cv_sys_large_files+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -6345,13 +6917,15 @@ _ACEOF
 esac
 rm -rf conftest*
   fi
+
+
 fi
 
 
 # Checks for libraries.
 { $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 :
+if ${ac_cv_search_getpwnam+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
@@ -6385,11 +6959,11 @@ for ac_lib in '' sun; do
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if test "${ac_cv_search_getpwnam+set}" = set; then :
+  if ${ac_cv_search_getpwnam+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_getpwnam+set}" = set; then :
+if ${ac_cv_search_getpwnam+:} false; then :
 
 else
   ac_cv_search_getpwnam=no
@@ -6409,7 +6983,7 @@ fi
 # Checks for header files.
 { $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 :
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6524,7 +7098,7 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
   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 :
+if eval \${$as_ac_Header+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6551,8 +7125,7 @@ fi
 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 :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
@@ -6565,7 +7138,7 @@ done
 if test $ac_header_dirent = dirent.h; then
   { $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 :
+if ${ac_cv_search_opendir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
@@ -6599,11 +7172,11 @@ for ac_lib in '' dir; do
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if test "${ac_cv_search_opendir+set}" = set; then :
+  if ${ac_cv_search_opendir+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
 
 else
   ac_cv_search_opendir=no
@@ -6622,7 +7195,7 @@ fi
 else
   { $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 :
+if ${ac_cv_search_opendir+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
@@ -6656,11 +7229,11 @@ for ac_lib in '' x; do
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if test "${ac_cv_search_opendir+set}" = set; then :
+  if ${ac_cv_search_opendir+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
 
 else
   ac_cv_search_opendir=no
@@ -6680,7 +7253,7 @@ fi
 
 { $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 :
+if ${ac_cv_header_stat_broken+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6722,7 +7295,7 @@ fi
 
 { $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 :
+if ${ac_cv_header_time+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6756,12 +7329,11 @@ $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
+                  memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h
 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 :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6771,30 +7343,6 @@ fi
 done
 
 
-# Set a flag if we have an ANSI C compiler
-if test "$ac_cv_prog_cc_stdc" != no; then
-
-$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=`$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 `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- break
-fi
-
-done
-
-
 if test "x$CC" != xcc; then
   { $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; }
@@ -6804,7 +7352,7 @@ $as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
 set dummy $CC; ac_cc=`$as_echo "$2" |
                      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6923,7 +7471,7 @@ fi
 
 { $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 :
+if ${ac_cv_c_const+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6932,11 +7480,11 @@ else
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -6953,8 +7501,9 @@ main ()
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -6970,10 +7519,10 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -7003,7 +7552,7 @@ fi
 
 { $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 :
+if ${ac_cv_type_signal+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7036,7 +7585,7 @@ _ACEOF
 
 { $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 :
+if ${ac_cv_type_uid_t+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7065,7 +7614,7 @@ $as_echo "#define gid_t int" >>confdefs.h
 fi
 
 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 :
+if test "x$ac_cv_type_pid_t" = xyes; then :
 
 else
 
@@ -7079,13 +7628,12 @@ fi
 # Find some definition for uintmax_t
 
 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 :
+if test "x$ac_cv_type_uintmax_t" = xyes; then :
 
 else
-
-  uintmax_t="unsigned long"
+   uintmax_t="unsigned long"
   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 :
+if test "x$ac_cv_type_unsigned_long_long" = xyes; then :
   uintmax_t="unsigned long long"
 fi
 
@@ -7094,24 +7642,27 @@ cat >>confdefs.h <<_ACEOF
 #define uintmax_t $uintmax_t
 _ACEOF
 
+
 fi
 
 
 # Find out whether our struct stat returns nanosecond resolution timestamps.
 
-{ $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 "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5
+$as_echo_n "checking for nanoseconds field of struct stat... " >&6; }
+if ${ac_cv_struct_st_mtim_nsec+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_CPPFLAGS="$CPPFLAGS"
     ac_cv_struct_st_mtim_nsec=no
-    # tv_nsec -- the usual case
-    # _tv_nsec -- Solaris 2.6, if
+    # st_mtim.tv_nsec -- the usual case
+    # st_mtim._tv_nsec -- Solaris 2.6, if
     #  (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1
     #   && !defined __EXTENSIONS__)
-    # st__tim.tv_nsec -- UnixWare 2.1.2
-    for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do
+    # st_mtim.st__tim.tv_nsec -- UnixWare 2.1.2
+    # st_mtime_n -- AIX 5.2 and above
+    # st_mtimespec.tv_nsec -- Darwin (Mac OSX)
+    for ac_val in st_mtim.tv_nsec st_mtim._tv_nsec st_mtim.st__tim.tv_nsec st_mtime_n st_mtimespec.tv_nsec; do
       CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -7121,7 +7672,7 @@ else
 int
 main ()
 {
-struct stat s; s.st_mtim.ST_MTIM_NSEC;
+struct stat s; s.ST_MTIM_NSEC;
   ;
   return 0;
 }
@@ -7148,18 +7699,17 @@ _ACEOF
 
 { $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 :
+if ${make_cv_file_timestamp_hi_res+:} false; 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+   make_cv_file_timestamp_hi_res=no
+  if test "$ac_cv_struct_st_mtim_nsec" != no; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#      if HAVE_INTTYPES_H
-#       include <inttypes.h>
-#      endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
 int
 main ()
 {
@@ -7172,12 +7722,12 @@ if ac_fn_c_try_compile "$LINENO"; then :
   make_cv_file_timestamp_hi_res=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  fi
-fi
 
+fi
+fi
 { $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
+if test "$make_cv_file_timestamp_hi_res" = yes; then :
   val=1
 else
   val=0
@@ -7188,12 +7738,12 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-if test "$make_cv_file_timestamp_hi_res" = yes; then
-  # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
+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.
   { $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 :
+if ${ac_cv_search_clock_gettime+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=$LIBS
@@ -7227,11 +7777,11 @@ for ac_lib in '' rt posix4; do
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if test "${ac_cv_search_clock_gettime+set}" = set; then :
+  if ${ac_cv_search_clock_gettime+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_clock_gettime+set}" = set; then :
+if ${ac_cv_search_clock_gettime+:} false; then :
 
 else
   ac_cv_search_clock_gettime=no
@@ -7247,28 +7797,37 @@ if test "$ac_res" != no; then :
 
 fi
 
-  if test "$ac_cv_search_clock_gettime" != no; then
+  if test "$ac_cv_search_clock_gettime" != no; then :
 
 $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
 
-  fi
+
+fi
+
 fi
 
 # Check for DOS-style pathnames.
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5
+  { $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 :
+if ${ac_cv_dos_paths+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
 neither MSDOS nor Windows nor OS2
 #endif
 
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_dos_paths=yes
@@ -7276,18 +7835,17 @@ else
   ac_cv_dos_paths=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
 fi
 { $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
+  if test x"$ac_cv_dos_paths" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DOS_PATHS 1
 _ACEOF
 
-    fi
+fi
 
 
 # See if we have a standard version of gettimeofday().  Since actual
@@ -7295,7 +7853,7 @@ _ACEOF
 # one.
 { $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 :
+if ${ac_cv_func_gettimeofday+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_func_gettimeofday=no
@@ -7306,11 +7864,11 @@ else
 /* end confdefs.h.  */
 #include <sys/time.h>
                   int main ()
-                 {
-                   struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
-                   exit (gettimeofday (&t, 0) != 0
-                         || t.tv_sec < 0 || t.tv_usec < 0);
-                 }
+                  {
+                    struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
+                    exit (gettimeofday (&t, 0) != 0
+                          || t.tv_sec < 0 || t.tv_usec < 0);
+                  }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_func_gettimeofday=yes
@@ -7324,22 +7882,22 @@ fi
 fi
 { $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
+if test "$ac_cv_func_gettimeofday" = yes; then :
 
 $as_echo "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
 
+
 fi
 
 for ac_func in strdup strndup mkstemp mktemp fdopen fileno \
-               dup2 getcwd realpath sigsetmask sigaction \
+                dup dup2 getcwd realpath sigsetmask sigaction \
                 getgroups seteuid setegid setlinebuf setreuid setregid \
                 getrlimit setrlimit setvbuf pipe strerror strsignal \
-               lstat readlink atexit
+                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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -7351,9 +7909,10 @@ 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>
+ac_fn_c_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1
+#include <signal.h>
 "
-if test "x$ac_cv_have_decl_bsd_signal" = x""yes; then :
+if test "x$ac_cv_have_decl_bsd_signal" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -7364,7 +7923,7 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-if test "${ac_cv_func_setvbuf_reversed+set}" = set; then :
+if ${ac_cv_func_setvbuf_reversed+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_func_setvbuf_reversed=no
@@ -7379,8 +7938,7 @@ 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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -7392,7 +7950,7 @@ done
 # 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 :
+if ${ac_cv_func_strcoll_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7430,11 +7988,22 @@ $as_echo "#define HAVE_STRCOLL 1" >>confdefs.h
 fi
 
 
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+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 :
+if ${ac_cv_working_alloca_h+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7467,7 +8036,7 @@ 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 :
+if ${ac_cv_func_alloca_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7486,7 +8055,7 @@ else
  #pragma alloca
 #   else
 #    ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
+void *alloca (size_t);
 #    endif
 #   endif
 #  endif
@@ -7530,7 +8099,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 { $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 :
+if ${ac_cv_os_cray+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7557,8 +8126,7 @@ if test $ac_cv_os_cray = yes; then
   for ac_func in _getb67 GETB67 getb67; 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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 
 cat >>confdefs.h <<_ACEOF
 #define CRAY_STACKSEG_END $ac_func
@@ -7572,7 +8140,7 @@ fi
 
 { $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 :
+if ${ac_cv_c_stack_direction+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
@@ -7582,23 +8150,20 @@ else
 /* end confdefs.h.  */
 $ac_includes_default
 int
-find_stack_direction ()
+find_stack_direction (int *addr, int depth)
 {
-  static char *addr = 0;
-  auto char dummy;
-  if (addr == 0)
-    {
-      addr = &dummy;
-      return find_stack_direction ();
-    }
-  else
-    return (&dummy > addr) ? 1 : -1;
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
 }
 
 int
-main ()
+main (int argc, char **argv)
 {
-  return find_stack_direction () < 0;
+  return find_stack_direction (0, argc + !argv + 20) < 0;
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
@@ -7620,279 +8185,407 @@ _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
-
-fi
-
-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
-
-fi
-done
-
-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 "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
+$as_echo_n "checking whether closedir returns void... " >&6; }
+if ${ac_cv_func_closedir_void+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test "$cross_compiling" = yes; then :
-  ac_cv_func_fork_works=cross
+  ac_cv_func_closedir_void=yes
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
+#include <$ac_header_dirent>
+#ifndef __cplusplus
+int closedir ();
+#endif
+
 int
 main ()
 {
-
-         /* By Ruediger Kuhlmann. */
-         return fork () < 0;
-
+return closedir (opendir (".")) != 0;
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_fork_works=yes
+  ac_cv_func_closedir_void=no
 else
-  ac_cv_func_fork_works=no
+  ac_cv_func_closedir_void=yes
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
-$as_echo "$ac_cv_func_fork_works" >&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
+
+$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
 
-else
-  ac_cv_func_fork_works=$ac_cv_func_fork
 fi
-if test "x$ac_cv_func_fork_works" = xcross; then
-  case $host in
-    *-*-amigaos* | *-*-msdosdjgpp*)
-      # Override, as these systems have only a dummy fork() stub
-      ac_cv_func_fork_works=no
-      ;;
-    *)
-      ac_cv_func_fork_works=yes
-      ;;
-  esac
-  { $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
-  { $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 :
+
+
+# See if the user wants to add (or not) GNU Guile support
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_vfork_works=cross
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Thanks to Paul Eggert for this test.  */
-$ac_includes_default
-#include <sys/wait.h>
-#ifdef HAVE_VFORK_H
-# include <vfork.h>
-#endif
-/* On some sparc systems, changes by the child to local and incoming
-   argument registers are propagated back to the parent.  The compiler
-   is told about this with #include <vfork.h>, but some compilers
-   (e.g. gcc -O) don't grok <vfork.h>.  Test for this by using a
-   static variable whose address is put into a register that is
-   clobbered by the vfork.  */
-static void
-#ifdef __cplusplus
-sparc_address_test (int arg)
-# else
-sparc_address_test (arg) int arg;
-#endif
-{
-  static pid_t child;
-  if (!child) {
-    child = vfork ();
-    if (child < 0) {
-      perror ("vfork");
-      _exit(2);
-    }
-    if (!child) {
-      arg = getpid();
-      write(-1, "", 0);
-      _exit (arg);
-    }
-  }
-}
-
-int
-main ()
-{
-  pid_t parent = getpid ();
-  pid_t child;
-
-  sparc_address_test (0);
-
-  child = vfork ();
-
-  if (child == 0) {
-    /* Here is another test for sparc vfork register problems.  This
-       test uses lots of local variables, at least as many local
-       variables as main has allocated so far including compiler
-       temporaries.  4 locals are enough for gcc 1.40.3 on a Solaris
-       4.1.3 sparc, but we use 8 to be safe.  A buggy compiler should
-       reuse the register of parent for one of the local variables,
-       since it will think that parent can't possibly be used any more
-       in this routine.  Assigning to the local variable will thus
-       munge parent in the parent process.  */
-    pid_t
-      p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
-      p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
-    /* Convince the compiler that p..p7 are live; otherwise, it might
-       use the same hardware register for all 8 local variables.  */
-    if (p != p1 || p != p2 || p != p3 || p != p4
-       || p != p5 || p != p6 || p != p7)
-      _exit(1);
-
-    /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
-       from child file descriptors.  If the child closes a descriptor
-       before it execs or exits, this munges the parent's descriptor
-       as well.  Test for this by closing stdout in the child.  */
-    _exit(close(fileno(stdout)) != 0);
-  } else {
-    int status;
-    struct stat st;
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $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
 
-    while (wait(&status) != child)
-      ;
-    return (
-        /* Was there some problem with vforking?  */
-        child < 0
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-        /* Did the child fail?  (This shouldn't happen.)  */
-        || status
 
-        /* Did the vfork/compiler bug occur?  */
-        || parent != getpid()
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $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
 
-        /* Did the file descriptor bug occur?  */
-        || fstat(fileno(stdout), &st) != 0
-        );
-  }
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_vfork_works=yes
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
-  ac_cv_func_vfork_works=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  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
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
-$as_echo "$ac_cv_func_vfork_works" >&6; }
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
 
-fi;
-if test "x$ac_cv_func_fork_works" = xcross; then
-  ac_cv_func_vfork_works=$ac_cv_func_vfork
-  { $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;}
+# Check whether --with-guile was given.
+if test "${with_guile+set}" = set; then :
+  withval=$with_guile;
 fi
 
-if test "x$ac_cv_func_vfork_works" = xyes; then
 
-$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
+# For some strange reason, at least on Ubuntu, each version of Guile
+# comes with it's own PC file so we have to specify them as individual
+# packages.  Ugh.
+if test "x$with_guile" != xno; then :
 
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
+$as_echo_n "checking for GUILE... " >&6; }
+
+if test -n "$GUILE_CFLAGS"; then
+    pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$GUILE_LIBS"; then
+    pkg_cv_GUILE_LIBS="$GUILE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
 
-$as_echo "#define vfork fork" >>confdefs.h
 
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
 fi
-if test "x$ac_cv_func_fork_works" = xyes; then
+        if test $_pkg_short_errors_supported = yes; then
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-2.0" 2>&1`
+        else
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-2.0" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GUILE_PKG_ERRORS" >&5
+
 
-$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
+$as_echo_n "checking for GUILE... " >&6; }
 
+if test -n "$GUILE_CFLAGS"; then
+    pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$GUILE_LIBS"; then
+    pkg_cv_GUILE_LIBS="$GUILE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
 fi
 
-for ac_func in vprintf
-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 HAVE_VPRINTF 1
-_ACEOF
 
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = x""yes; then :
 
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1`
+        else
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GUILE_PKG_ERRORS" >&5
 
+       have_guile=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       have_guile=no
+else
+       GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
+       GUILE_LIBS=$pkg_cv_GUILE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_guile=yes
 fi
-done
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
+$as_echo_n "checking for GUILE... " >&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
+if test -n "$GUILE_CFLAGS"; then
+    pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_closedir_void=yes
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$GUILE_LIBS"; then
+    pkg_cv_GUILE_LIBS="$GUILE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header_dirent>
-#ifndef __cplusplus
-int closedir ();
-#endif
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1`
+        else
+               GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GUILE_PKG_ERRORS" >&5
 
-int
-main ()
-{
-return closedir (opendir (".")) != 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_closedir_void=no
+       have_guile=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       have_guile=no
 else
-  ac_cv_func_closedir_void=yes
+       GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
+       GUILE_LIBS=$pkg_cv_GUILE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_guile=yes
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+else
+       GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
+       GUILE_LIBS=$pkg_cv_GUILE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_guile=yes
 fi
 
 fi
-{ $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
 
-$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
+if test "$have_guile" = yes; then :
+
+$as_echo "#define HAVE_GUILE 1" >>confdefs.h
+
+fi
 
+ if test "$have_guile" = yes; then
+  HAVE_GUILE_TRUE=
+  HAVE_GUILE_FALSE='#'
+else
+  HAVE_GUILE_TRUE='#'
+  HAVE_GUILE_FALSE=
 fi
 
 
@@ -7900,13 +8593,13 @@ 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" ||
-  as_fn_error "$srcdir/$ac_config_libobj_dir/getloadavg.c is missing" "$LINENO" 5
+  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.
 (ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
-if test "x$ac_cv_func_getloadavg" = x""yes; then :
+if test "x$ac_cv_func_getloadavg" = xyes; then :
   exit 0
 else
   exit 1
@@ -7917,7 +8610,7 @@ fi
 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 :
+if test "x$ac_cv_func_pstat_getdynamic" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_PSTAT_GETDYNAMIC 1
 _ACEOF
@@ -7929,7 +8622,7 @@ done
 # 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 :
+if ${ac_cv_lib_kstat_kstat_open+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -7963,7 +8656,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBKSTAT 1
 _ACEOF
@@ -7981,7 +8674,7 @@ test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes
 if test $ac_have_func = no; then
   { $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 :
+if ${ac_cv_lib_elf_elf_begin+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8015,7 +8708,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
   LIBS="-lelf $LIBS"
 fi
 
@@ -8023,7 +8716,7 @@ fi
 if test $ac_have_func = no; then
   { $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 :
+if ${ac_cv_lib_kvm_kvm_open+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8057,14 +8750,14 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
   LIBS="-lkvm $LIBS"
 fi
 
   # Check for the 4.4BSD definition of getloadavg.
   { $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 :
+if ${ac_cv_lib_util_getloadavg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8098,7 +8791,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
   LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes
 fi
 
@@ -8111,7 +8804,7 @@ if test $ac_have_func = no; then
   LIBS="-L/usr/local/lib $LIBS"
   { $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 :
+if ${ac_cv_lib_getloadavg_getloadavg+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8145,7 +8838,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then :
   LIBS="-lgetloadavg $LIBS"
 else
   LIBS=$ac_getloadavg_LIBS
@@ -8158,7 +8851,7 @@ fi
 for ac_func in getloadavg
 do :
   ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
-if test "x$ac_cv_func_getloadavg" = x""yes; then :
+if test "x$ac_cv_func_getloadavg" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETLOADAVG 1
 _ACEOF
@@ -8176,14 +8869,14 @@ $as_echo "#define C_GETLOADAVG 1" >>confdefs.h
 # Figure out what our getloadavg.c needs.
 ac_have_func=no
 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 :
+if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then :
   ac_have_func=yes
 
 $as_echo "#define DGUX 1" >>confdefs.h
 
  { $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 :
+if ${ac_cv_lib_dgc_dg_sys_info+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8217,7 +8910,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBDGC 1
 _ACEOF
@@ -8231,7 +8924,7 @@ fi
 
 
 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 :
+if test "x$ac_cv_header_locale_h" = xyes; then :
 
 fi
 
@@ -8239,7 +8932,7 @@ fi
 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 :
+if test "x$ac_cv_func_setlocale" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SETLOCALE 1
 _ACEOF
@@ -8251,7 +8944,8 @@ done
 # We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
 # uses stabs), but it is still SVR4.  We cannot check for <elf.h> because
 # Irix 4.0.5F has the header but not the library.
-if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes; then
+if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes \
+    && test "$ac_cv_lib_kvm_kvm_open" = yes; then
   ac_have_func=yes
 
 $as_echo "#define SVR4 1" >>confdefs.h
@@ -8260,7 +8954,7 @@ fi
 
 if test $ac_have_func = no; 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 :
+if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then :
   ac_have_func=yes
 
 $as_echo "#define UMAX 1" >>confdefs.h
@@ -8275,7 +8969,7 @@ fi
 
 if test $ac_have_func = no; then
   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 :
+if test "x$ac_cv_header_sys_cpustats_h" = xyes; then :
   ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h
 
 fi
@@ -8287,7 +8981,7 @@ 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 :
+if test "x$ac_cv_header_mach_mach_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_MACH_MACH_H 1
 _ACEOF
@@ -8301,13 +8995,13 @@ fi
 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 :
+if test "x$ac_cv_header_nlist_h" = xyes; 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 :
+if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
@@ -8330,7 +9024,7 @@ done
 # Some definitions of getloadavg require that the program be installed setgid.
 { $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 :
+if ${ac_cv_func_getloadavg_setgid+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8363,7 +9057,7 @@ fi
 if test $ac_cv_func_getloadavg_setgid = yes; then
   { $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 :
+if ${ac_cv_group_kmem+:} false; then :
   $as_echo_n "(cached) " >&6
 else
    # On Solaris, /dev/kmem is a symlink.  Get info on the real file.
@@ -8392,8 +9086,8 @@ LIBS=$ac_save_LIBS
 # AC_FUNC_GETLOADAVG is documented to set the NLIST_STRUCT value, but it
 # doesn't.  So, we will.
 
-if test "$ac_cv_header_nlist_h" = yes; then
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "$ac_cv_header_nlist_h" = yes; then :
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <nlist.h>
 int
@@ -8412,11 +9106,13 @@ else
   make_cv_nlist_struct=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test "$make_cv_nlist_struct" = yes; then
+  if test "$make_cv_nlist_struct" = yes; then :
 
 $as_echo "#define NLIST_STRUCT 1" >>confdefs.h
 
-  fi
+
+fi
+
 fi
 
 ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default
@@ -8427,7 +9123,7 @@ ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_in
 #endif
 
 "
-if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then :
+if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -8444,7 +9140,7 @@ ac_fn_c_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_
 #endif
 
 "
-if test "x$ac_cv_have_decl__sys_siglist" = x""yes; then :
+if test "x$ac_cv_have_decl__sys_siglist" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -8461,7 +9157,7 @@ ac_fn_c_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$a
 #endif
 
 "
-if test "x$ac_cv_have_decl___sys_siglist" = x""yes; then :
+if test "x$ac_cv_have_decl___sys_siglist" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -8478,7 +9174,7 @@ for ac_header in sys/wait.h
 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 :
+if test "x$ac_cv_header_sys_wait_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SYS_WAIT_H 1
 _ACEOF
@@ -8491,8 +9187,7 @@ for ac_func in waitpid wait3
 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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -8502,10 +9197,10 @@ done
 
 { $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 :
+if ${make_cv_union_wait+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -8539,45 +9234,49 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-fi
 
-if test "$make_cv_union_wait" = yes; then
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5
+$as_echo "$make_cv_union_wait" >&6; }
+if test "$make_cv_union_wait" = yes; then :
 
 $as_echo "#define HAVE_UNION_WAIT 1" >>confdefs.h
 
+
 fi
-{ $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
+if test "$PATH_SEPARATOR" = ';'; then :
 
 $as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h
 
-fi
 
+fi
 
 # See if the user wants to use pmake's "customs" distributed build capability
-
  REMOTE=stub
 use_customs=false
 
 # 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
-        y|ye|yes) : ;;
-        *) CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
-           make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
-       esac
+  withval=$with_customs;  case $withval in #(
+  n|no) :
+    : ;; #(
+  *) :
+    make_cppflags="$CPPFLAGS"
+     case $withval in #(
+  y|ye|yes) :
+    : ;; #(
+  *) :
+    CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
+              make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
+esac
 
 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 :
+if ${cf_cv_netlibs+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
@@ -8588,7 +9287,7 @@ 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 :
+if test "x$ac_cv_func_gethostname" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETHOSTNAME 1
 _ACEOF
@@ -8598,7 +9297,7 @@ else
 
 { $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 :
+if ${ac_cv_lib_nsl_gethostname+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8632,7 +9331,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_nsl_gethostname" = xyes; then :
 
 
 cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'`
@@ -8652,7 +9351,7 @@ else
 
 { $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 :
+if ${ac_cv_lib_socket_gethostname+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8686,7 +9385,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_socket_gethostname" = xyes; then :
 
 
 cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'`
@@ -8717,7 +9416,7 @@ done
 # I don't know the entrypoints - 97/7/22 TD
 { $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 :
+if ${ac_cv_lib_inet_main+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8745,7 +9444,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_inet_main" = xyes; then :
   cf_cv_netlibs="-linet $cf_cv_netlibs"
 fi
 
@@ -8754,7 +9453,7 @@ if test "$ac_cv_func_lsocket" != no ; then
 for ac_func in socket
 do :
   ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
-if test "x$ac_cv_func_socket" = x""yes; then :
+if test "x$ac_cv_func_socket" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_SOCKET 1
 _ACEOF
@@ -8764,7 +9463,7 @@ else
 
 { $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 :
+if ${ac_cv_lib_socket_socket+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8798,7 +9497,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_socket_socket" = xyes; then :
 
 
 cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'`
@@ -8818,7 +9517,7 @@ else
 
 { $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 :
+if ${ac_cv_lib_bsd_socket+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8852,7 +9551,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_bsd_socket" = xyes; then :
 
 
 cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'`
@@ -8883,7 +9582,7 @@ fi
 for ac_func in gethostbyname
 do :
   ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = x""yes; then :
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_GETHOSTBYNAME 1
 _ACEOF
@@ -8893,7 +9592,7 @@ else
 
 { $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 :
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -8927,7 +9626,7 @@ LIBS=$ac_check_lib_save_LIBS
 fi
 { $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 :
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
 
 
 cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'`
@@ -8956,21 +9655,23 @@ fi
 LIBS="$LIBS $cf_cv_netlibs"
 test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6
 
-       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 :
+     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" = xyes; then :
   use_customs=true
-                        REMOTE=cstms
-                        LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"
+                      REMOTE=cstms
+                      LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"
 else
   with_customs=no
-                        CPPFLAGS="$make_cppflags" make_badcust=yes
+                      CPPFLAGS="$make_cppflags" make_badcust=yes
 fi
 
 
-       ;;
-  esac
+     ;;
+esac
+
 fi
 
+
 # Tell automake about this, so it can include the right .c files.
  if test "$use_customs" = true; then
   USE_CUSTOMS_TRUE=
@@ -8983,18 +9684,16 @@ fi
 
 # 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
+  enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes; then :
+  $as_echo "#define HAVE_CASE_INSENSITIVE_FS 1" >>confdefs.h
+
+fi
 fi
 
 
 # See if we can handle the job server feature, and if the user wants it.
-
 # 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"
@@ -9003,14 +9702,15 @@ else
 fi
 
 
-has_wait_nohang=yes
-case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
-  no/no) has_wait_nohang=no ;;
-esac
+if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no; then :
+  has_wait_nohang=no
+else
+  has_wait_nohang=yes
+fi
 
 { $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 :
+if ${make_cv_sa_restart+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
 { $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
+if test "$make_cv_sa_restart" != no; then :
 
 $as_echo "#define HAVE_SA_RESTART 1" >>confdefs.h
 
+
 fi
 
-# enable make_cv_sa_restart for OS/2 so that the jobserver will be enabled,
-# but do it after HAVE_SA_RESTART has been defined.
-case "$host_os" in
-  os2*) make_cv_sa_restart=yes ;;
+# Only allow jobserver on systems that support it
+case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #(
+  */no/*) :
+    make_cv_job_server=no ;; #(
+  *) :
+     ;;
+esac
+
+# Also supported on OS2 and MinGW
+case $host_os in #(
+  os2*|mingw*) :
+    make_cv_job_server=yes ;; #(
+  *) :
+     ;;
 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)
+# If we support it and the user didn't disable it, build with jobserver
+case /$make_cv_job_server/$user_job_server/ in #(
+  */no/*) :
+    : no jobserver ;; #(
+  *) :
 
 $as_echo "#define MAKE_JOBSERVER 1" >>confdefs.h
-;;
+
+   ;;
+esac
+
+# If dl*() functions are supported we can enable the load operation
+ac_fn_c_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include <dlfcn.h>
+"
+if test "x$ac_cv_have_decl_dlopen" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_DLOPEN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include <dlfcn.h>
+"
+if test "x$ac_cv_have_decl_dlsym" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_DLSYM $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include <dlfcn.h>
+"
+if test "x$ac_cv_have_decl_dlerror" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_DLERROR $ac_have_decl
+_ACEOF
+
+
+# Check whether --enable-load was given.
+if test "${enable_load+set}" = set; then :
+  enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval"
+else
+  make_cv_load="yes"
+fi
+
+
+case /$ac_cv_func_dlopen/$ac_cv_func_dlsym/$ac_cv_func_dlerror/ in #(
+  */no/*) :
+    make_cv_load=no ;; #(
+  *) :
+     ;;
+esac
+
+case /$make_cv_load/$user_load/ in #(
+  */no/*) :
+    make_cv_load=no ;; #(
+  *) :
+
+$as_echo "#define MAKE_LOAD 1" >>confdefs.h
+
+   ;;
 esac
 
+# We might need -ldl
+if test "$make_cv_load" = yes; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+$as_echo_n "checking for library containing dlopen... " >&6; }
+if ${ac_cv_search_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* 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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dl; 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"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_dlopen=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dlopen+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dlopen+:} false; then :
+
+else
+  ac_cv_search_dlopen=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+$as_echo "$ac_cv_search_dlopen" >&6; }
+ac_res=$ac_cv_search_dlopen
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  make_cv_load=
+fi
+
+
+fi
+
+# If we want load support, we might need to link with export-dynamic.
+# See if we can figure it out.  Unfortunately this is very difficult.
+# For example passing -rdynamic to the SunPRO linker gives a warning
+# but succeeds and creates a shared object, not an executable!
+if test "$make_cv_load" = yes; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5
+$as_echo_n "checking If the linker accepts -Wl,--export-dynamic... " >&6; }
+  old_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(){}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     AM_LDFLAGS=-Wl,--export-dynamic
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5
+$as_echo_n "checking If the linker accepts -rdynamic... " >&6; }
+     LDFLAGS="$old_LDFLAGS -rdynamic"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(){}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        AM_LDFLAGS=-rdynamic
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS="$old_LDFLAGS"
+
+fi
+
 # if we have both lstat() and readlink() then we can support symlink
 # timechecks.
-case "$ac_cv_func_lstat/$ac_cv_func_readlink" in
-  yes/yes)
+if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes; then :
 
 $as_echo "#define MAKE_SYMLINKS 1" >>confdefs.h
-;;
-esac
+
+
+fi
 
 # Find the SCCS commands, so we can include them in our default rules.
 
 { $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 :
+if ${make_cv_path_sccs_get+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-if test -f /usr/sccs/get; then
+  if test -f /usr/sccs/get; then :
   make_cv_path_sccs_get=/usr/sccs/get
 else
   make_cv_path_sccs_get=get
 fi
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5
 $as_echo "$make_cv_path_sccs_get" >&6; }
@@ -9086,29 +9975,31 @@ _ACEOF
 
 
 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.
+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.
   { $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 :
+if ${make_cv_sys_get_minus_G+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
+            test -f conftoast; then :
+  make_cv_sys_get_minus_G=yes
+else
+  make_cv_sys_get_minus_G=no
+fi
 
-    if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
-       test -f conftoast; then
-       make_cv_sys_get_minus_G=yes
-    else
-       make_cv_sys_get_minus_G=no
-    fi
 fi
 { $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)
+  if test "$make_cv_sys_get_minus_G" = yes; then :
+
 $as_echo "#define SCCS_GET_MINUS_G 1" >>confdefs.h
-;;
-  esac
+
+
+fi
+
 fi
 rm -f s.conftest conftoast
 
@@ -9116,11 +10007,10 @@ rm -f s.conftest conftoast
 # local version.
 { $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 :
+if ${make_cv_sys_gnu_glob+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <features.h>
@@ -9134,25 +10024,22 @@ else
    gnu glob
 # endif
 #endif
-
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $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
+  make_cv_sys_gnu_glob=yes
 else
-  { $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
+  make_cv_sys_gnu_glob=no
 fi
 rm -f conftest*
 
 fi
-
-if test "$make_cv_sys_gnu_glob" = no; then
-  GLOBINC='-I$(srcdir)/glob'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5
+$as_echo "$make_cv_sys_gnu_glob" >&6; }
+if test "$make_cv_sys_gnu_glob" = no; then :
+   GLOBINC='-I$(srcdir)/glob'
   GLOBLIB=glob/libglob.a
+
 fi
 
 
@@ -9187,8 +10074,8 @@ else
 fi
 
 
-case "$host" in
-  *-*-mingw32)
+case $host in #(
+  *-*-mingw32) :
      if true; then
   WINDOWSENV_TRUE=
   WINDOWSENV_FALSE='#'
@@ -9204,7 +10091,9 @@ $as_echo "#define WINDOWS32 1" >>confdefs.h
 
 $as_echo "#define HAVE_DOS_PATHS 1" >>confdefs.h
 
-    ;;
+   ;; #(
+  *) :
+     ;;
 esac
 
 
@@ -9216,8 +10105,9 @@ _ACEOF
 # Include the Maintainer's Makefile section, if it's here.
 
 MAINT_MAKEFILE=/dev/null
-if test -r "$srcdir/maintMakefile"; then
-  MAINT_MAKEFILE="$srcdir/maintMakefile"
+if test -r "$srcdir/maintMakefile"; then :
+   MAINT_MAKEFILE="$srcdir/maintMakefile"
+
 fi
 
 
@@ -9252,45 +10142,61 @@ SET_MAKE=
 
 # Sanity check and inform the user of what we found
 
-case "$make_badcust" in
-  yes) echo
-       echo "WARNING: --with-customs specified but no customs.h could be found;"
-       echo "         disabling Customs support."
-       echo ;;
-esac
+if test "x$make_badcust" = xyes; then :
 
-case "$with_customs" in
-  ""|n|no|y|ye|yes) ;;
-  *) if test -f "$with_customs/lib/libcustoms.a"; then
-       :
-     else
-       echo
-       echo "WARNING: '$with_customs/lib' does not appear to contain the"
-       echo "         Customs library.  You must build and install Customs"
-       echo "         before compiling GNU make."
-       echo
-     fi ;;
-esac
+echo
+echo "WARNING: --with-customs specified but no customs.h could be found;"
+echo "         disabling Customs support."
+echo
 
-case "$has_wait_nohang" in
-  no) echo
-      echo "WARNING: Your system has neither waitpid() nor wait3()."
-      echo "         Without one of these, signal handling is unreliable."
-      echo "         You should be aware that running GNU make with -j"
-      echo "         could result in erratic behavior."
-      echo ;;
-esac
+fi
+
+case $with_customs in #(
+  ""|n|no|y|ye|yes) :
+    : ;; #(
+  *) :
+    if test -f "$with_customs/lib/libcustoms.a"; then :
+  :
+else
+   echo
+  echo "WARNING: '$with_customs/lib' does not appear to contain the"
+  echo "         Customs library.  You must build and install Customs"
+  echo "         before compiling GNU make."
+  echo
 
-case "$make_cv_job_server/$user_job_server" in
-  no/yes) echo
-         echo "WARNING: Make job server requires a POSIX-ish system that"
-         echo "         supports the pipe(), sigaction(), and either"
-          echo "         waitpid() or wait3() functions.  Your system doesn't"
-         echo "         appear to provide one or more of those."
-         echo "         Disabling job server support."
-          echo ;;
+fi ;;
 esac
 
+if test "x$has_wait_nohang" = xno; then :
+   echo
+  echo "WARNING: Your system has neither waitpid() nor wait3()."
+  echo "         Without one of these, signal handling is unreliable."
+  echo "         You should be aware that running GNU make with -j"
+  echo "         could result in erratic behavior."
+  echo
+
+fi
+
+if test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes; then :
+   echo
+  echo "WARNING: Make job server requires a POSIX-ish system that"
+  echo "         supports the pipe(), sigaction(), and either"
+  echo "         waitpid() or wait3() functions.  Your system doesn't"
+  echo "         appear to provide one or more of those."
+  echo "         Disabling job server support."
+  echo
+
+fi
+
+if test "x$make_cv_load" = xno && test "x$user_load" = xyes; then :
+   echo
+  echo "WARNING: 'load' support requires a POSIX-ish system that"
+  echo "         supports the dlopen(), dlsym(), and dlerror() functions."
+  echo "         Your system doesn't appear to provide one or more of these."
+  echo "         Disabling 'load' support."
+  echo
+
+fi
 
 # 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"
@@ -9362,10 +10268,21 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&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" &&
+    if test "x$cache_file" != "x/dev/null"; then
       { $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
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
   else
     { $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;}
@@ -9381,6 +10298,7 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -9404,31 +10322,35 @@ else
 fi
 
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error "conditional \"AMDEP\" was never defined.
+  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
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_GUILE\" 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
-  as_fn_error "conditional \"USE_CUSTOMS\" was never defined.
+  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
-  as_fn_error "conditional \"USE_LOCAL_GLOB\" was never defined.
+  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
-  as_fn_error "conditional \"WINDOWSENV\" was never defined.
+  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
-  as_fn_error "conditional \"WINDOWSENV\" was never defined.
+  as_fn_error $? "conditional \"WINDOWSENV\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -9529,6 +10451,7 @@ fi
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
 case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -9574,19 +10497,19 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS 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.
+# 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
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -9724,16 +10647,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... 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'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -9782,7 +10705,7 @@ $as_echo X"$as_dir" |
       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"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -9793,28 +10716,16 @@ else
   as_mkdir_p=false
 fi
 
-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
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # 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'"
@@ -9835,8 +10746,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # 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
+This file was extended by GNU make $as_me 4.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -9903,11 +10814,11 @@ _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.82
-configured by $0, generated by GNU Autoconf 2.65,
+GNU make config.status 4.0
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -9925,11 +10836,16 @@ ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -9951,6 +10867,7 @@ do
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -9963,7 +10880,7 @@ do
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error "ambiguous option: \`$1'
+    as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -9972,7 +10889,7 @@ Try \`$0 --help' for more information.";;
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
+  -*) as_fn_error $? "unrecognized option: \`$1'
 Try \`$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
@@ -9992,7 +10909,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$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'
@@ -10019,7 +10936,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 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
-    # from automake.
+    # from automake < 1.5.
     eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
     # Capture the value of LINGUAS because we need it to compute CATALOGS.
     LINGUAS="${LINGUAS-%UNSET%}"
@@ -10035,7 +10952,7 @@ do
   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" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "glob/Makefile") CONFIG_FILES="$CONFIG_FILES glob/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
@@ -10043,7 +10960,7 @@ do
     "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;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
   trap 'as_fn_exit 1' 1 2 13 15
 }
@@ -10076,12 +10994,13 @@ $debug ||
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -10115,24 +11034,24 @@ if test "x$ac_cr" = x; then
 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'
+  ac_cs_awk_cr='\\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 # Create commands to substitute file output variables.
 {
   echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
-  echo 'cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&' &&
+  echo 'cat >>"\$ac_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
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 rm -f conf$$files.sh
 
 {
@@ -10140,18 +11059,18 @@ rm -f conf$$files.sh
   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 '$'`
+  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
+    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
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -10159,7 +11078,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -10207,7 +11126,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = "\a"
   \$ac_cs_awk_pipe_init
@@ -10245,21 +11164,29 @@ 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
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries 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/
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[      ]*$//
 }'
 fi
@@ -10271,7 +11198,7 @@ fi # test -n "$CONFIG_FILES"
 # 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 ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
@@ -10283,11 +11210,11 @@ _ACEOF
 # 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
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -10372,7 +11299,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -10385,7 +11312,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -10404,7 +11331,7 @@ do
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_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 `:'.
@@ -10413,7 +11340,7 @@ do
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+          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'"
@@ -10439,8 +11366,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -10578,26 +11505,27 @@ $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
 if $ac_cs_awk_getline; then
-  $AWK -f "$tmp/subs.awk"
+  $AWK -f "$ac_tmp/subs.awk"
 else
-  $AWK -f "$tmp/subs.awk" | $SHELL
-fi >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  $AWK -f "$ac_tmp/subs.awk" | $SHELL
+fi \
+  >$ac_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"; } &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_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
+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;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -10606,21 +11534,21 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
   if test x"$ac_file" != x-; then
     {
       $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
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_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
       rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-       || as_fn_error "could not create $ac_file" "$LINENO" 5
+      mv "$ac_tmp/config.h" "$ac_file" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error "could not create -" "$LINENO" 5
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -10760,7 +11688,7 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "default-1":C)
+    "po-directories":C)
     for ac_file in $CONFIG_FILES; do
       # Support "outfile[:infile[:infile...]]"
       case "$ac_file" in
@@ -10780,6 +11708,9 @@ $as_echo X"$file" |
           /*) top_srcdir="$ac_given_srcdir" ;;
           *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
         esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
         if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
           rm -f "$ac_dir/POTFILES"
           test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
@@ -10793,12 +11724,13 @@ $as_echo X"$file" |
             if test -n "$OBSOLETE_ALL_LINGUAS"; then
               test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
             fi
-            ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
-            # Hide the ALL_LINGUAS assigment from automake.
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
             eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
             POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
           else
             # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
             eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
           fi
           # Compute POFILES
@@ -10879,7 +11811,7 @@ _ACEOF
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -10900,7 +11832,7 @@ 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 || as_fn_exit $?
+  $ac_cs_success || as_fn_exit 1
 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
@@ -10910,8 +11842,9 @@ fi
 
 # We only generate the build.sh if we have a build.sh.in; we won't have
 # one before we've created a distribution.
-if test -f "$srcdir/build.sh.in"; then
-  ./config.status --file build.sh
+if test -f "$srcdir/build.sh.in"; then :
+   ./config.status --file build.sh
   chmod +x build.sh
+
 fi
 
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..d73dd8c
--- /dev/null
@@ -0,0 +1,519 @@
+# Process this file with autoconf to produce a configure script.
+#
+# Copyright (C) 1993-2013 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/>.
+
+AC_INIT([GNU make],[4.0],[bug-make@gnu.org])
+
+AC_PREREQ([2.62])
+
+# Autoconf setup
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_SRCDIR([vpath.c])
+AC_CONFIG_HEADERS([config.h])
+
+# Automake setup
+AM_INIT_AUTOMAKE([1.11.1 silent-rules])
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_PROG_RANLIB
+AC_PROG_CPP
+AC_CHECK_PROG([AR], [ar], [ar], [ar])
+# Perl is needed for the test suite (only)
+AC_CHECK_PROG([PERL], [perl], [perl], [perl])
+
+# Specialized system macros
+AC_CANONICAL_HOST
+AC_AIX
+AC_ISC_POSIX
+AC_MINIX
+
+# Enable gettext, in "external" mode.
+
+AM_GNU_GETTEXT_VERSION([0.18.1])
+AM_GNU_GETTEXT([external])
+
+# 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.
+AC_SYS_LARGEFILE
+
+# Checks for libraries.
+AC_SEARCH_LIBS([getpwnam], [sun])
+
+# Checks for header files.
+AC_HEADER_STDC
+AC_HEADER_DIRENT
+AC_HEADER_STAT
+AC_HEADER_TIME
+AC_CHECK_HEADERS([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])
+
+AM_PROG_CC_C_O
+AC_C_CONST
+AC_TYPE_SIGNAL
+AC_TYPE_UID_T
+AC_TYPE_PID_T
+
+# Find some definition for uintmax_t
+
+AC_CHECK_TYPE([uintmax_t],[],
+[ uintmax_t="unsigned long"
+  AC_CHECK_TYPE([unsigned long long],[uintmax_t="unsigned long long"])
+  AC_DEFINE_UNQUOTED([uintmax_t], [$uintmax_t],
+    [Define uintmax_t if not defined in <stdint.h> or <inttypes.h>.])
+])
+
+# Find out whether our struct stat returns nanosecond resolution timestamps.
+
+AC_STRUCT_ST_MTIM_NSEC
+AC_CACHE_CHECK([whether to use high resolution file timestamps],
+               [make_cv_file_timestamp_hi_res],
+[ make_cv_file_timestamp_hi_res=no
+  AS_IF([test "$ac_cv_struct_st_mtim_nsec" != no],
+        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif]],
+                      [[char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1];]])],
+        [make_cv_file_timestamp_hi_res=yes])
+  ])])
+AS_IF([test "$make_cv_file_timestamp_hi_res" = yes], [val=1], [val=0])
+AC_DEFINE_UNQUOTED([FILE_TIMESTAMP_HI_RES], [$val],
+                   [Use high resolution file timestamps if nonzero.])
+
+AS_IF([test "$make_cv_file_timestamp_hi_res" = yes],
+[ # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
+  # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+  AC_SEARCH_LIBS([clock_gettime], [rt posix4])
+  AS_IF([test "$ac_cv_search_clock_gettime" != no],
+  [ AC_DEFINE([HAVE_CLOCK_GETTIME], [1],
+              [Define to 1 if you have the clock_gettime function.])
+  ])
+])
+
+# Check for DOS-style pathnames.
+pds_AC_DOS_PATHS
+
+# See if we have a standard version of gettimeofday().  Since actual
+# implementations can differ, just make sure we have the most common
+# one.
+AC_CACHE_CHECK([for standard gettimeofday], [ac_cv_func_gettimeofday],
+  [ac_cv_func_gettimeofday=no
+   AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/time.h>
+                  int main ()
+                  {
+                    struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
+                    exit (gettimeofday (&t, 0) != 0
+                          || t.tv_sec < 0 || t.tv_usec < 0);
+                  }]])],
+                  [ac_cv_func_gettimeofday=yes],
+                  [ac_cv_func_gettimeofday=no],
+                  [ac_cv_func_gettimeofday="no (cross-compiling)"])])
+AS_IF([test "$ac_cv_func_gettimeofday" = yes],
+[ AC_DEFINE([HAVE_GETTIMEOFDAY], [1],
+            [Define to 1 if you have a standard gettimeofday function])
+])
+
+AC_CHECK_FUNCS([strdup strndup mkstemp mktemp fdopen fileno \
+                dup 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], [], [], [[#define _GNU_SOURCE 1
+#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
+
+AC_FUNC_ALLOCA
+AC_FUNC_CLOSEDIR_VOID
+
+# See if the user wants to add (or not) GNU Guile support
+PKG_PROG_PKG_CONFIG
+AC_ARG_WITH([guile], [AS_HELP_STRING([--with-guile],
+            [Support GNU Guile for embedded scripting])])
+
+# For some strange reason, at least on Ubuntu, each version of Guile
+# comes with it's own PC file so we have to specify them as individual
+# packages.  Ugh.
+AS_IF([test "x$with_guile" != xno],
+[ PKG_CHECK_MODULES([GUILE], [guile-2.0], [have_guile=yes],
+  [PKG_CHECK_MODULES([GUILE], [guile-1.8], [have_guile=yes],
+    [have_guile=no])])
+])
+
+AS_IF([test "$have_guile" = yes],
+      [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])])
+
+AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = yes])
+
+AC_FUNC_GETLOADAVG
+
+# AC_FUNC_GETLOADAVG is documented to set the NLIST_STRUCT value, but it
+# doesn't.  So, we will.
+
+AS_IF([test "$ac_cv_header_nlist_h" = yes],
+[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]],
+        [[struct nlist nl;
+          nl.n_name = "string";
+          return 0;]])],
+        [make_cv_nlist_struct=yes],
+        [make_cv_nlist_struct=no])
+  AS_IF([test "$make_cv_nlist_struct" = yes],
+  [ AC_DEFINE([NLIST_STRUCT], [1],
+       [Define to 1 if struct nlist.n_name is a pointer rather than an array.])
+  ])
+])
+
+AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
+  [AC_INCLUDES_DEFAULT
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+])
+
+
+# Check out the wait reality.
+AC_CHECK_HEADERS([sys/wait.h],[],[],[[#include <sys/types.h>]])
+AC_CHECK_FUNCS([waitpid wait3])
+AC_CACHE_CHECK([for union wait], [make_cv_union_wait],
+[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <sys/wait.h>]],
+     [[union wait status; int pid; pid = wait (&status);
+#ifdef WEXITSTATUS
+/* Some POSIXoid systems have both the new-style macros and the old
+   union wait type, and they do not work together.  If union wait
+   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
+        if (WEXITSTATUS (status) != 0) pid = -1;
+#ifdef WTERMSIG
+        /* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
+        -- blow chunks here --
+#endif
+#endif
+#ifdef HAVE_WAITPID
+        /* Make sure union wait works with waitpid.  */
+        pid = waitpid (-1, &status, 0);
+#endif
+      ]])],
+    [make_cv_union_wait=yes],
+    [make_cv_union_wait=no])
+])
+AS_IF([test "$make_cv_union_wait" = yes],
+[ AC_DEFINE([HAVE_UNION_WAIT], [1],
+            [Define to 1 if you have the 'union wait' type in <sys/wait.h>.])
+])
+
+
+# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs.
+AS_IF([test "$PATH_SEPARATOR" = ';'],
+[ AC_DEFINE([HAVE_DOS_PATHS], [1],
+            [Define to 1 if your system requires backslashes or drive specs in pathnames.])
+])
+
+# See if the user wants to use pmake's "customs" distributed build capability
+AC_SUBST([REMOTE]) REMOTE=stub
+use_customs=false
+AC_ARG_WITH([customs],
+[ AC_HELP_STRING([--with-customs=DIR],
+                 [enable remote jobs via Customs--see README.customs])],
+[ AS_CASE([$withval], [n|no], [:],
+    [make_cppflags="$CPPFLAGS"
+     AS_CASE([$withval],
+             [y|ye|yes], [:],
+             [CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
+              make_ldflags="$LDFLAGS -L$with_customs/lib"])
+     CF_NETLIBS
+     AC_CHECK_HEADER([customs.h],
+                     [use_customs=true
+                      REMOTE=cstms
+                      LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"],
+                     [with_customs=no
+                      CPPFLAGS="$make_cppflags" make_badcust=yes])
+    ])
+])
+
+# Tell automake about this, so it can include the right .c files.
+AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true])
+
+# See if the user asked to handle case insensitive file systems.
+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],
+                 [assume file systems are case insensitive]),
+  [AS_IF([test "$enableval" = yes], [AC_DEFINE([HAVE_CASE_INSENSITIVE_FS])])])
+
+# See if we can handle the job server feature, and if the user wants it.
+AC_ARG_ENABLE([job-server],
+  AC_HELP_STRING([--disable-job-server],
+                 [disallow recursive make communication during -jN]),
+  [make_cv_job_server="$enableval" user_job_server="$enableval"],
+  [make_cv_job_server="yes"])
+
+AS_IF([test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no],
+      [has_wait_nohang=no],
+      [has_wait_nohang=yes])
+
+AC_CACHE_CHECK([for SA_RESTART], [make_cv_sa_restart], [
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]],
+      [[return SA_RESTART;]])],
+    [make_cv_sa_restart=yes],
+    [make_cv_sa_restart=no])])
+
+AS_IF([test "$make_cv_sa_restart" != no],
+[ AC_DEFINE([HAVE_SA_RESTART], [1],
+     [Define to 1 if <signal.h> defines the SA_RESTART constant.])
+])
+
+# Only allow jobserver on systems that support it
+AS_CASE([/$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/],
+  [*/no/*], [make_cv_job_server=no])
+
+# Also supported on OS2 and MinGW
+AS_CASE([$host_os], [os2*|mingw*], [make_cv_job_server=yes])
+
+# If we support it and the user didn't disable it, build with jobserver
+AS_CASE([/$make_cv_job_server/$user_job_server/],
+  [*/no/*], [: no jobserver],
+  [AC_DEFINE(MAKE_JOBSERVER, 1,
+             [Define to 1 to enable job server support in GNU make.])
+  ])
+
+# If dl*() functions are supported we can enable the load operation
+AC_CHECK_DECLS([dlopen, dlsym, dlerror], [], [],
+  [[#include <dlfcn.h>]])
+
+AC_ARG_ENABLE([load],
+  AC_HELP_STRING([--disable-load],
+                 [disable support for the 'load' operation]),
+  [make_cv_load="$enableval" user_load="$enableval"],
+  [make_cv_load="yes"])
+
+AS_CASE([/$ac_cv_func_dlopen/$ac_cv_func_dlsym/$ac_cv_func_dlerror/],
+  [*/no/*], [make_cv_load=no])
+
+AS_CASE([/$make_cv_load/$user_load/],
+  [*/no/*], [make_cv_load=no],
+  [AC_DEFINE(MAKE_LOAD, 1,
+             [Define to 1 to enable 'load' support in GNU make.])
+  ])
+
+# We might need -ldl
+AS_IF([test "$make_cv_load" = yes], [
+  AC_SEARCH_LIBS([dlopen], [dl], [], [make_cv_load=])
+  ])
+
+# If we want load support, we might need to link with export-dynamic.
+# See if we can figure it out.  Unfortunately this is very difficult.
+# For example passing -rdynamic to the SunPRO linker gives a warning
+# but succeeds and creates a shared object, not an executable!
+AS_IF([test "$make_cv_load" = yes], [
+  AC_MSG_CHECKING([If the linker accepts -Wl,--export-dynamic])
+  old_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+  AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])],
+    [AC_MSG_RESULT([yes])
+     AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic])],
+    [AC_MSG_RESULT([no])
+     AC_MSG_CHECKING([If the linker accepts -rdynamic])
+     LDFLAGS="$old_LDFLAGS -rdynamic"
+     AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])],
+       [AC_MSG_RESULT([yes])
+        AC_SUBST([AM_LDFLAGS], [-rdynamic])],
+       [AC_MSG_RESULT([no])])
+   ])
+  LDFLAGS="$old_LDFLAGS"
+])
+
+# if we have both lstat() and readlink() then we can support symlink
+# timechecks.
+AS_IF([test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes],
+  [ AC_DEFINE([MAKE_SYMLINKS], [1],
+              [Define to 1 to enable symbolic link timestamp checking.])
+])
+
+# Find the SCCS commands, so we can include them in our default rules.
+
+AC_CACHE_CHECK([for location of SCCS get command], [make_cv_path_sccs_get], [
+  AS_IF([test -f /usr/sccs/get],
+        [make_cv_path_sccs_get=/usr/sccs/get],
+        [make_cv_path_sccs_get=get])
+])
+AC_DEFINE_UNQUOTED([SCCS_GET], ["$make_cv_path_sccs_get"],
+                   [Define to the name of the SCCS 'get' command.])
+
+ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
+AS_IF([(/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 &&
+   test -f s.conftest],
+[ # We successfully created an SCCS file.
+  AC_CACHE_CHECK([if SCCS get command understands -G], [make_cv_sys_get_minus_G],
+    [AS_IF([$make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
+            test -f conftoast],
+           [make_cv_sys_get_minus_G=yes],
+           [make_cv_sys_get_minus_G=no])
+    ])
+  AS_IF([test "$make_cv_sys_get_minus_G" = yes],
+    [AC_DEFINE([SCCS_GET_MINUS_G], [1],
+     [Define to 1 if the SCCS 'get' command understands the '-G<file>' option.])
+    ])
+])
+rm -f s.conftest conftoast
+
+# Check the system to see if it provides GNU glob.  If not, use our
+# local version.
+AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],
+[ AC_EGREP_CPP([gnu glob],[
+#include <features.h>
+#include <glob.h>
+#include <fnmatch.h>
+
+#define GLOB_INTERFACE_VERSION 1
+#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
+# include <gnu-versions.h>
+# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
+   gnu glob
+# endif
+#endif],
+        [make_cv_sys_gnu_glob=yes],
+        [make_cv_sys_gnu_glob=no])])
+AS_IF([test "$make_cv_sys_gnu_glob" = no],
+[ GLOBINC='-I$(srcdir)/glob'
+  GLOBLIB=glob/libglob.a
+])
+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])
+
+# Let the makefile know what our build host is
+
+AC_DEFINE_UNQUOTED([MAKE_HOST],["$host"],[Build host information.])
+MAKE_HOST="$host"
+AC_SUBST([MAKE_HOST])
+
+w32_target_env=no
+AM_CONDITIONAL([WINDOWSENV], [false])
+
+AS_CASE([$host],
+  [*-*-mingw32],
+   [AM_CONDITIONAL([WINDOWSENV], [true])
+    w32_target_env=yes
+    AC_DEFINE([WINDOWS32], [1], [Use platform specific coding])
+    AC_DEFINE([HAVE_DOS_PATHS], [1], [Use platform specific coding])
+  ])
+
+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
+AS_IF([test -r "$srcdir/maintMakefile"],
+[ MAINT_MAKEFILE="$srcdir/maintMakefile"
+])
+AC_SUBST_FILE([MAINT_MAKEFILE])
+
+# Allow building with dmalloc
+AM_WITH_DMALLOC
+
+# Forcibly disable SET_MAKE.  If it's set it breaks things like the test
+# scripts, etc.
+SET_MAKE=
+
+# Sanity check and inform the user of what we found
+
+AS_IF([test "x$make_badcust" = xyes], [
+echo
+echo "WARNING: --with-customs specified but no customs.h could be found;"
+echo "         disabling Customs support."
+echo
+])
+
+AS_CASE([$with_customs],
+[""|n|no|y|ye|yes], [:],
+[AS_IF([test -f "$with_customs/lib/libcustoms.a"], [:],
+[ echo
+  echo "WARNING: '$with_customs/lib' does not appear to contain the"
+  echo "         Customs library.  You must build and install Customs"
+  echo "         before compiling GNU make."
+  echo
+])])
+
+AS_IF([test "x$has_wait_nohang" = xno],
+[ echo
+  echo "WARNING: Your system has neither waitpid() nor wait3()."
+  echo "         Without one of these, signal handling is unreliable."
+  echo "         You should be aware that running GNU make with -j"
+  echo "         could result in erratic behavior."
+  echo
+])
+
+AS_IF([test "x$make_cv_job_server" = xno && test "x$user_job_server" = xyes],
+[ echo
+  echo "WARNING: Make job server requires a POSIX-ish system that"
+  echo "         supports the pipe(), sigaction(), and either"
+  echo "         waitpid() or wait3() functions.  Your system doesn't"
+  echo "         appear to provide one or more of those."
+  echo "         Disabling job server support."
+  echo
+])
+
+AS_IF([test "x$make_cv_load" = xno && test "x$user_load" = xyes],
+[ echo
+  echo "WARNING: 'load' support requires a POSIX-ish system that"
+  echo "         supports the dlopen(), dlsym(), and dlerror() functions."
+  echo "         Your system doesn't appear to provide one or more of these."
+  echo "         Disabling 'load' support."
+  echo
+])
+
+# Specify what files are to be created.
+AC_CONFIG_FILES([Makefile glob/Makefile po/Makefile.in config/Makefile \
+                 doc/Makefile w32/Makefile])
+
+# OK, do it!
+
+AC_OUTPUT
+
+# We only generate the build.sh if we have a build.sh.in; we won't have
+# one before we've created a distribution.
+AS_IF([test -f "$srcdir/build.sh.in"],
+[ ./config.status --file build.sh
+  chmod +x build.sh
+])
+
+dnl Local Variables:
+dnl comment-start: "dnl "
+dnl comment-end: ""
+dnl comment-start-skip: "\\bdnl\\b\\s *"
+dnl compile-command: "make configure config.h.in"
+dnl End:
index c7b4591..aba3a3b 100644 (file)
@@ -1,6 +1,5 @@
 @echo off\r
-rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,\r
-rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
+rem Copyright (C) 1994-2013 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
diff --git a/configure.in b/configure.in
deleted file mode 100644 (file)
index 0b03617..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-# 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, 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/>.
-
-AC_INIT([GNU make],[3.82],[bug-make@gnu.org])
-
-AC_PREREQ(2.59)
-AC_REVISION([[$Id: configure.in,v 1.156 2010/07/28 05:39:50 psmith Exp $]])
-
-# Autoconf setup
-AC_CONFIG_AUX_DIR(config)
-AC_CONFIG_SRCDIR(vpath.c)
-AC_CONFIG_HEADERS(config.h)
-
-# Automake setup
-AM_INIT_AUTOMAKE([1.9])
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_RANLIB
-AC_PROG_CPP
-AC_CHECK_PROG(AR, ar, ar, ar)
-# Perl is needed for the test suite (only)
-AC_CHECK_PROG(PERL, perl, perl, perl)
-
-# Specialized system macros
-AC_CANONICAL_HOST
-AC_AIX
-AC_ISC_POSIX
-AC_MINIX
-
-# Enable gettext, in "external" mode.
-
-AM_GNU_GETTEXT_VERSION(0.14.1)
-AM_GNU_GETTEXT([external])
-
-# 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.
-AC_SYS_LARGEFILE
-
-# Checks for libraries.
-AC_SEARCH_LIBS(getpwnam, [sun])
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_DIRENT
-AC_HEADER_STAT
-AC_HEADER_TIME
-AC_CHECK_HEADERS(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)
-
-# 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 to 1 if your compiler conforms to the ANSI C standard.])
-fi
-
-
-# Determine what kind of variadic function calls we support
-AC_CHECK_HEADERS(stdarg.h varargs.h, break)
-
-AM_PROG_CC_C_O
-AC_C_CONST
-AC_TYPE_SIGNAL
-AC_TYPE_UID_T
-AC_TYPE_PID_T
-
-# Find some definition for uintmax_t
-
-AC_CHECK_TYPE(uintmax_t,,[
-  uintmax_t="unsigned long"
-  AC_CHECK_TYPE(unsigned long long,[uintmax_t="unsigned long long"])
-  AC_DEFINE_UNQUOTED(uintmax_t,$uintmax_t,
-    [Define uintmax_t if not defined in <stdint.h> or <inttypes.h>.])])
-
-# Find out whether our struct stat returns nanosecond resolution timestamps.
-
-AC_STRUCT_ST_MTIM_NSEC
-AC_MSG_CHECKING([whether to use high resolution file timestamps])
-AC_CACHE_VAL(make_cv_file_timestamp_hi_res, [
-  make_cv_file_timestamp_hi_res=no
-  if test "$ac_cv_struct_st_mtim_nsec" != no; then
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#      if HAVE_INTTYPES_H
-#       include <inttypes.h>
-#      endif]],
-                     [[char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1];]])],
-      [make_cv_file_timestamp_hi_res=yes],
-      [])
-  fi])
-AC_MSG_RESULT($make_cv_file_timestamp_hi_res)
-if test "$make_cv_file_timestamp_hi_res" = yes; then
-  val=1
-else
-  val=0
-fi
-AC_DEFINE_UNQUOTED(FILE_TIMESTAMP_HI_RES, $val,
-                  [Use high resolution file timestamps if nonzero.])
-
-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.
-  AC_SEARCH_LIBS(clock_gettime, [rt posix4])
-  if test "$ac_cv_search_clock_gettime" != no; then
-    AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
-             [Define to 1 if you have the clock_gettime function.])
-  fi
-fi
-
-# Check for DOS-style pathnames.
-pds_AC_DOS_PATHS
-
-# See if we have a standard version of gettimeofday().  Since actual
-# implementations can differ, just make sure we have the most common
-# one.
-AC_CACHE_CHECK([for standard gettimeofday], ac_cv_func_gettimeofday,
-  [ac_cv_func_gettimeofday=no
-   AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/time.h>
-                  int main ()
-                 {
-                   struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
-                   exit (gettimeofday (&t, 0) != 0
-                         || t.tv_sec < 0 || t.tv_usec < 0);
-                 }]])],
-                 [ac_cv_func_gettimeofday=yes],
-                 [ac_cv_func_gettimeofday=no],
-                 [ac_cv_func_gettimeofday="no (cross-compiling)"])])
-if test "$ac_cv_func_gettimeofday" = yes; then
-  AC_DEFINE(HAVE_GETTIMEOFDAY, 1,
-           [Define to 1 if you have a standard gettimeofday function])
-fi
-
-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
-
-AC_FUNC_ALLOCA
-AC_FUNC_FORK([])
-AC_FUNC_VPRINTF
-AC_FUNC_CLOSEDIR_VOID
-
-AC_FUNC_GETLOADAVG
-
-# AC_FUNC_GETLOADAVG is documented to set the NLIST_STRUCT value, but it
-# doesn't.  So, we will.
-
-if test "$ac_cv_header_nlist_h" = yes; then
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]],
-       [[struct nlist nl;
-          nl.n_name = "string";
-          return 0;]])],
-       [make_cv_nlist_struct=yes],
-       [make_cv_nlist_struct=no])
-  if test "$make_cv_nlist_struct" = yes; then
-    AC_DEFINE(NLIST_STRUCT, 1,
-       [Define to 1 if struct nlist.n_name is a pointer rather than an array.])
-  fi
-fi
-
-AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
-  [AC_INCLUDES_DEFAULT
-#include <signal.h>
-/* NetBSD declares sys_siglist in unistd.h.  */
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-])
-
-
-# Check out the wait reality.
-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
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/wait.h>]],
-     [[union wait status; int pid; pid = wait (&status);
-#ifdef WEXITSTATUS
-/* Some POSIXoid systems have both the new-style macros and the old
-   union wait type, and they do not work together.  If union wait
-   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
-        if (WEXITSTATUS (status) != 0) pid = -1;
-#ifdef WTERMSIG
-        /* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
-        -- blow chunks here --
-#endif
-#endif
-#ifdef HAVE_WAITPID
-        /* Make sure union wait works with waitpid.  */
-        pid = waitpid (-1, &status, 0);
-#endif
-      ]])],
-    [make_cv_union_wait=yes],
-    [make_cv_union_wait=no])])
-if test "$make_cv_union_wait" = yes; then
-  AC_DEFINE(HAVE_UNION_WAIT, 1,
-            [Define to 1 if you have the \`union wait' type in <sys/wait.h>.])
-fi
-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 to 1 if your system requires backslashes or drive specs in pathnames.])
-fi
-
-
-# See if the user wants to use pmake's "customs" distributed build capability
-
-AC_SUBST(REMOTE) REMOTE=stub
-use_customs=false
-AC_ARG_WITH(customs,
-  AC_HELP_STRING([--with-customs=DIR],
-                [enable remote jobs via Customs--see README.customs]),
-  [case $withval in
-    n|no) : ;;
-    *) make_cppflags="$CPPFLAGS"
-       case $withval in
-        y|ye|yes) : ;;
-        *) CPPFLAGS="$CPPFLAGS -I$with_customs/include/customs"
-           make_ldflags="$LDFLAGS -L$with_customs/lib" ;;
-       esac
-       CF_NETLIBS
-       AC_CHECK_HEADER(customs.h,
-                      [use_customs=true
-                        REMOTE=cstms
-                        LIBS="$LIBS -lcustoms" LDFLAGS="$make_ldflags"],
-                      [with_customs=no
-                        CPPFLAGS="$make_cppflags" make_badcust=yes])
-       ;;
-  esac])
-# Tell automake about this, so it can include the right .c files.
-AM_CONDITIONAL(USE_CUSTOMS, test "$use_customs" = true)
-
-# See if the user asked to handle case insensitive file systems.
-
-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],
-                [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.
-
-AC_ARG_ENABLE(job-server,
-  AC_HELP_STRING([--disable-job-server],
-                 [disallow recursive make communication during -jN]),
-  [make_cv_job_server="$enableval" user_job_server="$enableval"],
-  [make_cv_job_server="yes"])
-
-has_wait_nohang=yes
-case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
-  no/no) has_wait_nohang=no ;;
-esac
-
-AC_CACHE_CHECK(for SA_RESTART, make_cv_sa_restart, [
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]],
-      [[return SA_RESTART;]])],
-    [make_cv_sa_restart=yes],
-    [make_cv_sa_restart=no])])
-
-if test "$make_cv_sa_restart" != no; then
-  AC_DEFINE(HAVE_SA_RESTART, 1,
-     [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,
-# but do it after HAVE_SA_RESTART has been defined.
-case "$host_os" in
-  os2*) make_cv_sa_restart=yes ;;
-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 to 1 to enable job server support in GNU make.]);;
-esac
-
-# if we have both lstat() and readlink() then we can support symlink
-# timechecks.
-case "$ac_cv_func_lstat/$ac_cv_func_readlink" in
-  yes/yes)
-    AC_DEFINE(MAKE_SYMLINKS, 1,
-              [Define to 1 to enable symbolic link timestamp checking.]);;
-esac
-
-# Find the SCCS commands, so we can include them in our default rules.
-
-AC_CACHE_CHECK(for location of SCCS get command, make_cv_path_sccs_get, [
-if test -f /usr/sccs/get; then
-  make_cv_path_sccs_get=/usr/sccs/get
-else
-  make_cv_path_sccs_get=get
-fi])
-AC_DEFINE_UNQUOTED(SCCS_GET, ["$make_cv_path_sccs_get"],
-                  [Define to the name of the SCCS 'get' command.])
-
-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.
-  AC_CACHE_CHECK(if SCCS get command understands -G, make_cv_sys_get_minus_G, [
-    if $make_cv_path_sccs_get -Gconftoast s.conftest >/dev/null 2>&1 &&
-       test -f conftoast; then
-       make_cv_sys_get_minus_G=yes
-    else
-       make_cv_sys_get_minus_G=no
-    fi])
-  case "$make_cv_sys_get_minus_G" in
-    yes) AC_DEFINE(SCCS_GET_MINUS_G, 1,
-           [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,[
-#include <features.h>
-#include <glob.h>
-#include <fnmatch.h>
-
-#define GLOB_INTERFACE_VERSION 1
-#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
-# include <gnu-versions.h>
-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
-   gnu glob
-# endif
-#endif
- ], [AC_MSG_RESULT(yes)
-make_cv_sys_gnu_glob=yes], [AC_MSG_RESULT([no; using local copy])
-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)
-
-# Let the makefile know what our build host is
-
-AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.])
-MAKE_HOST="$host"
-AC_SUBST(MAKE_HOST)
-
-w32_target_env=no
-AM_CONDITIONAL([WINDOWSENV], false)
-
-case "$host" in
-  *-*-mingw32)
-    AM_CONDITIONAL(WINDOWSENV, true)
-    w32_target_env=yes
-    AC_DEFINE([WINDOWS32], [1], [Use platform specific coding])
-    AC_DEFINE([HAVE_DOS_PATHS], [1], [Use platform specific coding])
-    ;;
-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
-if test -r "$srcdir/maintMakefile"; then
-  MAINT_MAKEFILE="$srcdir/maintMakefile"
-fi
-AC_SUBST_FILE(MAINT_MAKEFILE)
-
-# Allow building with dmalloc
-AM_WITH_DMALLOC
-
-# Forcibly disable SET_MAKE.  If it's set it breaks things like the test
-# scripts, etc.
-SET_MAKE=
-
-# Sanity check and inform the user of what we found
-
-case "$make_badcust" in
-  yes) echo
-       echo "WARNING: --with-customs specified but no customs.h could be found;"
-       echo "         disabling Customs support."
-       echo ;;
-esac
-
-case "$with_customs" in
-  ""|n|no|y|ye|yes) ;;
-  *) if test -f "$with_customs/lib/libcustoms.a"; then
-       :
-     else
-       echo
-       echo "WARNING: '$with_customs/lib' does not appear to contain the"
-       echo "         Customs library.  You must build and install Customs"
-       echo "         before compiling GNU make."
-       echo
-     fi ;;
-esac
-
-case "$has_wait_nohang" in
-  no) echo
-      echo "WARNING: Your system has neither waitpid() nor wait3()."
-      echo "         Without one of these, signal handling is unreliable."
-      echo "         You should be aware that running GNU make with -j"
-      echo "         could result in erratic behavior."
-      echo ;;
-esac
-
-case "$make_cv_job_server/$user_job_server" in
-  no/yes) echo
-         echo "WARNING: Make job server requires a POSIX-ish system that"
-         echo "         supports the pipe(), sigaction(), and either"
-          echo "         waitpid() or wait3() functions.  Your system doesn't"
-         echo "         appear to provide one or more of those."
-         echo "         Disabling job server support."
-          echo ;;
-esac
-
-
-# Specify what files are to be created.
-AC_CONFIG_FILES(Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile w32/Makefile)
-
-# OK, do it!
-
-AC_OUTPUT
-
-# We only generate the build.sh if we have a build.sh.in; we won't have
-# one before we've created a distribution.
-if test -f "$srcdir/build.sh.in"; then
-  ./config.status --file build.sh
-  chmod +x build.sh
-fi
-
-dnl Local Variables:
-dnl comment-start: "dnl "
-dnl comment-end: ""
-dnl comment-start-skip: "\\bdnl\\b\\s *"
-dnl compile-command: "make configure config.h.in"
-dnl End:
diff --git a/debug.h b/debug.h
index 3d20c87..9f630d6 100644 (file)
--- a/debug.h
+++ b/debug.h
@@ -1,6 +1,5 @@
 /* Debugging macros and interface.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1999-2013 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
index 4d6d984..47b7dd3 100644 (file)
--- a/default.c
+++ b/default.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,10 @@ 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 "make.h"
+#include "makeint.h"
+
+#include <assert.h>
+
 #include "filedef.h"
 #include "variable.h"
 #include "rule.h"
@@ -32,8 +33,8 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
 /* This is the default list of suffixes for suffix rules.
-   `.s' must come last, so that a `.o' file will be made from
-   a `.c' or `.p' or ... file rather than from a .s file.  */
+   '.s' must come last, so that a '.o' file will be made from
+   a '.c' or '.p' or ... file rather than from a .s file.  */
 
 static char default_suffixes[]
 #ifdef VMS
@@ -53,23 +54,23 @@ static char default_suffixes[]
 static struct pspec default_pattern_rules[] =
   {
     { "(%)", "%",
-       "$(AR) $(ARFLAGS) $@ $<" },
+        "$(AR) $(ARFLAGS) $@ $<" },
 
     /* The X.out rules are only in BSD's default set because
-       BSD Make has no null-suffix rules, so `foo.out' and
-       `foo' are the same thing.  */
+       BSD Make has no null-suffix rules, so 'foo.out' and
+       'foo' are the same thing.  */
 #ifdef VMS
     { "%.exe", "%",
         "copy $< $@" },
 #else
     { "%.out", "%",
-       "@rm -f $@ \n cp $< $@" },
+        "@rm -f $@ \n cp $< $@" },
 #endif
     /* Syntax is "ctangle foo.w foo.ch foo.c".  */
     { "%.c", "%.w %.ch",
-       "$(CTANGLE) $^ $@" },
+        "$(CTANGLE) $^ $@" },
     { "%.tex", "%.w %.ch",
-       "$(CWEAVE) $^ $@" },
+        "$(CWEAVE) $^ $@" },
 
     { 0, 0, 0 }
   };
@@ -88,21 +89,21 @@ static struct pspec default_terminal_rules[] =
         "if f$$search($@) .nes. \"\" then +$(CHECKOUT,v)" },
 
     /* SCCS.  */
-       /* ain't no SCCS on vms */
+        /* ain't no SCCS on vms */
 #else
     /* RCS.  */
     { "%", "%,v",
-       "$(CHECKOUT,v)" },
+        "$(CHECKOUT,v)" },
     { "%", "RCS/%,v",
-       "$(CHECKOUT,v)" },
+        "$(CHECKOUT,v)" },
     { "%", "RCS/%",
-       "$(CHECKOUT,v)" },
+        "$(CHECKOUT,v)" },
 
     /* SCCS.  */
     { "%", "s.%",
-       "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
+        "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
     { "%", "SCCS/s.%",
-       "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
+        "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" },
 #endif /* !VMS */
     { 0, 0, 0 }
   };
@@ -293,13 +294,13 @@ static char *default_suffix_rules[] =
     "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<",
 
     ".w.c",
-    "$(CTANGLE) $< - $@",      /* The `-' says there is no `.ch' file.  */
+    "$(CTANGLE) $< - $@",       /* The '-' says there is no '.ch' file.  */
 
     ".web.p",
     "$(TANGLE) $<",
 
     ".w.tex",
-    "$(CWEAVE) $< - $@",       /* The `-' says there is no `.ch' file.  */
+    "$(CWEAVE) $< - $@",        /* The '-' says there is no '.ch' file.  */
 
     ".web.tex",
     "$(WEAVE) $<",
@@ -401,7 +402,7 @@ static const char *default_variables[] =
 #ifdef GCC_IS_NATIVE
     "CC", "gcc",
 # ifdef __MSDOS__
-    "CXX", "gpp",      /* g++ is an invalid name on MSDOS */
+    "CXX", "gpp",       /* g++ is an invalid name on MSDOS */
 # else
     "CXX", "gcc",
 # endif /* __MSDOS__ */
@@ -419,17 +420,17 @@ static const char *default_variables[] =
     "COFLAGS", "",
 
     "CPP", "$(CC) -E",
-#ifdef CRAY
+#ifdef  CRAY
     "CF77PPFLAGS", "-P",
     "CF77PP", "/lib/cpp",
     "CFT", "cft77",
     "CF", "cf77",
     "FC", "$(CF)",
-#else  /* Not CRAY.  */
-#ifdef _IBMR2
+#else   /* Not CRAY.  */
+#ifdef  _IBMR2
     "FC", "xlf",
 #else
-#ifdef __convex__
+#ifdef  __convex__
     "FC", "fc",
 #else
     "FC", "f77",
@@ -439,7 +440,7 @@ static const char *default_variables[] =
        However, there is no way to make implicit rules use them and FC.  */
     "F77", "$(FC)",
     "F77FLAGS", "$(FFLAGS)",
-#endif /* Cray.  */
+#endif  /* Cray.  */
     "GET", SCCS_GET,
     "LD", "ld",
 #ifdef GCC_IS_NATIVE
@@ -449,20 +450,20 @@ static const char *default_variables[] =
 #endif
     "LINT", "lint",
     "M2C", "m2c",
-#ifdef pyr
+#ifdef  pyr
     "PC", "pascal",
 #else
-#ifdef CRAY
+#ifdef  CRAY
     "PC", "PASCAL",
     "SEGLDR", "segldr",
 #else
     "PC", "pc",
-#endif /* CRAY.  */
-#endif /* pyr.  */
+#endif  /* CRAY.  */
+#endif  /* pyr.  */
 #ifdef GCC_IS_NATIVE
     "YACC", "bison -y",
 #else
-    "YACC", "yacc",    /* Or "bison -y"  */
+    "YACC", "yacc",     /* Or "bison -y"  */
 #endif
     "MAKEINFO", "makeinfo",
     "TEX", "tex",
@@ -508,25 +509,27 @@ static const char *default_variables[] =
     "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F",
     "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)",
 
-#ifndef        NO_MINUS_C_MINUS_O
+#ifndef NO_MINUS_C_MINUS_O
     "OUTPUT_OPTION", "-o $@",
 #endif
 
-#ifdef SCCS_GET_MINUS_G
+#ifdef  SCCS_GET_MINUS_G
     "SCCS_OUTPUT_OPTION", "-G$@",
 #endif
 
-#ifdef _AMIGA
+#if defined(_AMIGA)
     ".LIBPATTERNS", "%.lib",
-#else
-#ifdef __MSDOS__
+#elif defined(__MSDOS__)
     ".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a",
+#elif defined(__APPLE__)
+    ".LIBPATTERNS", "lib%.dylib lib%.a",
 #else
     ".LIBPATTERNS", "lib%.so lib%.a",
 #endif
-#endif
 
 #endif /* !VMS */
+    /* Make this assignment to avoid undefined variable warnings.  */
+    "GNUMAKEFLAGS", "",
     0, 0
   };
 \f
@@ -536,15 +539,19 @@ void
 set_default_suffixes (void)
 {
   suffix_file = enter_file (strcache_add (".SUFFIXES"));
+  suffix_file->builtin = 1;
 
   if (no_builtin_rules_flag)
     define_variable_cname ("SUFFIXES", "", o_default, 0);
   else
     {
+      struct dep *d;
       char *p = default_suffixes;
-      suffix_file->deps = enter_prereqs(PARSE_FILE_SEQ (&p, struct dep, '\0',
-                                                        NULL, 0),
-                                        NULL);
+      suffix_file->deps = enter_prereqs (PARSE_SIMPLE_SEQ (&p, struct dep),
+                                         NULL);
+      for (d = suffix_file->deps; d; d = d->next)
+        d->file->builtin = 1;
+
       define_variable_cname ("SUFFIXES", default_suffixes, o_default, 0);
     }
 }
@@ -565,14 +572,14 @@ install_default_suffix_rules (void)
   for (s = default_suffix_rules; *s != 0; s += 2)
     {
       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 = xmalloc (sizeof (struct commands));
-         f->cmds->fileinfo.filenm = 0;
-         f->cmds->commands = s[1];
-         f->cmds->command_lines = 0;
-       }
+      /* This function should run before any makefile is parsed.  */
+      assert (f->cmds == 0);
+      f->cmds = xmalloc (sizeof (struct commands));
+      f->cmds->fileinfo.filenm = 0;
+      f->cmds->commands = s[1];
+      f->cmds->command_lines = 0;
+      f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT;
+      f->builtin = 1;
     }
 }
 
@@ -605,3 +612,12 @@ define_default_variables (void)
   for (s = default_variables; *s != 0; s += 2)
     define_variable (s[0], strlen (s[0]), s[1], o_default, 1);
 }
+
+void
+undefine_default_variables (void)
+{
+  const char **s;
+
+  for (s = default_variables; *s != 0; s += 2)
+    undefine_variable_global (s[0], strlen (s[0]), o_default);
+}
diff --git a/dep.h b/dep.h
index c27423b..13cefdc 100644 (file)
--- a/dep.h
+++ b/dep.h
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,19 +14,19 @@ 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/>.  */
 
-/* Flag bits for the second argument to `read_makefile'.
-   These flags are saved in the `changed' field of each
-   `struct dep' in the chain returned by `read_all_makefiles'.  */
+/* Flag bits for the second argument to 'read_makefile'.
+   These flags are saved in the 'changed' field of each
+   'struct dep' in the chain returned by 'read_all_makefiles'.  */
 
-#define RM_NO_DEFAULT_GOAL     (1 << 0) /* Do not set default goal.  */
-#define RM_INCLUDED            (1 << 1) /* Search makefile search path.  */
-#define RM_DONTCARE            (1 << 2) /* No error if it doesn't exist.  */
-#define RM_NO_TILDE            (1 << 3) /* Don't expand ~ in file name.  */
-#define RM_NOFLAG              0
+#define RM_NO_DEFAULT_GOAL      (1 << 0) /* Do not set default goal.  */
+#define RM_INCLUDED             (1 << 1) /* Search makefile search path.  */
+#define RM_DONTCARE             (1 << 2) /* No error if it doesn't exist.  */
+#define RM_NO_TILDE             (1 << 3) /* Don't expand ~ in file name.  */
+#define RM_NOFLAG               0
 
 /* Structure representing one dependency of a file.
-   Each struct file's `deps' points to a chain of these,
-   chained through the `next'. `stem' is the stem for this
+   Each struct file's 'deps' points to a chain of these,
+   chained through the 'next'. 'stem' is the stem for this
    dep line of static pattern rule or NULL.
 
    Note that the first two words of this match a struct nameseq.  */
@@ -55,22 +53,23 @@ struct nameseq
     const char *name;
   };
 
-
-#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 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))
+#define PARSE_SIMPLE_SEQ(_s,_t) \
+            (_t *)parse_file_seq ((_s),sizeof (_t),MAP_NUL,NULL,PARSEFS_NONE)
 
 #ifdef VMS
 void *parse_file_seq ();
 #else
 void *parse_file_seq (char **stringp, unsigned int size,
-                      int stopchar, const char *prefix, int flags);
+                      int stopmap, const char *prefix, int flags);
 #endif
 
 char *tilde_expand (const char *name);
@@ -89,5 +88,5 @@ 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);
+void eval_buffer (char *buffer, const gmk_floc *floc);
+enum update_status update_goal_chain (struct dep *goals);
diff --git a/dir.c b/dir.c
index 5529019..d046bd9 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,10 +14,12 @@ 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 "make.h"
+#include "makeint.h"
 #include "hash.h"
+#include "filedef.h"
+#include "dep.h"
 
-#ifdef HAVE_DIRENT_H
+#ifdef  HAVE_DIRENT_H
 # include <dirent.h>
 # define NAMLEN(dirent) strlen((dirent)->d_name)
 # ifdef VMS
@@ -86,21 +86,21 @@ dosify (const char *filename)
   df = dos_filename;
 
   /* First, transform the name part.  */
-  for (i = 0; *filename != '\0' && i < 8 && *filename != '.'; ++i)
+  for (i = 0; i < 8 && ! STOP_SET (*filename, MAP_DOT|MAP_NUL); ++i)
     *df++ = tolower ((unsigned char)*filename++);
 
   /* Now skip to the next dot.  */
-  while (*filename != '\0' && *filename != '.')
+  while (! STOP_SET (*filename, MAP_DOT|MAP_NUL))
     ++filename;
   if (*filename != '\0')
     {
       *df++ = *filename++;
-      for (i = 0; *filename != '\0' && i < 3 && *filename != '.'; ++i)
-       *df++ = tolower ((unsigned char)*filename++);
+      for (i = 0; i < 3 && ! STOP_SET (*filename, MAP_DOT|MAP_NUL); ++i)
+        *df++ = tolower ((unsigned char)*filename++);
     }
 
   /* Look for more dots.  */
-  while (*filename != '\0' && *filename != '.')
+  while (! STOP_SET (*filename, MAP_DOT|MAP_NUL))
     ++filename;
   if (*filename == '.')
     return filename;
@@ -146,11 +146,11 @@ static int
 vms_hash (const char *name)
 {
   int h = 0;
-  int g;
 
   while (*name)
     {
       unsigned char uc = *name;
+      int g;
 #ifdef HAVE_CASE_INSENSITIVE_FS
       h = (h << 4) + (isupper (uc) ? tolower (uc) : uc);
 #else
@@ -159,10 +159,10 @@ vms_hash (const char *name)
       name++;
       g = h & 0xf0000000;
       if (g)
-       {
-         h = h ^ (g >> 24);
-         h = h ^ g;
-       }
+        {
+          h = h ^ (g >> 24);
+          h = h ^ g;
+        }
     }
   return h;
 }
@@ -179,7 +179,7 @@ vmsstat_dir (const char *name, struct stat *st)
   if (dir == 0)
     return -1;
   closedir (dir);
-  s = strchr (name, ':');      /* find device */
+  s = strchr (name, ':');       /* find device */
   if (s)
     {
       /* to keep the compiler happy we said "const char *name", now we cheat */
@@ -204,13 +204,13 @@ vmsstat_dir (const char *name, struct stat *st)
 \f
 /* Hash table of directories.  */
 
-#ifndef        DIRECTORY_BUCKETS
+#ifndef DIRECTORY_BUCKETS
 #define DIRECTORY_BUCKETS 199
 #endif
 
 struct directory_contents
   {
-    dev_t dev;                 /* Device and inode numbers of this dir.  */
+    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
@@ -231,8 +231,8 @@ struct directory_contents
     ino_t ino;
 # endif
 #endif /* WINDOWS32 */
-    struct hash_table dirfiles;        /* Files in this directory.  */
-    DIR *dirstream;            /* Stream reading this directory.  */
+    struct hash_table dirfiles; /* Files in this directory.  */
+    DIR *dirstream;             /* Stream reading this directory.  */
   };
 
 static unsigned long
@@ -248,9 +248,9 @@ directory_contents_hash_1 (const void *key_0)
 #else
 # ifdef VMS
   hash = (((unsigned int) key->dev << 4)
-         ^ ((unsigned int) key->ino[0]
-            + (unsigned int) key->ino[1]
-            + (unsigned int) key->ino[2]));
+          ^ ((unsigned int) key->ino[0]
+             + (unsigned int) key->ino[1]
+             + (unsigned int) key->ino[2]));
 # else
   hash = ((unsigned int) key->dev << 4) ^ (unsigned int) key->ino;
 # endif
@@ -271,9 +271,9 @@ directory_contents_hash_2 (const void *key_0)
 #else
 # ifdef VMS
   hash = (((unsigned int) key->dev << 4)
-         ^ ~((unsigned int) key->ino[0]
-             + (unsigned int) key->ino[1]
-             + (unsigned int) key->ino[2]));
+          ^ ~((unsigned int) key->ino[0]
+              + (unsigned int) key->ino[1]
+              + (unsigned int) key->ino[2]));
 # else
   hash = ((unsigned int) key->dev << 4) ^ (unsigned int) ~key->ino;
 # endif
@@ -333,11 +333,11 @@ static struct hash_table directory_contents;
 
 struct directory
   {
-    const 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
-       (identified uniquely by `dev' and `ino') under different names.  */
+       (identified uniquely by 'dev' and 'ino') under different names.  */
     struct directory_contents *contents;
   };
 
@@ -357,7 +357,7 @@ static int
 directory_hash_cmp (const void *x, const void *y)
 {
   return_ISTRING_COMPARE (((const struct directory *) x)->name,
-                         ((const struct directory *) y)->name);
+                          ((const struct directory *) y)->name);
 }
 
 /* Table of directories hashed by name.  */
@@ -374,9 +374,9 @@ static unsigned int open_directories = 0;
 
 struct dirfile
   {
-    const char *name;          /* Name of the file.  */
+    const char *name;           /* Name of the file.  */
     short length;
-    short impossible;          /* This file is impossible.  */
+    short impossible;           /* This file is impossible.  */
   };
 
 static unsigned long
@@ -402,7 +402,7 @@ dirfile_hash_cmp (const void *xv, const void *yv)
   return_ISTRING_COMPARE (x->name, y->name);
 }
 
-#ifndef        DIRFILE_BUCKETS
+#ifndef DIRFILE_BUCKETS
 #define DIRFILE_BUCKETS 107
 #endif
 \f
@@ -410,24 +410,15 @@ 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'.  */
+/* Find the directory named NAME and return its 'struct directory'.  */
 
 static struct directory *
 find_directory (const char *name)
 {
-  const char *p;
   struct directory *dir;
   struct directory **dir_slot;
   struct directory dir_key;
-  int r;
-#ifdef WINDOWS32
-  char* w32_path;
-  char  fs_label[BUFSIZ];
-  char  fs_type[BUFSIZ];
-  unsigned long  fs_serno;
-  unsigned long  fs_flags;
-  unsigned long  fs_len;
-#endif
+
 #ifdef VMS
   if ((*name == '.') && (*(name+1) == 0))
     name = "[]";
@@ -441,20 +432,20 @@ find_directory (const char *name)
 
   if (HASH_VACANT (dir))
     {
-      struct stat st;
-
       /* The directory was not found.  Create a new entry for it.  */
+      const char *p = name + strlen (name);
+      struct stat st;
+      int r;
 
-      p = name + strlen (name);
       dir = xmalloc (sizeof (struct directory));
 #if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS)
-      dir->name = strcache_add_len (downcase(name), p - name);
+      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.  */
+         Find its device and inode numbers, and look it up by them.  */
 
 #ifdef VMS
       r = vmsstat_dir (name, &st);
@@ -481,96 +472,101 @@ find_directory (const char *name)
 
       if (r < 0)
         {
-       /* Couldn't stat the directory.  Mark this by
-          setting the `contents' member to a nil pointer.  */
-         dir->contents = 0;
-       }
+        /* Couldn't stat the directory.  Mark this by
+           setting the 'contents' member to a nil pointer.  */
+          dir->contents = 0;
+        }
       else
-       {
-         /* Search the contents hash table; device and inode are the key.  */
+        {
+          /* Search the contents hash table; device and inode are the key.  */
 
-         struct directory_contents *dc;
-         struct directory_contents **dc_slot;
-         struct directory_contents dc_key;
+#ifdef WINDOWS32
+          char *w32_path;
+#endif
+          struct directory_contents *dc;
+          struct directory_contents **dc_slot;
+          struct directory_contents dc_key;
 
-         dc_key.dev = st.st_dev;
+          dc_key.dev = st.st_dev;
 #ifdef WINDOWS32
-         dc_key.path_key = w32_path = w32ify (name, 1);
-         dc_key.ctime = st.st_ctime;
+          dc_key.path_key = w32_path = w32ify (name, 1);
+          dc_key.ctime = st.st_ctime;
 #else
 # ifdef VMS
-         dc_key.ino[0] = st.st_ino[0];
-         dc_key.ino[1] = st.st_ino[1];
-         dc_key.ino[2] = st.st_ino[2];
+          dc_key.ino[0] = st.st_ino[0];
+          dc_key.ino[1] = st.st_ino[1];
+          dc_key.ino[2] = st.st_ino[2];
 # else
-         dc_key.ino = st.st_ino;
+          dc_key.ino = st.st_ino;
 # endif
 #endif
-         dc_slot = (struct directory_contents **) hash_find_slot (&directory_contents, &dc_key);
-         dc = *dc_slot;
+          dc_slot = (struct directory_contents **) hash_find_slot (&directory_contents, &dc_key);
+          dc = *dc_slot;
 
-         if (HASH_VACANT (dc))
-           {
-             /* Nope; this really is a directory we haven't seen before.  */
-
-             dc = (struct directory_contents *)
-               xmalloc (sizeof (struct directory_contents));
+          if (HASH_VACANT (dc))
+            {
+              /* Nope; this really is a directory we haven't seen before.  */
+#ifdef WINDOWS32
+              char  fs_label[BUFSIZ];
+              char  fs_type[BUFSIZ];
+              unsigned long  fs_serno;
+              unsigned long  fs_flags;
+              unsigned long  fs_len;
+#endif
+              dc = (struct directory_contents *)
+                xmalloc (sizeof (struct directory_contents));
 
-             /* Enter it in the contents hash table.  */
-             dc->dev = st.st_dev;
+              /* Enter it in the contents hash table.  */
+              dc->dev = st.st_dev;
 #ifdef WINDOWS32
               dc->path_key = xstrdup (w32_path);
-             dc->ctime = st.st_ctime;
+              dc->ctime = st.st_ctime;
               dc->mtime = st.st_mtime;
 
-              /*
-               * NTFS is the only WINDOWS32 filesystem that bumps mtime
-               * on a directory when files are added/deleted from
-               * a directory.
-               */
+              /* NTFS is the only WINDOWS32 filesystem that bumps mtime on a
+                 directory when files are added/deleted from a directory.  */
               w32_path[3] = '\0';
-              if (GetVolumeInformation(w32_path,
-                     fs_label, sizeof (fs_label),
-                     &fs_serno, &fs_len,
-                     &fs_flags, fs_type, sizeof (fs_type)) == FALSE)
+              if (GetVolumeInformation (w32_path, fs_label, sizeof (fs_label),
+                                        &fs_serno, &fs_len, &fs_flags, fs_type,
+                                        sizeof (fs_type)) == FALSE)
                 dc->fs_flags = FS_UNKNOWN;
-              else if (!strcmp(fs_type, "FAT"))
+              else if (!strcmp (fs_type, "FAT"))
                 dc->fs_flags = FS_FAT;
-              else if (!strcmp(fs_type, "NTFS"))
+              else if (!strcmp (fs_type, "NTFS"))
                 dc->fs_flags = FS_NTFS;
               else
                 dc->fs_flags = FS_UNKNOWN;
 #else
 # ifdef VMS
-             dc->ino[0] = st.st_ino[0];
-             dc->ino[1] = st.st_ino[1];
-             dc->ino[2] = st.st_ino[2];
+              dc->ino[0] = st.st_ino[0];
+              dc->ino[1] = st.st_ino[1];
+              dc->ino[2] = st.st_ino[2];
 # else
-             dc->ino = st.st_ino;
+              dc->ino = st.st_ino;
 # endif
 #endif /* WINDOWS32 */
-             hash_insert_at (&directory_contents, dc, dc_slot);
-             ENULLLOOP (dc->dirstream, opendir (name));
-             if (dc->dirstream == 0)
+              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.  */
+                   'files' member to a nil pointer.  */
                 dc->dirfiles.ht_vec = 0;
-             else
-               {
-                 hash_init (&dc->dirfiles, DIRFILE_BUCKETS,
-                            dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp);
-                 /* Keep track of how many directories are open.  */
-                 ++open_directories;
-                 if (open_directories == MAX_OPEN_DIRECTORIES)
-                   /* We have too many directories open already.
-                      Read the entire directory and then close it.  */
-                   dir_contents_file_exists_p (dc, 0);
-               }
-           }
-
-         /* Point the name-hashed entry for DIR at its contents data.  */
-         dir->contents = dc;
-       }
+              else
+                {
+                  hash_init (&dc->dirfiles, DIRFILE_BUCKETS,
+                             dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp);
+                  /* Keep track of how many directories are open.  */
+                  ++open_directories;
+                  if (open_directories == MAX_OPEN_DIRECTORIES)
+                    /* We have too many directories open already.
+                       Read the entire directory and then close it.  */
+                    dir_contents_file_exists_p (dc, 0);
+                }
+            }
+
+          /* Point the name-hashed entry for DIR at its contents data.  */
+          dir->contents = dc;
+        }
     }
 
   return dir;
@@ -583,7 +579,6 @@ static int
 dir_contents_file_exists_p (struct directory_contents *dir,
                             const char *filename)
 {
-  unsigned int hash;
   struct dirfile *df;
   struct dirent *d;
 #ifdef WINDOWS32
@@ -612,16 +607,15 @@ dir_contents_file_exists_p (struct directory_contents *dir,
   filename = vmsify (filename,0);
 #endif
 
-  hash = 0;
   if (filename != 0)
     {
       struct dirfile dirfile_key;
 
       if (*filename == '\0')
-       {
-         /* Checking if the directory exists.  */
-         return 1;
-       }
+        {
+          /* Checking if the directory exists.  */
+          return 1;
+        }
       dirfile_key.name = filename;
       dirfile_key.length = strlen (filename);
       df = hash_find_item (&dir->dirfiles, &dirfile_key);
@@ -641,32 +635,32 @@ dir_contents_file_exists_p (struct directory_contents *dir,
        * on directories (ugh!).
        */
       if (dir->path_key)
-       {
+        {
           if ((dir->fs_flags & FS_FAT) != 0)
-           {
-             dir->mtime = time ((time_t *) 0);
-             rehash = 1;
-           }
-         else if (stat (dir->path_key, &st) == 0 && st.st_mtime > dir->mtime)
-           {
-             /* reset date stamp to show most recent re-process.  */
-             dir->mtime = st.st_mtime;
-             rehash = 1;
-           }
+            {
+              dir->mtime = time ((time_t *) 0);
+              rehash = 1;
+            }
+          else if (stat (dir->path_key, &st) == 0 && st.st_mtime > dir->mtime)
+            {
+              /* reset date stamp to show most recent re-process.  */
+              dir->mtime = st.st_mtime;
+              rehash = 1;
+            }
 
           /* If it has been already read in, all done.  */
-         if (!rehash)
-           return 0;
+          if (!rehash)
+            return 0;
 
           /* make sure directory can still be opened; if not return.  */
           dir->dirstream = opendir (dir->path_key);
           if (!dir->dirstream)
             return 0;
-       }
+        }
       else
 #endif
-       /* The directory has been all read in.  */
-       return 0;
+        /* The directory has been all read in.  */
+        return 0;
     }
 
   while (1)
@@ -693,7 +687,7 @@ dir_contents_file_exists_p (struct directory_contents *dir,
       }
 #endif
       if (!REAL_DIR_ENTRY (d))
-       continue;
+        continue;
 
       len = NAMLEN (d);
       dirfile_key.name = d->d_name;
@@ -706,17 +700,17 @@ dir_contents_file_exists_p (struct directory_contents *dir,
        */
       if (! rehash || HASH_VACANT (*dirfile_slot))
 #endif
-       {
-         df = xmalloc (sizeof (struct dirfile));
+        {
+          df = xmalloc (sizeof (struct dirfile));
 #if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS)
-          df->name = strcache_add_len (downcase(d->d_name), len);
+          df->name = strcache_add_len (downcase (d->d_name), len);
 #else
-         df->name = strcache_add_len (d->d_name, len);
+          df->name = strcache_add_len (d->d_name, len);
 #endif
-         df->length = len;
-         df->impossible = 0;
-         hash_insert_at (&dir->dirfiles, df, dirfile_slot);
-       }
+          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 && patheq (d->d_name, filename))
         return 1;
@@ -741,7 +735,7 @@ int
 dir_file_exists_p (const char *dirname, const char *filename)
 {
   return dir_contents_file_exists_p (find_directory (dirname)->contents,
-                                    filename);
+                                     filename);
 }
 \f
 /* Return 1 if the file named NAME exists.  */
@@ -753,7 +747,7 @@ file_exists_p (const char *name)
   const char *dirname;
   const char *slash;
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
   if (ar_name (name))
     return ar_member_date (name) != (time_t) -1;
 #endif
@@ -769,7 +763,7 @@ file_exists_p (const char *name)
 #ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    const char *bslash = strrchr(name, '\\');
+    const char *bslash = strrchr (name, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -794,8 +788,8 @@ file_exists_p (const char *name)
 #ifdef HAVE_DOS_PATHS
   /* d:/ and d: are *very* different...  */
       if (dirend < name + 3 && name[1] == ':' &&
-         (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
-       dirend++;
+          (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
+        dirend++;
 #endif
       p = alloca (dirend - name + 1);
       memcpy (p, name, dirend - name);
@@ -805,7 +799,7 @@ file_exists_p (const char *name)
   return dir_file_exists_p (dirname, slash + 1);
 }
 \f
-/* Mark FILENAME as `impossible' for `file_impossible_p'.
+/* Mark FILENAME as 'impossible' for 'file_impossible_p'.
    This means an attempt has been made to search for FILENAME
    as an intermediate file, and it has failed.  */
 
@@ -829,7 +823,7 @@ file_impossible (const char *filename)
 # ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    const char *bslash = strrchr(p, '\\');
+    const char *bslash = strrchr (p, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -849,21 +843,21 @@ file_impossible (const char *filename)
       const char *dirname;
       const char *slash = dirend;
       if (dirend == p)
-       dirname = "/";
+        dirname = "/";
       else
-       {
+        {
           char *cp;
 #ifdef HAVE_DOS_PATHS
-         /* d:/ and d: are *very* different...  */
-         if (dirend < p + 3 && p[1] == ':' &&
-             (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
-           dirend++;
+          /* d:/ and d: are *very* different...  */
+          if (dirend < p + 3 && p[1] == ':' &&
+              (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
+            dirend++;
 #endif
-         cp = alloca (dirend - p + 1);
-         memcpy (cp, p, dirend - p);
-         cp[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;
     }
@@ -876,7 +870,7 @@ file_impossible (const char *filename)
   if (dir->contents->dirfiles.ht_vec == 0)
     {
       hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS,
-                dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp);
+                 dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp);
     }
 
   /* Make a new entry and put it in the table.  */
@@ -884,7 +878,7 @@ file_impossible (const char *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);
+  new->name = strcache_add_len (downcase (filename), new->length);
 #else
   new->name = strcache_add_len (filename, new->length);
 #endif
@@ -898,7 +892,6 @@ int
 file_impossible_p (const char *filename)
 {
   const char *dirend;
-  const char *p = filename;
   struct directory_contents *dir;
   struct dirfile *dirfile;
   struct dirfile dirfile_key;
@@ -912,7 +905,7 @@ file_impossible_p (const char *filename)
 #ifdef HAVE_DOS_PATHS
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
-    const char *bslash = strrchr(filename, '\\');
+    const char *bslash = strrchr (filename, '\\');
     if (!dirend || bslash > dirend)
       dirend = bslash;
     /* The case of "d:file".  */
@@ -932,23 +925,23 @@ file_impossible_p (const char *filename)
       const char *dirname;
       const char *slash = dirend;
       if (dirend == filename)
-       dirname = "/";
+        dirname = "/";
       else
-       {
+        {
           char *cp;
 #ifdef HAVE_DOS_PATHS
-         /* d:/ and d: are *very* different...  */
-         if (dirend < filename + 3 && filename[1] == ':' &&
-             (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
-           dirend++;
+          /* d:/ and d: are *very* different...  */
+          if (dirend < filename + 3 && filename[1] == ':' &&
+              (*dirend == '/' || *dirend == '\\' || *dirend == ':'))
+            dirend++;
 #endif
-         cp = alloca (dirend - filename + 1);
-         memcpy (cp, p, dirend - p);
-         cp[dirend - p] = '\0';
+          cp = alloca (dirend - filename + 1);
+          memcpy (cp, filename, dirend - filename);
+          cp[dirend - filename] = '\0';
           dirname = cp;
-       }
+        }
       dir = find_directory (dirname)->contents;
-      p = filename = slash + 1;
+      filename = slash + 1;
     }
 
   if (dir == 0 || dir->dirfiles.ht_vec == 0)
@@ -956,13 +949,13 @@ file_impossible_p (const char *filename)
     return 0;
 
 #ifdef __MSDOS__
-  filename = dosify (p);
+  filename = dosify (filename);
 #endif
 #ifdef HAVE_CASE_INSENSITIVE_FS
-  filename = downcase (p);
+  filename = downcase (filename);
 #endif
 #ifdef VMS
-  filename = vmsify (p, 1);
+  filename = vmsify (filename, 1);
 #endif
 
   dirfile_key.name = filename;
@@ -1003,80 +996,80 @@ print_dir_data_base (void)
     {
       struct directory *dir = *dir_slot;
       if (! HASH_VACANT (dir))
-       {
-         if (dir->contents == 0)
-           printf (_("# %s: could not be stat'd.\n"), dir->name);
-         else if (dir->contents->dirfiles.ht_vec == 0)
-           {
+        {
+          if (dir->contents == 0)
+            printf (_("# %s: could not be stat'd.\n"), dir->name);
+          else if (dir->contents->dirfiles.ht_vec == 0)
+            {
 #ifdef WINDOWS32
-             printf (_("# %s (key %s, mtime %d): could not be opened.\n"),
-                     dir->name, dir->contents->path_key,dir->contents->mtime);
+              printf (_("# %s (key %s, mtime %d): could not be opened.\n"),
+                      dir->name, dir->contents->path_key,dir->contents->mtime);
 #else  /* WINDOWS32 */
 #ifdef VMS
-             printf (_("# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"),
-                     dir->name, dir->contents->dev,
-                     dir->contents->ino[0], dir->contents->ino[1],
-                     dir->contents->ino[2]);
+              printf (_("# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"),
+                      dir->name, dir->contents->dev,
+                      dir->contents->ino[0], dir->contents->ino[1],
+                      dir->contents->ino[2]);
 #else
-             printf (_("# %s (device %ld, inode %ld): could not be opened.\n"),
-                     dir->name, (long int) dir->contents->dev,
-                     (long int) dir->contents->ino);
+              printf (_("# %s (device %ld, inode %ld): could not be opened.\n"),
+                      dir->name, (long int) dir->contents->dev,
+                      (long int) dir->contents->ino);
 #endif
 #endif /* WINDOWS32 */
-           }
-         else
-           {
-             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++)
-               {
-                 struct dirfile *df = *files_slot;
-                 if (! HASH_VACANT (df))
-                   {
-                     if (df->impossible)
-                       ++im;
-                     else
-                       ++f;
-                   }
-               }
+            }
+          else
+            {
+              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++)
+                {
+                  struct dirfile *df = *files_slot;
+                  if (! HASH_VACANT (df))
+                    {
+                      if (df->impossible)
+                        ++im;
+                      else
+                        ++f;
+                    }
+                }
 #ifdef WINDOWS32
-             printf (_("# %s (key %s, mtime %d): "),
-                     dir->name, dir->contents->path_key, dir->contents->mtime);
+              printf (_("# %s (key %s, mtime %d): "),
+                      dir->name, dir->contents->path_key, dir->contents->mtime);
 #else  /* WINDOWS32 */
 #ifdef VMS
-             printf (_("# %s (device %d, inode [%d,%d,%d]): "),
-                     dir->name, dir->contents->dev,
-                     dir->contents->ino[0], dir->contents->ino[1],
-                     dir->contents->ino[2]);
+              printf (_("# %s (device %d, inode [%d,%d,%d]): "),
+                      dir->name, dir->contents->dev,
+                      dir->contents->ino[0], dir->contents->ino[1],
+                      dir->contents->ino[2]);
 #else
-             printf (_("# %s (device %ld, inode %ld): "),
-                     dir->name,
-                     (long)dir->contents->dev, (long)dir->contents->ino);
+              printf (_("# %s (device %ld, inode %ld): "),
+                      dir->name,
+                      (long)dir->contents->dev, (long)dir->contents->ino);
 #endif
 #endif /* WINDOWS32 */
-             if (f == 0)
-               fputs (_("No"), stdout);
-             else
-               printf ("%u", f);
-             fputs (_(" files, "), stdout);
-             if (im == 0)
-               fputs (_("no"), stdout);
-             else
-               printf ("%u", im);
-             fputs (_(" impossibilities"), stdout);
-             if (dir->contents->dirstream == 0)
-               puts (".");
-             else
-               puts (_(" so far."));
-             files += f;
-             impossible += im;
-           }
-       }
+              if (f == 0)
+                fputs (_("No"), stdout);
+              else
+                printf ("%u", f);
+              fputs (_(" files, "), stdout);
+              if (im == 0)
+                fputs (_("no"), stdout);
+              else
+                printf ("%u", im);
+              fputs (_(" impossibilities"), stdout);
+              if (dir->contents->dirstream == 0)
+                puts (".");
+              else
+                puts (_(" so far."));
+              files += f;
+              impossible += im;
+            }
+        }
     }
 
   fputs ("\n# ", stdout);
@@ -1145,35 +1138,35 @@ read_dirstream (__ptr_t stream)
     {
       struct dirfile *df = *ds->dirfile_slot++;
       if (! HASH_VACANT (df) && !df->impossible)
-       {
-         /* The glob interface wants a `struct dirent', so mock one up.  */
-         struct dirent *d;
-         unsigned int len = df->length + 1;
+        {
+          /* The glob interface wants a 'struct dirent', so mock one up.  */
+          struct dirent *d;
+          unsigned int len = df->length + 1;
           unsigned int sz = sizeof (*d) - sizeof (d->d_name) + len;
-         if (sz > bufsz)
-           {
-             bufsz *= 2;
-             if (sz > bufsz)
-               bufsz = sz;
-             buf = xrealloc (buf, bufsz);
-           }
-         d = (struct dirent *) buf;
+          if (sz > bufsz)
+            {
+              bufsz *= 2;
+              if (sz > bufsz)
+                bufsz = sz;
+              buf = xrealloc (buf, bufsz);
+            }
+          d = (struct dirent *) buf;
 #ifdef __MINGW32__
 # if __MINGW32_MAJOR_VERSION < 3 || (__MINGW32_MAJOR_VERSION == 3 && \
-                                    __MINGW32_MINOR_VERSION == 0)
-         d->d_name = xmalloc(len);
+                                     __MINGW32_MINOR_VERSION == 0)
+          d->d_name = xmalloc (len);
 # endif
 #endif
-         FAKE_DIR_ENTRY (d);
+          FAKE_DIR_ENTRY (d);
 #ifdef _DIRENT_HAVE_D_NAMLEN
-         d->d_namlen = len - 1;
+          d->d_namlen = len - 1;
 #endif
 #ifdef _DIRENT_HAVE_D_TYPE
-         d->d_type = DT_UNKNOWN;
+          d->d_type = DT_UNKNOWN;
 #endif
-         memcpy (d->d_name, df->name, len);
-         return d;
-       }
+          memcpy (d->d_name, df->name, len);
+          return d;
+        }
     }
 
   return 0;
@@ -1183,14 +1176,17 @@ static void
 ansi_free (void *p)
 {
   if (p)
-    free(p);
+    free (p);
 }
 
 /* On 64 bit ReliantUNIX (5.44 and above) in LFS mode, stat() is actually a
  * macro for stat64().  If stat is a macro, make a local wrapper function to
  * invoke it.
+ *
+ * On MS-Windows, stat() "succeeds" for foo/bar/. where foo/bar is a
+ * regular file; fix that here.
  */
-#ifndef stat
+#if !defined(stat) && !defined(WINDOWS32)
 # ifndef VMS
 int stat (const char *path, struct stat *sbuf);
 # endif
@@ -1200,6 +1196,23 @@ static int
 local_stat (const char *path, struct stat *buf)
 {
   int e;
+#ifdef WINDOWS32
+  size_t plen = strlen (path);
+
+  /* Make sure the parent of "." exists and is a directory, not a
+     file.  This is because 'stat' on Windows normalizes the argument
+     foo/. => foo without checking first that foo is a directory.  */
+  if (plen > 1 && path[plen - 1] == '.'
+      && (path[plen - 2] == '/' || path[plen - 2] == '\\'))
+    {
+      char parent[MAXPATHLEN];
+
+      strncpy (parent, path, plen - 2);
+      parent[plen - 2] = '\0';
+      if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode))
+        return -1;
+    }
+#endif
 
   EINTRLOOP (e, stat (path, buf));
   return e;
@@ -1221,8 +1234,8 @@ void
 hash_init_directories (void)
 {
   hash_init (&directories, DIRECTORY_BUCKETS,
-            directory_hash_1, directory_hash_2, directory_hash_cmp);
+             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_1, directory_contents_hash_2,
              directory_contents_hash_cmp);
 }
index 67eec3a..ed519a1 100644 (file)
@@ -1,6 +1,5 @@
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-# 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2013 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
index a1089bc..c7a018f 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
@@ -16,8 +16,7 @@
 @SET_MAKE@
 
 # -*-Makefile-*-, or close enough
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-# 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2013 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
 # You should have received a copy of the GNU General Public License along with
 # this program.  If not, see <http://www.gnu.org/licenses/>.
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -58,18 +74,24 @@ 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/intlmacosx.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
        $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
 INFO_DEPS = $(srcdir)/make.info
@@ -85,6 +107,11 @@ TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
 DVIPS = dvips
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__installdirs = "$(DESTDIR)$(infodir)"
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -107,10 +134,18 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -130,16 +165,21 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 KMEM_GROUP = @KMEM_GROUP@
 LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
@@ -152,8 +192,8 @@ LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NEED_SETGID = @NEED_SETGID@
 OBJEXT = @OBJEXT@
@@ -166,6 +206,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REMOTE = @REMOTE@
@@ -175,6 +218,8 @@ STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -357,9 +402,7 @@ uninstall-html-am:
 
 uninstall-info-am:
        @$(PRE_UNINSTALL)
-       @if test -d '$(DESTDIR)$(infodir)' && \
-           (install-info --version && \
-            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+       @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
          list='$(INFO_DEPS)'; \
          for file in $$list; do \
            relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -486,10 +529,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -526,8 +574,11 @@ install-dvi: install-dvi-am
 
 install-dvi-am: $(DVIS)
        @$(NORMAL_INSTALL)
-       test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
        @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -542,18 +593,22 @@ 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=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+       fi; \
        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 \
+         d2=$$d$$p; \
+         if test -d "$$d2"; 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 $$?; \
+           echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
          else \
-           list2="$$list2 $$d$$p"; \
+           list2="$$list2 $$d2"; \
          fi; \
        done; \
        test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
@@ -565,9 +620,12 @@ install-info: install-info-am
 
 install-info-am: $(INFO_DEPS)
        @$(NORMAL_INSTALL)
-       test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+       fi; \
        for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
@@ -585,8 +643,7 @@ install-info-am: $(INFO_DEPS)
          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 \
+       @if $(am__can_run_installinfo); then \
          list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
          for file in $$list; do \
            relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -600,8 +657,11 @@ install-pdf: install-pdf-am
 
 install-pdf-am: $(PDFS)
        @$(NORMAL_INSTALL)
-       test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
        @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -613,8 +673,11 @@ install-ps: install-ps-am
 
 install-ps-am: $(PSS)
        @$(NORMAL_INSTALL)
-       test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
        @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
index fc19ddd..cb71f05 100644 (file)
@@ -481,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@dots{}Texts.'' line with this:
+replace the ``with@dots{}Texts.''@: line with this:
 
 @smallexample
 @group
@@ -503,4 +503,3 @@ to permit their use in free software.
 @c Local Variables:
 @c ispell-local-pdict: "ispell-dict"
 @c End:
-
index 7cc9537..db01628 100644 (file)
@@ -8,7 +8,7 @@
 @cindex standards for makefiles
 
 @c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
-@c 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
+@c 2004, 2005, 2006, 2007, 2008, 2010, 2013 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.3
@@ -518,6 +518,19 @@ in @file{$(datadir)} or @file{$(sysconfdir)}.  @file{$(localstatedir)}
 should normally be @file{/usr/local/var}, but write it as
 @file{$(prefix)/var}.
 (If you are using Autoconf, write it as @samp{@@localstatedir@@}.)
+
+@item runstatedir
+The directory for installing data files which the programs modify
+while they run, that pertain to one specific machine, and which need
+not persist longer than the execution of the program---which is
+generally long-lived, for example, until the next reboot.  PID files
+for system daemons are a typical use.  In addition, this directory
+should not be cleaned except perhaps at reboot, while the general
+@file{/tmp} (@code{TMPDIR}) may be cleaned arbitrarily.  This should
+normally be @file{/var/run}, but write it as
+@file{$(localstatedir)/run}.  Having it as a separate variable allows
+the use of @file{/run} if desired, for example.  (If you are using
+Autoconf 2.70 or later, write it as @samp{@@runstatedir@@}.)
 @end table
 
 These variables specify the directory for installing certain specific
@@ -602,7 +615,7 @@ should be written as @file{$(datarootdir)/emacs/site-lisp}.
 
 If you are using Autoconf, write the default as @samp{@@lispdir@@}.
 In order to make @samp{@@lispdir@@} work, you need the following lines
-in your @file{configure.in} file:
+in your @file{configure.ac} file:
 
 @example
 lispdir='$@{datarootdir@}/emacs/site-lisp'
@@ -715,8 +728,9 @@ 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
-being helpless can strip the executables later if they wish.
+that executable programs have debugging symbols.  Otherwise, you are
+essentially helpless in the face of a crash, and it is often far from
+easy to reproduce with a fresh build.
 
 @item install
 Compile the program and copy the executables, libraries, and so on to
@@ -724,8 +738,11 @@ the file names where they should reside for actual use.  If there is a
 simple test to verify that a program is properly installed, this target
 should run that test.
 
-Do not strip executables when installing them.  Devil-may-care users can
-use the @code{install-strip} target to do that.
+Do not strip executables when installing them.  This helps eventual
+debugging that may be needed later, and nowadays disk space is cheap
+and dynamic loaders typically ensure debug sections are not loaded during
+normal execution.  Users that need stripped binaries may invoke the
+@code{install-strip} target to do that.
 
 If possible, write the @code{install} target rule so that it does not
 modify anything in the directory where the program was built, provided
@@ -837,10 +854,7 @@ the program has no bugs.  However, it can be reasonable to install a
 stripped executable for actual execution while saving the unstripped
 executable elsewhere in case there is a bug.
 
-@comment The gratuitous blank line here is to make the table look better
-@comment in the printed Make manual.  Please leave it in.
 @item clean
-
 Delete all files in the current directory that are normally created by
 building the program.  Also delete files in other directories if they
 are created by this makefile.  However, don't delete the files that
@@ -943,11 +957,12 @@ foo.dvi: foo.texi chap1.texi chap2.texi
 @end smallexample
 
 @noindent
-You must define the variable @code{TEXI2DVI} in the Makefile.  It should
-run the program @code{texi2dvi}, which is part of the Texinfo
-distribution.@footnote{@code{texi2dvi} uses @TeX{} to do the real work
-of formatting. @TeX{} is not distributed with Texinfo.}  Alternatively,
-write just the dependencies, and allow GNU @code{make} to provide the command.
+You must define the variable @code{TEXI2DVI} in the Makefile.  It
+should run the program @code{texi2dvi}, which is part of the Texinfo
+distribution.  (@code{texi2dvi} uses @TeX{} to do the real work of
+formatting. @TeX{} is not distributed with Texinfo.)  Alternatively,
+write only the dependencies, and allow GNU @code{make} to provide the
+command.
 
 Here's another example, this one for generating HTML from Texinfo:
 
index bd28f2b..c6ad6e6 100644 (file)
@@ -4,16 +4,16 @@ 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.71, last updated 19 July 2010, of `The GNU Make
-Manual', for GNU `make' version 3.82.
+   This is Edition 0.72, last updated 9 October 2013, of `The GNU Make
+Manual', for GNU `make' version 4.0.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.2 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
      being "A GNU Manual," and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
@@ -30,158 +30,172 @@ END-INFO-DIR-ENTRY
 
 \1f
 Indirect:
-make.info-1: 1319
-make.info-2: 293656
+make.info-1: 1338
+make.info-2: 291887
 \1f
 Tag Table:
 (Indirect)
-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
+Node: Top\7f1338
+Node: Overview\7f16115
+Node: Preparing\7f17130
+Node: Reading\7f18101
+Node: Bugs\7f19028
+Node: Introduction\7f20857
+Node: Rule Introduction\7f22454
+Node: Simple Makefile\7f24387
+Node: How Make Works\7f28129
+Node: Variables Simplify\7f30784
+Node: make Deduces\7f32990
+Node: Combine By Prerequisite\7f34723
+Node: Cleanup\7f35752
+Node: Makefiles\7f37170
+Node: Makefile Contents\7f38006
+Node: Splitting Lines\7f41188
+Node: Makefile Names\7f42949
+Node: Include\7f44560
+Ref: Include-Footnote-1\7f48308
+Node: MAKEFILES Variable\7f48442
+Node: Remaking Makefiles\7f49983
+Node: Overriding Makefiles\7f54208
+Node: Reading Makefiles\7f56236
+Node: Secondary Expansion\7f59690
+Node: Rules\7f67152
+Node: Rule Example\7f69825
+Node: Rule Syntax\7f70679
+Node: Prerequisite Types\7f73272
+Node: Wildcards\7f76139
+Node: Wildcard Examples\7f77858
+Node: Wildcard Pitfall\7f79207
+Node: Wildcard Function\7f80996
+Node: Directory Search\7f82780
+Node: General Search\7f83915
+Node: Selective Search\7f85622
+Node: Search Algorithm\7f88610
+Node: Recipes/Search\7f91128
+Node: Implicit/Search\7f92451
+Node: Libraries/Search\7f93393
+Node: Phony Targets\7f95364
+Node: Force Targets\7f100440
+Node: Empty Targets\7f101477
+Node: Special Targets\7f102782
+Node: Multiple Targets\7f110640
+Node: Multiple Rules\7f112505
+Node: Static Pattern\7f114723
+Node: Static Usage\7f115375
+Node: Static versus Implicit\7f119095
+Node: Double-Colon\7f120836
+Node: Automatic Prerequisites\7f122596
+Node: Recipes\7f126861
+Node: Recipe Syntax\7f128034
+Node: Splitting Recipe Lines\7f130149
+Node: Variables in Recipes\7f133302
+Node: Echoing\7f134628
+Node: Execution\7f135903
+Ref: Execution-Footnote-1\7f137316
+Node: One Shell\7f137461
+Node: Choosing the Shell\7f140776
+Node: Parallel\7f144922
+Node: Parallel Output\7f147591
+Node: Parallel Input\7f152020
+Node: Errors\7f153141
+Node: Interrupts\7f156809
+Node: Recursion\7f158392
+Node: MAKE Variable\7f160492
+Node: Variables/Recursion\7f162739
+Node: Options/Recursion\7f168185
+Node: -w Option\7f174203
+Node: Canned Recipes\7f175198
+Node: Empty Recipes\7f178183
+Node: Using Variables\7f179331
+Node: Reference\7f182761
+Node: Flavors\7f184319
+Node: Advanced\7f190301
+Node: Substitution Refs\7f190806
+Node: Computed Names\7f192359
+Node: Values\7f196906
+Node: Setting\7f197823
+Node: Appending\7f200730
+Node: Override Directive\7f204674
+Node: Multi-Line\7f206301
+Node: Undefine Directive\7f209125
+Node: Environment\7f210211
+Node: Target-specific\7f212462
+Node: Pattern-specific\7f215489
+Node: Suppressing Inheritance\7f217335
+Node: Special Variables\7f218788
+Node: Conditionals\7f224226
+Node: Conditional Example\7f224939
+Node: Conditional Syntax\7f227502
+Node: Testing Flags\7f233263
+Node: Functions\7f234364
+Node: Syntax of Functions\7f235924
+Node: Text Functions\7f238258
+Node: File Name Functions\7f246829
+Node: Conditional Functions\7f252051
+Node: Foreach Function\7f254425
+Node: File Function\7f257638
+Node: Call Function\7f259639
+Node: Value Function\7f262524
+Node: Eval Function\7f263961
+Node: Origin Function\7f266237
+Node: Flavor Function\7f269455
+Node: Make Control Functions\7f270497
+Node: Shell Function\7f272183
+Node: Guile Function\7f273816
+Node: Running\7f274566
+Node: Makefile Arguments\7f276549
+Node: Goals\7f277265
+Node: Instead of Execution\7f282004
+Node: Avoiding Compilation\7f285717
+Node: Overriding\7f287691
+Node: Testing\7f290003
+Node: Options Summary\7f291887
+Node: Implicit Rules\7f303579
+Node: Using Implicit\7f305725
+Node: Catalogue of Rules\7f309244
+Node: Implicit Variables\7f318592
+Node: Chained Rules\7f323705
+Node: Pattern Rules\7f327716
+Node: Pattern Intro\7f329250
+Node: Pattern Examples\7f331838
+Node: Automatic Variables\7f333645
+Node: Pattern Match\7f341003
+Node: Match-Anything Rules\7f344326
+Node: Canceling Rules\7f348205
+Node: Last Resort\7f348919
+Node: Suffix Rules\7f350748
+Node: Implicit Rule Search\7f354473
+Node: Archives\7f357973
+Node: Archive Members\7f358678
+Node: Archive Update\7f360288
+Node: Archive Symbols\7f362199
+Node: Archive Pitfalls\7f363433
+Node: Archive Suffix Rules\7f364155
+Node: Extending make\7f365702
+Node: Guile Integration\7f366839
+Node: Guile Types\7f368065
+Node: Guile Interface\7f370487
+Node: Guile Example\7f371774
+Node: Loading Objects\7f373965
+Node: load Directive\7f375452
+Node: Remaking Loaded Objects\7f378206
+Node: Loaded Object API\7f378840
+Node: Loaded Object Example\7f385601
+Node: Features\7f387849
+Node: Missing\7f397021
+Node: Makefile Conventions\7f400749
+Node: Makefile Basics\7f401728
+Node: Utilities in Makefiles\7f404895
+Node: Command Variables\7f407393
+Node: DESTDIR\7f410632
+Node: Directory Variables\7f412799
+Node: Standard Targets\7f428164
+Node: Install Command Categories\7f442269
+Node: Quick Reference\7f446795
+Node: Error Messages\7f459490
+Node: Complex Makefile\7f467403
+Node: GNU Free Documentation License\7f476021
+Node: Concept Index\7f501183
+Node: Name Index\7f571815
 \1f
 End Tag Table
index 509ce05..4025d3e 100644 (file)
@@ -4,16 +4,16 @@ 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.71, last updated 19 July 2010, of `The GNU Make
-Manual', for GNU `make' version 3.82.
+   This is Edition 0.72, last updated 9 October 2013, of `The GNU Make
+Manual', for GNU `make' version 4.0.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.2 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
      being "A GNU Manual," and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
@@ -38,16 +38,16 @@ 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.71, last updated 19 July 2010, of `The GNU Make
-Manual', for GNU `make' version 3.82.
+   This is Edition 0.72, last updated 9 October 2013, of `The GNU Make
+Manual', for GNU `make' version 4.0.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.2 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
      being "A GNU Manual," and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
@@ -72,6 +72,7 @@ Manual', for GNU `make' version 3.82.
 * Implicit Rules::              Use implicit rules to treat many files alike,
                                   based on their file names.
 * Archives::                    How `make' can update library archives.
+* Extending make::              Using extensions to `make'.
 * Features::                    Features GNU `make' has over other `make's.
 * Missing::                     What GNU `make' lacks from other `make's.
 * Makefile Conventions::        Conventions for writing makefiles for
@@ -81,27 +82,27 @@ Manual', for GNU `make' version 3.82.
 * Complex Makefile::            A real example of a straightforward,
                                   but nontrivial, makefile.
 
-* GNU Free Documentation License::  License for copying this manual
-* Concept Index::               Index of Concepts
-* Name Index::                  Index of Functions, Variables, & Directives
+* GNU Free Documentation License::  License for copying this manual.
+* Concept Index::               Index of Concepts.
+* Name Index::                  Index of Functions, Variables, & Directives.
 
  --- The Detailed Node Listing ---
 
 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 recipe
-* 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 recipes.
+* Combine By Prerequisite::     Another style of makefile.
+* Cleanup::                     Rules for cleaning the directory.
 
 Writing Makefiles
 
@@ -115,6 +116,10 @@ Writing Makefiles
 * Reading Makefiles::           How makefiles are parsed.
 * Secondary Expansion::         How and when secondary expansion is performed.
 
+What Makefiles Contain
+
+* Splitting Lines::             Splitting long lines in makefiles
+
 Writing Rules
 
 * Rule Example::                An example explained.
@@ -141,7 +146,7 @@ Writing Rules
 
 Using Wildcard Characters in File Names
 
-* Wildcard Examples::           Several examples
+* Wildcard Examples::           Several examples.
 * Wildcard Pitfall::            Problems to avoid.
 * Wildcard Function::           How to cause wildcard expansion where
                                   it does not normally take place.
@@ -177,14 +182,20 @@ Writing Recipes in Rules
 
 Recipe Syntax
 
-* Splitting Lines::             Breaking long recipe lines for readability.
+* Splitting Recipe Lines::      Breaking long recipe lines for readability.
 * Variables in Recipes::        Using `make' variables in recipes.
 
 Recipe Execution
 
+* One Shell::                   One shell for all lines in a recipe.
 * Choosing the Shell::          How `make' chooses the shell used
                                   to run recipes.
 
+Parallel Execution
+
+* Parallel Output::             Handling output during parallel execution
+* Parallel Input::              Handling input during parallel execution
+
 Recursive Use of `make'
 
 * MAKE Variable::               The special effects of using `$(MAKE)'.
@@ -206,6 +217,8 @@ How to Use Variables
                                   the user has set it with a command argument.
 * 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.
@@ -233,13 +246,15 @@ Functions for Transforming Text
 * File Name Functions::         Functions for manipulating file names.
 * Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
+* File Function::               Write text to a file.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
 * Flavor Function::             Find out the flavor of a variable.
-* Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
+* Shell Function::              Substitute the output of a shell command.
+* Guile Function::              Use GNU Guile embedded scripting language.
 
 How to Run `make'
 
@@ -260,7 +275,7 @@ How to Run `make'
 Using Implicit Rules
 
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the recipe 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.
@@ -295,6 +310,24 @@ Implicit Rule for Archive Member Targets
 
 * Archive Symbols::             How to update archive symbol directories.
 
+Extending GNU `make'
+
+* Guile Integration::           Using Guile as an embedded scripting language.
+* Loading Objects::             Loading dynamic objects as extensions.
+
+GNU Guile Integration
+
+* Guile Types::                 Converting Guile types to `make' strings.
+* Guile Interface::             Invoking `make' functions from Guile.
+* Guile Example::               Example using Guile in `make'.
+
+Loading Dynamic Objects
+
+* load Directive::              Loading dynamic objects as extensions.
+* Remaking Loaded Objects::     How loaded objects get remade.
+* Loaded Object API::           Programmatic interface for loaded objects.
+* Loaded Object Example::       Example of a loaded object
+
 \1f
 File: make.info,  Node: Overview,  Next: Introduction,  Prev: Top,  Up: Top
 
@@ -318,9 +351,9 @@ automatically from others whenever the others change.
 
 * Menu:
 
-* 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.
 
 \1f
 File: make.info,  Node: Preparing,  Next: Reading,  Prev: Overview,  Up: Overview
@@ -438,12 +471,12 @@ together to produce the new executable editor.
 * Menu:
 
 * 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 Recipes
-* 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 recipes.
+* Combine By Prerequisite::     Another style of makefile.
+* Cleanup::                     Rules for cleaning the directory.
 
 \1f
 File: make.info,  Node: Rule Introduction,  Next: Simple Makefile,  Prev: Introduction,  Up: Introduction
@@ -530,8 +563,9 @@ that change the editor buffer include `buffer.h'.
              rm edit main.o kbd.o command.o display.o \
                 insert.o search.o files.o utils.o
 
-We split each long line into two lines using backslash-newline; this is
-like using one long line, but is easier to read.  
+We split each long line into two lines using backslash/newline; this is
+like using one long line, but is easier to read.  *Note Splitting Long
+Lines: Splitting Lines.  
 
    To use this makefile to create the executable file called `edit',
 type:
@@ -892,6 +926,47 @@ variables, and directives are described at length in later chapters.
      treated as `make' comments or as recipe text, depending on the
      context in which the variable is evaluated.
 
+* Menu:
+
+* Splitting Lines::             Splitting long lines in makefiles
+
+\1f
+File: make.info,  Node: Splitting Lines,  Prev: Makefile Contents,  Up: Makefile Contents
+
+3.1.1 Splitting Long Lines
+--------------------------
+
+Makefiles use a "line-based" syntax in which the newline character is
+special and marks the end of a statement.  GNU `make' has no limit on
+the length of a statement line, up to the amount of memory in your
+computer.
+
+   However, it is difficult to read lines which are too long to display
+without wrapping or scrolling.  So, you can format your makefiles for
+readability by adding newlines into the middle of a statement: you do
+this by escaping the internal newlines with a backslash (`\')
+character.  Where we need to make a distinction we will refer to
+"physical lines" as a single line ending with a newline (regardless of
+whether it is escaped) and a "logical line" being a complete statement
+including all escaped newlines up to the first non-escaped newline.
+
+   The way in which backslash/newline combinations are handled depends
+on whether the statement is a recipe line or a non-recipe line.
+Handling of backslash/newline in a recipe line is discussed later
+(*note Splitting Recipe Lines::).
+
+   Outside of recipe lines, backslash/newlines are converted into a
+single space character.  Once that is done, all whitespace around the
+backslash/newline is condensed into a single space: this includes all
+whitespace preceding the backslash, all whitespace at the beginning of
+the line after the backslash/newline, and any consecutive
+backslash/newline combinations.
+
+   If the `.POSIX' special target is defined then backslash/newline
+handling is modified slightly to conform to POSIX.2: first, whitespace
+preceding a backslash is not removed and second, consecutive
+backslash/newlines are not condensed.
+
 \1f
 File: make.info,  Node: Makefile Names,  Next: Include,  Prev: Makefile Contents,  Up: Makefiles
 
@@ -1066,7 +1141,7 @@ 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
+preventing implicit rule look-up 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.).
 
@@ -1129,7 +1204,7 @@ File: make.info,  Node: Overriding Makefiles,  Next: Reading Makefiles,  Prev: R
 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, it is illegal for two makefiles to give different recipes for
+However, it is invalid 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),
@@ -1203,7 +1278,9 @@ Variable definitions are parsed as follows:
      IMMEDIATE = DEFERRED
      IMMEDIATE ?= DEFERRED
      IMMEDIATE := IMMEDIATE
+     IMMEDIATE ::= IMMEDIATE
      IMMEDIATE += DEFERRED or IMMEDIATE
+     IMMEDIATE != IMMEDIATE
 
      define IMMEDIATE
        DEFERRED
@@ -1221,13 +1298,26 @@ Variable definitions are parsed as follows:
        IMMEDIATE
      endef
 
+     define IMMEDIATE ::=
+       IMMEDIATE
+     endef
+
      define IMMEDIATE +=
        DEFERRED or IMMEDIATE
      endef
 
+     define IMMEDIATE !=
+       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.
+immediate if the variable was previously set as a simple variable (`:='
+or `::='), and deferred otherwise.
+
+   For the shell assignment operator, `!=', the right-hand side is
+evaluated immediately and handed to the shell.  The result is stored in
+the variable named on the left, and that variable becomes a simple
+variable (and will thus be re-evaluated on each reference).
 
 Conditional Directives
 ----------------------
@@ -1291,8 +1381,8 @@ makefile:
 (escaped) variable reference is simply unescaped, without being
 recognized as a variable reference.  Now during the secondary expansion
 the first word is expanded again but since it contains no variable or
-function references it remains the static value `onefile', while the
-second word is now a normal reference to the variable TWOVAR, which is
+function references it remains the value `onefile', while the second
+word is now a normal reference to the variable TWOVAR, which is
 expanded to the value `twofile'.  The final result is that there are
 two prerequisites, `onefile' and `twofile'.
 
@@ -1425,9 +1515,10 @@ example:
      /tmp/foo.o:
 
      %.o: $$(addsuffix /%.c,foo bar) foo.h
+             @echo $^
 
-   The prerequisite list after the secondary expansion and directory
-prefix reconstruction will be `/tmp/foo/foo.c /tmp/var/bar/foo.c
+   The prerequisite list printed, after the secondary expansion and
+directory prefix reconstruction, will be `/tmp/foo/foo.c /tmp/bar/foo.c
 foo.h'.  If you are not interested in this reconstruction, you can use
 `$$*' instead of `%' in the prerequisites list.
 
@@ -1465,7 +1556,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 recipes
+* 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
@@ -1663,7 +1754,7 @@ specific file whose name consists of `foo', an asterisk, and `bar'.
 
 * Menu:
 
-* Wildcard Examples::           Several examples
+* Wildcard Examples::           Several examples.
 * Wildcard Pitfall::            Problems to avoid.
 * Wildcard Function::           How to cause wildcard expansion where
                                   it does not normally take place.
@@ -1819,7 +1910,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.
-* Recipes/Search::             How to write recipes 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.
@@ -2096,7 +2187,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 each library filename.
+searches using each library file name.
 
    The default value for `.LIBPATTERNS' is `lib%.so lib%.a', which
 provides the default behavior described above.
@@ -2154,9 +2245,9 @@ target, then you write the rule, like this:
    Another example of the usefulness of phony targets is in conjunction
 with recursive invocations of `make' (for more information, see *note
 Recursive Use of `make': Recursion.).  In this case the makefile will
-often contain a variable which lists a number of subdirectories to be
+often contain a variable which lists a number of sub-directories to be
 built.  One way to handle this is with one rule whose recipe is a shell
-loop over the subdirectories, like this:
+loop over the sub-directories, like this:
 
      SUBDIRS = foo bar baz
 
@@ -2166,7 +2257,7 @@ loop over the subdirectories, like this:
              done
 
    There are problems with this method, however.  First, any error
-detected in a submake is ignored by this rule, so it will continue to
+detected in a sub-make 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
@@ -2174,9 +2265,9 @@ unfortunate.  Second, and perhaps more importantly, you cannot take
 advantage of `make''s ability to build targets in parallel (*note
 Parallel Execution: Parallel.), since there is only one rule.
 
-   By declaring the subdirectories as phony targets (you must do this as
-the subdirectory obviously always exists; otherwise it won't be built)
-you can remove these problems:
+   By declaring the sub-directories as phony targets (you must do this
+as the sub-directory obviously always exists; otherwise it won't be
+built) you can remove these problems:
 
      SUBDIRS = foo bar baz
 
@@ -2189,8 +2280,8 @@ you can remove these problems:
 
      foo: baz
 
-   Here we've also declared that the `foo' subdirectory cannot be built
-until after the `baz' subdirectory is complete; this kind of
+   Here we've also declared that the `foo' sub-directory cannot be
+built until after the `baz' sub-directory is complete; this kind of
 relationship declaration is particularly important when attempting
 parallel builds.
 
@@ -2391,16 +2482,16 @@ Certain names have special meanings if they appear as targets.
      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:
+     explicitly set a file's time stamp must discard its sub-second
+     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
                   cp -p src dst
 
-     Since `cp -p' discards the subsecond part of `src''s time stamp,
+     Since `cp -p' discards the sub-second part of `src''s time stamp,
      `dst' is typically slightly older than `src' even when it is up to
      date.  The `.LOW_RESOLUTION_TIME' line causes `make' to consider
      `dst' to be up to date if its time stamp is at the start of the
@@ -2644,7 +2735,7 @@ 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,
 only some of which will match the pattern, you can use the `filter'
-function to remove nonmatching file names (*note Functions for String
+function to remove non-matching file names (*note Functions for String
 Substitution and Analysis: Text Functions.):
 
      files = foo.elc bar.o lose.o
@@ -2776,10 +2867,10 @@ generates the output:
 Thus you no longer have to write all those rules yourself.  The
 compiler will do it for you.
 
-   Note that such a prerequisite constitutes mentioning `main.o' in a
-makefile, so it can never be considered an intermediate file by implicit
-rule search.  This means that `make' won't ever remove the file after
-using it; *note Chains of Implicit Rules: Chained Rules.
+   Note that such a rule constitutes mentioning `main.o' in a makefile,
+so it can never be considered an intermediate file by implicit rule
+search.  This means that `make' won't ever remove the file after using
+it; *note Chains of Implicit Rules: Chained Rules.
 
    With old `make' programs, it was traditional practice to use this
 compiler feature to generate prerequisites on demand with a command like
@@ -2814,8 +2905,8 @@ command (or any other command) fails (exits with a nonzero status).
 
    With the GNU C compiler, you may wish to use the `-MM' flag instead
 of `-M'.  This omits prerequisites on system header files.  *Note
-Options Controlling the Preprocessor: (gcc.info)Preprocessor Options,
-for details.
+Options Controlling the Preprocessor: (gcc)Preprocessor Options, for
+details.
 
    The purpose of the `sed' command is to translate (for example):
 
@@ -2923,11 +3014,11 @@ they are ignored.
 
 * Menu:
 
-* Splitting Lines::             Breaking long recipe lines for readability.
+* Splitting Recipe 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 Recipes,  Prev: Recipe Syntax,  Up: Recipe Syntax
+File: make.info,  Node: Splitting Recipe Lines,  Next: Variables in Recipes,  Prev: Recipe Syntax,  Up: Recipe Syntax
 
 5.1.1 Splitting Recipe Lines
 ----------------------------
@@ -2940,13 +3031,14 @@ 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 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 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.
+makefile (*note Splitting Long Lines: Splitting Lines.),
+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
+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, the recipe for the all target in this makefile:
 
@@ -2993,13 +3085,13 @@ with single quotes (`'...'').  This is the way the default shell
 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.
+you don't want the backslash/newline to appear in the quoted content.
 This is often the case when passing scripts to languages such as Perl,
 where extraneous backslashes inside the script can change its meaning
 or even be a syntax error.  One simple way of handling this is to place
 the quoted string, or even the entire command, into a `make' variable
 then use the variable in the recipe.  In this situation the newline
-quoting rules for makefiles will be used, and the backslash-newline
+quoting rules for makefiles will be used, and the backslash/newline
 will be removed.  If we rewrite our example above using this method:
 
      HELLO = 'hello \
@@ -3016,7 +3108,7 @@ Target-specific Variable Values: Target-specific.) to obtain a tighter
 correspondence between the variable and the recipe that uses it.
 
 \1f
-File: make.info,  Node: Variables in Recipes,  Prev: Splitting Lines,  Up: Recipe Syntax
+File: make.info,  Node: Variables in Recipes,  Prev: Splitting Recipe Lines,  Up: Recipe Syntax
 
 5.1.2 Using Variables in Recipes
 --------------------------------
@@ -3091,10 +3183,10 @@ File: make.info,  Node: Execution,  Next: Parallel,  Prev: Echoing,  Up: Recipes
 ====================
 
 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.)
+executed by invoking a new sub-shell 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
@@ -3114,7 +3206,7 @@ case it would certainly cause `../foo' to be truncated, at least).
 
 * Menu:
 
-* One Shell::                   One shell for all lines in a recipe
+* One Shell::                   One shell for all lines in a recipe.
 * Choosing the Shell::          How `make' chooses the shell used
                                   to run recipes.
 
@@ -3319,32 +3411,9 @@ 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 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 recipe tries to take input
-from the terminal at once, `make' will invalidate the standard input
-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 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 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 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 recipes.
-
-   Finally, handling recursive `make' invocations raises issues.  For
-more information on this, see *note Communicating Options to a
-Sub-`make': Options/Recursion.
+   Handling recursive `make' invocations raises issues for parallel
+execution.  For more information on this, see *note Communicating
+Options to a Sub-`make': Options/Recursion.
 
    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
@@ -3374,6 +3443,126 @@ average goes below that limit, or until all the other jobs finish.
 
    By default, there is no load limit.
 
+* Menu:
+
+* Parallel Output::             Handling output during parallel execution
+* Parallel Input::              Handling input during parallel execution
+
+\1f
+File: make.info,  Node: Parallel Output,  Next: Parallel Input,  Prev: Parallel,  Up: Parallel
+
+5.4.1 Output During Parallel Execution
+--------------------------------------
+
+When running several recipes in parallel the output from each recipe
+appears as soon as it is generated, with the result that messages from
+different recipes may be interspersed, sometimes even appearing on the
+same line.  This can make reading the output very difficult.
+
+   To avoid this you can use the `--output-sync' (`-O') option.  This
+option instructs `make' to save the output from the commands it invokes
+and print it all once the commands are completed.  Additionally, if
+there are multiple recursive `make' invocations running in parallel,
+they will communicate so that only one of them is generating output at
+a time.
+
+   If working directory printing is enabled (*note The
+`--print-directory' Option: -w Option.), the enter/leave messages are
+printed around each output grouping.  If you prefer not to see these
+messages add the `--no-print-directory' option to `MAKEFLAGS'.
+
+   There are four levels of granularity when synchronizing output,
+specified by giving an argument to the option (e.g.,  `-Oline' or
+`--output-sync=recurse').
+
+`none'
+     This is the default: all output is sent directly as it is
+     generated and no synchronization is performed.
+
+`line'
+     Output from each individual line of the recipe is grouped and
+     printed as soon as that line is complete.  If a recipe consists of
+     multiple lines, they may be interspersed with lines from other
+     recipes.
+
+`target'
+     Output from the entire recipe for each target is grouped and
+     printed once the target is complete.  This is the default if the
+     `--output-sync' or `-O' option is given with no argument.
+
+`recurse'
+     Output from each recursive invocation of `make' is grouped and
+     printed once the recursive invocation is complete.
+
+
+   Regardless of the mode chosen, the total build time will be the same.
+The only difference is in how the output appears.
+
+   The `target' and `recurse' modes both collect the output of the
+entire recipe of a target and display it uninterrupted when the recipe
+completes.  The difference between them is in how recipes that contain
+recursive invocations of `make' are treated (*note Recursive Use of
+`make': Recursion.).  For all recipes which have no recursive lines,
+the `target' and `recurse' modes behave identically.
+
+   If the `recurse' mode is chosen, recipes that contain recursive
+`make' invocations are treated the same as other targets: the output
+from the recipe, including the output from the recursive `make', is
+saved and printed after the entire recipe is complete.  This ensures
+output from all the targets built by a given recursive `make' instance
+are grouped together, which may make the output easier to understand.
+However it also leads to long periods of time during the build where no
+output is seen, followed by large bursts of output.  If you are not
+watching the build as it proceeds, but instead viewing a log of the
+build after the fact, this may be the best option for you.
+
+   If you are watching the output, the long gaps of quiet during the
+build can be frustrating.  The `target' output synchronization mode
+detects when `make' is going to be invoked recursively, using the
+standard methods, and it will not synchronize the output of those
+lines.  The recursive `make' will perform the synchronization for its
+targets and the output from each will be displayed immediately when it
+completes.  Be aware that output from recursive lines of the recipe are
+not synchronized (for example if the recursive line prints a message
+before running `make', that message will not be synchronized).
+
+   The `line' mode can be useful for front-ends that are watching the
+output of `make' to track when recipes are started and completed.
+
+   Some programs invoked by `make' may behave differently if they
+determine they're writing output to a terminal versus a file (often
+described as "interactive" vs. "non-interactive" modes).  For example,
+many programs that can display colorized output will not do so if they
+determine they are not writing to a terminal.  If your makefile invokes
+a program like this then using the output synchronization options will
+cause the program to believe it's running in "non-interactive" mode
+even though the output will ultimately go to the terminal.
+
+\1f
+File: make.info,  Node: Parallel Input,  Prev: Parallel Output,  Up: Parallel
+
+5.4.2 Input During Parallel Execution
+-------------------------------------
+
+Two processes cannot both take input from the same device at the same
+time.  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 recipe.  If another recipe attempts to read from
+standard input it will usually incur a fatal error (a `Broken pipe'
+signal).  
+
+   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 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 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 recipes.
+
 \1f
 File: make.info,  Node: Errors,  Next: Interrupts,  Prev: Parallel,  Up: Recipes
 
@@ -3490,8 +3679,8 @@ File: make.info,  Node: Recursion,  Next: Canned Recipes,  Prev: Interrupts,  Up
 Recursive use of `make' means using `make' as a command in a makefile.
 This technique is useful when you want separate makefiles for various
 subsystems that compose a larger system.  For example, suppose you have
-a subdirectory `subdir' which has its own makefile, and you would like
-the containing directory's makefile to run `make' on the subdirectory.
+a sub-directory `subdir' which has its own makefile, and you would like
+the containing directory's makefile to run `make' on the sub-directory.
 You can do it by writing this:
 
      subsystem:
@@ -3581,9 +3770,9 @@ File: make.info,  Node: Variables/Recursion,  Next: Options/Recursion,  Prev: MA
 
 Variable values of the top-level `make' can be passed to the sub-`make'
 through the environment by explicit request.  These variables are
-defined in the sub-`make' as defaults, but do not override what is
-specified in the makefile used by the sub-`make' makefile unless you
-use the `-e' switch (*note Summary of Options: Options Summary.).
+defined in the sub-`make' as defaults, but they do not override
+variables defined in the makefile used by the sub-`make' 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 line of the recipe.  The
@@ -3813,6 +4002,22 @@ For instance, the `-t', `-n', and `-q' options, if put in one of these
 variables, could have disastrous consequences and would certainly have
 at least surprising and probably annoying effects.
 
+   If you'd like to run other implementations of `make' in addition to
+GNU `make', and hence do not want to add GNU `make'-specific flags to
+the `MAKEFLAGS' variable, you can add them to the `GNUMAKEFLAGS'
+variable instead.  This variable is parsed just before `MAKEFLAGS', in
+the same way as `MAKEFLAGS'.  When `make' constructs `MAKEFLAGS' to
+pass to a recursive `make' it will include all flags, even those taken
+from `GNUMAKEFLAGS'.  As a result, after parsing `GNUMAKEFLAGS' GNU
+`make' sets this variable to the empty string to avoid duplicating
+flags during recursion.
+
+   It's best to use `GNUMAKEFLAGS' only with flags which won't
+materially change the behavior of your makefiles.  If your makefiles
+require GNU make anyway then simply use `MAKEFLAGS'.  Flags such as
+`--no-print-directory' or `--output-sync' may be appropriate for
+`GNUMAKEFLAGS'.
+
 \1f
 File: make.info,  Node: -w Option,  Prev: Options/Recursion,  Up: Recursion
 
@@ -3890,7 +4095,7 @@ Implicit Rules.).
 
    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
+particular, `make' invokes a separate sub-shell for each line.  You can
 use the special prefix characters that affect command lines (`@', `-',
 and `+') on each line of a canned sequence.  *Note Writing Recipes in
 Rules: Recipes.  For example, using this canned sequence:
@@ -3962,13 +4167,14 @@ definitions using `=', and the bodies of variable definitions using the
 compilers, programs to run, directories to look in for source files,
 directories to write output in, or anything else you can imagine.
 
-   A variable name may be any sequence of characters not containing `:',
-`#', `=', or leading or trailing whitespace.  However, variable names
-containing characters other than letters, numbers, and underscores
-should be avoided, as they may be given special meanings in the future,
-and with some shells they cannot be passed through the environment to a
-sub-`make' (*note Communicating Variables to a Sub-`make':
-Variables/Recursion.).
+   A variable name may be any sequence of characters not containing
+`:', `#', `=', or whitespace.  However, variable names containing
+characters other than letters, numbers, and underscores should be
+considered carefully, as in some shells they cannot be passed through
+the environment to a sub-`make' (*note Communicating Variables to a
+Sub-`make': Variables/Recursion.).  Variable names beginning with `.'
+and an uppercase letter may be given special meaning in future versions
+of `make'.
 
    Variable names are case-sensitive.  The names `foo', `FOO', and
 `Foo' all refer to different variables.
@@ -4077,9 +4283,9 @@ called "recursive expansion".
 will echo `Huh?': `$(foo)' expands to `$(bar)' which expands to
 `$(ugh)' which finally expands to `Huh?'.
 
-   This flavor of variable is the only sort supported by other versions
-of `make'.  It has its advantages and its disadvantages.  An advantage
-(most would say) is that:
+   This flavor of variable is the only sort supported by most other
+versions of `make'.  It has its advantages and its disadvantages.  An
+advantage (most would say) is that:
 
      CFLAGS = $(include_dirs) -O
      include_dirs = -Ifoo -Ibar
@@ -4103,14 +4309,18 @@ called, or even how many times.
    To avoid all the problems and inconveniences of recursively expanded
 variables, there is another flavor: simply expanded variables.
 
-   "Simply expanded variables" are defined by lines using `:=' (*note
-Setting Variables: Setting.).  The value of a simply expanded variable
-is scanned once and for all, expanding any references to other
-variables and functions, when the variable is defined.  The actual
-value of the simply expanded variable is the result of expanding the
-text that you write.  It does not contain any references to other
-variables; it contains their values _as of the time this variable was
-defined_.  Therefore,
+   "Simply expanded variables" are defined by lines using `:=' or `::='
+(*note Setting Variables: Setting.).  Both forms are equivalent in GNU
+`make'; however only the `::=' form is described by the POSIX standard
+(support for `::=' was added to the POSIX standard in 2012, so older
+versions of `make' won't accept this form either).
+
+   The value of a simply expanded variable is scanned once and for all,
+expanding any references to other variables and functions, when the
+variable is defined.  The actual value of the simply expanded variable
+is the result of expanding the text that you write.  It does not
+contain any references to other variables; it contains their values _as
+of the time this variable was defined_.  Therefore,
 
      x := foo
      y := $(x) bar
@@ -4289,7 +4499,7 @@ Here the innermost `$(x)' expands to `y', so `$($(x))' expands to
 `u'.
 
    References to recursively-expanded variables within a variable name
-are reexpanded in the usual fashion.  For example:
+are re-expanded in the usual fashion.  For example:
 
      x = $(y)
      y = z
@@ -4424,8 +4634,8 @@ File: make.info,  Node: Setting,  Next: Appending,  Prev: Values,  Up: Using Var
 =====================
 
 To set a variable from the makefile, write a line starting with the
-variable name followed by `=' or `:='.  Whatever follows the `=' or
-`:=' on the line becomes the value.  For example,
+variable name followed by `=' `:=', or `::='.  Whatever follows the
+`=', `:=', or `::=' on the line becomes the value.  For example,
 
      objects = main.o foo.o bar.o utils.o
 
@@ -4433,21 +4643,19 @@ defines a variable named `objects'.  Whitespace around the variable
 name and immediately after the `=' is ignored.
 
    Variables defined with `=' are "recursively expanded" variables.
-Variables defined with `:=' are "simply expanded" variables; these
-definitions can contain variable references which will be expanded
-before the definition is made.  *Note The Two Flavors of Variables:
-Flavors.
+Variables defined with `:=' or `::=' are "simply expanded" variables;
+these definitions can contain variable references which will be
+expanded before the definition is made.  *Note The Two Flavors of
+Variables: Flavors.
 
    The variable name may contain function and variable references, which
 are expanded when the line is read to find the actual variable name to
 use.
 
    There is no limit on the length of the value of a variable except the
-amount of swapping space on the computer.  When a variable definition is
-long, it is a good idea to break it into several lines by inserting
-backslash-newline at convenient places in the definition.  This will not
-affect the functioning of `make', but it will make the makefile easier
-to read.
+amount of memory on the computer.  You can split the value of a
+variable into multiple physical lines for readability (*note Splitting
+Long Lines: Splitting Lines.).
 
    Most variable names are considered to have the empty string as a
 value if you have never set them.  Several variables have built-in
@@ -4470,6 +4678,27 @@ and
      FOO = bar
      endif
 
+   The shell assignment operator `!=' can be used to execute a program
+and set a variable to its output.  This operator first evaluates the
+right-hand side, then passes that result to the shell for execution.
+If the result of the execution ends in a newline, that one newline is
+removed; all other newlines are replaced by spaces.  The resulting
+string is then placed into the named recursively-expanded variable.
+For example:
+
+     hash != printf '\043'
+     file_list != find . -name '*.c'
+
+   If the result of the execution could produce a `$', and you don't
+intend what follows that to be interpreted as a make variable or
+function reference, then you must replace every `$' with `$$' as part
+of the execution.  Alternatively, you can set a simply expanded
+variable to the result of running a program using the `shell' function
+call.  *Note The `shell' Function: Shell Function.  For example:
+
+     hash := $(shell printf '\043')
+     var := $(shell find . -name "*.c")
+
 \1f
 File: make.info,  Node: Appending,  Next: Override Directive,  Prev: Setting,  Up: Using Variables
 
@@ -4506,11 +4735,11 @@ flavors of variables.
 
    When you add to a variable's value with `+=', `make' acts
 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
-full explanation of `:=').  In fact,
+definition of the variable.  If you defined it first with `:=' or
+`::=', 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 full explanation of `:=' or `::=').  In fact,
 
      variable := value
      variable += more
@@ -4669,8 +4898,8 @@ 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 Recipe Execution: Execution.
+`make' will invoke the shell twice, running an independent sub-shell
+for 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
@@ -4787,13 +5016,13 @@ their normal behavior to this instance of the variable only.
 each member of the target list individually.
 
    The VARIABLE-ASSIGNMENT can be any valid form of assignment;
-recursive (`='), static (`:='), appending (`+='), or conditional
-(`?=').  All variables that appear within the VARIABLE-ASSIGNMENT are
-evaluated within the context of the target: thus, any
-previously-defined target-specific variable values will be in effect.
-Note that this variable is actually distinct from any "global" value:
-the two variables do not have to have the same flavor (recursive vs.
-static).
+recursive (`='), simple (`:=' or `::='), appending (`+='), or
+conditional (`?=').  All variables that appear within the
+VARIABLE-ASSIGNMENT are evaluated within the context of the target:
+thus, any previously-defined target-specific variable values will be in
+effect.  Note that this variable is actually distinct from any "global"
+value: the two variables do not have to have the same flavor (recursive
+vs. simple).
 
    Target-specific variables have the same priority as any other
 makefile variable.  Variables provided on the command line (and in the
@@ -4903,7 +5132,7 @@ by any target, and hence will not be visible in any recipe.
      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.
+`EXTRA_CFLAGS' variable assignment from the `prog' target.
 
 \1f
 File: make.info,  Node: Special Variables,  Prev: Suppressing Inheritance,  Up: Using Variables
@@ -4976,7 +5205,7 @@ GNU `make' supports some variables that have special properties.
           foo
 
      Note that assigning more than one target name to `.DEFAULT_GOAL' is
-     illegal and will result in an error.
+     invalid and will result in an error.
 
 `MAKE_RESTARTS'
      This variable is set only if this instance of `make' has restarted
@@ -5009,10 +5238,10 @@ GNU `make' supports some variables that have special properties.
 
 `.FEATURES'
      Expands to a list of special features supported by this version of
-     `make'.  Possible values include:
+     `make'.  Possible values include, but are not limited to:
 
     `archives'
-          Supports `ar' (archive) files using special filename syntax.
+          Supports `ar' (archive) files using special file name syntax.
           *Note Using `make' to Update Archive Files: Archives.
 
     `check-symlink'
@@ -5027,18 +5256,38 @@ GNU `make' supports some variables that have special properties.
           Supports "job server" enhanced parallel builds.  *Note
           Parallel Execution: Parallel.
 
-    `second-expansion'
-          Supports secondary expansion of prerequisite lists.
+    `oneshell'
+          Supports the `.ONESHELL' special target.  *Note Using One
+          Shell: One Shell.
 
     `order-only'
           Supports order-only prerequisites.  *Note Types of
           Prerequisites: Prerequisite Types.
 
+    `second-expansion'
+          Supports secondary expansion of prerequisite lists.
+
+    `shortest-stem'
+          Uses the "shortest stem" method of choosing which pattern, of
+          multiple applicable options, will be used.  *Note How
+          Patterns Match: Pattern Match.
+
     `target-specific'
           Supports target-specific and pattern-specific variable
           assignments.  *Note Target-specific Variable Values:
           Target-specific.
 
+    `undefine'
+          Supports the `undefine' directive.  *Note Undefine
+          Directive::.
+
+    `guile'
+          Has GNU Guile available as an embedded extension language.
+          *Note GNU Guile Integration: Guile Integration.
+
+    `load'
+          Supports dynamically loadable objects for creating custom
+          extensions.  *Note Loading Dynamic Objects: Loading Objects.
 
 `.INCLUDE_DIRS'
      Expands to a list of directories that `make' searches for included
@@ -5165,12 +5414,12 @@ text is used instead.
 
    or:
 
-     CONDITIONAL-DIRECTIVE
+     CONDITIONAL-DIRECTIVE-ONE
      TEXT-IF-ONE-IS-TRUE
-     else CONDITIONAL-DIRECTIVE
-     TEXT-IF-TRUE
+     else CONDITIONAL-DIRECTIVE-TWO
+     TEXT-IF-TWO-IS-TRUE
      else
-     TEXT-IF-FALSE
+     TEXT-IF-ONE-AND-TWO-ARE-FALSE
      endif
 
 There can be as many "`else' CONDITIONAL-DIRECTIVE" clauses as
@@ -5349,13 +5598,15 @@ the point of the call, just as a variable might be substituted.
 * File Name Functions::         Functions for manipulating file names.
 * Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
+* File Function::               Write text to a file.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
 * Flavor Function::             Find out the flavor of a variable.
-* Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
+* Shell Function::              Substitute the output of a shell command.
+* Guile Function::              Use GNU Guile embedded scripting language.
 
 \1f
 File: make.info,  Node: Syntax of Functions,  Next: Text Functions,  Prev: Functions,  Up: Functions
@@ -5363,7 +5614,9 @@ File: make.info,  Node: Syntax of Functions,  Next: Text Functions,  Prev: Funct
 8.1 Function Call Syntax
 ========================
 
-A function call resembles a variable reference.  It looks like this:
+A function call resembles a variable reference.  It can appear anywhere
+a variable reference can appear, and it is expanded using the same
+rules as variable references.  A function call looks like this:
 
      $(FUNCTION ARGUMENTS)
 
@@ -5373,7 +5626,7 @@ or like this:
 
    Here FUNCTION is a function name; one of a short list of names that
 are part of `make'.  You can also essentially create your own functions
-by using the `call' builtin function.
+by using the `call' built-in function.
 
    The ARGUMENTS are the arguments of the function.  They are separated
 from the function name by one or more spaces or tabs, and if there is
@@ -5827,7 +6080,7 @@ expanded.
 
 
 \1f
-File: make.info,  Node: Foreach Function,  Next: Call Function,  Prev: Conditional Functions,  Up: Functions
+File: make.info,  Node: Foreach Function,  Next: File Function,  Prev: Conditional Functions,  Up: Functions
 
 8.5 The `foreach' Function
 ==========================
@@ -5878,9 +6131,9 @@ name, with an additional variable:
 
 Here we use the variable `find_files' this way.  We use plain `=' to
 define a recursively-expanding variable, so that its value contains an
-actual function call to be reexpanded under the control of `foreach'; a
-simply-expanded variable would not do, since `wildcard' would be called
-only once at the time of defining `find_files'.
+actual function call to be re-expanded under the control of `foreach';
+a simply-expanded variable would not do, since `wildcard' would be
+called only once at the time of defining `find_files'.
 
    The `foreach' function has no permanent effect on the variable VAR;
 its value and flavor after the `foreach' function call are the same as
@@ -5895,16 +6148,66 @@ Flavors.
 result in variable names because many strange things are valid variable
 names, but are probably not what you intended.  For example,
 
-     files := $(foreach Esta escrito en espanol!,b c ch,$(find_files))
+     files := $(foreach Esta-escrito-en-espanol!,b c ch,$(find_files))
 
 might be useful if the value of `find_files' references the variable
-whose name is `Esta escrito en espanol!' (es un nombre bastante largo,
+whose name is `Esta-escrito-en-espanol!' (es un nombre bastante largo,
 no?), but it is more likely to be a mistake.
 
 \1f
-File: make.info,  Node: Call Function,  Next: Value Function,  Prev: Foreach Function,  Up: Functions
+File: make.info,  Node: File Function,  Next: Call Function,  Prev: Foreach Function,  Up: Functions
+
+8.6 The `file' Function
+=======================
+
+The `file' function allows the makefile to write to a file.  Two modes
+of writing are supported: overwrite, where the text is written to the
+beginning of the file and any existing content is lost, and append,
+where the text is written to the end of the file, preserving the
+existing content.  In all cases the file is created if it does not
+exist.
+
+   The syntax of the `file' function is:
+
+     $(file OP FILENAME,TEXT)
+
+   The operator OP can be either `>' which indicates overwrite mode, or
+`>>' which indicates append mode.  The FILENAME indicates the file to
+be written to.  There may optionally be whitespace between the operator
+and the file name.
+
+   When the `file' function is expanded all its arguments are expanded
+first, then the file indicated by FILENAME will be opened in the mode
+described by OP.  Finally TEXT will be written to the file.  If TEXT
+does not already end in a newline, a final newline will be written.
+The result of evaluating the `file' function is always the empty string.
+
+   It is a fatal error if the file cannot be opened for writing, or if
+the write operation fails.
+
+   For example, the `file' function can be useful if your build system
+has a limited command line size and your recipe runs a command that can
+accept arguments from a file as well.  Many commands use the convention
+that an argument prefixed with an `@' specifies a file containing more
+arguments.  Then you might write your recipe in this way:
+
+     program: $(OBJECTS)
+             $(file >$@.in,$^)
+             $(CMD) $(CMDFLAGS) @$@.in
+             @rm $@.in
+
+   If the command required each argument to be on a separate line of the
+input file, you might write your recipe like this:
+
+     program: $(OBJECTS)
+             $(file >$@.in,) $(foreach O,$^,$(file >>$@.in,$O))
+             $(CMD) $(CMDFLAGS) @$@.in
+             @rm $@.in
+
+\1f
+File: make.info,  Node: Call Function,  Next: Value Function,  Prev: File Function,  Up: Functions
 
-8.6 The `call' Function
+8.7 The `call' Function
 =======================
 
 The `call' function is unique in that it can be used to create new
@@ -5931,12 +6234,12 @@ that variable.  Therefore you would not normally use a `$' or
 parentheses when writing it.  (You can, however, use a variable
 reference in the name if you want the name not to be a constant.)
 
-   If VARIABLE is the name of a builtin function, the builtin function
+   If VARIABLE is the name of a built-in function, the built-in function
 is always invoked (even if a `make' variable by that name also exists).
 
    The `call' function expands the PARAM arguments before assigning
 them to temporary variables.  This means that VARIABLE values
-containing references to builtin functions that have special expansion
+containing references to built-in functions that have special expansion
 rules, like `foreach' or `if', may not work as you expect.
 
    Some examples may make this clearer.
@@ -5981,7 +6284,7 @@ providing parameters to `call'.
 \1f
 File: make.info,  Node: Value Function,  Next: Eval Function,  Prev: Call Function,  Up: Functions
 
-8.7 The `value' Function
+8.8 The `value' Function
 ========================
 
 The `value' function provides a way for you to use the value of a
@@ -5995,7 +6298,7 @@ the variable directly.
 
      $(value VARIABLE)
 
-   Note that VARIABLE is the _name_ of a variable; not a _reference_ to
+   Note that VARIABLE is the _name_ of a variable, not a _reference_ to
 that variable.  Therefore you would not normally use a `$' or
 parentheses when writing it.  (You can, however, use a variable
 reference in the name if you want the name not to be a constant.)
@@ -6021,7 +6324,7 @@ avoided the expansion.
 \1f
 File: make.info,  Node: Eval Function,  Next: Origin Function,  Prev: Value Function,  Up: Functions
 
-8.8 The `eval' Function
+8.9 The `eval' Function
 =======================
 
 The `eval' function is very special: it allows you to define new
@@ -6081,8 +6384,8 @@ Now your individual makefiles are quite straightforward.
 \1f
 File: make.info,  Node: Origin Function,  Next: Flavor Function,  Prev: Eval Function,  Up: Functions
 
-8.9 The `origin' Function
-=========================
+8.10 The `origin' Function
+==========================
 
 The `origin' function is unlike most other functions in that it does
 not operate on the values of variables; it tells you something _about_
@@ -6092,7 +6395,7 @@ a variable.  Specifically, it tells you where it came from.
 
      $(origin VARIABLE)
 
-   Note that VARIABLE is the _name_ of a variable to inquire about; not
+   Note that VARIABLE is the _name_ of a variable to inquire about, not
 a _reference_ to that variable.  Therefore you would not normally use a
 `$' or parentheses when writing it.  (You can, however, use a variable
 reference in the name if you want the name not to be a constant.)
@@ -6165,21 +6468,21 @@ either `environment' or `environment override'.  *Note Functions for
 String Substitution and Analysis: Text Functions.
 
 \1f
-File: make.info,  Node: Flavor Function,  Next: Shell Function,  Prev: Origin Function,  Up: Functions
+File: make.info,  Node: Flavor Function,  Next: Make Control Functions,  Prev: Origin Function,  Up: Functions
 
-8.10 The `flavor' Function
+8.11 The `flavor' Function
 ==========================
 
-The `flavor' function is unlike most other functions (and like `origin'
-function) in that it does not operate on the values of variables; it
-tells you something _about_ a variable.  Specifically, it tells you the
-flavor of a variable (*note The Two Flavors of Variables: Flavors.).
+The `flavor' function, like the `origin' function, does not operate on
+the values of variables but rather it tells you something _about_ a
+variable.  Specifically, it tells you the flavor of a variable (*note
+The Two Flavors of Variables: Flavors.).
 
    The syntax of the `flavor' function is:
 
      $(flavor VARIABLE)
 
-   Note that VARIABLE is the _name_ of a variable to inquire about; not
+   Note that VARIABLE is the _name_ of a variable to inquire about, not
 a _reference_ to that variable.  Therefore you would not normally use a
 `$' or parentheses when writing it.  (You can, however, use a variable
 reference in the name if you want the name not to be a constant.)
@@ -6198,45 +6501,7 @@ of the variable VARIABLE:
 
 
 \1f
-File: make.info,  Node: Shell Function,  Next: Make Control Functions,  Prev: Flavor Function,  Up: Functions
-
-8.11 The `shell' Function
-=========================
-
-The `shell' function is unlike any other function other than the
-`wildcard' function (*note The Function `wildcard': Wildcard Function.)
-in that it communicates with the world outside of `make'.
-
-   The `shell' function performs the same function that backquotes
-(``') perform in most shells: it does "command expansion".  This means
-that it takes as an argument a shell command and evaluates to the
-output of the command.  The only processing `make' does on the result
-is to convert each newline (or carriage-return / newline pair) to a
-single space.  If there is a trailing (carriage-return and) newline it
-will simply be removed.
-
-   The commands run by calls to the `shell' function are run when the
-function calls are expanded (*note How `make' Reads a Makefile: Reading
-Makefiles.).  Because this function involves spawning a new shell, you
-should carefully consider the performance implications of using the
-`shell' function within recursively expanded variables vs. simply
-expanded variables (*note The Two Flavors of Variables: Flavors.).
-
-   Here are some examples of the use of the `shell' function:
-
-     contents := $(shell cat foo)
-
-sets `contents' to the contents of the file `foo', with a space (rather
-than a newline) separating each line.
-
-     files := $(shell echo *.c)
-
-sets `files' to the expansion of `*.c'.  Unless `make' is using a very
-strange shell, this has the same result as `$(wildcard *.c)' (as long
-as at least one `.c' file exists).
-
-\1f
-File: make.info,  Node: Make Control Functions,  Prev: Shell Function,  Up: Functions
+File: make.info,  Node: Make Control Functions,  Next: Shell Function,  Prev: Flavor Function,  Up: Functions
 
 8.12 Functions That Control Make
 ================================
@@ -6284,6 +6549,62 @@ if some sort of environmental error is detected.
      empty string.
 
 \1f
+File: make.info,  Node: Shell Function,  Next: Guile Function,  Prev: Make Control Functions,  Up: Functions
+
+8.13 The `shell' Function
+=========================
+
+The `shell' function is unlike any other function other than the
+`wildcard' function (*note The Function `wildcard': Wildcard Function.)
+in that it communicates with the world outside of `make'.
+
+   The `shell' function performs the same function that backquotes
+(``') perform in most shells: it does "command expansion".  This means
+that it takes as an argument a shell command and evaluates to the
+output of the command.  The only processing `make' does on the result
+is to convert each newline (or carriage-return / newline pair) to a
+single space.  If there is a trailing (carriage-return and) newline it
+will simply be removed.
+
+   The commands run by calls to the `shell' function are run when the
+function calls are expanded (*note How `make' Reads a Makefile: Reading
+Makefiles.).  Because this function involves spawning a new shell, you
+should carefully consider the performance implications of using the
+`shell' function within recursively expanded variables vs. simply
+expanded variables (*note The Two Flavors of Variables: Flavors.).
+
+   Here are some examples of the use of the `shell' function:
+
+     contents := $(shell cat foo)
+
+sets `contents' to the contents of the file `foo', with a space (rather
+than a newline) separating each line.
+
+     files := $(shell echo *.c)
+
+sets `files' to the expansion of `*.c'.  Unless `make' is using a very
+strange shell, this has the same result as `$(wildcard *.c)' (as long
+as at least one `.c' file exists).
+
+\1f
+File: make.info,  Node: Guile Function,  Prev: Shell Function,  Up: Functions
+
+8.14 The `guile' Function
+=========================
+
+If GNU `make' is built with support for GNU Guile as an embedded
+extension language then the `guile' function will be available.  The
+`guile' function takes one argument which is first expanded by `make'
+in the normal fashion, then passed to the GNU Guile evaluator.  The
+result of the evaluator is converted into a string and used as the
+expansion of the `guile' function in the makefile.  See *note GNU Guile
+Integration: Guile Integration. for details on writing extensions to
+`make' in Guile.
+
+   You can determine whether GNU Guile support is available by checking
+the `.FEATURES' variable for the word GUILE.
+
+\1f
 File: make.info,  Node: Running,  Next: Implicit Rules,  Prev: Functions,  Up: Top
 
 9 How to Run `make'
@@ -6479,22 +6800,25 @@ what you want.  Certain options specify other activities for `make'.
 `--just-print'
 `--dry-run'
 `--recon'
-     "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.).
+     "No-op".  Causes `make' to print the recipes that are needed to
+     make the targets up to date, but not actually execute them.  Note
+     that some recipes are still executed, even with this flag (*note
+     How the `MAKE' Variable Works: MAKE Variable.).  Also any recipes
+     needed to update included makefiles are still executed (*note How
+     Makefiles Are Remade: Remaking Makefiles.).
 
 `-t'
 `--touch'
-     "Touch".  The activity is to mark the targets as up to date without
-     actually changing them.  In other words, `make' pretends to compile
-     the targets but does not really change their contents.
+     "Touch".  Marks targets as up to date without actually changing
+     them.  In other words, `make' pretends to update the targets but
+     does not really change their contents; instead only their modified
+     times are updated.
 
 `-q'
 `--question'
-     "Question".  The activity is to find out silently whether the
-     targets are up to date already; but execute no recipe in either
-     case.  In other words, neither compilation nor output will occur.
+     "Question".  Silently check whether the targets are up to date, but
+     do not execute recipes; the exit code shows whether any updates are
+     needed.
 
 `-W FILE'
 `--what-if=FILE'
@@ -6636,10 +6960,10 @@ the makefile works by changing the variables.
    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.
+variable; to make a simply-expanded variable, write `:=' or `::='
+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
@@ -6682,385 +7006,3 @@ program, perhaps to find several independent problems so that you can
 correct them all before the next attempt to compile.  This is why Emacs'
 `M-x compile' command passes the `-k' flag by default.
 
-\1f
-File: make.info,  Node: Options Summary,  Prev: Testing,  Up: Running
-
-9.7 Summary of Options
-======================
-
-Here is a table of all the options `make' understands:
-
-`-b'
-`-m'
-     These options are ignored for compatibility with other versions of
-     `make'.
-
-`-B'
-`--always-make'
-     Consider all targets out-of-date.  GNU `make' proceeds to consider
-     targets and their prerequisites using the normal algorithms;
-     however, all targets so considered are always remade regardless of
-     the status of their prerequisites.  To avoid infinite recursion, if
-     `MAKE_RESTARTS' (*note Other Special Variables: Special
-     Variables.) is set to a number greater than 0 this option is
-     disabled when considering whether to remake makefiles (*note How
-     Makefiles Are Remade: Remaking Makefiles.).
-
-`-C DIR'
-`--directory=DIR'
-     Change to directory DIR before reading the makefiles.  If multiple
-     `-C' options are specified, each is interpreted relative to the
-     previous one: `-C / -C etc' is equivalent to `-C /etc'.  This is
-     typically used with recursive invocations of `make' (*note
-     Recursive Use of `make': Recursion.).
-
-`-d'
-     Print debugging information in addition to normal processing.  The
-     debugging information says which files are being considered for
-     remaking, which file-times are being compared and with what
-     results, which files actually need to be remade, which implicit
-     rules are considered and which are applied--everything interesting
-     about how `make' decides what to do.  The `-d' option is
-     equivalent to `--debug=a' (see below).
-
-`--debug[=OPTIONS]'
-     Print debugging information in addition to normal processing.
-     Various levels and types of output can be chosen.  With no
-     arguments, print the "basic" level of debugging.  Possible
-     arguments are below; only the first character is considered, and
-     values must be comma- or space-separated.
-
-    `a (all)'
-          All types of debugging output are enabled.  This is
-          equivalent to using `-d'.
-
-    `b (basic)'
-          Basic debugging prints each target that was found to be
-          out-of-date, and whether the build was successful or not.
-
-    `v (verbose)'
-          A level above `basic'; includes messages about which
-          makefiles were parsed, prerequisites that did not need to be
-          rebuilt, etc.  This option also enables `basic' messages.
-
-    `i (implicit)'
-          Prints messages describing the implicit rule searches for
-          each target.  This option also enables `basic' messages.
-
-    `j (jobs)'
-          Prints messages giving details on the invocation of specific
-          subcommands.
-
-    `m (makefile)'
-          By default, the above messages are not enabled while trying
-          to remake the makefiles.  This option enables messages while
-          rebuilding makefiles, too.  Note that the `all' option does
-          enable this option.  This option also enables `basic'
-          messages.
-
-`-e'
-`--environment-overrides'
-     Give variables taken from the environment precedence over
-     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'
-     Read the file named FILE as a makefile.  *Note Writing Makefiles:
-     Makefiles.
-
-`-h'
-`--help'
-     Remind you of the options that `make' understands and then exit.
-
-`-i'
-`--ignore-errors'
-     Ignore all errors in recipes executed to remake files.  *Note
-     Errors in Recipes: Errors.
-
-`-I DIR'
-`--include-dir=DIR'
-     Specifies a directory DIR to search for included makefiles.  *Note
-     Including Other Makefiles: Include.  If several `-I' options are
-     used to specify several directories, the directories are searched
-     in the order specified.
-
-`-j [JOBS]'
-`--jobs[=JOBS]'
-     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 recipes are run.  Note that this option is
-     ignored on MS-DOS.
-
-`-k'
-`--keep-going'
-     Continue as much as possible after an error.  While the target that
-     failed, and those that depend on it, cannot be remade, the other
-     prerequisites of these targets can be processed all the same.
-     *Note Testing the Compilation of a Program: Testing.
-
-`-l [LOAD]'
-`--load-average[=LOAD]'
-`--max-load[=LOAD]'
-     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.
-
-`-L'
-`--check-symlink-times'
-     On systems that support symbolic links, this option causes `make'
-     to consider the timestamps on any symbolic links in addition to the
-     timestamp on the file referenced by those links.  When this option
-     is provided, the most recent timestamp among the file and the
-     symbolic links is taken as the modification time for this target
-     file.
-
-`-n'
-`--just-print'
-`--dry-run'
-`--recon'
-     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'
-`--assume-old=FILE'
-     Do not remake the file FILE even if it is older than its
-     prerequisites, and do not remake anything on account of changes in
-     FILE.  Essentially the file is treated as very old and its rules
-     are ignored.  *Note Avoiding Recompilation of Some Files: Avoiding
-     Compilation.
-
-`-p'
-`--print-data-base'
-     Print the data base (rules and variable values) that results from
-     reading the makefiles; then execute as usual or as otherwise
-     specified.  This also prints the version information given by the
-     `-v' switch (see below).  To print the data base without trying to
-     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
-     recipe and variable definitions, so it can be a useful debugging
-     tool in complex environments.
-
-`-q'
-`--question'
-     "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 Recipes: Instead
-     of Execution.
-
-`-r'
-`--no-builtin-rules'
-     Eliminate use of the built-in implicit rules (*note Using Implicit
-     Rules: Implicit Rules.).  You can still define your own by writing
-     pattern rules (*note Defining and Redefining Pattern Rules:
-     Pattern Rules.).  The `-r' option also clears out the default list
-     of suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
-     Suffix Rules.).  But you can still define your own suffixes with a
-     rule for `.SUFFIXES', and then define your own suffix rules.  Note
-     that only _rules_ are affected by the `-r' option; default
-     variables remain in effect (*note Variables Used by Implicit
-     Rules: Implicit Variables.); see the `-R' option below.
-
-`-R'
-`--no-builtin-variables'
-     Eliminate use of the built-in rule-specific variables (*note
-     Variables Used by Implicit Rules: Implicit Variables.).  You can
-     still define your own, of course.  The `-R' option also
-     automatically enables the `-r' option (see above), since it
-     doesn't make sense to have implicit rules without any definitions
-     for the variables that they use.
-
-`-s'
-`--silent'
-`--quiet'
-     Silent operation; do not print the recipes as they are executed.
-     *Note Recipe Echoing: Echoing.
-
-`-S'
-`--no-keep-going'
-`--stop'
-     Cancel the effect of the `-k' option.  This is never necessary
-     except in a recursive `make' where `-k' might be inherited from
-     the top-level `make' via `MAKEFLAGS' (*note Recursive Use of
-     `make': Recursion.)  or if you set `-k' in `MAKEFLAGS' in your
-     environment.
-
-`-t'
-`--touch'
-     Touch files (mark them up to date without really changing them)
-     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'
-     Print the version of the `make' program plus a copyright, a list
-     of authors, and a notice that there is no warranty; then exit.
-
-`-w'
-`--print-directory'
-     Print a message containing the working directory both before and
-     after executing the makefile.  This may be useful for tracking
-     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.)
-
-`--no-print-directory'
-     Disable printing of the working directory under `-w'.  This option
-     is useful when `-w' is turned on automatically, but you do not
-     want to see the extra messages.  *Note The `--print-directory'
-     Option: -w Option.
-
-`-W FILE'
-`--what-if=FILE'
-`--new-file=FILE'
-`--assume-new=FILE'
-     Pretend that the target FILE has just been modified.  When used
-     with the `-n' flag, this shows you what would happen if you were
-     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 Recipes:
-     Instead of Execution.
-
-`--warn-undefined-variables'
-     Issue a warning message whenever `make' sees a reference to an
-     undefined variable.  This can be helpful when you are trying to
-     debug makefiles which use variables in complex ways.
-
-\1f
-File: make.info,  Node: Implicit Rules,  Next: Archives,  Prev: Running,  Up: Top
-
-10 Using Implicit Rules
-***********************
-
-Certain standard ways of remaking target files are used very often.  For
-example, one customary way to make an object file is from a C source
-file using the C compiler, `cc'.
-
-   "Implicit rules" tell `make' how to use customary techniques so that
-you do not have to specify them in detail when you want to use them.
-For example, there is an implicit rule for C compilation.  File names
-determine which implicit rules are run.  For example, C compilation
-typically takes a `.c' file and makes a `.o' file.  So `make' applies
-the implicit rule for C compilation when it sees this combination of
-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 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".
-
-   "Suffix rules" are a more limited way to define implicit rules.
-Pattern rules are more general and clearer, but suffix rules are
-retained for compatibility.
-
-* Menu:
-
-* Using Implicit::              How to use an existing implicit rule
-                                  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 recipes for rules which
-                                  cannot find any.
-* Suffix Rules::                The old-fashioned style of implicit rule.
-* Implicit Rule Search::        The precise algorithm for applying
-                                  implicit rules.
-
-\1f
-File: make.info,  Node: Using Implicit,  Next: Catalogue of Rules,  Prev: Implicit Rules,  Up: Implicit Rules
-
-10.1 Using Implicit Rules
-=========================
-
-To allow `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 `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:
-
-     foo : foo.o bar.o
-             cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
-
-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 a recipe and one or
-more prerequisites (the source files).  You would want to write a rule
-for `foo.o' with no recipe if you need to specify additional
-prerequisites, such as header files, that the implicit rule cannot
-supply.
-
-   Each implicit rule has a target pattern and prerequisite patterns.
-There may be many implicit rules with the same target pattern.  For
-example, numerous rules make `.o' files: one, from a `.c' file with the
-C compiler; another, from a `.p' file with the Pascal compiler; and so
-on.  The rule that actually applies is the one whose prerequisites
-exist or can be made.  So, if you have a file `foo.c', `make' will run
-the C compiler; otherwise, if you have a file `foo.p', `make' will run
-the Pascal compiler; and so on.
-
-   Of course, when you write the makefile, you know which implicit rule
-you want `make' to use, and you know it will choose that one because you
-know which possible prerequisite files are supposed to exist.  *Note
-Catalogue of Implicit Rules: Catalogue of Rules, for a catalogue of all
-the predefined implicit rules.
-
-   Above, we said an implicit rule applies if the required
-prerequisites "exist or can be made".  A file "can be made" if it is
-mentioned explicitly in the makefile as a target or a prerequisite, or
-if an implicit rule can be recursively found for how to make it.  When
-an implicit prerequisite is the result of another implicit rule, we say
-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 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
-of how the search is done.
-
-   Note that explicit prerequisites do not influence implicit rule
-search.  For example, consider this explicit rule:
-
-     foo.o: foo.p
-
-The prerequisite on `foo.p' does not necessarily mean that `make' will
-remake `foo.o' according to the implicit rule to make an object file, a
-`.o' file, from a Pascal source file, a `.p' file.  For example, if
-`foo.c' also exists, the implicit rule to make an object file from a C
-source file is used instead, because it appears before the Pascal rule
-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 recipe, you can give that target an empty recipe by writing a
-semicolon (*note Defining Empty Recipes: Empty Recipes.).
-
index cd95ff0..af881aa 100644 (file)
@@ -4,16 +4,16 @@ 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.71, last updated 19 July 2010, of `The GNU Make
-Manual', for GNU `make' version 3.82.
+   This is Edition 0.72, last updated 9 October 2013, of `The GNU Make
+Manual', for GNU `make' version 4.0.
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
-     Version 1.2 or any later version published by the Free Software
+     Version 1.3 or any later version published by the Free Software
      Foundation; with no Invariant Sections, with the Front-Cover Texts
      being "A GNU Manual," and with the Back-Cover Texts as in (a)
      below.  A copy of the license is included in the section entitled
@@ -29,6 +29,416 @@ START-INFO-DIR-ENTRY
 END-INFO-DIR-ENTRY
 
 \1f
+File: make.info,  Node: Options Summary,  Prev: Testing,  Up: Running
+
+9.7 Summary of Options
+======================
+
+Here is a table of all the options `make' understands:
+
+`-b'
+`-m'
+     These options are ignored for compatibility with other versions of
+     `make'.
+
+`-B'
+`--always-make'
+     Consider all targets out-of-date.  GNU `make' proceeds to consider
+     targets and their prerequisites using the normal algorithms;
+     however, all targets so considered are always remade regardless of
+     the status of their prerequisites.  To avoid infinite recursion, if
+     `MAKE_RESTARTS' (*note Other Special Variables: Special
+     Variables.) is set to a number greater than 0 this option is
+     disabled when considering whether to remake makefiles (*note How
+     Makefiles Are Remade: Remaking Makefiles.).
+
+`-C DIR'
+`--directory=DIR'
+     Change to directory DIR before reading the makefiles.  If multiple
+     `-C' options are specified, each is interpreted relative to the
+     previous one: `-C / -C etc' is equivalent to `-C /etc'.  This is
+     typically used with recursive invocations of `make' (*note
+     Recursive Use of `make': Recursion.).
+
+`-d'
+     Print debugging information in addition to normal processing.  The
+     debugging information says which files are being considered for
+     remaking, which file-times are being compared and with what
+     results, which files actually need to be remade, which implicit
+     rules are considered and which are applied--everything interesting
+     about how `make' decides what to do.  The `-d' option is
+     equivalent to `--debug=a' (see below).
+
+`--debug[=OPTIONS]'
+     Print debugging information in addition to normal processing.
+     Various levels and types of output can be chosen.  With no
+     arguments, print the "basic" level of debugging.  Possible
+     arguments are below; only the first character is considered, and
+     values must be comma- or space-separated.
+
+    `a (all)'
+          All types of debugging output are enabled.  This is
+          equivalent to using `-d'.
+
+    `b (basic)'
+          Basic debugging prints each target that was found to be
+          out-of-date, and whether the build was successful or not.
+
+    `v (verbose)'
+          A level above `basic'; includes messages about which
+          makefiles were parsed, prerequisites that did not need to be
+          rebuilt, etc.  This option also enables `basic' messages.
+
+    `i (implicit)'
+          Prints messages describing the implicit rule searches for
+          each target.  This option also enables `basic' messages.
+
+    `j (jobs)'
+          Prints messages giving details on the invocation of specific
+          sub-commands.
+
+    `m (makefile)'
+          By default, the above messages are not enabled while trying
+          to remake the makefiles.  This option enables messages while
+          rebuilding makefiles, too.  Note that the `all' option does
+          enable this option.  This option also enables `basic'
+          messages.
+
+    `n (none)'
+          Disable all debugging currently enabled.  If additional
+          debugging flags are encountered after this they will still
+          take effect.
+
+`-e'
+`--environment-overrides'
+     Give variables taken from the environment precedence over
+     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'
+     Read the file named FILE as a makefile.  *Note Writing Makefiles:
+     Makefiles.
+
+`-h'
+`--help'
+     Remind you of the options that `make' understands and then exit.
+
+`-i'
+`--ignore-errors'
+     Ignore all errors in recipes executed to remake files.  *Note
+     Errors in Recipes: Errors.
+
+`-I DIR'
+`--include-dir=DIR'
+     Specifies a directory DIR to search for included makefiles.  *Note
+     Including Other Makefiles: Include.  If several `-I' options are
+     used to specify several directories, the directories are searched
+     in the order specified.
+
+`-j [JOBS]'
+`--jobs[=JOBS]'
+     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 recipes are run.  Note that this option is
+     ignored on MS-DOS.
+
+`-k'
+`--keep-going'
+     Continue as much as possible after an error.  While the target that
+     failed, and those that depend on it, cannot be remade, the other
+     prerequisites of these targets can be processed all the same.
+     *Note Testing the Compilation of a Program: Testing.
+
+`-l [LOAD]'
+`--load-average[=LOAD]'
+`--max-load[=LOAD]'
+     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.
+
+`-L'
+`--check-symlink-times'
+     On systems that support symbolic links, this option causes `make'
+     to consider the timestamps on any symbolic links in addition to the
+     timestamp on the file referenced by those links.  When this option
+     is provided, the most recent timestamp among the file and the
+     symbolic links is taken as the modification time for this target
+     file.
+
+`-n'
+`--just-print'
+`--dry-run'
+`--recon'
+     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'
+`--assume-old=FILE'
+     Do not remake the file FILE even if it is older than its
+     prerequisites, and do not remake anything on account of changes in
+     FILE.  Essentially the file is treated as very old and its rules
+     are ignored.  *Note Avoiding Recompilation of Some Files: Avoiding
+     Compilation.
+
+`-O[TYPE]'
+`--output-sync[=TYPE]'
+     Ensure that the complete output from each recipe is printed in one
+     uninterrupted sequence.  This option is only useful when using the
+     `--jobs' option to run multiple recipes simultaneously (*note
+     Parallel Execution: Parallel.)  Without this option output will be
+     displayed as it is generated by the recipes.
+
+     With no type or the type `target', output from the entire recipe
+     of each target is grouped together.  With the type `line', output
+     from each line in the recipe is grouped together.  With the type
+     `recurse', the output from an entire recursive make is grouped
+     together.  With the type `none', no output synchronization is
+     performed.  *Note Output During Parallel Execution: Parallel
+     Output.
+
+`-p'
+`--print-data-base'
+     Print the data base (rules and variable values) that results from
+     reading the makefiles; then execute as usual or as otherwise
+     specified.  This also prints the version information given by the
+     `-v' switch (see below).  To print the data base without trying to
+     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 file name and line number information for
+     recipe and variable definitions, so it can be a useful debugging
+     tool in complex environments.
+
+`-q'
+`--question'
+     "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 Recipes: Instead
+     of Execution.
+
+`-r'
+`--no-builtin-rules'
+     Eliminate use of the built-in implicit rules (*note Using Implicit
+     Rules: Implicit Rules.).  You can still define your own by writing
+     pattern rules (*note Defining and Redefining Pattern Rules:
+     Pattern Rules.).  The `-r' option also clears out the default list
+     of suffixes for suffix rules (*note Old-Fashioned Suffix Rules:
+     Suffix Rules.).  But you can still define your own suffixes with a
+     rule for `.SUFFIXES', and then define your own suffix rules.  Note
+     that only _rules_ are affected by the `-r' option; default
+     variables remain in effect (*note Variables Used by Implicit
+     Rules: Implicit Variables.); see the `-R' option below.
+
+`-R'
+`--no-builtin-variables'
+     Eliminate use of the built-in rule-specific variables (*note
+     Variables Used by Implicit Rules: Implicit Variables.).  You can
+     still define your own, of course.  The `-R' option also
+     automatically enables the `-r' option (see above), since it
+     doesn't make sense to have implicit rules without any definitions
+     for the variables that they use.
+
+`-s'
+`--silent'
+`--quiet'
+     Silent operation; do not print the recipes as they are executed.
+     *Note Recipe Echoing: Echoing.
+
+`-S'
+`--no-keep-going'
+`--stop'
+     Cancel the effect of the `-k' option.  This is never necessary
+     except in a recursive `make' where `-k' might be inherited from
+     the top-level `make' via `MAKEFLAGS' (*note Recursive Use of
+     `make': Recursion.)  or if you set `-k' in `MAKEFLAGS' in your
+     environment.
+
+`-t'
+`--touch'
+     Touch files (mark them up to date without really changing them)
+     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.
+
+`--trace'
+     Show tracing information for `make' execution.  Prints the entire
+     recipe to be executed, even for recipes that are normally silent
+     (due to `.SILENT' or `@').  Also prints the makefile name and line
+     number where the recipe was defined, and information on why the
+     target is being rebuilt.
+
+`-v'
+`--version'
+     Print the version of the `make' program plus a copyright, a list
+     of authors, and a notice that there is no warranty; then exit.
+
+`-w'
+`--print-directory'
+     Print a message containing the working directory both before and
+     after executing the makefile.  This may be useful for tracking
+     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.)
+
+`--no-print-directory'
+     Disable printing of the working directory under `-w'.  This option
+     is useful when `-w' is turned on automatically, but you do not
+     want to see the extra messages.  *Note The `--print-directory'
+     Option: -w Option.
+
+`-W FILE'
+`--what-if=FILE'
+`--new-file=FILE'
+`--assume-new=FILE'
+     Pretend that the target FILE has just been modified.  When used
+     with the `-n' flag, this shows you what would happen if you were
+     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 Recipes:
+     Instead of Execution.
+
+`--warn-undefined-variables'
+     Issue a warning message whenever `make' sees a reference to an
+     undefined variable.  This can be helpful when you are trying to
+     debug makefiles which use variables in complex ways.
+
+\1f
+File: make.info,  Node: Implicit Rules,  Next: Archives,  Prev: Running,  Up: Top
+
+10 Using Implicit Rules
+***********************
+
+Certain standard ways of remaking target files are used very often.  For
+example, one customary way to make an object file is from a C source
+file using the C compiler, `cc'.
+
+   "Implicit rules" tell `make' how to use customary techniques so that
+you do not have to specify them in detail when you want to use them.
+For example, there is an implicit rule for C compilation.  File names
+determine which implicit rules are run.  For example, C compilation
+typically takes a `.c' file and makes a `.o' file.  So `make' applies
+the implicit rule for C compilation when it sees this combination of
+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 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".
+
+   "Suffix rules" are a more limited way to define implicit rules.
+Pattern rules are more general and clearer, but suffix rules are
+retained for compatibility.
+
+* Menu:
+
+* Using Implicit::              How to use an existing implicit rule
+                                  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 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
+                                  implicit rules.
+
+\1f
+File: make.info,  Node: Using Implicit,  Next: Catalogue of Rules,  Prev: Implicit Rules,  Up: Implicit Rules
+
+10.1 Using Implicit Rules
+=========================
+
+To allow `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 `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:
+
+     foo : foo.o bar.o
+             cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS)
+
+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 a recipe and one or
+more prerequisites (the source files).  You would want to write a rule
+for `foo.o' with no recipe if you need to specify additional
+prerequisites, such as header files, that the implicit rule cannot
+supply.
+
+   Each implicit rule has a target pattern and prerequisite patterns.
+There may be many implicit rules with the same target pattern.  For
+example, numerous rules make `.o' files: one, from a `.c' file with the
+C compiler; another, from a `.p' file with the Pascal compiler; and so
+on.  The rule that actually applies is the one whose prerequisites
+exist or can be made.  So, if you have a file `foo.c', `make' will run
+the C compiler; otherwise, if you have a file `foo.p', `make' will run
+the Pascal compiler; and so on.
+
+   Of course, when you write the makefile, you know which implicit rule
+you want `make' to use, and you know it will choose that one because you
+know which possible prerequisite files are supposed to exist.  *Note
+Catalogue of Implicit Rules: Catalogue of Rules, for a catalogue of all
+the predefined implicit rules.
+
+   Above, we said an implicit rule applies if the required
+prerequisites "exist or can be made".  A file "can be made" if it is
+mentioned explicitly in the makefile as a target or a prerequisite, or
+if an implicit rule can be recursively found for how to make it.  When
+an implicit prerequisite is the result of another implicit rule, we say
+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 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
+of how the search is done.
+
+   Note that explicit prerequisites do not influence implicit rule
+search.  For example, consider this explicit rule:
+
+     foo.o: foo.p
+
+The prerequisite on `foo.p' does not necessarily mean that `make' will
+remake `foo.o' according to the implicit rule to make an object file, a
+`.o' file, from a Pascal source file, a `.p' file.  For example, if
+`foo.c' also exists, the implicit rule to make an object file from a C
+source file is used instead, because it appears before the Pascal rule
+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 recipe, you can give that target an empty recipe by writing a
+semicolon (*note Defining Empty Recipes: Empty Recipes.).
+
+\1f
 File: make.info,  Node: Catalogue of Rules,  Next: Implicit Variables,  Prev: Using Implicit,  Up: Implicit Rules
 
 10.2 Catalogue of Implicit Rules
@@ -278,7 +688,7 @@ 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.
+programs in built-in rules:
 
 `AR'
      Archive-maintaining program; default `ar'.  
@@ -381,7 +791,14 @@ empty string, unless otherwise noted.
 
 `LDFLAGS'
      Extra flags to give to compilers when they are supposed to invoke
-     the linker, `ld'.
+     the linker, `ld', such as `-L'.  Libraries (`-lfoo') should be
+     added to the `LDLIBS' variable instead.
+
+`LDLIBS'
+     Library flags or names given to compilers when they are supposed to
+     invoke the linker, `ld'.  `LOADLIBES' is a deprecated (but still
+     supported) alternative to `LDLIBS'.  Non-library linker flags,
+     such as `-L', should go in the `LDFLAGS' variable.
 
 `LFLAGS'
      Extra flags to give to Lex.
@@ -503,7 +920,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
-                                  recipes 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
@@ -588,7 +1005,7 @@ the target file and the source file in each case where the rule applies
              $(CO) $(COFLAGS) $<
 
 defines a rule that can make any file `X' whatsoever from a
-corresponding file `X,v' in the subdirectory `RCS'.  Since the target
+corresponding file `X,v' in the sub-directory `RCS'.  Since the target
 is `%', this rule will apply to any file whatever, provided the
 appropriate prerequisite file exists.  The double colon makes the rule
 "terminal", which means that its prerequisite may not be an intermediate
@@ -888,26 +1305,27 @@ remade from any other files; therefore, `make' can save time by not
 looking for ways to remake them.
 
    If you do not mark the match-anything rule as terminal, then it is
-nonterminal.  A nonterminal match-anything rule cannot apply to a file
-name that indicates a specific type of data.  A file name indicates a
-specific type of data if some non-match-anything implicit rule target
-matches it.
+non-terminal.  A non-terminal match-anything rule cannot apply to a
+file name that indicates a specific type of data.  A file name
+indicates a specific type of data if some non-match-anything implicit
+rule target matches it.
 
    For example, the file name `foo.c' matches the target for the pattern
 rule `%.c : %.y' (the rule to run Yacc).  Regardless of whether this
 rule is actually applicable (which happens only if there is a file
 `foo.y'), the fact that its target matches is enough to prevent
-consideration of any nonterminal match-anything rules for the file
+consideration of any non-terminal match-anything rules for the file
 `foo.c'.  Thus, `make' will not even consider trying to make `foo.c' as
 an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
 
-   The motivation for this constraint is that nonterminal match-anything
-rules are used for making files containing specific types of data (such
-as executable files) and a file name with a recognized suffix indicates
-some other specific type of data (such as a C source file).
+   The motivation for this constraint is that non-terminal
+match-anything rules are used for making files containing specific
+types of data (such as executable files) and a file name with a
+recognized suffix indicates some other specific type of data (such as a
+C source file).
 
    Special built-in dummy pattern rules are provided solely to recognize
-certain file names so that nonterminal match-anything rules will not be
+certain file names so that non-terminal match-anything rules will not be
 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
@@ -1102,7 +1520,7 @@ rule.
      against T; otherwise, against N.
 
   3. If any rule in that list is _not_ a match-anything rule, then
-     remove all nonterminal match-anything rules from the list.
+     remove all non-terminal match-anything rules from the list.
 
   4. Remove from the list all rules with no recipe.
 
@@ -1155,12 +1573,12 @@ variables are set corresponding to the target and prerequisites.  *Note
 Automatic Variables::.
 
 \1f
-File: make.info,  Node: Archives,  Next: Features,  Prev: Implicit Rules,  Up: Top
+File: make.info,  Node: Archives,  Next: Extending make,  Prev: Implicit Rules,  Up: Top
 
 11 Using `make' to Update Archive Files
 ***************************************
 
-"Archive files" are files containing named subfiles called "members";
+"Archive files" are files containing named sub-files called "members";
 they are maintained with the program `ar' and their main use is as
 subroutine libraries for linking.
 
@@ -1351,9 +1769,586 @@ the normal way (*note Suffix Rules::).  Thus a double-suffix rule
 `.X.a' produces two pattern rules: `(%.o): %.X' and `%.a: %.X'.
 
 \1f
-File: make.info,  Node: Features,  Next: Missing,  Prev: Archives,  Up: Top
+File: make.info,  Node: Extending make,  Next: Features,  Prev: Archives,  Up: Top
+
+12 Extending GNU `make'
+***********************
+
+GNU `make' provides many advanced capabilities, including many useful
+functions.  However, it does not contain a complete programming
+language and so it has limitations.  Sometimes these limitations can be
+overcome through use of the `shell' function to invoke a separate
+program, although this can be inefficient.
+
+   In cases where the built-in capabilities of GNU `make' are
+insufficient to your requirements there are two options for extending
+`make'.  On systems where it's provided, you can utilize GNU Guile as
+an embedded scripting language (*note GNU Guile Integration: Guile
+Integration.).  On systems which support dynamically loadable objects,
+you can write your own extension in any language (which can be compiled
+into such an object) and load it to provide extended capabilities
+(*note The `load' Directive: load Directive.).
+
+* Menu:
+
+* Guile Integration::           Using Guile as an embedded scripting language.
+* Loading Objects::             Loading dynamic objects as extensions.
+
+\1f
+File: make.info,  Node: Guile Integration,  Next: Loading Objects,  Prev: Extending make,  Up: Extending make
+
+12.1 GNU Guile Integration
+==========================
+
+GNU `make' may be built with support for GNU Guile as an embedded
+extension language.  Guile implements the Scheme language.  A review of
+GNU Guile and the Scheme language and its features is beyond the scope
+of this manual: see the documentation for GNU Guile and Scheme.
+
+   You can determine if `make' contains support for Guile by examining
+the `.FEATURES' variable; it will contain the word GUILE if Guile
+support is available.
+
+   The Guile integration provides one new `make' function: `guile'.
+The `guile' function takes one argument which is first expanded by
+`make' in the normal fashion, then passed to the GNU Guile evaluator.
+The result of the evaluator is converted into a string and used as the
+expansion of the `guile' function in the makefile.
+
+   In addition, GNU `make' exposes Guile procedures for use in Guile
+scripts.
+
+* Menu:
+
+* Guile Types::                 Converting Guile types to `make' strings.
+* Guile Interface::             Invoking `make' functions from Guile.
+* Guile Example::               Example using Guile in `make'.
+
+\1f
+File: make.info,  Node: Guile Types,  Next: Guile Interface,  Prev: Guile Integration,  Up: Guile Integration
+
+12.1.1 Conversion of Guile Types
+--------------------------------
+
+There is only one "data type" in `make': a string.  GNU Guile, on the
+other hand, provides a rich variety of different data types.  An
+important aspect of the interface between `make' and GNU Guile is the
+conversion of Guile data types into `make' strings.
+
+   This conversion is relevant in two places: when a makefile invokes
+the `guile' function to evaluate a Guile expression, the result of that
+evaluation must be converted into a make string so it can be further
+evaluated by `make'.  And secondly, when a Guile script invokes one of
+the procedures exported by `make' the argument provided to the
+procedure must be converted into a string.
+
+   The conversion of Guile types into `make' strings is as below:
+
+`#f'
+     False is converted into the empty string: in `make' conditionals
+     the empty string is considered false.
+
+`#t'
+     True is converted to the string `#t': in `make' conditionals any
+     non-empty string is considered true.
+
+`symbol'
+
+`number'
+     A symbol or number is converted into the string representation of
+     that symbol or number.
+
+`character'
+     A printable character is converted to the same character.
+
+`string'
+     A string containing only printable characters is converted to the
+     same string.
+
+`list'
+     A list is converted recursively according to the above rules.  This
+     implies that any structured list will be flattened (that is, a
+     result of `'(a b (c d) e)' will be converted to the `make' string
+     `a b c d e').
+
+`other'
+     Any other Guile type results in an error.  In future versions of
+     `make', other Guile types may be converted.
+
+
+   The translation of `#f' (to the empty string) and `#t' (to the
+non-empty string `#t') is designed to allow you to use Guile boolean
+results directly as `make' boolean conditions.  For example:
+
+     $(if $(guile (access? "myfile" R_OK)),$(info myfile exists))
+
+   As a consequence of these conversion rules you must consider the
+result of your Guile script, as that result will be converted into a
+string and parsed by `make'.  If there is no natural result for the
+script (that is, the script exists solely for its side-effects), you
+should add `#f' as the final expression in order to avoid syntax errors
+in your makefile.
+
+\1f
+File: make.info,  Node: Guile Interface,  Next: Guile Example,  Prev: Guile Types,  Up: Guile Integration
+
+12.1.2 Interfaces from Guile to `make'
+--------------------------------------
+
+In addition to the `guile' function available in makefiles, `make'
+exposes some procedures for use in your Guile scripts.  At startup
+`make' creates a new Guile module, `gnu make', and exports these
+procedures as public interfaces from that module:
+
+`gmk-expand'
+     This procedure takes a single argument which is converted into a
+     string.  The string is expanded by `make' using normal `make'
+     expansion rules.  The result of the expansion is converted into a
+     Guile string and provided as the result of the procedure.
+
+`gmk-eval'
+     This procedure takes a single argument which is converted into a
+     string.  The string is evaluated by `make' as if it were a
+     makefile.  This is the same capability available via the `eval'
+     function (*note Eval Function::).  The result of the `gmk-eval'
+     procedure is always the empty string.
+
+     Note that `gmk-eval' is not quite the same as using `gmk-expand'
+     with the `eval' function: in the latter case the evaluated string
+     will be expanded _twice_; first by `gmk-expand', then again by the
+     `eval' function.
+
+
+\1f
+File: make.info,  Node: Guile Example,  Prev: Guile Interface,  Up: Guile Integration
+
+12.1.3 Example Using Guile in `make'
+------------------------------------
+
+Here is a very simple example using GNU Guile to manage writing to a
+file.  These Guile procedures simply open a file, allow writing to the
+file (one string per line), and close the file.  Note that because we
+cannot store complex values such as Guile ports in `make' variables,
+we'll keep the port as a global variable in the Guile interpreter.
+
+   You can create Guile functions easily using `define'/`endef' to
+create a Guile script, then use the `guile' function to internalize it:
+
+     define GUILEIO
+     ;; A simple Guile IO library for GNU make
+
+     (define MKPORT #f)
+
+     (define (mkopen name mode)
+       (set! MKPORT (open-file name mode))
+       #f)
+
+     (define (mkwrite s)
+       (display s MKPORT)
+       (newline MKPORT)
+       #f)
+
+     (define (mkclose)
+       (close-port MKPORT)
+       #f)
+
+     #f
+     endef
+
+     # Internalize the Guile IO functions
+     $(guile $(GUILEIO))
+
+   If you have a significant amount of Guile support code, you might
+consider keeping it in a different file (e.g., `guileio.scm') and then
+loading it in your makefile using the `guile' function:
+
+     $(guile (load "guileio.scm"))
+
+   An advantage to this method is that when editing `guileio.scm', your
+editor will understand that this file contains Scheme syntax rather
+than makefile syntax.
+
+   Now you can use these Guile functions to create files.  Suppose you
+need to operate on a very large list, which cannot fit on the command
+line, but the utility you're using accepts the list as input as well:
+
+     prog: $(PREREQS)
+             @$(guile (mkopen "tmp.out" "w")) \
+              $(foreach X,$^,$(guile (mkwrite "$(X)"))) \
+              $(guile (mkclose))
+             $(LINK) < tmp.out
+
+   A more comprehensive suite of file manipulation procedures is
+possible of course.  You could, for example, maintain multiple output
+files at the same time by choosing a symbol for each one and using it
+as the key to a hash table, where the value is a port, then returning
+the symbol to be stored in a `make' variable.
+
+\1f
+File: make.info,  Node: Loading Objects,  Prev: Guile Integration,  Up: Extending make
+
+12.2 Loading Dynamic Objects
+============================
+
+     Warning: The `load' directive and extension capability is
+     considered a "technology preview" in this release of GNU make.  We
+     encourage you to experiment with this feature and we appreciate
+     any feedback on it.  However we cannot guarantee to maintain
+     backward-compatibility in the next release.  Consider using GNU
+     Guile instead for extending GNU make (*note The `guile' Function:
+     Guile Function.).
+
+Many operating systems provide a facility for dynamically loading
+compiled objects.  If your system provides this facility, GNU `make'
+can make use of it to load dynamic objects at runtime, providing new
+capabilities which may then be invoked by your makefile.
+
+   The `load' directive is used to load a dynamic object.  Once the
+object is loaded, a "setup" function will be invoked to allow the
+object to initialize itself and register new facilities with GNU
+`make'.  A dynamic object might include new `make' functions, for
+example, and the "setup" function would register them with GNU `make''s
+function handling system.
+
+* Menu:
+
+* load Directive::              Loading dynamic objects as extensions.
+* Remaking Loaded Objects::     How loaded objects get remade.
+* Loaded Object API::           Programmatic interface for loaded objects.
+* Loaded Object Example::       Example of a loaded object
+
+\1f
+File: make.info,  Node: load Directive,  Next: Remaking Loaded Objects,  Prev: Loading Objects,  Up: Loading Objects
 
-12 Features of GNU `make'
+12.2.1 The `load' Directive
+---------------------------
+
+Objects are loaded into GNU `make' by placing the `load' directive into
+your makefile.  The syntax of the `load' directive is as follows:
+
+     load OBJECT-FILE ...
+
+   or:
+
+     load OBJECT-FILE(SYMBOL-NAME) ...
+
+   The file OBJECT-FILE is dynamically loaded by GNU `make'.  If
+OBJECT-FILE does not include a directory path then it is first looked
+for in the current directory.  If it is not found there, or a directory
+path is included, then system-specific paths will be searched.  If the
+load fails for any reason, `make' will print a message and exit.
+
+   If the load succeeds `make' will invoke an initializing function.
+
+   If SYMBOL-NAME is provided, it will be used as the name of the
+initializing function.
+
+   If no SYMBOL-NAME is provided, the initializing function name is
+created by taking the base file name of OBJECT-FILE, up to the first
+character which is not a valid symbol name character (alphanumerics and
+underscores are valid symbol name characters).  To this prefix will be
+appended the suffix `_gmk_setup'.
+
+   More than one object file may be loaded with a single `load'
+directive, and both forms of `load' arguments may be used in the same
+directive.
+
+   The initializing function will be provided the file name and line
+number of the invocation of the `load' operation.  It should return a
+value of type `int', which must be `0' on failure and non-`0' on
+success.  If the return value is `-1', then GNU make will _not_ attempt
+to rebuild the object file (*note How Loaded Objects Are Remade:
+Remaking Loaded Objects.).
+
+   For example:
+
+     load ../mk_funcs.so
+
+   will load the dynamic object `../mk_funcs.so'.  After the object is
+loaded, `make' will invoke the function (assumed to be defined by the
+shared object) `mk_funcs_gmk_setup'.
+
+   On the other hand:
+
+     load ../mk_funcs.so(init_mk_func)
+
+   will load the dynamic object `../mk_funcs.so'.  After the object is
+loaded, `make' will invoke the function `init_mk_func'.
+
+   Regardless of how many times an object file appears in a `load'
+directive, it will only be loaded (and its setup function will only be
+invoked) once.
+
+   After an object has been successfully loaded, its file name is
+appended to the `.LOADED' variable.
+
+   If you would prefer that failure to load a dynamic object not be
+reported as an error, you can use the `-load' directive instead of
+`load'.  GNU `make' will not fail and no message will be generated if
+an object fails to load.  The failed object is not added to the
+`.LOADED' variable, which can then be consulted to determine if the
+load was successful.
+
+\1f
+File: make.info,  Node: Remaking Loaded Objects,  Next: Loaded Object API,  Prev: load Directive,  Up: Loading Objects
+
+12.2.2 How Loaded Objects Are Remade
+------------------------------------
+
+Loaded objects undergo the same re-make procedure as makefiles (*note
+How Makefiles Are Remade: Remaking Makefiles.).  If any loaded object
+is recreated, then `make' will start from scratch and re-read all the
+makefiles, and reload the object files again.  It is not necessary for
+the loaded object to do anything special to support this.
+
+   It's up to the makefile author to provide the rules needed for
+rebuilding the loaded object.
+
+\1f
+File: make.info,  Node: Loaded Object API,  Next: Loaded Object Example,  Prev: Remaking Loaded Objects,  Up: Loading Objects
+
+12.2.3 Loaded Object Interface
+------------------------------
+
+     Warning: For this feature to be useful your extensions will need
+     to invoke various functions internal to GNU `make'.  The
+     programming interfaces provided in this release should not be
+     considered stable: functions may be added, removed, or change
+     calling signatures or implementations in future versions of GNU
+     `make'.
+
+To be useful, loaded objects must be able to interact with GNU `make'.
+This interaction includes both interfaces the loaded object provides to
+makefiles and also interfaces `make' provides to the loaded object to
+manipulate `make''s operation.
+
+   The interface between loaded objects and `make' is defined by the
+`gnumake.h' C header file.  All loaded objects written in C should
+include this header file.  Any loaded object not written in C will need
+to implement the interface defined in this header file.
+
+   Typically, a loaded object will register one or more new GNU `make'
+functions using the `gmk_add_function' routine from within its setup
+function.  The implementations of these `make' functions may make use
+of the `gmk_expand' and `gmk_eval' routines to perform their tasks,
+then optionally return a string as the result of the function expansion.
+
+Loaded Object Licensing
+.......................
+
+Every dynamic extension should define the global symbol
+`plugin_is_GPL_compatible' to assert that it has been licensed under a
+GPL-compatible license.  If this symbol does not exist, `make' emits a
+fatal error and exits when it tries to load your extension.
+
+   The declared type of the symbol should be `int'. It does not need to
+be in any allocated section, though.  The code merely asserts that the
+symbol exists in the global scope. Something like this is enough:
+
+     int plugin_is_GPL_compatible;
+
+Data Structures
+...............
+
+`gmk_floc'
+     This structure represents a filename/location pair.  It is provided
+     when defining items, so GNU `make' can inform the user later where
+     the definition occurred if necessary.
+
+Registering Functions
+.....................
+
+There is currently one way for makefiles to invoke operations provided
+by the loaded object: through the `make' function call interface.  A
+loaded object can register one or more new functions which may then be
+invoked from within the makefile in the same way as any other function.
+
+   Use `gmk_add_function' to create a new `make' function.  Its
+arguments are as follows:
+
+`name'
+     The function name.  This is what the makefile should use to invoke
+     the function.  The name must be between 1 and 255 characters long
+     and it may only contain alphanumeric, period (`.'), dash (`-'), and
+     underscore (`_') characters.  It may not begin with a period.
+
+`func_ptr'
+     A pointer to a function that `make' will invoke when it expands
+     the function in a makefile.  This function must be defined by the
+     loaded object.
+
+`min_args'
+     The minimum number of arguments the function will accept.  Must be
+     between 0 and 255.  GNU `make' will check this and fail before
+     invoking `func_ptr' if the function was invoked with too few
+     arguments.
+
+`max_args'
+     The maximum number of arguments the function will accept.  Must be
+     between 0 and 255.  GNU `make' will check this and fail before
+     invoking `func_ptr' if the function was invoked with too few
+     arguments.  If the value is 0, then any number of arguments is
+     accepted.  If the value is greater than 0, then it must be greater
+     than or equal to `min_args'.
+
+`flags'
+     Flags that specify how this function will operate; the desired
+     flags should be OR'd together.  If the `GMK_FUNC_NOEXPAND' flag is
+     given then the function arguments will not be expanded before the
+     function is called; otherwise they will be expanded first.
+
+Registered Function Interface
+.............................
+
+A function registered with `make' must match the `gmk_func_ptr' type.
+It will be invoked with three parameters: `name' (the name of the
+function), `argc' (the number of arguments to the function), and `argv'
+(an array of pointers to arguments to the function).  The last pointer
+(that is, `argv[argc]') will be null (`0').
+
+   The return value of the function is the result of expanding the
+function.  If the function expands to nothing the return value may be
+null.  Otherwise, it must be a pointer to a string created with
+`gmk_alloc'.  Once the function returns, `make' owns this string and
+will free it when appropriate; it cannot be accessed by the loaded
+object.
+
+GNU `make' Facilities
+.....................
+
+There are some facilities exported by GNU `make' for use by loaded
+objects.  Typically these would be run from within the setup function
+and/or the functions registered via `gmk_add_function', to retrieve or
+modify the data `make' works with.
+
+`gmk_expand'
+     This function takes a string and expands it using `make' expansion
+     rules.  The result of the expansion is returned in a
+     nil-terminated string buffer.  The caller is responsible for
+     calling `gmk_free' with a pointer to the returned buffer when done.
+
+`gmk_eval'
+     This function takes a buffer and evaluates it as a segment of
+     makefile syntax.  This function can be used to define new
+     variables, new rules, etc.  It is equivalent to using the `eval'
+     `make' function.
+
+   Note that there is a difference between `gmk_eval' and calling
+`gmk_expand' with a string using the `eval' function: in the latter
+case the string will be expanded _twice_; once by `gmk_expand' and then
+again by the `eval' function.  Using `gmk_eval' the buffer is only
+expanded once, at most (as it's read by the `make' parser).
+
+Memory Management
+.................
+
+Some systems allow for different memory management schemes.  Thus you
+should never pass memory that you've allocated directly to any `make'
+function, nor should you attempt to directly free any memory returned
+to you by any `make' function.  Instead, use the `gmk_alloc' and
+`gmk_free' functions.
+
+   In particular, the string returned to `make' by a function
+registered using `gmk_add_function' _must_ be allocated using
+`gmk_alloc', and the string returned from the `make' `gmk_expand'
+function _must_ be freed (when no longer needed) using `gmk_free'.
+
+`gmk_alloc'
+     Return a pointer to a newly-allocated buffer.  This function will
+     always return a valid pointer; if not enough memory is available
+     `make' will exit.
+
+`gmk_free'
+     Free a buffer returned to you by `make'.  Once the `gmk_free'
+     function returns the string will no longer be valid.
+
+\1f
+File: make.info,  Node: Loaded Object Example,  Prev: Loaded Object API,  Up: Loading Objects
+
+12.2.4 Example Loaded Object
+----------------------------
+
+Let's suppose we wanted to write a new GNU `make' function that would
+create a temporary file and return its name.  We would like our
+function to take a prefix as an argument.  First we can write the
+function in a file `mk_temp.c':
+
+     #include <stdlib.h>
+     #include <stdlib.h>
+     #include <stdio.h>
+     #include <string.h>
+     #include <unistd.h>
+     #include <errno.h>
+
+     #include <gnumake.h>
+
+     int plugin_is_GPL_compatible;
+
+     char *
+     gen_tmpfile(const char *nm, int argc, char **argv)
+     {
+       int fd;
+
+       /* Compute the size of the filename and allocate space for it.  */
+       int len = strlen (argv[0]) + 6 + 1;
+       char *buf = gmk_alloc (len);
+
+       strcpy (buf, argv[0]);
+       strcat (buf, "XXXXXX");
+
+       fd = mkstemp(buf);
+       if (fd >= 0)
+         {
+           /* Don't leak the file descriptor.  */
+           close (fd);
+           return buf;
+         }
+
+       /* Failure.  */
+       fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno));
+       gmk_free (buf);
+       return NULL;
+     }
+
+     int
+     mk_temp_gmk_setup ()
+     {
+       /* Register the function with make name "mk-temp".  */
+       gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1);
+       return 1;
+     }
+
+   Next, we will write a makefile that can build this shared object,
+load it, and use it:
+
+     all:
+             @echo Temporary file: $(mk-temp tmpfile.)
+
+     load mk_temp.so
+
+     mk_temp.so: mk_temp.c
+             $(CC) -shared -fPIC -o $ $<
+
+   On MS-Windows, due to peculiarities of how shared objects are
+produced, the compiler needs to scan the "import library" produced when
+building `make', typically called `libgnumake-VERSION.dll.a', where
+VERSION is the version of the load object API.  So the recipe to
+produce a shared object will look on Windows like this (assuming the
+API version is 1):
+
+     mk_temp.dll: mk_temp.c
+             $(CC) -shared -o $ $< -lgnumake-1
+
+   Now when you run `make' you'll see something like:
+
+     $ make
+     cc -shared -fPIC -o mk_temp.so mk_temp.c
+     Temporary filename: tmpfile.A7JEwd
+
+\1f
+File: make.info,  Node: Features,  Next: Missing,  Prev: Extending make,  Up: Top
+
+13 Features of GNU `make'
 *************************
 
 Here is a summary of the features of GNU `make', for comparison with
@@ -1404,7 +2399,7 @@ listed here, nor the ones in *note Missing::.
      Chained Rules.) allows one pattern rule for installing members in
      an archive (*note Archive Update::) to be sufficient.
 
-   * The arrangement of lines and backslash-newline combinations in
+   * The arrangement of lines and backslash/newline combinations in
      recipes is retained when the recipes are printed, so they appear as
      they do in the makefile, except for the stripping of initial
      whitespace.
@@ -1440,6 +2435,10 @@ which others.
      System V or BSD implementations.  *Note Recipe Execution:
      Execution.
 
+   * A number of different build tools that support parallelism also
+     support collecting output and displaying as a single block.  *Note
+     Output During Parallel Execution: Parallel Output.
+
    * Modified variable references using pattern substitution come from
      SunOS 4.  *Note Basics of Variable References: Reference.  This
      functionality was provided in GNU `make' by the `patsubst'
@@ -1465,6 +2464,15 @@ which others.
      `-include' directive.)  The same feature appears with the name
      `sinclude' in SGI `make' and perhaps others.
 
+   * The `!=' shell assignment operator exists in many BSD of `make'
+     and is purposefully implemented here to behave identically to
+     those implementations.
+
+   * Various build management tools are implemented using scripting
+     languages such as Perl or Python and thus provide a natural
+     embedded scripting language, similar to GNU `make''s integration
+     of GNU Guile.
+
    The remaining features are inventions new in GNU `make':
 
    * Use the `-v' or `--version' option to print version and copyright
@@ -1546,13 +2554,13 @@ which others.
    * Various new built-in implicit rules.  *Note Catalogue of Implicit
      Rules: Catalogue of Rules.
 
-   * The built-in variable `MAKE_VERSION' gives the version number of
-     `make'.  
+   * Load dynamic objects which can modify the behavior of `make'.
+     *Note Loading Dynamic Objects: Loading Objects.
 
 \1f
 File: make.info,  Node: Missing,  Next: Makefile Conventions,  Prev: Features,  Up: Top
 
-13 Incompatibilities and Missing Features
+14 Incompatibilities and Missing Features
 *****************************************
 
 The `make' programs in various other systems support a few features
@@ -1565,7 +2573,7 @@ these features.
      being an object file which defines the linker symbol ENTRY.
 
      This feature was not put into GNU `make' because of the
-     nonmodularity of putting knowledge into `make' of the internal
+     non-modularity of putting knowledge into `make' of the internal
      format of archive file symbol tables.  *Note Updating Archive
      Symbol Directories: Archive Symbols.
 
@@ -1637,7 +2645,7 @@ these features.
 \1f
 File: make.info,  Node: Makefile Conventions,  Next: Quick Reference,  Prev: Missing,  Up: Top
 
-14 Makefile Conventions
+15 Makefile Conventions
 ***********************
 
 This node describes conventions for writing the Makefiles for GNU
@@ -1659,7 +2667,7 @@ POSIX and *note Portable Make Programming: (autoconf)Portable Make.
 \1f
 File: make.info,  Node: Makefile Basics,  Next: Utilities in Makefiles,  Up: Makefile Conventions
 
-14.1 General Conventions for Makefiles
+15.1 General Conventions for Makefiles
 ======================================
 
 Every Makefile should contain this line:
@@ -1739,7 +2747,7 @@ their subtargets) work correctly with a parallel `make'.
 \1f
 File: make.info,  Node: Utilities in Makefiles,  Next: Command Variables,  Prev: Makefile Basics,  Up: Makefile Conventions
 
-14.2 Utilities in Makefiles
+15.2 Utilities in Makefiles
 ===========================
 
 Write the Makefile commands (and any shell scripts, such as
@@ -1799,7 +2807,7 @@ exist.
 \1f
 File: make.info,  Node: Command Variables,  Next: DESTDIR,  Prev: Utilities in Makefiles,  Up: Makefile Conventions
 
-14.3 Variables for Specifying Commands
+15.3 Variables for Specifying Commands
 ======================================
 
 Makefiles should provide variables for overriding certain commands,
@@ -1873,7 +2881,7 @@ command, with the final argument being a directory, as in:
 \1f
 File: make.info,  Node: DESTDIR,  Next: Directory Variables,  Prev: Command Variables,  Up: Makefile Conventions
 
-14.4 `DESTDIR': Support for Staged Installs
+15.4 `DESTDIR': Support for Staged Installs
 ===========================================
 
 `DESTDIR' is a variable prepended to each installed target file, like
@@ -1922,7 +2930,7 @@ though it is not an absolute requirement.
 \1f
 File: make.info,  Node: Directory Variables,  Next: Standard Targets,  Prev: DESTDIR,  Up: Makefile Conventions
 
-14.5 Variables for Installation Directories
+15.5 Variables for Installation Directories
 ===========================================
 
 Installation directories should always be named by variables, so it is
@@ -2073,6 +3081,19 @@ to put these various kinds of files in:
      it as `$(prefix)/var'.  (If you are using Autoconf, write it as
      `@localstatedir@'.)
 
+`runstatedir'
+     The directory for installing data files which the programs modify
+     while they run, that pertain to one specific machine, and which
+     need not persist longer than the execution of the program--which is
+     generally long-lived, for example, until the next reboot.  PID
+     files for system daemons are a typical use.  In addition, this
+     directory should not be cleaned except perhaps at reboot, while
+     the general `/tmp' (`TMPDIR') may be cleaned arbitrarily.  This
+     should normally be `/var/run', but write it as
+     `$(localstatedir)/run'.  Having it as a separate variable allows
+     the use of `/run' if desired, for example.  (If you are using
+     Autoconf 2.70 or later, write it as `@runstatedir@'.)
+
    These variables specify the directory for installing certain specific
 types of files, if your program has them.  Every GNU package should
 have Info files, so every program needs `infodir', but not all need
@@ -2154,7 +3175,7 @@ have Info files, so every program needs `infodir', but not all need
 
      If you are using Autoconf, write the default as `@lispdir@'.  In
      order to make `@lispdir@' work, you need the following lines in
-     your `configure.in' file:
+     your `configure.ac' file:
 
           lispdir='${datarootdir}/emacs/site-lisp'
           AC_SUBST(lispdir)
@@ -2248,7 +3269,7 @@ supports them.
 \1f
 File: make.info,  Node: Standard Targets,  Next: Install Command Categories,  Prev: Directory Variables,  Up: Makefile Conventions
 
-14.6 Standard Targets for Users
+15.6 Standard Targets for Users
 ===============================
 
 All GNU programs should have the following targets in their Makefiles:
@@ -2261,8 +3282,9 @@ All GNU programs should have the following targets in their Makefiles:
      asked for.
 
      By default, the Make rules should compile and link with `-g', so
-     that executable programs have debugging symbols.  Users who don't
-     mind being helpless can strip the executables later if they wish.
+     that executable programs have debugging symbols.  Otherwise, you
+     are essentially helpless in the face of a crash, and it is often
+     far from easy to reproduce with a fresh build.
 
 `install'
      Compile the program and copy the executables, libraries, and so on
@@ -2270,8 +3292,11 @@ All GNU programs should have the following targets in their Makefiles:
      there is a simple test to verify that a program is properly
      installed, this target should run that test.
 
-     Do not strip executables when installing them.  Devil-may-care
-     users can use the `install-strip' target to do that.
+     Do not strip executables when installing them.  This helps eventual
+     debugging that may be needed later, and nowadays disk space is
+     cheap and dynamic loaders typically ensure debug sections are not
+     loaded during normal execution.  Users that need stripped binaries
+     may invoke the `install-strip' target to do that.
 
      If possible, write the `install' target rule so that it does not
      modify anything in the directory where the program was built,
@@ -2475,10 +3500,12 @@ All GNU programs should have the following targets in their Makefiles:
           foo.dvi: foo.texi chap1.texi chap2.texi
                   $(TEXI2DVI) $(srcdir)/foo.texi
 
-     You must define the variable `TEXI2DVI' in the Makefile.  It should
-     run the program `texi2dvi', which is part of the Texinfo
-     distribution.(1)  Alternatively, write just the dependencies, and
-     allow GNU `make' to provide the command.
+     You must define the variable `TEXI2DVI' in the Makefile.  It
+     should run the program `texi2dvi', which is part of the Texinfo
+     distribution.  (`texi2dvi' uses TeX to do the real work of
+     formatting. TeX is not distributed with Texinfo.)  Alternatively,
+     write only the dependencies, and allow GNU `make' to provide the
+     command.
 
      Here's another example, this one for generating HTML from Texinfo:
 
@@ -2553,15 +3580,10 @@ programs in which they are useful.
      This rule should not modify the directories where compilation is
      done.  It should do nothing but create installation directories.
 
-   ---------- Footnotes ----------
-
-   (1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
-not distributed with Texinfo.
-
 \1f
 File: make.info,  Node: Install Command Categories,  Prev: Standard Targets,  Up: Makefile Conventions
 
-14.7 Install Command Categories
+15.7 Install Command Categories
 ===============================
 
 When writing the `install' target, you must classify all the commands
@@ -2678,6 +3700,7 @@ Targets::, *note Catalogue of Implicit Rules: Catalogue of Rules, and
 `define VARIABLE'
 `define VARIABLE ='
 `define VARIABLE :='
+`define VARIABLE ::='
 `define VARIABLE +='
 `define VARIABLE ?='
 `endef'
@@ -2903,6 +3926,11 @@ Targets::, *note Catalogue of Implicit Rules: Catalogue of Rules, and
      to the empty string.
      *Note The `eval' Function: Eval Function.
 
+`$(file OP FILENAME,TEXT)'
+     Expand the arguments, then open the file FILENAME using mode OP
+     and write TEXT to that file.
+     *Note The `file' Function: File Function.
+
 `$(value VAR)'
      Evaluates to the contents of the variable VAR, with no expansion
      performed on it.
@@ -2991,6 +4019,14 @@ Variables::, for full information.
      recipes has special meaning.  *Note How the `MAKE' Variable Works:
      MAKE Variable.
 
+`MAKE_VERSION'
+     The built-in variable `MAKE_VERSION' expands to the version number
+     of the GNU `make' program.  
+
+`MAKE_HOST'
+     The built-in variable `MAKE_HOST' expands to a string representing
+     the host that GNU `make' was built to run on.  
+
 `MAKELEVEL'
      The number of levels of recursion (sub-`make's).
      *Note Variables/Recursion::.
@@ -3005,6 +4041,16 @@ Variables::, for full information.
      shell.  Always allow recursive `make''s to obtain these values
      through the environment from its parent.
 
+`GNUMAKEFLAGS'
+     Other flags parsed by `make'.  You can set this in the environment
+     or a makefile to set `make' command-line flags.  GNU `make' never
+     sets this variable itself.  This variable is only needed if you'd
+     like to set GNU `make'-specific flags in a POSIX-compliant
+     makefile.  This variable will be seen by GNU `make' and ignored by
+     other `make' implementations.  It's not needed if you only use GNU
+     `make'; just use `MAKEFLAGS' directly.  *Note Communicating
+     Options to a Sub-`make': Options/Recursion.
+
 `MAKECMDGOALS'
      The targets given to `make' on the command line.  Setting this
      variable has no effect on the operation of `make'.
@@ -3039,7 +4085,7 @@ 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
-the file and linenumber containing the problem.
+the file and line number containing the problem.
 
    In the table below, these common prefixes are left off.
 
@@ -3051,7 +4097,7 @@ the file and linenumber containing the problem.
      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
+     If no `***' is attached to the message, then the sub-process failed
      but the rule in the makefile was prefixed with the `-' special
      character, so `make' ignored the error.
 
@@ -3094,7 +4140,7 @@ the file and linenumber containing the problem.
      If you want that file to be built, you will need to add a rule to
      your makefile describing how that target can be built.  Other
      possible sources of this problem are typos in the makefile (if
-     that filename is wrong) or a corrupted source tree (if that file
+     that file name is wrong) or a corrupted source tree (if that file
      is not supposed to be built, but rather only a prerequisite).
 
 `No targets specified and no makefile found.  Stop.'
@@ -3127,8 +4173,8 @@ the file and linenumber containing the problem.
 `Recursive variable `XXX' references itself (eventually).  Stop.'
      This means you've defined a normal (recursive) `make' variable XXX
      that, when it's expanded, will refer to itself (XXX).  This is not
-     allowed; either use simply-expanded variables (`:=') or use the
-     append operator (`+=').  *Note How to Use Variables: Using
+     allowed; either use simply-expanded variables (`:=' or `::=') or
+     use the append operator (`+=').  *Note How to Use Variables: Using
      Variables.
 
 `Unterminated variable reference.  Stop.'
@@ -3151,7 +4197,10 @@ the file and linenumber containing the problem.
      the third means the target doesn't contain a pattern character
      (`%'); and the fourth means that all three parts of the static
      pattern rule contain pattern characters (`%')-only the first two
-     parts should.  *Note Syntax of Static Pattern Rules: Static Usage.
+     parts should.  If you see these errors and you aren't trying to
+     create a static pattern rule, check the value of any variables in
+     your target and prerequisite lists to be sure they do not contain
+     colons.  *Note Syntax of Static Pattern Rules: Static Usage.
 
 `warning: -jN forced in submake: disabling jobserver mode.'
      This warning and the next are generated if `make' detects error
@@ -3185,7 +4234,8 @@ Appendix C Complex Makefile Example
 ***********************************
 
 Here is the makefile for the GNU `tar' program.  This is a moderately
-complex makefile.
+complex makefile.  The first line uses a `#!' setting to allow the
+makefile to be executed directly.
 
    Because it is the first target, the default goal is `all'.  An
 interesting feature of this makefile is that `testpad.h' is a source
@@ -3215,6 +4265,7 @@ does `make distclean' and also removes the Info files generated from
    In addition, there are targets `shar' and `dist' that create
 distribution kits.
 
+     #!/usr/bin/make -f
      # Generated automatically from Makefile.in by configure.
      # Un*x Makefile for GNU tar program.
      # Copyright (C) 1991 Free Software Foundation, Inc.
@@ -3905,6 +4956,8 @@ Index of Concepts
 \0\b[index\0\b]
 * Menu:
 
+* !=:                                    Setting.             (line   6)
+* !=, expansion:                         Reading Makefiles.   (line  33)
 * # (comments), in makefile:             Makefile Contents.   (line  42)
 * # (comments), in recipes:              Recipe Syntax.       (line  29)
 * #include:                              Automatic Prerequisites.
@@ -3923,7 +4976,7 @@ Index of Concepts
 * * (wildcard character):                Wildcards.           (line   6)
 * +, and define:                         Canned Recipes.      (line  49)
 * +, and recipe execution:               Instead of Execution.
-                                                              (line  60)
+                                                              (line  63)
 * +, and recipes:                        MAKE Variable.       (line  18)
 * +=:                                    Appending.           (line   6)
 * +=, expansion:                         Reading Makefiles.   (line  33)
@@ -3931,91 +4984,94 @@ Index of Concepts
 * - (in recipes):                        Errors.              (line  19)
 * -, and define:                         Canned Recipes.      (line  49)
 * --always-make:                         Options Summary.     (line  15)
-* --assume-new <1>:                      Options Summary.     (line 248)
+* --assume-new <1>:                      Options Summary.     (line 276)
 * --assume-new:                          Instead of Execution.
-                                                              (line  35)
+                                                              (line  38)
 * --assume-new, and recursion:           Options/Recursion.   (line  22)
-* --assume-old <1>:                      Options Summary.     (line 154)
+* --assume-old <1>:                      Options Summary.     (line 159)
 * --assume-old:                          Avoiding Compilation.
                                                               (line   6)
 * --assume-old, and recursion:           Options/Recursion.   (line  22)
-* --check-symlink-times:                 Options Summary.     (line 136)
+* --check-symlink-times:                 Options Summary.     (line 141)
 * --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 146)
+* --dry-run <1>:                         Options Summary.     (line 151)
 * --dry-run <2>:                         Instead of Execution.
                                                               (line  14)
 * --dry-run:                             Echoing.             (line  18)
-* --environment-overrides:               Options Summary.     (line  78)
-* --eval:                                Options Summary.     (line  83)
-* --file <1>:                            Options Summary.     (line  90)
+* --environment-overrides:               Options Summary.     (line  83)
+* --eval:                                Options Summary.     (line  88)
+* --file <1>:                            Options Summary.     (line  95)
 * --file <2>:                            Makefile Arguments.  (line   6)
 * --file:                                Makefile Names.      (line  23)
 * --file, and recursion:                 Options/Recursion.   (line  22)
-* --help:                                Options Summary.     (line  96)
-* --ignore-errors <1>:                   Options Summary.     (line 100)
+* --help:                                Options Summary.     (line 101)
+* --ignore-errors <1>:                   Options Summary.     (line 105)
 * --ignore-errors:                       Errors.              (line  30)
-* --include-dir <1>:                     Options Summary.     (line 105)
+* --include-dir <1>:                     Options Summary.     (line 110)
 * --include-dir:                         Include.             (line  53)
-* --jobs <1>:                            Options Summary.     (line 112)
+* --jobs <1>:                            Options Summary.     (line 117)
 * --jobs:                                Parallel.            (line   6)
 * --jobs, and recursion:                 Options/Recursion.   (line  25)
-* --just-print <1>:                      Options Summary.     (line 145)
+* --just-print <1>:                      Options Summary.     (line 150)
 * --just-print <2>:                      Instead of Execution.
                                                               (line  14)
 * --just-print:                          Echoing.             (line  18)
-* --keep-going <1>:                      Options Summary.     (line 121)
+* --keep-going <1>:                      Options Summary.     (line 126)
 * --keep-going <2>:                      Testing.             (line  16)
 * --keep-going:                          Errors.              (line  47)
-* --load-average <1>:                    Options Summary.     (line 128)
-* --load-average:                        Parallel.            (line  58)
-* --makefile <1>:                        Options Summary.     (line  91)
+* --load-average <1>:                    Options Summary.     (line 133)
+* --load-average:                        Parallel.            (line  35)
+* --makefile <1>:                        Options Summary.     (line  96)
 * --makefile <2>:                        Makefile Arguments.  (line   6)
 * --makefile:                            Makefile Names.      (line  23)
-* --max-load <1>:                        Options Summary.     (line 129)
-* --max-load:                            Parallel.            (line  58)
-* --new-file <1>:                        Options Summary.     (line 247)
+* --max-load <1>:                        Options Summary.     (line 134)
+* --max-load:                            Parallel.            (line  35)
+* --new-file <1>:                        Options Summary.     (line 275)
 * --new-file:                            Instead of Execution.
-                                                              (line  35)
+                                                              (line  38)
 * --new-file, and recursion:             Options/Recursion.   (line  22)
-* --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-builtin-rules:                    Options Summary.     (line 203)
+* --no-builtin-variables:                Options Summary.     (line 216)
+* --no-keep-going:                       Options Summary.     (line 231)
+* --no-print-directory <1>:              Options Summary.     (line 267)
 * --no-print-directory:                  -w Option.           (line  20)
-* --old-file <1>:                        Options Summary.     (line 153)
+* --old-file <1>:                        Options Summary.     (line 158)
 * --old-file:                            Avoiding Compilation.
                                                               (line   6)
 * --old-file, and recursion:             Options/Recursion.   (line  22)
-* --print-data-base:                     Options Summary.     (line 162)
-* --print-directory:                     Options Summary.     (line 231)
+* --output-sync <1>:                     Options Summary.     (line 167)
+* --output-sync:                         Parallel Output.     (line  11)
+* --print-data-base:                     Options Summary.     (line 183)
+* --print-directory:                     Options Summary.     (line 259)
 * --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 174)
+* --question <1>:                        Options Summary.     (line 195)
 * --question:                            Instead of Execution.
-                                                              (line  27)
-* --quiet <1>:                           Options Summary.     (line 205)
+                                                              (line  30)
+* --quiet <1>:                           Options Summary.     (line 226)
 * --quiet:                               Echoing.             (line  24)
-* --recon <1>:                           Options Summary.     (line 147)
+* --recon <1>:                           Options Summary.     (line 152)
 * --recon <2>:                           Instead of Execution.
                                                               (line  14)
 * --recon:                               Echoing.             (line  18)
-* --silent <1>:                          Options Summary.     (line 204)
+* --silent <1>:                          Options Summary.     (line 225)
 * --silent:                              Echoing.             (line  24)
-* --stop:                                Options Summary.     (line 211)
-* --touch <1>:                           Options Summary.     (line 219)
+* --stop:                                Options Summary.     (line 232)
+* --touch <1>:                           Options Summary.     (line 240)
 * --touch:                               Instead of Execution.
-                                                              (line  21)
+                                                              (line  23)
 * --touch, and recursion:                MAKE Variable.       (line  34)
-* --version:                             Options Summary.     (line 226)
-* --warn-undefined-variables:            Options Summary.     (line 257)
-* --what-if <1>:                         Options Summary.     (line 246)
+* --trace:                               Options Summary.     (line 246)
+* --version:                             Options Summary.     (line 254)
+* --warn-undefined-variables:            Options Summary.     (line 285)
+* --what-if <1>:                         Options Summary.     (line 274)
 * --what-if:                             Instead of Execution.
-                                                              (line  35)
+                                                              (line  38)
 * -B:                                    Options Summary.     (line  14)
 * -b:                                    Options Summary.     (line   9)
 * -C <1>:                                Options Summary.     (line  25)
@@ -4023,60 +5079,62 @@ Index of Concepts
 * -C, and -w:                            -w Option.           (line  20)
 * -C, and recursion:                     Options/Recursion.   (line  22)
 * -d:                                    Options Summary.     (line  33)
-* -e:                                    Options Summary.     (line  77)
+* -e:                                    Options Summary.     (line  82)
 * -e (shell flag):                       Automatic Prerequisites.
                                                               (line  66)
-* -f <1>:                                Options Summary.     (line  89)
+* -f <1>:                                Options Summary.     (line  94)
 * -f <2>:                                Makefile Arguments.  (line   6)
 * -f:                                    Makefile Names.      (line  23)
 * -f, and recursion:                     Options/Recursion.   (line  22)
-* -h:                                    Options Summary.     (line  95)
-* -I:                                    Options Summary.     (line 104)
-* -i <1>:                                Options Summary.     (line  99)
+* -h:                                    Options Summary.     (line 100)
+* -I:                                    Options Summary.     (line 109)
+* -i <1>:                                Options Summary.     (line 104)
 * -i:                                    Errors.              (line  30)
 * -I:                                    Include.             (line  53)
-* -j <1>:                                Options Summary.     (line 111)
+* -j <1>:                                Options Summary.     (line 116)
 * -j:                                    Parallel.            (line   6)
 * -j, and archive update:                Archive Pitfalls.    (line   6)
 * -j, and recursion:                     Options/Recursion.   (line  25)
-* -k <1>:                                Options Summary.     (line 120)
+* -k <1>:                                Options Summary.     (line 125)
 * -k <2>:                                Testing.             (line  16)
 * -k:                                    Errors.              (line  47)
-* -L:                                    Options Summary.     (line 135)
-* -l:                                    Options Summary.     (line 127)
+* -L:                                    Options Summary.     (line 140)
+* -l:                                    Options Summary.     (line 132)
 * -l (library search):                   Libraries/Search.    (line   6)
-* -l (load average):                     Parallel.            (line  58)
+* -l (load average):                     Parallel.            (line  35)
 * -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 144)
+* -n <1>:                                Options Summary.     (line 149)
 * -n <2>:                                Instead of Execution.
                                                               (line  14)
 * -n:                                    Echoing.             (line  18)
-* -o <1>:                                Options Summary.     (line 152)
+* -O:                                    Options Summary.     (line 166)
+* -o <1>:                                Options Summary.     (line 157)
 * -o:                                    Avoiding Compilation.
                                                               (line   6)
+* -O:                                    Parallel Output.     (line  11)
 * -o, and recursion:                     Options/Recursion.   (line  22)
-* -p:                                    Options Summary.     (line 161)
-* -q <1>:                                Options Summary.     (line 173)
+* -p:                                    Options Summary.     (line 182)
+* -q <1>:                                Options Summary.     (line 194)
 * -q:                                    Instead of Execution.
-                                                              (line  27)
-* -R:                                    Options Summary.     (line 194)
-* -r:                                    Options Summary.     (line 181)
-* -S:                                    Options Summary.     (line 209)
-* -s <1>:                                Options Summary.     (line 203)
+                                                              (line  30)
+* -R:                                    Options Summary.     (line 215)
+* -r:                                    Options Summary.     (line 202)
+* -S:                                    Options Summary.     (line 230)
+* -s <1>:                                Options Summary.     (line 224)
 * -s:                                    Echoing.             (line  24)
-* -t <1>:                                Options Summary.     (line 218)
+* -t <1>:                                Options Summary.     (line 239)
 * -t:                                    Instead of Execution.
-                                                              (line  21)
+                                                              (line  23)
 * -t, and recursion:                     MAKE Variable.       (line  34)
-* -v:                                    Options Summary.     (line 225)
-* -W:                                    Options Summary.     (line 245)
-* -w:                                    Options Summary.     (line 230)
+* -v:                                    Options Summary.     (line 253)
+* -W:                                    Options Summary.     (line 273)
+* -w:                                    Options Summary.     (line 258)
 * -W:                                    Instead of Execution.
-                                                              (line  35)
+                                                              (line  38)
 * -w, and -C:                            -w Option.           (line  20)
 * -w, and recursion:                     -w Option.           (line  20)
 * -W, and recursion:                     Options/Recursion.   (line  22)
@@ -4117,6 +5175,8 @@ Index of Concepts
 * .web:                                  Catalogue of Rules.  (line 151)
 * .y:                                    Catalogue of Rules.  (line 120)
 * :: rules (double-colon):               Double-Colon.        (line   6)
+* ::= <1>:                               Setting.             (line   6)
+* ::=:                                   Flavors.             (line  56)
 * := <1>:                                Setting.             (line   6)
 * :=:                                    Flavors.             (line  56)
 * = <1>:                                 Setting.             (line   6)
@@ -4124,13 +5184,14 @@ Index of Concepts
 * =, expansion:                          Reading Makefiles.   (line  33)
 * ? (wildcard character):                Wildcards.           (line   6)
 * ?= <1>:                                Setting.             (line   6)
-* ?=:                                    Flavors.             (line 129)
+* ?=:                                    Flavors.             (line 133)
 * ?=, expansion:                         Reading Makefiles.   (line  33)
 * @ (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 recipes:             Splitting Lines.     (line   6)
+* \ (backslash), for continuation lines: Simple Makefile.     (line  41)
+* \ (backslash), in recipes:             Splitting Recipe 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)
@@ -4158,17 +5219,19 @@ Index of Concepts
 * 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 recipes:             Splitting Lines.     (line   6)
+* backslash (\), for continuation lines: Simple Makefile.     (line  41)
+* backslash (\), in recipes:             Splitting Recipe 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)
+* backslash (\), to quote newlines:      Splitting Lines.     (line   6)
 * backslashes in pathnames and wildcard expansion: Wildcard Pitfall.
                                                               (line  31)
 * basename:                              File Name Functions. (line  57)
 * binary packages:                       Install Command Categories.
                                                               (line  80)
-* broken pipe:                           Parallel.            (line  31)
+* broken pipe:                           Parallel Input.      (line  11)
 * bugs, reporting:                       Bugs.                (line   6)
 * built-in special targets:              Special Targets.     (line   6)
 * C++, rule to compile:                  Catalogue of Rules.  (line  39)
@@ -4182,7 +5245,7 @@ Index of Concepts
 * check (standard target):               Goals.               (line 114)
 * clean (standard target):               Goals.               (line  75)
 * clean target <1>:                      Cleanup.             (line  11)
-* clean target:                          Simple Makefile.     (line  84)
+* clean target:                          Simple Makefile.     (line  85)
 * cleaning up:                           Cleanup.             (line   6)
 * clobber (standard target):             Goals.               (line  86)
 * co <1>:                                Implicit Variables.  (line  66)
@@ -4202,18 +5265,19 @@ Index of Concepts
 * computed variable name:                Computed Names.      (line   6)
 * conditional expansion:                 Conditional Functions.
                                                               (line   6)
-* conditional variable assignment:       Flavors.             (line 129)
+* conditional variable assignment:       Flavors.             (line 133)
 * conditionals:                          Conditionals.        (line   6)
-* continuation lines:                    Simple Makefile.     (line  40)
+* continuation lines:                    Simple Makefile.     (line  41)
 * controlling make:                      Make Control Functions.
                                                               (line   6)
 * conventions for makefiles:             Makefile Conventions.
                                                               (line   6)
+* convert guile types:                   Guile Types.         (line   6)
 * ctangle <1>:                           Implicit Variables.  (line 103)
 * ctangle:                               Catalogue of Rules.  (line 151)
 * cweave <1>:                            Implicit Variables.  (line  97)
 * cweave:                                Catalogue of Rules.  (line 151)
-* data base of make rules:               Options Summary.     (line 162)
+* data base of make rules:               Options Summary.     (line 183)
 * deducing recipes (implicit rules):     make Deduces.        (line   6)
 * default directories for included makefiles: Include.        (line  53)
 * default goal <1>:                      Rules.               (line  11)
@@ -4260,6 +5324,9 @@ Index of Concepts
 * errors (in recipes):                   Errors.              (line   6)
 * errors with wildcards:                 Wildcard Pitfall.    (line   6)
 * evaluating makefile syntax:            Eval Function.       (line   6)
+* example of loaded objects:             Loaded Object Example.
+                                                              (line   6)
+* example using Guile:                   Guile Example.       (line   6)
 * execution, in parallel:                Parallel.            (line   6)
 * execution, instead of:                 Instead of Execution.
                                                               (line   6)
@@ -4268,10 +5335,13 @@ Index of Concepts
 * 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  77)
+* explicit rule, expansion:              Reading Makefiles.   (line  92)
 * explicit rules, secondary expansion of: Secondary Expansion.
                                                               (line 106)
 * exporting variables:                   Variables/Recursion. (line   6)
+* extensions, Guile:                     Guile Integration.   (line   6)
+* extensions, load directive:            load Directive.      (line   6)
+* extensions, loading:                   Loading Objects.     (line   6)
 * f77 <1>:                               Implicit Variables.  (line  57)
 * f77:                                   Catalogue of Rules.  (line  49)
 * FDL, GNU Free Documentation License:   GNU Free Documentation License.
@@ -4290,8 +5360,9 @@ Index of Concepts
 * file name, directory part:             File Name Functions. (line  17)
 * file name, nondirectory part:          File Name Functions. (line  27)
 * file name, realpath of:                File Name Functions. (line 114)
+* file, writing to:                      File Function.       (line   6)
 * files, assuming new:                   Instead of Execution.
-                                                              (line  35)
+                                                              (line  38)
 * files, assuming old:                   Avoiding Compilation.
                                                               (line   6)
 * files, avoiding recompilation of:      Avoiding Compilation.
@@ -4327,17 +5398,21 @@ Index of Concepts
 * goal, default <1>:                     Rules.               (line  11)
 * goal, default:                         How Make Works.      (line  11)
 * goal, how to specify:                  Goals.               (line   6)
+* Guile <1>:                             Guile Integration.   (line   6)
+* Guile:                                 Guile Function.      (line   6)
+* Guile example:                         Guile Example.       (line   6)
+* guile, conversion of types:            Guile Types.         (line   6)
 * home directory:                        Wildcards.           (line  11)
 * IEEE Standard 1003.2:                  Overview.            (line  13)
-* ifdef, expansion:                      Reading Makefiles.   (line  67)
-* ifeq, expansion:                       Reading Makefiles.   (line  67)
-* ifndef, expansion:                     Reading Makefiles.   (line  67)
-* ifneq, expansion:                      Reading Makefiles.   (line  67)
+* ifdef, expansion:                      Reading Makefiles.   (line  82)
+* ifeq, expansion:                       Reading Makefiles.   (line  82)
+* ifndef, expansion:                     Reading Makefiles.   (line  82)
+* ifneq, expansion:                      Reading Makefiles.   (line  82)
 * 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  77)
+* implicit rule, expansion:              Reading Makefiles.   (line  92)
 * 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)
@@ -4353,16 +5428,18 @@ Index of Concepts
 * Info, rule to format:                  Catalogue of Rules.  (line 158)
 * inheritance, suppressing:              Suppressing Inheritance.
                                                               (line   6)
+* input during parallel execution:       Parallel Input.      (line   6)
 * install (standard target):             Goals.               (line  92)
 * installation directories, creating:    Directory Variables. (line  20)
 * installations, staged:                 DESTDIR.             (line   6)
+* interface for loaded objects:          Loaded Object API.   (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  58)
+* jobs, limiting based on load:          Parallel.            (line  35)
 * joining lists of words:                File Name Functions. (line  90)
 * killing (interruption):                Interrupts.          (line   6)
 * last-resort default rules:             Last Resort.         (line   6)
@@ -4373,7 +5450,7 @@ Index of Concepts
 * 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  58)
+* limiting jobs based on load:           Parallel.            (line  35)
 * 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)
@@ -4382,7 +5459,16 @@ Index of Concepts
 * 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  58)
+* load average:                          Parallel.            (line  35)
+* load directive:                        load Directive.      (line   6)
+* loaded object API:                     Loaded Object API.   (line   6)
+* loaded object example:                 Loaded Object Example.
+                                                              (line   6)
+* loaded object licensing:               Loaded Object API.   (line  32)
+* loaded objects:                        Loading Objects.     (line   6)
+* loaded objects, remaking of:           Remaking Loaded Objects.
+                                                              (line   6)
+* long lines, splitting:                 Splitting Lines.     (line   6)
 * loops in variable expansion:           Flavors.             (line  44)
 * lpr (shell command) <1>:               Empty Targets.       (line  25)
 * lpr (shell command):                   Wildcard Examples.   (line  21)
@@ -4391,6 +5477,9 @@ Index of Concepts
 * macro:                                 Using Variables.     (line  10)
 * make depend:                           Automatic Prerequisites.
                                                               (line  37)
+* make extensions:                       Extending make.      (line   6)
+* make interface to guile:               Guile Interface.     (line   6)
+* make procedures in guile:              Guile Interface.     (line   6)
 * makefile:                              Introduction.        (line   7)
 * makefile name:                         Makefile Names.      (line   6)
 * makefile name, how to specify:         Makefile Names.      (line  30)
@@ -4428,14 +5517,16 @@ Index of Concepts
 * 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 makefile:         Simple Makefile.     (line  40)
-* newline, quoting, in recipes:          Splitting Lines.     (line   6)
+* newline, quoting, in makefile:         Simple Makefile.     (line  41)
+* newline, quoting, in recipes:          Splitting Recipe Lines.
+                                                              (line   6)
 * nondirectory part:                     File Name Functions. (line  27)
 * normal prerequisites:                  Prerequisite Types.  (line   6)
 * OBJ:                                   Variables Simplify.  (line  20)
 * obj:                                   Variables Simplify.  (line  20)
 * OBJECTS:                               Variables Simplify.  (line  20)
 * objects:                               Variables Simplify.  (line  14)
+* objects, loaded:                       Loading Objects.     (line   6)
 * OBJS:                                  Variables Simplify.  (line  20)
 * objs:                                  Variables Simplify.  (line  20)
 * old-fashioned suffix rules:            Suffix Rules.        (line   6)
@@ -4446,17 +5537,22 @@ Index of Concepts
 * order of pattern rules:                Pattern Match.       (line  30)
 * order-only prerequisites:              Prerequisite Types.  (line   6)
 * origin of variable:                    Origin Function.     (line   6)
+* output during parallel execution <1>:  Options Summary.     (line 167)
+* output during parallel execution:      Parallel Output.     (line   6)
 * overriding makefiles:                  Overriding Makefiles.
                                                               (line   6)
 * overriding variables with arguments:   Overriding.          (line   6)
 * overriding with override:              Override Directive.  (line   6)
 * parallel execution:                    Parallel.            (line   6)
 * parallel execution, and archive update: Archive Pitfalls.   (line   6)
+* parallel execution, input during:      Parallel Input.      (line   6)
+* parallel execution, output during <1>: Options Summary.     (line 167)
+* parallel execution, output during:     Parallel Output.     (line   6)
 * 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  77)
+* pattern rule, expansion:               Reading Makefiles.   (line  92)
 * 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)
@@ -4465,24 +5561,25 @@ Index of Concepts
 * pc:                                    Catalogue of Rules.  (line  45)
 * phony targets:                         Phony Targets.       (line   6)
 * phony targets and recipe execution:    Instead of Execution.
-                                                              (line  68)
+                                                              (line  71)
 * pitfalls of wildcards:                 Wildcard Pitfall.    (line   6)
+* plugin_is_GPL_compatible:              Loaded Object API.   (line  32)
 * portability:                           Features.            (line   6)
+* POSIX <1>:                             Options/Recursion.   (line  60)
 * 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 162)
+* predefined rules and variables, printing: Options Summary.  (line 183)
 * 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  77)
+* prerequisite, expansion:               Reading Makefiles.   (line  92)
 * prerequisites:                         Rule Syntax.         (line  48)
 * prerequisites, and automatic variables: Automatic Variables.
                                                               (line  17)
@@ -4512,19 +5609,20 @@ Index of Concepts
 * problems with wildcards:               Wildcard Pitfall.    (line   6)
 * processing a makefile:                 How Make Works.      (line   6)
 * question mode:                         Instead of Execution.
-                                                              (line  27)
+                                                              (line  30)
 * 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 makefile:          Simple Makefile.     (line  40)
-* quoting newline, in recipes:           Splitting Lines.     (line   6)
+* quoting newline, in makefile:          Simple Makefile.     (line  41)
+* quoting newline, in recipes:           Splitting Recipe 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:                                Simple Makefile.     (line  74)
 * recipe execution, single invocation:   Special Targets.     (line 137)
 * recipe lines, single shell:            One Shell.           (line   6)
 * recipe syntax:                         Recipe Syntax.       (line   6)
@@ -4533,7 +5631,8 @@ Index of Concepts
 * 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, backslash (\) in:             Splitting Recipe Lines.
+                                                              (line   6)
 * recipes, canned:                       Canned Recipes.      (line   6)
 * recipes, comments in:                  Recipe Syntax.       (line  29)
 * recipes, echoing:                      Echoing.             (line   6)
@@ -4544,8 +5643,10 @@ Index of Concepts
 * 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, quoting newlines in:          Splitting Recipe Lines.
+                                                              (line   6)
+* recipes, splitting:                    Splitting Recipe Lines.
+                                                              (line   6)
 * recipes, using variables in:           Variables in Recipes.
                                                               (line   6)
 * recompilation:                         Introduction.        (line  22)
@@ -4575,6 +5676,8 @@ Index of Concepts
 * reference to variables <1>:            Advanced.            (line   6)
 * reference to variables:                Reference.           (line   6)
 * relinking:                             How Make Works.      (line  46)
+* remaking loaded objects:               Remaking Loaded Objects.
+                                                              (line   6)
 * remaking makefiles:                    Remaking Makefiles.  (line   6)
 * removal of target files <1>:           Interrupts.          (line   6)
 * removal of target files:               Errors.              (line  64)
@@ -4586,7 +5689,7 @@ Index of Concepts
 * 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  84)
+* rm (shell command):                    Simple Makefile.     (line  85)
 * rule prerequisites:                    Rule Syntax.         (line  48)
 * rule syntax:                           Rule Syntax.         (line   6)
 * rule targets:                          Rule Syntax.         (line  18)
@@ -4657,14 +5760,16 @@ Index of Concepts
 * simplifying with variables:            Variables Simplify.  (line   6)
 * simply expanded variables:             Flavors.             (line  56)
 * sorting words:                         Text Functions.      (line 146)
-* spaces, in variable values:            Flavors.             (line 103)
+* spaces, in variable values:            Flavors.             (line 107)
 * spaces, stripping:                     Text Functions.      (line  80)
 * special targets:                       Special Targets.     (line   6)
 * special variables:                     Special Variables.   (line   6)
 * specifying makefile name:              Makefile Names.      (line  30)
-* splitting recipes:                     Splitting Lines.     (line   6)
+* splitting long lines:                  Splitting Lines.     (line   6)
+* splitting recipes:                     Splitting Recipe Lines.
+                                                              (line   6)
 * staged installs:                       DESTDIR.             (line   6)
-* standard input:                        Parallel.            (line  31)
+* standard input:                        Parallel Input.      (line   6)
 * standards conformance:                 Overview.            (line  13)
 * standards for makefiles:               Makefile Conventions.
                                                               (line   6)
@@ -4708,11 +5813,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  77)
+* target, expansion:                     Reading Makefiles.   (line  92)
 * target, multiple in pattern rule:      Pattern Intro.       (line  53)
 * target, multiple rules for one:        Multiple Rules.      (line   6)
 * target, touching:                      Instead of Execution.
-                                                              (line  21)
+                                                              (line  23)
 * target-specific variables:             Target-specific.     (line   6)
 * targets:                               Rule Syntax.         (line  18)
 * targets without a file:                Phony Targets.       (line   6)
@@ -4736,12 +5841,15 @@ Index of Concepts
 * touch (shell command) <1>:             Empty Targets.       (line  25)
 * touch (shell command):                 Wildcard Examples.   (line  21)
 * touching files:                        Instead of Execution.
-                                                              (line  21)
+                                                              (line  23)
 * traditional directory search (GPATH):  Search Algorithm.    (line  42)
 * types of prerequisites:                Prerequisite Types.  (line   6)
-* undefined variables, warning message:  Options Summary.     (line 257)
+* types, conversion of:                  Guile Types.         (line   6)
+* undefined variables, warning message:  Options Summary.     (line 285)
 * undefining variable:                   Undefine Directive.  (line   6)
 * updating archive symbol directories:   Archive Symbols.     (line   6)
+* updating loaded objects:               Remaking Loaded Objects.
+                                                              (line   6)
 * updating makefiles:                    Remaking Makefiles.  (line   6)
 * user defined functions:                Call Function.       (line   6)
 * value:                                 Using Variables.     (line   6)
@@ -4758,7 +5866,7 @@ Index of Concepts
 * variables, command line:               Overriding.          (line   6)
 * variables, command line, and recursion: Options/Recursion.  (line  17)
 * variables, computed names:             Computed Names.      (line   6)
-* variables, conditional assignment:     Flavors.             (line 129)
+* variables, conditional assignment:     Flavors.             (line 133)
 * variables, defining verbatim:          Multi-Line.          (line   6)
 * variables, environment <1>:            Environment.         (line   6)
 * variables, environment:                Variables/Recursion. (line   6)
@@ -4778,12 +5886,12 @@ Index of Concepts
 * variables, recursively expanded:       Flavors.             (line   6)
 * variables, setting:                    Setting.             (line   6)
 * variables, simply expanded:            Flavors.             (line  56)
-* variables, spaces in values:           Flavors.             (line 103)
+* variables, spaces in values:           Flavors.             (line 107)
 * variables, substituting suffix in:     Substitution Refs.   (line   6)
 * variables, substitution reference:     Substitution Refs.   (line   6)
 * variables, target-specific:            Target-specific.     (line   6)
 * variables, unexpanded value:           Value Function.      (line   6)
-* variables, warning for undefined:      Options Summary.     (line 257)
+* variables, warning for undefined:      Options Summary.     (line 285)
 * varying prerequisites:                 Static Pattern.      (line   6)
 * verbatim variable definition:          Multi-Line.          (line   6)
 * vpath:                                 Directory Search.    (line   6)
@@ -4795,8 +5903,8 @@ Index of Concepts
 * weave:                                 Catalogue of Rules.  (line 151)
 * Web, rule to run:                      Catalogue of Rules.  (line 151)
 * what if:                               Instead of Execution.
-                                                              (line  35)
-* whitespace, in variable values:        Flavors.             (line 103)
+                                                              (line  38)
+* whitespace, in variable values:        Flavors.             (line 107)
 * whitespace, stripping:                 Text Functions.      (line  80)
 * wildcard:                              Wildcards.           (line   6)
 * wildcard pitfalls:                     Wildcard Pitfall.    (line   6)
@@ -4818,6 +5926,7 @@ Index of Concepts
 * words, selecting lists of:             Text Functions.      (line 168)
 * writing recipes:                       Recipes.             (line   6)
 * writing rules:                         Rules.               (line   6)
+* writing to a file:                     File Function.       (line   6)
 * yacc <1>:                              Implicit Variables.  (line  77)
 * yacc <2>:                              Catalogue of Rules.  (line 120)
 * yacc:                                  Canned Recipes.      (line  18)
@@ -4866,6 +5975,7 @@ Index of Functions, Variables, & Directives
 * + (automatic variable):                Automatic Variables. (line  63)
 * +D (automatic variable):               Automatic Variables. (line 147)
 * +F (automatic variable):               Automatic Variables. (line 148)
+* -load:                                 load Directive.      (line  65)
 * .DEFAULT <1>:                          Last Resort.         (line  23)
 * .DEFAULT:                              Special Targets.     (line  20)
 * .DEFAULT, and empty recipes:           Empty Recipes.       (line  16)
@@ -4878,9 +5988,10 @@ Index of Functions, Variables, & Directives
 * .IGNORE <1>:                           Errors.              (line  30)
 * .IGNORE:                               Special Targets.     (line  69)
 * .INCLUDE_DIRS (list of include directories): Special Variables.
-                                                              (line 135)
+                                                              (line 155)
 * .INTERMEDIATE:                         Special Targets.     (line  43)
 * .LIBPATTERNS:                          Libraries/Search.    (line   6)
+* .LOADED:                               load Directive.      (line  62)
 * .LOW_RESOLUTION_TIME:                  Special Targets.     (line  81)
 * .NOTPARALLEL:                          Special Targets.     (line 129)
 * .ONESHELL <1>:                         One Shell.           (line   6)
@@ -4954,6 +6065,7 @@ Index of Functions, Variables, & Directives
 * export:                                Variables/Recursion. (line  40)
 * FC:                                    Implicit Variables.  (line  56)
 * FFLAGS:                                Implicit Variables.  (line 133)
+* file:                                  File Function.       (line   6)
 * filter:                                Text Functions.      (line 114)
 * filter-out:                            Text Functions.      (line 132)
 * findstring:                            Text Functions.      (line 103)
@@ -4962,8 +6074,17 @@ Index of Functions, Variables, & Directives
 * foreach:                               Foreach Function.    (line   6)
 * GET:                                   Implicit Variables.  (line  69)
 * GFLAGS:                                Implicit Variables.  (line 136)
+* gmk-eval:                              Guile Interface.     (line  18)
+* gmk-expand:                            Guile Interface.     (line  12)
+* gmk_add_function:                      Loaded Object API.   (line  54)
+* gmk_alloc:                             Loaded Object API.   (line 150)
+* gmk_eval:                              Loaded Object API.   (line 124)
+* gmk_expand:                            Loaded Object API.   (line 118)
+* gmk_free:                              Loaded Object API.   (line 155)
+* gmk_func_ptr:                          Loaded Object API.   (line  96)
 * GNUmakefile:                           Makefile Names.      (line   7)
 * GPATH:                                 Search Algorithm.    (line  48)
+* guile:                                 Guile Function.      (line   6)
 * if:                                    Conditional Functions.
                                                               (line   6)
 * ifdef:                                 Conditional Syntax.  (line   6)
@@ -4976,17 +6097,21 @@ Index of Functions, Variables, & Directives
 * join:                                  File Name Functions. (line  90)
 * lastword:                              Text Functions.      (line 197)
 * LDFLAGS:                               Implicit Variables.  (line 139)
+* LDLIBS:                                Implicit Variables.  (line 144)
 * LEX:                                   Implicit Variables.  (line  72)
-* LFLAGS:                                Implicit Variables.  (line 143)
+* LFLAGS:                                Implicit Variables.  (line 150)
 * libexecdir:                            Directory Variables. (line  70)
 * LINT:                                  Implicit Variables.  (line  80)
-* LINTFLAGS:                             Implicit Variables.  (line 155)
+* LINTFLAGS:                             Implicit Variables.  (line 162)
+* load:                                  load Directive.      (line   9)
+* LOADLIBES:                             Implicit Variables.  (line 144)
 * M2C:                                   Implicit Variables.  (line  60)
-* MAKE <1>:                              Flavors.             (line  84)
+* MAKE <1>:                              Flavors.             (line  88)
 * MAKE:                                  MAKE Variable.       (line   6)
+* MAKE_HOST:                             Quick Reference.     (line 341)
 * MAKE_RESTARTS (number of times make has restarted): Special Variables.
                                                               (line  73)
-* MAKE_VERSION:                          Features.            (line 197)
+* MAKE_VERSION:                          Quick Reference.     (line 337)
 * MAKECMDGOALS:                          Goals.               (line  30)
 * makefile:                              Makefile Names.      (line   7)
 * Makefile:                              Makefile Names.      (line   7)
@@ -4996,7 +6121,7 @@ Index of Functions, Variables, & Directives
 * MAKEFILES:                             MAKEFILES Variable.  (line   6)
 * MAKEFLAGS:                             Options/Recursion.   (line   6)
 * MAKEINFO:                              Implicit Variables.  (line  83)
-* MAKELEVEL <1>:                         Flavors.             (line  84)
+* MAKELEVEL <1>:                         Flavors.             (line  88)
 * MAKELEVEL:                             Variables/Recursion. (line 115)
 * MAKEOVERRIDES:                         Options/Recursion.   (line  49)
 * MAKESHELL (MS-DOS alternative to SHELL): Choosing the Shell.
@@ -5011,12 +6136,12 @@ Index of Functions, Variables, & Directives
 * patsubst <1>:                          Text Functions.      (line  18)
 * patsubst:                              Substitution Refs.   (line  28)
 * PC:                                    Implicit Variables.  (line  63)
-* PFLAGS:                                Implicit Variables.  (line 149)
+* PFLAGS:                                Implicit Variables.  (line 156)
 * prefix:                                Directory Variables. (line  29)
 * private:                               Suppressing Inheritance.
                                                               (line   6)
 * realpath:                              File Name Functions. (line 114)
-* RFLAGS:                                Implicit Variables.  (line 152)
+* RFLAGS:                                Implicit Variables.  (line 159)
 * RM:                                    Implicit Variables.  (line 106)
 * sbindir:                               Directory Variables. (line  63)
 * shell:                                 Shell Function.      (line   6)
@@ -5047,7 +6172,7 @@ Index of Functions, Variables, & Directives
 * wordlist:                              Text Functions.      (line 168)
 * words:                                 Text Functions.      (line 180)
 * YACC:                                  Implicit Variables.  (line  76)
-* YFLAGS:                                Implicit Variables.  (line 146)
+* YFLAGS:                                Implicit Variables.  (line 153)
 * | (automatic variable):                Automatic Variables. (line  69)
 
 
index fc7e8a3..8fbdb61 100644 (file)
@@ -3,8 +3,7 @@
 @setfilename make.info
 
 @include version.texi
-@set EDITION 0.71
-@set RCSID $Id: make.texi,v 1.66 2010/07/19 07:10:54 psmith Exp $
+@set EDITION 0.72
 
 @settitle GNU @code{make}
 @setchapternewpage odd
@@ -27,11 +26,11 @@ 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, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.2 or
+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, with the Front-Cover Texts being ``A GNU Manual,''
 and with the Back-Cover Texts as in (a) below.  A copy of the
@@ -100,6 +99,7 @@ Cover art by Etienne Suvasa.
 * Implicit Rules::              Use implicit rules to treat many files alike,
                                   based on their file names.
 * Archives::                    How @code{make} can update library archives.
+* Extending make::              Using extensions to @code{make}.
 * Features::                    Features GNU @code{make} has over other @code{make}s.
 * Missing::                     What GNU @code{make} lacks from other @code{make}s.
 * Makefile Conventions::        Conventions for writing makefiles for
@@ -109,28 +109,28 @@ Cover art by Etienne Suvasa.
 * Complex Makefile::            A real example of a straightforward,
                                   but nontrivial, makefile.
 
-* GNU Free Documentation License::  License for copying this manual
-* Concept Index::               Index of Concepts
-* Name Index::                  Index of Functions, Variables, & Directives
+* GNU Free Documentation License::  License for copying this manual.
+* Concept Index::               Index of Concepts.
+* Name Index::                  Index of Functions, Variables, & Directives.
 
 @detailmenu
  --- The Detailed Node Listing ---
 
 Overview of @code{make}
 
-* Preparing::                   Preparing and running make
-* Reading::                     On reading this text
-* Bugs::                        Problems and bugs
+* Preparing::                   Preparing and running @code{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 recipe
-* 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 recipes.
+* Combine By Prerequisite::     Another style of makefile.
+* Cleanup::                     Rules for cleaning the directory.
 
 Writing Makefiles
 
@@ -144,6 +144,10 @@ Writing Makefiles
 * Reading Makefiles::           How makefiles are parsed.
 * Secondary Expansion::         How and when secondary expansion is performed.
 
+What Makefiles Contain
+
+* Splitting Lines::             Splitting long lines in makefiles
+
 Writing Rules
 
 * Rule Example::                An example explained.
@@ -170,7 +174,7 @@ Writing Rules
 
 Using Wildcard Characters in File Names
 
-* Wildcard Examples::           Several examples
+* Wildcard Examples::           Several examples.
 * Wildcard Pitfall::            Problems to avoid.
 * Wildcard Function::           How to cause wildcard expansion where
                                   it does not normally take place.
@@ -206,14 +210,20 @@ Writing Recipes in Rules
 
 Recipe Syntax
 
-* Splitting Lines::             Breaking long recipe lines for readability.
+* Splitting Recipe Lines::      Breaking long recipe lines for readability.
 * Variables in Recipes::        Using @code{make} variables in recipes.
 
 Recipe Execution
 
+* One Shell::                   One shell for all lines in a recipe.
 * Choosing the Shell::          How @code{make} chooses the shell used
                                   to run recipes.
 
+Parallel Execution
+
+* Parallel Output::             Handling output during parallel execution
+* Parallel Input::              Handling input during parallel execution
+
 Recursive Use of @code{make}
 
 * MAKE Variable::               The special effects of using @samp{$(MAKE)}.
@@ -235,6 +245,8 @@ How to Use Variables
                                   the user has set it with a command argument.
 * 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.
@@ -262,13 +274,15 @@ Functions for Transforming Text
 * File Name Functions::         Functions for manipulating file names.
 * Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
+* File Function::               Write text to a file.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
 * Flavor Function::             Find out the flavor of a variable.
-* Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
+* Shell Function::              Substitute the output of a shell command.
+* Guile Function::              Use GNU Guile embedded scripting language.
 
 How to Run @code{make}
 
@@ -289,7 +303,7 @@ How to Run @code{make}
 Using Implicit Rules
 
 * Using Implicit::              How to use an existing implicit rule
-                                  to get the recipe 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.
@@ -324,6 +338,24 @@ Implicit Rule for Archive Member Targets
 
 * Archive Symbols::             How to update archive symbol directories.
 
+Extending GNU @code{make}
+
+* Guile Integration::           Using Guile as an embedded scripting language.
+* Loading Objects::             Loading dynamic objects as extensions.
+
+GNU Guile Integration
+
+* Guile Types::                 Converting Guile types to @code{make} strings.
+* Guile Interface::             Invoking @code{make} functions from Guile.
+* Guile Example::               Example using Guile in @code{make}.
+
+Loading Dynamic Objects
+
+* load Directive::              Loading dynamic objects as extensions.
+* Remaking Loaded Objects::     How loaded objects get remade.
+* Loaded Object API::           Programmatic interface for loaded objects.
+* Loaded Object Example::       Example of a loaded object
+
 @end detailmenu
 @end menu
 
@@ -350,9 +382,9 @@ use it to describe any task where some files must be updated automatically
 from others whenever the others change.
 
 @menu
-* Preparing::                   Preparing and Running Make
-* Reading::                     On Reading this Text
-* Bugs::                        Problems and Bugs
+* Preparing::                   Preparing and running @code{make}.
+* Reading::                     On reading this text.
+* Bugs::                        Problems and bugs.
 @end menu
 
 @node Preparing, Reading, Overview, Overview
@@ -486,12 +518,12 @@ together to produce the new executable editor.
 
 @menu
 * 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 Recipes
-* 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 recipes.
+* Combine By Prerequisite::     Another style of makefile.
+* Cleanup::                     Rules for cleaning the directory.
 @end menu
 
 @node Rule Introduction, Simple Makefile, Introduction, Introduction
@@ -591,8 +623,9 @@ clean :
 @end example
 
 @noindent
-We split each long line into two lines using backslash-newline; this is
-like using one long line, but is easier to read.
+We split each long line into two lines using backslash/newline; this is
+like using one long line, but is easier to read.  @xref{Splitting Lines,
+, Splitting Long Lines}.
 @cindex continuation lines
 @cindex @code{\} (backslash), for continuation lines
 @cindex backslash (@code{\}), for continuation lines
@@ -1026,6 +1059,48 @@ as @code{make} comments or as recipe text, depending on the context in
 which the variable is evaluated.
 @end itemize
 
+@menu
+* Splitting Lines::             Splitting long lines in makefiles
+@end menu
+
+@node Splitting Lines,  , Makefile Contents, Makefile Contents
+@subsection Splitting Long Lines
+@cindex splitting long lines
+@cindex long lines, splitting
+@cindex backslash (@code{\}), to quote newlines
+
+Makefiles use a ``line-based'' syntax in which the newline character
+is special and marks the end of a statement.  GNU @code{make} has no
+limit on the length of a statement line, up to the amount of memory in
+your computer.
+
+However, it is difficult to read lines which are too long to display
+without wrapping or scrolling.  So, you can format your makefiles for
+readability by adding newlines into the middle of a statement: you do
+this by escaping the internal newlines with a backslash (@code{\})
+character.  Where we need to make a distinction we will refer to
+``physical lines'' as a single line ending with a newline (regardless
+of whether it is escaped) and a ``logical line'' being a complete
+statement including all escaped newlines up to the first non-escaped
+newline.
+
+The way in which backslash/newline combinations are handled depends on
+whether the statement is a recipe line or a non-recipe line.  Handling
+of backslash/newline in a recipe line is discussed later
+(@pxref{Splitting Recipe Lines}).
+
+Outside of recipe lines, backslash/newlines are converted into a
+single space character.  Once that is done, all whitespace around the
+backslash/newline is condensed into a single space: this includes all
+whitespace preceding the backslash, all whitespace at the beginning of
+the line after the backslash/newline, and any consecutive
+backslash/newline combinations.
+
+If the @code{.POSIX} special target is defined then backslash/newline
+handling is modified slightly to conform to POSIX.2: first, whitespace
+preceding a backslash is not removed and second, consecutive
+backslash/newlines are not condensed.
+
 @node Makefile Names, Include, Makefile Contents, Makefiles
 @section What Name to Give Your Makefile
 @cindex makefile name
@@ -1219,7 +1294,6 @@ in the makefiles.  @xref{Include, , Including Other Makefiles}.
 
 @node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles
 @section How Makefiles Are Remade
-
 @cindex updating makefiles
 @cindex remaking makefiles
 @cindex makefile, remaking of
@@ -1241,7 +1315,7 @@ 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
+of preventing implicit rule look-up 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}).
 
@@ -1305,7 +1379,7 @@ 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, it is illegal for two makefiles to give different recipes for
+However, it is invalid for two makefiles to give different recipes for
 the same target.  But there is another way.
 
 @cindex match-anything rule, used to override
@@ -1379,6 +1453,7 @@ chapters.
 @cindex =, expansion
 @cindex ?=, expansion
 @cindex +=, expansion
+@cindex !=, expansion
 @cindex define, expansion
 
 Variable definitions are parsed as follows:
@@ -1387,7 +1462,9 @@ Variable definitions are parsed as follows:
 @var{immediate} = @var{deferred}
 @var{immediate} ?= @var{deferred}
 @var{immediate} := @var{immediate}
+@var{immediate} ::= @var{immediate}
 @var{immediate} += @var{deferred} or @var{immediate}
+@var{immediate} != @var{immediate}
 
 define @var{immediate}
   @var{deferred}
@@ -1405,14 +1482,27 @@ define @var{immediate} :=
   @var{immediate}
 endef
 
+define @var{immediate} ::=
+  @var{immediate}
+endef
+
 define @var{immediate} +=
   @var{deferred} or @var{immediate}
 endef
+
+define @var{immediate} !=
+  @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.
+(@samp{:=} or @samp{::=}), and deferred otherwise.
+
+For the shell assignment operator, @samp{!=}, the right-hand side is
+evaluated immediately and handed to the shell.  The result is stored in the
+variable named on the left, and that variable becomes a simple variable
+(and will thus be re-evaluated on each reference).
 
 @subheading Conditional Directives
 @cindex ifdef, expansion
@@ -1487,11 +1577,11 @@ first (unescaped) variable reference to @var{ONEVAR} is expanded,
 while the second (escaped) variable reference is simply unescaped,
 without being recognized as a variable reference.  Now during the
 secondary expansion the first word is expanded again but since it
-contains no variable or function references it remains the static
-value @file{onefile}, while the second word is now a normal reference
-to the variable @var{TWOVAR}, which is expanded to the value
-@file{twofile}.  The final result is that there are two prerequisites,
-@file{onefile} and @file{twofile}.
+contains no variable or function references it remains the value
+@file{onefile}, while the second word is now a normal reference to the
+variable @var{TWOVAR}, which is expanded to the value @file{twofile}.
+The final result is that there are two prerequisites, @file{onefile}
+and @file{twofile}.
 
 Obviously, this is not a very interesting case since the same result
 could more easily have been achieved simply by having both variables
@@ -1633,7 +1723,7 @@ expands to @file{bar}, @code{$$^} expands to @file{bar boo},
 Note that the directory prefix (D), as described in @ref{Implicit Rule
 Search, ,Implicit Rule Search Algorithm}, is appended (after
 expansion) to all the patterns in the prerequisites list.  As an
-example:
+example:@refill
 
 @example
 .SECONDEXPANSION:
@@ -1641,12 +1731,14 @@ example:
 /tmp/foo.o:
 
 %.o: $$(addsuffix /%.c,foo bar) foo.h
+        @@echo $^
 @end example
 
-The prerequisite list after the secondary expansion and directory
-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.
+The prerequisite list printed, after the secondary expansion and
+directory prefix reconstruction, will be @file{/tmp/foo/foo.c
+/tmp/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, Recipes, Makefiles, Top
 @chapter Writing Rules
@@ -1684,7 +1776,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 recipes
+* 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
@@ -1921,7 +2013,7 @@ specific file whose name consists of @samp{foo}, an asterisk, and
 @samp{bar}.@refill
 
 @menu
-* Wildcard Examples::           Several examples
+* Wildcard Examples::           Several examples.
 * Wildcard Pitfall::            Problems to avoid.
 * Wildcard Function::           How to cause wildcard expansion where
                                   it does not normally take place.
@@ -2119,7 +2211,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.
-* Recipes/Search::             How to write recipes 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.
@@ -2455,7 +2547,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 each library filename.
+searches using each library file name.
 
 The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a},
 which provides the default behavior described above.
@@ -2528,8 +2620,8 @@ Another example of the usefulness of phony targets is in conjunction
 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 recipe is a shell loop over the subdirectories, like this:
+sub-directories to be built.  One way to handle this is with one rule
+whose recipe is a shell loop over the sub-directories, like this:
 
 @example
 @group
@@ -2543,7 +2635,7 @@ subdirs:
 @end example
 
 There are problems with this method, however.  First, any error
-detected in a submake is ignored by this rule, so it will continue
+detected in a sub-make 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}
@@ -2552,8 +2644,8 @@ 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)
+By declaring the sub-directories as phony targets (you must do this as
+the sub-directory obviously always exists; otherwise it won't be built)
 you can remove these problems:
 
 @example
@@ -2571,8 +2663,8 @@ foo: baz
 @end group
 @end example
 
-Here we've also declared that the @file{foo} subdirectory cannot be
-built until after the @file{baz} subdirectory is complete; this kind of
+Here we've also declared that the @file{foo} sub-directory cannot be
+built until after the @file{baz} sub-directory is complete; this kind of
 relationship declaration is particularly important when attempting
 parallel builds.
 
@@ -2816,7 +2908,7 @@ 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.
+explicitly set a file's time stamp must discard its sub-second 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
@@ -2830,7 +2922,7 @@ dst: src
 @end group
 @end example
 
-Since @samp{cp -p} discards the subsecond part of @file{src}'s time
+Since @samp{cp -p} discards the sub-second part of @file{src}'s time
 stamp, @file{dst} is typically slightly older than @file{src} even when
 it is up to date.  The @code{.LOW_RESOLUTION_TIME} line causes
 @command{make} to consider @file{dst} to be up to date if its time stamp
@@ -3132,7 +3224,7 @@ of the target; see @ref{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, only some of
 which will match the pattern, you can use the @code{filter} function to
-remove nonmatching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
+remove non-matching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
 
 @example
 files = foo.elc bar.o lose.o
@@ -3286,10 +3378,11 @@ main.o : main.c defs.h
 Thus you no longer have to write all those rules yourself.
 The compiler will do it for you.
 
-Note that such a prerequisite constitutes mentioning @file{main.o} in a
-makefile, so it can never be considered an intermediate file by implicit
-rule search.  This means that @code{make} won't ever remove the file
-after using it; @pxref{Chained Rules, ,Chains of Implicit Rules}.
+Note that such a rule constitutes mentioning @file{main.o} in a
+makefile, so it can never be considered an intermediate file by
+implicit rule search.  This means that @code{make} won't ever remove
+the file after using it; @pxref{Chained Rules, ,Chains of Implicit
+Rules}.
 
 @cindex @code{make depend}
 With old @code{make} programs, it was traditional practice to use this
@@ -3334,7 +3427,7 @@ nonzero status).
 With the GNU C compiler, you may wish to use the @samp{-MM} flag instead
 of @samp{-M}.  This omits prerequisites on system header files.
 @xref{Preprocessor Options, , Options Controlling the Preprocessor,
-gcc.info, Using GNU CC}, for details.
+gcc, Using GNU CC}, for details.
 
 @cindex @code{sed} (shell command)
 The purpose of the @code{sed} command is to translate (for example):
@@ -3463,11 +3556,11 @@ line, will be considered part of a recipe and be passed to the shell.
 @end itemize
 
 @menu
-* Splitting Lines::             Breaking long recipe lines for readability.
+* Splitting Recipe Lines::      Breaking long recipe lines for readability.
 * Variables in Recipes::        Using @code{make} variables in recipes.
 @end menu
 
-@node Splitting Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax
+@node Splitting Recipe Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax
 @subsection Splitting Recipe Lines
 @cindex recipes, splitting
 @cindex splitting recipes
@@ -3486,13 +3579,14 @@ 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
-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 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.
+makefile (@pxref{Splitting Lines, , Splitting Long Lines}),
+backslash/newline pairs are @emph{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 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, the recipe for the all target in this makefile:
 
@@ -3563,14 +3657,14 @@ 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.
+you don't want the backslash/newline to appear in the quoted content.
 This is often the case when passing scripts to languages such as Perl,
 where extraneous backslashes inside the script can change its meaning
 or even be a syntax error.  One simple way of handling this is to
 place the quoted string, or even the entire command, into a
 @code{make} variable then use the variable in the 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
+the backslash/newline will be removed.  If we rewrite our example
 above using this method:
 
 @example
@@ -3596,7 +3690,7 @@ If you like, you can also use target-specific variables
 a tighter correspondence between the variable and the recipe that
 uses it.
 
-@node Variables in Recipes,  , Splitting Lines, Recipe Syntax
+@node Variables in Recipes,  , Splitting Recipe Lines, Recipe Syntax
 @subsection Using Variables in Recipes
 @cindex variable references in recipes
 @cindex recipes, using variables in
@@ -3699,7 +3793,7 @@ started with @samp{@@}.  A rule in the makefile for the special target
 @vindex @code{SHELL} @r{(recipe execution)}
 
 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,
+executed by invoking a new sub-shell 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.)
@@ -3730,7 +3824,7 @@ 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
+* One Shell::                   One shell for all lines in a recipe.
 * Choosing the Shell::          How @code{make} chooses the shell used
                                   to run recipes.
 @end menu
@@ -3969,44 +4063,16 @@ 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 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 recipe tries to take input
-from the terminal at once, @code{make} will invalidate the standard
-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 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 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 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 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}}.
+Handling recursive @code{make} invocations raises issues for parallel
+execution.  For more information on this, see @ref{Options/Recursion,
+,Communicating Options to a Sub-@code{make}}.
 
 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
+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
 terminates for any reason (including a signal) with child processes
 running, it waits for them to finish before actually exiting.@refill
 
@@ -4039,6 +4105,135 @@ average goes below that limit, or until all the other jobs finish.
 
 By default, there is no load limit.
 
+@menu
+* Parallel Output::             Handling output during parallel execution
+* Parallel Input::              Handling input during parallel execution
+@end menu
+
+@node Parallel Output, Parallel Input, Parallel, Parallel
+@subsection Output During Parallel Execution
+@cindex output during parallel execution
+@cindex parallel execution, output during
+
+When running several recipes in parallel the output from each
+recipe appears as soon as it is generated, with the result that
+messages from different recipes may be interspersed, sometimes even
+appearing on the same line.  This can make reading the output very
+difficult.
+
+@cindex @code{--output-sync}
+@cindex @code{-O}
+To avoid this you can use the @samp{--output-sync} (@samp{-O}) option.
+This option instructs @code{make} to save the output from the commands
+it invokes and print it all once the commands are completed.
+Additionally, if there are multiple recursive @code{make} invocations
+running in parallel, they will communicate so that only one of them is
+generating output at a time.
+
+If working directory printing is enabled (@pxref{-w Option, ,The
+@samp{--print-directory} Option}), the enter/leave messages are
+printed around each output grouping.  If you prefer not to see these
+messages add the @samp{--no-print-directory} option to @code{MAKEFLAGS}.
+
+There are four levels of granularity when synchronizing output,
+specified by giving an argument to the option (e.g.,  @samp{-Oline} or
+@samp{--output-sync=recurse}).
+
+@table @code
+@item none
+This is the default: all output is sent directly as it is generated and
+no synchronization is performed.
+
+@item line
+Output from each individual line of the recipe is grouped and printed
+as soon as that line is complete.  If a recipe consists of multiple
+lines, they may be interspersed with lines from other recipes.
+
+@item target
+Output from the entire recipe for each target is grouped and printed
+once the target is complete.  This is the default if the
+@code{--output-sync} or @code{-O} option is given with no argument.
+
+@item recurse
+Output from each recursive invocation of @code{make} is grouped and
+printed once the recursive invocation is complete.
+
+@end table
+
+Regardless of the mode chosen, the total build time will be the same.
+The only difference is in how the output appears.
+
+The @samp{target} and @samp{recurse} modes both collect the output of
+the entire recipe of a target and display it uninterrupted when the
+recipe completes.  The difference between them is in how recipes that
+contain recursive invocations of @code{make} are treated
+(@pxref{Recursion, ,Recursive Use of @code{make}}).  For all recipes
+which have no recursive lines, the @samp{target} and @samp{recurse}
+modes behave identically.
+
+If the @samp{recurse} mode is chosen, recipes that contain recursive
+@code{make} invocations are treated the same as other targets: the
+output from the recipe, including the output from the recursive
+@code{make}, is saved and printed after the entire recipe is complete.
+This ensures output from all the targets built by a given recursive
+@code{make} instance are grouped together, which may make the output
+easier to understand.  However it also leads to long periods of time
+during the build where no output is seen, followed by large bursts of
+output.  If you are not watching the build as it proceeds, but instead
+viewing a log of the build after the fact, this may be the best option
+for you.
+
+If you are watching the output, the long gaps of quiet during the
+build can be frustrating.  The @samp{target} output synchronization
+mode detects when @code{make} is going to be invoked recursively,
+using the standard methods, and it will not synchronize the output of
+those lines.  The recursive @code{make} will perform the
+synchronization for its targets and the output from each will be
+displayed immediately when it completes.  Be aware that output from
+recursive lines of the recipe are not synchronized (for example if
+the recursive line prints a message before running @code{make}, that
+message will not be synchronized).
+
+The @samp{line} mode can be useful for front-ends that are watching
+the output of @code{make} to track when recipes are started and
+completed.
+
+Some programs invoked by @code{make} may behave differently if they
+determine they're writing output to a terminal versus a file (often
+described as ``interactive'' vs. ``non-interactive'' modes).  For
+example, many programs that can display colorized output will not do
+so if they determine they are not writing to a terminal.  If your
+makefile invokes a program like this then using the output
+synchronization options will cause the program to believe it's running
+in ``non-interactive'' mode even though the output will ultimately go
+to the terminal.
+
+@node Parallel Input,  , Parallel Output, Parallel
+@subsection Input During Parallel Execution
+@cindex input during parallel execution
+@cindex parallel execution, input during
+@cindex standard input
+
+Two processes cannot both take input from the same device at the same
+time.  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 recipe.  If another recipe attempts to
+read from standard input it will usually incur a fatal error (a
+@samp{Broken pipe} signal).
+@cindex broken pipe
+
+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 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 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 recipes.
+
 @node Errors, Interrupts, Parallel, Recipes
 @section Errors in Recipes
 @cindex errors (in recipes)
@@ -4178,9 +4373,9 @@ times to prevent other sorts of trouble.
 Recursive use of @code{make} means using @code{make} as a command in a
 makefile.  This technique is useful when you want separate makefiles for
 various subsystems that compose a larger system.  For example, suppose you
-have a subdirectory @file{subdir} which has its own makefile, and you would
+have a sub-directory @file{subdir} which has its own makefile, and you would
 like the containing directory's makefile to run @code{make} on the
-subdirectory.  You can do it by writing this:
+sub-directory.  You can do it by writing this:
 
 @example
 subsystem:
@@ -4292,10 +4487,10 @@ recipes, is propagated to the subsystem.@refill
 
 Variable values of the top-level @code{make} can be passed to the
 sub-@code{make} through the environment by explicit request.  These
-variables are defined in the sub-@code{make} as defaults, but do not
-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
+variables are defined in the sub-@code{make} as defaults, but they do
+not override variables defined in the makefile used by
+the sub-@code{make} 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 line of the
@@ -4555,7 +4750,7 @@ fixed limit on the size of the environment, and putting so much
 information into the value of @code{MAKEFLAGS} can exceed it.  If you
 see the error message @samp{Arg list too long}, this may be the problem.
 @findex .POSIX
-@cindex POSIX.2
+@cindex POSIX
 (For strict compliance with POSIX.2, changing @code{MAKEOVERRIDES} does
 not affect @code{MAKEFLAGS} if the special target @samp{.POSIX} appears
 in the makefile.  You probably do not care about this.)
@@ -4608,6 +4803,23 @@ itself.  For instance, the @samp{-t}, @samp{-n}, and @samp{-q} options, if
 put in one of these variables, could have disastrous consequences and would
 certainly have at least surprising and probably annoying effects.@refill
 
+If you'd like to run other implementations of @code{make} in addition
+to GNU @code{make}, and hence do not want to add GNU
+@code{make}-specific flags to the @code{MAKEFLAGS} variable, you can
+add them to the @code{GNUMAKEFLAGS} variable instead.  This variable
+is parsed just before @code{MAKEFLAGS}, in the same way as
+@code{MAKEFLAGS}.  When @code{make} constructs @code{MAKEFLAGS} to
+pass to a recursive @code{make} it will include all flags, even those
+taken from @code{GNUMAKEFLAGS}.  As a result, after parsing
+@code{GNUMAKEFLAGS} GNU @code{make} sets this variable to the empty
+string to avoid duplicating flags during recursion.
+
+It's best to use @code{GNUMAKEFLAGS} only with flags which won't
+materially change the behavior of your makefiles.  If your makefiles
+require GNU make anyway then simply use @code{MAKEFLAGS}.  Flags such
+as @samp{--no-print-directory} or @samp{--output-sync} may be
+appropriate for @code{GNUMAKEFLAGS}.
+
 @node -w Option,  , Options/Recursion, Recursion
 @subsection The @samp{--print-directory} Option
 @cindex directories, printing them
@@ -4716,7 +4928,7 @@ commands based on the file names involved
 @cindex +, and @code{define}
 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
+particular, @code{make} invokes a separate sub-shell 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{Recipes, ,Writing Recipes in Rules}.
@@ -4810,13 +5022,15 @@ Variables can represent lists of file names, options to pass to compilers,
 programs to run, directories to look in for source files, directories to
 write output in, or anything else you can imagine.
 
-A variable name may be any sequence of characters not containing @samp{:},
-@samp{#}, @samp{=}, or leading or trailing whitespace.  However,
-variable names containing characters other than letters, numbers, and
-underscores should be avoided, as they may be given special meanings in the
-future, and with some shells they cannot be passed through the environment to a
-sub-@code{make}
-(@pxref{Variables/Recursion, ,Communicating Variables to a Sub-@code{make}}).
+A variable name may be any sequence of characters not containing
+@samp{:}, @samp{#}, @samp{=}, or whitespace.  However, variable names
+containing characters other than letters, numbers, and underscores
+should be considered carefully, as in some shells they cannot be
+passed through the environment to a sub-@code{make}
+(@pxref{Variables/Recursion, ,Communicating Variables to a
+Sub-@code{make}}).  Variable names beginning with @samp{.} and an
+uppercase letter may be given special meaning in future versions of
+@code{make}.
 
 Variable names are case-sensitive.  The names @samp{foo}, @samp{FOO},
 and @samp{Foo} all refer to different variables.
@@ -4940,9 +5154,9 @@ all:;echo $(foo)
 will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which
 expands to @samp{$(ugh)} which finally expands to @samp{Huh?}.@refill
 
-This flavor of variable is the only sort supported by other versions of
-@code{make}.  It has its advantages and its disadvantages.  An advantage
-(most would say) is that:
+This flavor of variable is the only sort supported by most other
+versions of @code{make}.  It has its advantages and its disadvantages.
+An advantage (most would say) is that:
 
 @example
 CFLAGS = $(include_dirs) -O
@@ -4978,8 +5192,14 @@ variables, there is another flavor: simply expanded variables.
 @cindex simply expanded variables
 @cindex variables, simply expanded
 @cindex :=
+@cindex ::=
 @dfn{Simply expanded variables} are defined by lines using @samp{:=}
-(@pxref{Setting, ,Setting Variables}).
+or @samp{::=} (@pxref{Setting, ,Setting Variables}).  Both forms are
+equivalent in GNU @code{make}; however only the @samp{::=} form is
+described by the POSIX standard (support for @samp{::=} was added to
+the POSIX standard in 2012, so older versions of @code{make} won't
+accept this form either).
+
 The value of a simply expanded variable is scanned
 once and for all, expanding any references to other variables and
 functions, when the variable is defined.  The actual value of the simply
@@ -5219,7 +5439,7 @@ expands to @samp{$(y)} which in turn expands to @samp{z}; now we have
 @samp{$(z)}, which becomes @samp{u}.
 
 References to recursively-expanded variables within a variable name are
-reexpanded in the usual fashion.  For example:
+re-expanded in the usual fashion.  For example:
 
 @example
 x = $(y)
@@ -5398,11 +5618,14 @@ Several variables have constant initial values.
 @cindex variables, setting
 @cindex =
 @cindex :=
+@cindex ::=
 @cindex ?=
+@cindex !=
 
 To set a variable from the makefile, write a line starting with the
-variable name followed by @samp{=} or @samp{:=}.  Whatever follows the
-@samp{=} or @samp{:=} on the line becomes the value.  For example,
+variable name followed by @samp{=} @samp{:=}, or @samp{::=}.  Whatever
+follows the @samp{=}, @samp{:=}, or @samp{::=} on the line becomes the
+value.  For example,
 
 @example
 objects = main.o foo.o bar.o utils.o
@@ -5412,20 +5635,19 @@ objects = main.o foo.o bar.o utils.o
 defines a variable named @code{objects}.  Whitespace around the variable
 name and immediately after the @samp{=} is ignored.
 
-Variables defined with @samp{=} are @dfn{recursively expanded} variables.
-Variables defined with @samp{:=} are @dfn{simply expanded} variables; these
-definitions can contain variable references which will be expanded before
-the definition is made.  @xref{Flavors, ,The Two Flavors of Variables}.
+Variables defined with @samp{=} are @dfn{recursively expanded}
+variables.  Variables defined with @samp{:=} or @samp{::=} are
+@dfn{simply expanded} variables; these definitions can contain
+variable references which will be expanded before the definition is
+made.  @xref{Flavors, ,The Two Flavors of Variables}.
 
 The variable name may contain function and variable references, which
 are expanded when the line is read to find the actual variable name to use.
 
 There is no limit on the length of the value of a variable except the
-amount of swapping space on the computer.  When a variable definition is
-long, it is a good idea to break it into several lines by inserting
-backslash-newline at convenient places in the definition.  This will not
-affect the functioning of @code{make}, but it will make the makefile easier
-to read.
+amount of memory on the computer.  You can split the value of a
+variable into multiple physical lines for readability
+(@pxref{Splitting Lines, ,Splitting Long Lines}).
 
 Most variable names are considered to have the empty string as a value if
 you have never set them.  Several variables have built-in initial values
@@ -5453,6 +5675,33 @@ FOO = bar
 endif
 @end example
 
+The shell assignment operator @samp{!=} can be used to execute a
+program and set a variable to its output.  This operator first
+evaluates the right-hand side, then passes that result to the shell
+for execution.  If the result of the execution ends in a newline, that
+one newline is removed; all other newlines are replaced by spaces.
+The resulting string is then placed into the named
+recursively-expanded variable.  For example:
+
+@example
+hash != printf '\043'
+file_list != find . -name '*.c'
+@end example
+
+If the result of the execution could produce a @code{$}, and you don't
+intend what follows that to be interpreted as a make variable or
+function reference, then you must replace every @code{$} with
+@code{$$} as part of the execution.  Alternatively, you can set a
+simply expanded variable to the result of running a program using the
+@code{shell} function call.  @xref{Shell Function, , The @code{shell}
+Function}.  For example:
+
+@example
+hash := $(shell printf '\043')
+var := $(shell find . -name "*.c")
+@end example
+
+
 @node Appending, Override Directive, Setting, Using Variables
 @section Appending More Text to Variables
 @cindex +=
@@ -5497,12 +5746,12 @@ explanation of the two flavors of variables.
 
 When you add to a variable's value with @samp{+=}, @code{make} acts
 essentially as if you had included the extra text in the initial
-definition of the variable.  If you defined it first with @samp{:=},
-making it a simply-expanded variable, @samp{+=} adds to that
-simply-expanded definition, and expands the new text before appending it
-to the old value just as @samp{:=} does
-(see @ref{Setting, ,Setting Variables}, for a full explanation of @samp{:=}).
-In fact,
+definition of the variable.  If you defined it first with @samp{:=} or
+@samp{::=}, making it a simply-expanded variable, @samp{+=} adds to
+that simply-expanded definition, and expands the new text before
+appending it to the old value just as @samp{:=} does (see
+@ref{Setting, ,Setting Variables}, for a full explanation of
+@samp{:=} or @samp{::=}).  In fact,
 
 @example
 variable := value
@@ -5716,7 +5965,7 @@ two-lines = echo foo; echo $(bar)
 @noindent
 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
+@code{make} will invoke the shell twice, running an independent sub-shell
 for each line.  @xref{Execution, ,Recipe Execution}.
 
 If you want variable definitions made with @code{define} to take
@@ -5842,13 +6091,13 @@ 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
-conditional (@samp{?=}).  All variables that appear within the
-@var{variable-assignment} are evaluated within the context of the
-target: thus, any previously-defined target-specific variable values
-will be in effect.  Note that this variable is actually distinct from
-any ``global'' value: the two variables do not have to have the same
-flavor (recursive vs.@: static).
+recursive (@samp{=}), simple (@samp{:=} or @samp{::=}), appending
+(@samp{+=}), or conditional (@samp{?=}).  All variables that appear
+within the @var{variable-assignment} are evaluated within the context
+of the target: thus, any previously-defined target-specific variable
+values will be in effect.  Note that this variable is actually
+distinct from any ``global'' value: the two variables do not have to
+have the same flavor (recursive vs.@: simple).
 
 Target-specific variables have the same priority as any other makefile
 variable.  Variables provided on the command line (and in the
@@ -5973,7 +6222,7 @@ prog: a.o b.o
 
 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.
+@code{prog} target.
 
 @node Special Variables,  , Suppressing Inheritance, Using Variables
 @comment  node-name,  next,  previous,  up
@@ -6069,7 +6318,7 @@ foo
 @end example
 
 Note that assigning more than one target name to @code{.DEFAULT_GOAL} is
-illegal and will result in an error.
+invalid and will result in an error.
 
 @vindex MAKE_RESTARTS @r{(number of times @code{make} has restarted)}
 @item MAKE_RESTARTS
@@ -6120,12 +6369,12 @@ value.
 @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:
+@code{make}.  Possible values include, but are not limited to:
 
 @table @samp
 
 @item archives
-Supports @code{ar} (archive) files using special filename syntax.
+Supports @code{ar} (archive) files using special file name syntax.
 @xref{Archives, ,Using @code{make} to Update Archive Files}.
 
 @item check-symlink
@@ -6140,17 +6389,36 @@ Syntax, ,Syntax of Conditionals}.
 Supports ``job server'' enhanced parallel builds.  @xref{Parallel,
 ,Parallel Execution}.
 
-@item second-expansion
-Supports secondary expansion of prerequisite lists.
+@item oneshell
+Supports the @code{.ONESHELL} special target.  @xref{One Shell, ,Using
+One Shell}.
 
 @item order-only
 Supports order-only prerequisites.  @xref{Prerequisite Types, ,Types
 of Prerequisites}.
 
+@item second-expansion
+Supports secondary expansion of prerequisite lists.
+
+@item shortest-stem
+Uses the ``shortest stem'' method of choosing which pattern, of
+multiple applicable options, will be used.  @xref{Pattern Match, ,How
+Patterns Match}.
+
 @item target-specific
 Supports target-specific and pattern-specific variable assignments.
 @xref{Target-specific, ,Target-specific Variable Values}.
 
+@item undefine
+Supports the @code{undefine} directive.  @xref{Undefine Directive}.
+
+@item guile
+Has GNU Guile available as an embedded extension language.
+@xref{Guile Integration, ,GNU Guile Integration}.
+
+@item load
+Supports dynamically loadable objects for creating custom extensions.
+@xref{Loading Objects, ,Loading Dynamic Objects}.
 @end table
 
 @vindex .INCLUDE_DIRS @r{(list of include directories)}
@@ -6291,12 +6559,12 @@ endif
 or:
 
 @example
-@var{conditional-directive}
+@var{conditional-directive-one}
 @var{text-if-one-is-true}
-else @var{conditional-directive}
-@var{text-if-true}
+else @var{conditional-directive-two}
+@var{text-if-two-is-true}
 else
-@var{text-if-false}
+@var{text-if-one-and-two-are-false}
 endif
 @end example
 
@@ -6492,13 +6760,15 @@ be substituted.
 * File Name Functions::         Functions for manipulating file names.
 * Conditional Functions::       Functions that implement conditions.
 * Foreach Function::            Repeat some text with controlled variation.
+* File Function::               Write text to a file.
 * Call Function::               Expand a user-defined function.
 * Value Function::              Return the un-expanded value of a variable.
 * Eval Function::               Evaluate the arguments as makefile syntax.
 * Origin Function::             Find where a variable got its value.
 * Flavor Function::             Find out the flavor of a variable.
-* Shell Function::              Substitute the output of a shell command.
 * Make Control Functions::      Functions that control how make runs.
+* Shell Function::              Substitute the output of a shell command.
+* Guile Function::              Use GNU Guile embedded scripting language.
 @end menu
 
 @node Syntax of Functions, Text Functions, Functions, Functions
@@ -6508,7 +6778,9 @@ be substituted.
 @cindex arguments of functions
 @cindex functions, syntax of
 
-A function call resembles a variable reference.  It looks like this:
+A function call resembles a variable reference.  It can appear
+anywhere a variable reference can appear, and it is expanded using the
+same rules as variable references.  A function call looks like this:
 
 @example
 $(@var{function} @var{arguments})
@@ -6523,7 +6795,7 @@ $@{@var{function} @var{arguments}@}
 
 Here @var{function} is a function name; one of a short list of names
 that are part of @code{make}.  You can also essentially create your own
-functions by using the @code{call} builtin function.
+functions by using the @code{call} built-in function.
 
 The @var{arguments} are the arguments of the function.  They are
 separated from the function name by one or more spaces or tabs, and if
@@ -7140,7 +7412,7 @@ the result of the expansion is the expansion of the last argument.
 
 @end table
 
-@node Foreach Function, Call Function, Conditional Functions, Functions
+@node Foreach Function, File Function, Conditional Functions, Functions
 @section The @code{foreach} Function
 @findex foreach
 @cindex words, iterating over
@@ -7202,7 +7474,7 @@ files := $(foreach dir,$(dirs),$(find_files))
 @noindent
 Here we use the variable @code{find_files} this way.  We use plain @samp{=}
 to define a recursively-expanding variable, so that its value contains an
-actual function call to be reexpanded under the control of @code{foreach};
+actual function call to be re-expanded under the control of @code{foreach};
 a simply-expanded variable would not do, since @code{wildcard} would be
 called only once at the time of defining @code{find_files}.
 
@@ -7220,15 +7492,77 @@ variable names because many strange things are valid variable names, but
 are probably not what you intended.  For example,
 
 @smallexample
-files := $(foreach Esta escrito en espanol!,b c ch,$(find_files))
+files := $(foreach Esta-escrito-en-espanol!,b c ch,$(find_files))
 @end smallexample
 
 @noindent
 might be useful if the value of @code{find_files} references the variable
-whose name is @samp{Esta escrito en espanol!} (es un nombre bastante largo,
+whose name is @samp{Esta-escrito-en-espanol!} (es un nombre bastante largo,
 no?), but it is more likely to be a mistake.
 
-@node Call Function, Value Function, Foreach Function, Functions
+@node File Function, Call Function, Foreach Function, Functions
+@section The @code{file} Function
+@findex file
+@cindex writing to a file
+@cindex file, writing to
+
+The @code{file} function allows the makefile to write to a file.  Two
+modes of writing are supported: overwrite, where the text is written
+to the beginning of the file and any existing content is lost, and
+append, where the text is written to the end of the file, preserving
+the existing content.  In all cases the file is created if it does not
+exist.
+
+The syntax of the @code{file} function is:
+
+@example
+$(file @var{op} @var{filename},@var{text})
+@end example
+
+The operator @var{op} can be either @code{>} which indicates overwrite
+mode, or @code{>>} which indicates append mode.  The @var{filename}
+indicates the file to be written to.  There may optionally be
+whitespace between the operator and the file name.
+
+When the @code{file} function is expanded all its arguments are
+expanded first, then the file indicated by @var{filename} will be
+opened in the mode described by @var{op}.  Finally @var{text} will be
+written to the file.  If @var{text} does not already end in a newline,
+a final newline will be written.  The result of evaluating the
+@code{file} function is always the empty string.
+
+It is a fatal error if the file cannot be opened for writing, or if
+the write operation fails.
+
+For example, the @code{file} function can be useful if your build
+system has a limited command line size and your recipe runs a command
+that can accept arguments from a file as well.  Many commands use the
+convention that an argument prefixed with an @code{@@} specifies a
+file containing more arguments.  Then you might write your recipe in
+this way:
+
+@example
+@group
+program: $(OBJECTS)
+        $(file >$@@.in,$^)
+        $(CMD) $(CMDFLAGS) @@$@@.in
+        @@rm $@@.in
+@end group
+@end example
+
+If the command required each argument to be on a separate line of the
+input file, you might write your recipe like this:
+
+@example
+@group
+program: $(OBJECTS)
+        $(file >$@@.in,) $(foreach O,$^,$(file >>$@@.in,$O))
+        $(CMD) $(CMDFLAGS) @@$@@.in
+        @@rm $@@.in
+@end group
+@end example
+
+@node Call Function, Value Function, File Function, Functions
 @section The @code{call} Function
 @findex call
 @cindex functions, user defined
@@ -7262,13 +7596,13 @@ a @samp{$} or parentheses when writing it.  (You can, however, use a
 variable reference in the name if you want the name not to be a
 constant.)
 
-If @var{variable} is the name of a builtin function, the builtin function
+If @var{variable} is the name of a built-in function, the built-in function
 is always invoked (even if a @code{make} variable by that name also
 exists).
 
 The @code{call} function expands the @var{param} arguments before
 assigning them to temporary variables.  This means that @var{variable}
-values containing references to builtin functions that have special
+values containing references to built-in functions that have special
 expansion rules, like @code{foreach} or @code{if}, may not work as you
 expect.
 
@@ -7340,7 +7674,7 @@ The syntax of the @code{value} function is:
 $(value @var{variable})
 @end example
 
-Note that @var{variable} is the @emph{name} of a variable; not a
+Note that @var{variable} is the @emph{name} of a variable, not a
 @emph{reference} to that variable.  Therefore you would not normally
 use a @samp{$} or parentheses when writing it.  (You can, however, use
 a variable reference in the name if you want the name not to be a
@@ -7451,7 +7785,7 @@ The syntax of the @code{origin} function is:
 $(origin @var{variable})
 @end example
 
-Note that @var{variable} is the @emph{name} of a variable to inquire about;
+Note that @var{variable} is the @emph{name} of a variable to inquire about,
 not a @emph{reference} to that variable.  Therefore you would not normally
 use a @samp{$} or parentheses when writing it.  (You can, however, use a
 variable reference in the name if you want the name not to be a constant.)
@@ -7544,17 +7878,16 @@ Here the redefinition takes place if @samp{$(origin bletch)} returns either
 @samp{environment} or @samp{environment override}.
 @xref{Text Functions, , Functions for String Substitution and Analysis}.
 
-@node Flavor Function, Shell Function, Origin Function, Functions
+@node Flavor Function, Make Control Functions, Origin Function, Functions
 @section The @code{flavor} Function
 @findex flavor
 @cindex variables, flavor of
 @cindex flavor of variable
 
-The @code{flavor} function is unlike most other functions (and like
-@code{origin} function) in that it does not operate on the values of
-variables; it tells you something @emph{about} a variable.
-Specifically, it tells you the flavor of a variable (@pxref{Flavors,
-,The Two Flavors of Variables}).
+The @code{flavor} function, like the @code{origin} function, does not
+operate on the values of variables but rather it tells you something
+@emph{about} a variable.  Specifically, it tells you the flavor of a
+variable (@pxref{Flavors, ,The Two Flavors of Variables}).
 
 The syntax of the @code{flavor} function is:
 
@@ -7562,7 +7895,7 @@ The syntax of the @code{flavor} function is:
 $(flavor @var{variable})
 @end example
 
-Note that @var{variable} is the @emph{name} of a variable to inquire about;
+Note that @var{variable} is the @emph{name} of a variable to inquire about,
 not a @emph{reference} to that variable.  Therefore you would not normally
 use a @samp{$} or parentheses when writing it.  (You can, however, use a
 variable reference in the name if you want the name not to be a constant.)
@@ -7585,56 +7918,7 @@ if @var{variable} is a simply expanded variable.
 
 @end table
 
-
-@node Shell Function, Make Control Functions, Flavor Function, Functions
-@section The @code{shell} Function
-@findex shell
-@cindex command expansion
-@cindex backquotes
-@cindex shell command, function for
-
-The @code{shell} function is unlike any other function other than the
-@code{wildcard} function
-(@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it
-communicates with the world outside of @code{make}.
-
-The @code{shell} function performs the same function that backquotes
-(@samp{`}) perform in most shells: it does @dfn{command expansion}.
-This means that it takes as an argument a shell command and evaluates
-to the output of the command.  The only processing @code{make} does on
-the result is to convert each newline (or carriage-return / newline
-pair) to a single space.  If there is a trailing (carriage-return
-and) newline it will simply be removed.@refill
-
-The commands run by calls to the @code{shell} function are run when the
-function calls are expanded (@pxref{Reading Makefiles, , How
-@code{make} Reads a Makefile}).  Because this function involves
-spawning a new shell, you should carefully consider the performance
-implications of using the @code{shell} function within recursively
-expanded variables vs.@: simply expanded variables (@pxref{Flavors, ,The
-Two Flavors of Variables}).
-
-Here are some examples of the use of the @code{shell} function:
-
-@example
-contents := $(shell cat foo)
-@end example
-
-@noindent
-sets @code{contents} to the contents of the file @file{foo}, with a space
-(rather than a newline) separating each line.
-
-@example
-files := $(shell echo *.c)
-@end example
-
-@noindent
-sets @code{files} to the expansion of @samp{*.c}.  Unless @code{make} is
-using a very strange shell, this has the same result as
-@w{@samp{$(wildcard *.c)}} (as long as at least one @samp{.c} file
-exists).@refill
-
-@node Make Control Functions,  , Shell Function, Functions
+@node Make Control Functions, Shell Function, Flavor Function, Functions
 @section Functions That Control Make
 @cindex functions, for controlling make
 @cindex controlling make
@@ -7696,6 +7980,71 @@ to standard output.  No makefile name or line number is added.  The
 result of the expansion of this function is the empty string.
 @end table
 
+@node Shell Function, Guile Function, Make Control Functions, Functions
+@section The @code{shell} Function
+@findex shell
+@cindex command expansion
+@cindex backquotes
+@cindex shell command, function for
+
+The @code{shell} function is unlike any other function other than the
+@code{wildcard} function
+(@pxref{Wildcard Function, ,The Function @code{wildcard}}) in that it
+communicates with the world outside of @code{make}.
+
+The @code{shell} function performs the same function that backquotes
+(@samp{`}) perform in most shells: it does @dfn{command expansion}.
+This means that it takes as an argument a shell command and evaluates
+to the output of the command.  The only processing @code{make} does on
+the result is to convert each newline (or carriage-return / newline
+pair) to a single space.  If there is a trailing (carriage-return
+and) newline it will simply be removed.@refill
+
+The commands run by calls to the @code{shell} function are run when the
+function calls are expanded (@pxref{Reading Makefiles, , How
+@code{make} Reads a Makefile}).  Because this function involves
+spawning a new shell, you should carefully consider the performance
+implications of using the @code{shell} function within recursively
+expanded variables vs.@: simply expanded variables (@pxref{Flavors, ,The
+Two Flavors of Variables}).
+
+Here are some examples of the use of the @code{shell} function:
+
+@example
+contents := $(shell cat foo)
+@end example
+
+@noindent
+sets @code{contents} to the contents of the file @file{foo}, with a space
+(rather than a newline) separating each line.
+
+@example
+files := $(shell echo *.c)
+@end example
+
+@noindent
+sets @code{files} to the expansion of @samp{*.c}.  Unless @code{make} is
+using a very strange shell, this has the same result as
+@w{@samp{$(wildcard *.c)}} (as long as at least one @samp{.c} file
+exists).@refill
+
+@node Guile Function,  , Shell Function, Functions
+@section The @code{guile} Function
+@findex guile
+@cindex Guile
+
+If GNU @code{make} is built with support for GNU Guile as an embedded
+extension language then the @code{guile} function will be available.
+The @code{guile} function takes one argument which is first expanded
+by @code{make} in the normal fashion, then passed to the GNU Guile
+evaluator.  The result of the evaluator is converted into a string and
+used as the expansion of the @code{guile} function in the makefile.
+See @ref{Guile Integration, ,GNU Guile Integration} for details on
+writing extensions to @code{make} in Guile.
+
+You can determine whether GNU Guile support is available by checking
+the @code{.FEATURES} variable for the word @var{guile}.
+
 @node Running, Implicit Rules, Functions, Top
 @chapter How to Run @code{make}
 
@@ -7918,9 +8267,12 @@ 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 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}).
+``No-op''.  Causes @code{make} to print the recipes that are needed to
+make the targets up to date, but not actually execute them.  Note that
+some recipes are still executed, even with this flag (@pxref{MAKE
+Variable, ,How the @code{MAKE} Variable Works}).  Also any recipes
+needed to update included makefiles are still executed
+(@pxref{Remaking Makefiles, ,How Makefiles Are Remade}).
 
 @item -t
 @itemx --touch
@@ -7929,9 +8281,10 @@ still executed, even with this flag (@pxref{MAKE Variable, ,How the @code{MAKE}
 @cindex target, touching
 @cindex @code{-t}
 
-``Touch''.  The activity is to mark the targets as up to date without
-actually changing them.  In other words, @code{make} pretends to compile
-the targets but does not really change their contents.
+``Touch''.  Marks targets as up to date without actually changing
+them.  In other words, @code{make} pretends to update the targets but
+does not really change their contents; instead only their modified
+times are updated.
 
 @item -q
 @itemx --question
@@ -7939,9 +8292,9 @@ the targets but does not really change their contents.
 @cindex @code{-q}
 @cindex question mode
 
-``Question''.  The activity is to find out silently whether the targets
-are up to date already; but execute no recipe in either case.  In other
-words, neither compilation nor output will occur.
+``Question''.  Silently check whether the targets are up to date, but
+do not execute recipes; the exit code shows whether any updates are
+needed.
 
 @item -W @var{file}
 @itemx --what-if=@var{file}
@@ -8115,10 +8468,10 @@ makefile works by changing the variables.
 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.
+variable; to make a simply-expanded variable, write @samp{:=} or
+@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
@@ -8242,13 +8595,17 @@ Prints messages describing the implicit rule searches for each target.
 This option also enables @samp{basic} messages.
 
 @item j (@i{jobs})
-Prints messages giving details on the invocation of specific subcommands.
+Prints messages giving details on the invocation of specific sub-commands.
 
 @item m (@i{makefile})
 By default, the above messages are not enabled while trying to remake
 the makefiles.  This option enables messages while rebuilding makefiles,
 too.  Note that the @samp{all} option does enable this option.  This
 option also enables @samp{basic} messages.
+
+@item n (@i{none})
+Disable all debugging currently enabled.  If additional debugging
+flags are encountered after this they will still take effect.
 @end table
 
 @item -e
@@ -8367,6 +8724,25 @@ prerequisites, and do not remake anything on account of changes in
 are ignored.  @xref{Avoiding Compilation, ,Avoiding Recompilation of
 Some Files}.@refill
 
+@item -O[@var{type}]
+@cindex @code{-O}
+@itemx --output-sync[=@var{type}]
+@cindex @code{--output-sync}
+@cindex output during parallel execution
+@cindex parallel execution, output during
+Ensure that the complete output from each recipe is printed in one
+uninterrupted sequence.  This option is only useful when using the
+@code{--jobs} option to run multiple recipes simultaneously
+(@pxref{Parallel, ,Parallel Execution})  Without this option output
+will be displayed as it is generated by the recipes.@refill
+
+With no type or the type @samp{target}, output from the entire recipe
+of each target is grouped together.  With the type @samp{line}, output
+from each line in the recipe is grouped together.  With the type
+@samp{recurse}, the output from an entire recursive make is grouped
+together.  With the type @samp{none}, no output synchronization is
+performed.  @xref{Parallel Output, ,Output During Parallel Execution}.
+
 @item -p
 @cindex @code{-p}
 @itemx --print-data-base
@@ -8379,7 +8755,7 @@ 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
+The data base output contains file name and line number information for
 recipe and variable definitions, so it can be a useful debugging tool
 in complex environments.
 
@@ -8454,6 +8830,14 @@ 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 --trace
+@cindex @code{--trace}
+Show tracing information for @code{make} execution.  Prints the entire
+recipe to be executed, even for recipes that are normally silent (due
+to @code{.SILENT} or @samp{@@}).  Also prints the makefile name and
+line number where the recipe was defined, and information on why the
+target is being rebuilt.
+
 @item -v
 @cindex @code{-v}
 @itemx --version
@@ -8472,7 +8856,7 @@ from complicated nests of recursive @code{make} commands.
 rarely need to specify this option since @samp{make} does it for you;
 see @ref{-w Option, ,The @samp{--print-directory} Option}.)
 
-@itemx --no-print-directory
+@item --no-print-directory
 @cindex @code{--no-print-directory}
 Disable printing of the working directory under @code{-w}.
 This option is useful when @code{-w} is turned on automatically,
@@ -8554,7 +8938,7 @@ retained for compatibility.
 * 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 recipes 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
@@ -8986,7 +9370,6 @@ can run @samp{make -p} in a directory with no makefiles.
 
 Here is a table of some of the more common variables used as names of
 programs in built-in rules:
-makefiles.
 
 @table @code
 @item AR
@@ -9141,7 +9524,16 @@ Extra flags to give to the SCCS @code{get} program.
 @item LDFLAGS
 @vindex LDFLAGS
 Extra flags to give to compilers when they are supposed to invoke the linker,
-@samp{ld}.
+@samp{ld}, such as @code{-L}.  Libraries (@code{-lfoo}) should be
+added to the @code{LDLIBS} variable instead.
+
+@item LDLIBS
+@vindex LDLIBS
+@vindex LOADLIBES
+Library flags or names given to compilers when they are supposed to
+invoke the linker, @samp{ld}.  @code{LOADLIBES} is a deprecated (but
+still supported) alternative to @code{LDLIBS}.  Non-library linker
+flags, such as @code{-L}, should go in the @code{LDFLAGS} variable.
 
 @item LFLAGS
 @vindex LFLAGS
@@ -9274,7 +9666,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
-                                  recipes 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
@@ -9374,7 +9766,7 @@ Here is a second built-in rule:
 
 @noindent
 defines a rule that can make any file @file{@var{x}} whatsoever from a
-corresponding file @file{@var{x},v} in the subdirectory @file{RCS}.  Since
+corresponding file @file{@var{x},v} in the sub-directory @file{RCS}.  Since
 the target is @samp{%}, this rule will apply to any file whatever, provided
 the appropriate prerequisite file exists.  The double colon makes the rule
 @dfn{terminal}, which means that its prerequisite may not be an intermediate
@@ -9747,7 +10139,7 @@ remade from any other files; therefore, @code{make} can save time by not
 looking for ways to remake them.@refill
 
 If you do not mark the match-anything rule as terminal, then it is
-nonterminal.  A nonterminal match-anything rule cannot apply to a file name
+non-terminal.  A non-terminal match-anything rule cannot apply to a file name
 that indicates a specific type of data.  A file name indicates a specific
 type of data if some non-match-anything implicit rule target matches it.
 
@@ -9755,18 +10147,18 @@ For example, the file name @file{foo.c} matches the target for the pattern
 rule @samp{%.c : %.y} (the rule to run Yacc).  Regardless of whether this
 rule is actually applicable (which happens only if there is a file
 @file{foo.y}), the fact that its target matches is enough to prevent
-consideration of any nonterminal match-anything rules for the file
+consideration of any non-terminal match-anything rules for the file
 @file{foo.c}.  Thus, @code{make} will not even consider trying to make
 @file{foo.c} as an executable file from @file{foo.c.o}, @file{foo.c.c},
 @file{foo.c.p}, etc.@refill
 
-The motivation for this constraint is that nonterminal match-anything
+The motivation for this constraint is that non-terminal match-anything
 rules are used for making files containing specific types of data (such as
 executable files) and a file name with a recognized suffix indicates some
 other specific type of data (such as a C source file).
 
 Special built-in dummy pattern rules are provided solely to recognize
-certain file names so that nonterminal match-anything rules will not be
+certain file names so that non-terminal match-anything rules will not be
 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
@@ -9986,7 +10378,7 @@ matched against @var{t}; otherwise, against @var{n}.
 
 @item
 If any rule in that list is @emph{not} a match-anything rule, then
-remove all nonterminal match-anything rules from the list.
+remove all non-terminal match-anything rules from the list.
 
 @item
 Remove from the list all rules with no recipe.
@@ -10055,11 +10447,11 @@ 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
+@node Archives, Extending make, Implicit Rules, Top
 @chapter Using @code{make} to Update Archive Files
 @cindex archive
 
-@dfn{Archive files} are files containing named subfiles called
+@dfn{Archive files} are files containing named sub-files called
 @dfn{members}; they are maintained with the program @code{ar} and their
 main use is as subroutine libraries for linking.
 
@@ -10282,7 +10674,648 @@ in the normal way (@pxref{Suffix Rules}).  Thus a double-suffix rule
 @w{@samp{.@var{x}.a}} produces two pattern rules: @samp{@w{(%.o):}
 @w{%.@var{x}}} and @samp{@w{%.a}: @w{%.@var{x}}}.@refill
 
-@node Features, Missing, Archives, Top
+@node Extending make, Features, Archives, Top
+@chapter Extending GNU @code{make}
+@cindex make extensions
+
+GNU @code{make} provides many advanced capabilities, including many
+useful functions.  However, it does not contain a complete programming
+language and so it has limitations.  Sometimes these limitations can be
+overcome through use of the @code{shell} function to invoke a separate
+program, although this can be inefficient.
+
+In cases where the built-in capabilities of GNU @code{make} are
+insufficient to your requirements there are two options for extending
+@code{make}.  On systems where it's provided, you can utilize GNU
+Guile as an embedded scripting language (@pxref{Guile Integration,,GNU
+Guile Integration}).  On systems which support dynamically loadable
+objects, you can write your own extension in any language (which can
+be compiled into such an object) and load it to provide extended
+capabilities (@pxref{load Directive, ,The @code{load} Directive}).
+
+@menu
+* Guile Integration::           Using Guile as an embedded scripting language.
+* Loading Objects::             Loading dynamic objects as extensions.
+@end menu
+
+@node Guile Integration, Loading Objects, Extending make, Extending make
+@section GNU Guile Integration
+@cindex Guile
+@cindex extensions, Guile
+
+GNU @code{make} may be built with support for GNU Guile as an embedded
+extension language.  Guile implements the Scheme language.  A review
+of GNU Guile and the Scheme language and its features is beyond the
+scope of this manual: see the documentation for GNU Guile and Scheme.
+
+You can determine if @code{make} contains support for Guile by
+examining the @code{.FEATURES} variable; it will contain the word
+@var{guile} if Guile support is available.
+
+The Guile integration provides one new @code{make} function: @code{guile}.
+The @code{guile} function takes one argument which is first expanded
+by @code{make} in the normal fashion, then passed to the GNU Guile
+evaluator.  The result of the evaluator is converted into a string and
+used as the expansion of the @code{guile} function in the makefile.
+
+In addition, GNU @code{make} exposes Guile procedures for use in Guile
+scripts.
+
+@menu
+* Guile Types::                 Converting Guile types to @code{make} strings.
+* Guile Interface::             Invoking @code{make} functions from Guile.
+* Guile Example::               Example using Guile in @code{make}.
+@end menu
+
+@node Guile Types, Guile Interface, Guile Integration, Guile Integration
+@subsection Conversion of Guile Types
+@cindex convert guile types
+@cindex guile, conversion of types
+@cindex types, conversion of
+
+There is only one ``data type'' in @code{make}: a string.  GNU Guile,
+on the other hand, provides a rich variety of different data types.
+An important aspect of the interface between @code{make} and GNU Guile
+is the conversion of Guile data types into @code{make} strings.
+
+This conversion is relevant in two places: when a makefile invokes the
+@code{guile} function to evaluate a Guile expression, the result of
+that evaluation must be converted into a make string so it can be
+further evaluated by @code{make}.  And secondly, when a Guile script
+invokes one of the procedures exported by @code{make} the argument
+provided to the procedure must be converted into a string.
+
+The conversion of Guile types into @code{make} strings is as below:
+
+@table @code
+@item #f
+False is converted into the empty string: in @code{make} conditionals
+the empty string is considered false.
+
+@item #t
+True is converted to the string @samp{#t}: in @code{make} conditionals
+any non-empty string is considered true.
+
+@item symbol
+@item number
+A symbol or number is converted into the string representation of that
+symbol or number.
+
+@item character
+A printable character is converted to the same character.
+
+@item string
+A string containing only printable characters is converted to the same
+string.
+
+@item list
+A list is converted recursively according to the above rules.  This
+implies that any structured list will be flattened (that is, a result
+of @samp{'(a b (c d) e)} will be converted to the @code{make} string
+@samp{a b c d e}).
+
+@item other
+Any other Guile type results in an error.  In future versions of
+@code{make}, other Guile types may be converted.
+
+@end table
+
+The translation of @samp{#f} (to the empty string) and @samp{#t} (to
+the non-empty string @samp{#t}) is designed to allow you to use Guile
+boolean results directly as @code{make} boolean conditions.  For
+example:
+
+@example
+$(if $(guile (access? "myfile" R_OK)),$(info myfile exists))
+@end example
+
+As a consequence of these conversion rules you must consider the
+result of your Guile script, as that result will be converted into a
+string and parsed by @code{make}.  If there is no natural result for
+the script (that is, the script exists solely for its side-effects),
+you should add @samp{#f} as the final expression in order to avoid
+syntax errors in your makefile.
+
+@node Guile Interface, Guile Example, Guile Types, Guile Integration
+@subsection Interfaces from Guile to @code{make}
+@cindex make interface to guile
+@cindex make procedures in guile
+
+In addition to the @code{guile} function available in makefiles,
+@code{make} exposes some procedures for use in your Guile scripts.  At
+startup @code{make} creates a new Guile module, @code{gnu make}, and
+exports these procedures as public interfaces from that module:
+
+@table @code
+@item gmk-expand
+@findex gmk-expand
+This procedure takes a single argument which is converted into a
+string.  The string is expanded by @code{make} using normal
+@code{make} expansion rules.  The result of the expansion is converted
+into a Guile string and provided as the result of the procedure.
+
+@item gmk-eval
+@findex gmk-eval
+This procedure takes a single argument which is converted into a
+string.  The string is evaluated by @code{make} as if it were a
+makefile.  This is the same capability available via the @code{eval}
+function (@pxref{Eval Function}).  The result of the @code{gmk-eval}
+procedure is always the empty string.
+
+Note that @code{gmk-eval} is not quite the same as using
+@code{gmk-expand} with the @code{eval} function: in the latter case
+the evaluated string will be expanded @emph{twice}; first by
+@code{gmk-expand}, then again by the @code{eval} function.
+
+@end table
+
+@node Guile Example,  , Guile Interface, Guile Integration
+@subsection Example Using Guile in @code{make}
+@cindex Guile example
+@cindex example using Guile
+
+Here is a very simple example using GNU Guile to manage writing to a
+file.  These Guile procedures simply open a file, allow writing to the
+file (one string per line), and close the file.  Note that because we
+cannot store complex values such as Guile ports in @code{make}
+variables, we'll keep the port as a global variable in the Guile
+interpreter.
+
+You can create Guile functions easily using @code{define}/@code{endef}
+to create a Guile script, then use the @code{guile} function to
+internalize it:
+
+@example
+@group
+define GUILEIO
+;; A simple Guile IO library for GNU make
+
+(define MKPORT #f)
+
+(define (mkopen name mode)
+  (set! MKPORT (open-file name mode))
+  #f)
+
+(define (mkwrite s)
+  (display s MKPORT)
+  (newline MKPORT)
+  #f)
+
+(define (mkclose)
+  (close-port MKPORT)
+  #f)
+
+#f
+endef
+
+# Internalize the Guile IO functions
+$(guile $(GUILEIO))
+@end group
+@end example
+
+If you have a significant amount of Guile support code, you might
+consider keeping it in a different file (e.g., @file{guileio.scm}) and
+then loading it in your makefile using the @code{guile} function:
+
+@example
+$(guile (load "guileio.scm"))
+@end example
+
+An advantage to this method is that when editing @file{guileio.scm},
+your editor will understand that this file contains Scheme syntax
+rather than makefile syntax.
+
+Now you can use these Guile functions to create files.  Suppose you
+need to operate on a very large list, which cannot fit on the command
+line, but the utility you're using accepts the list as input as well:
+
+@example
+@group
+prog: $(PREREQS)
+        @@$(guile (mkopen "tmp.out" "w")) \
+         $(foreach X,$^,$(guile (mkwrite "$(X)"))) \
+         $(guile (mkclose))
+        $(LINK) < tmp.out
+@end group
+@end example
+
+A more comprehensive suite of file manipulation procedures is possible
+of course.  You could, for example, maintain multiple output files at
+the same time by choosing a symbol for each one and using it as the
+key to a hash table, where the value is a port, then returning the
+symbol to be stored in a @code{make} variable.
+
+@node Loading Objects,  , Guile Integration, Extending make
+@section Loading Dynamic Objects
+@cindex loaded objects
+@cindex objects, loaded
+@cindex extensions, loading
+
+@cartouche
+@quotation Warning
+The @code{load} directive and extension capability is considered a
+``technology preview'' in this release of GNU make.  We encourage you
+to experiment with this feature and we appreciate any feedback on it.
+However we cannot guarantee to maintain backward-compatibility in the
+next release.  Consider using GNU Guile instead for extending GNU make
+(@pxref{Guile Function, ,The @code{guile} Function}).
+@end quotation
+@end cartouche
+
+Many operating systems provide a facility for dynamically loading
+compiled objects.  If your system provides this facility, GNU
+@code{make} can make use of it to load dynamic objects at runtime,
+providing new capabilities which may then be invoked by your makefile.
+
+The @code{load} directive is used to load a dynamic object.  Once the
+object is loaded, a ``setup'' function will be invoked to allow the
+object to initialize itself and register new facilities with GNU
+@code{make}.  A dynamic object might include new @code{make} functions,
+for example, and the ``setup'' function would register them with GNU
+@code{make}'s function handling system.
+
+@menu
+* load Directive::              Loading dynamic objects as extensions.
+* Remaking Loaded Objects::     How loaded objects get remade.
+* Loaded Object API::           Programmatic interface for loaded objects.
+* Loaded Object Example::       Example of a loaded object
+@end menu
+
+@node load Directive, Remaking Loaded Objects, Loading Objects, Loading Objects
+@subsection The @code{load} Directive
+@cindex load directive
+@cindex extensions, load directive
+
+Objects are loaded into GNU @code{make} by placing the @code{load}
+directive into your makefile.  The syntax of the @code{load} directive
+is as follows:
+
+@findex load
+@example
+load @var{object-file} @dots{}
+@end example
+
+or:
+
+@example
+load @var{object-file}(@var{symbol-name}) @dots{}
+@end example
+
+The file @var{object-file} is dynamically loaded by GNU @code{make}.
+If @var{object-file} does not include a directory path then it is
+first looked for in the current directory.  If it is not found there,
+or a directory path is included, then system-specific paths will be
+searched.  If the load fails for any reason, @code{make} will print a
+message and exit.
+
+If the load succeeds @code{make} will invoke an initializing function.
+
+If @var{symbol-name} is provided, it will be used as the name of the
+initializing function.
+
+If no @var{symbol-name} is provided, the initializing function name is
+created by taking the base file name of @var{object-file}, up to the
+first character which is not a valid symbol name character
+(alphanumerics and underscores are valid symbol name characters).  To
+this prefix will be appended the suffix @code{_gmk_setup}.
+
+More than one object file may be loaded with a single @code{load}
+directive, and both forms of @code{load} arguments may be used in the
+same directive.
+
+The initializing function will be provided the file name and line
+number of the invocation of the @code{load} operation.  It should
+return a value of type @code{int}, which must be @code{0} on failure
+and non-@code{0} on success.  If the return value is @code{-1}, then
+GNU make will @emph{not} attempt to rebuild the object file
+(@pxref{Remaking Loaded Objects, ,How Loaded Objects Are Remade}).
+
+For example:
+
+@example
+load ../mk_funcs.so
+@end example
+
+will load the dynamic object @file{../mk_funcs.so}.  After the object
+is loaded, @code{make} will invoke the function (assumed to be defined
+by the shared object) @code{mk_funcs_gmk_setup}.
+
+On the other hand:
+
+@example
+load ../mk_funcs.so(init_mk_func)
+@end example
+
+will load the dynamic object @file{../mk_funcs.so}.  After the object
+is loaded, @code{make} will invoke the function @code{init_mk_func}.
+
+Regardless of how many times an object file appears in a @code{load}
+directive, it will only be loaded (and its setup function will only
+be invoked) once.
+
+@vindex .LOADED
+After an object has been successfully loaded, its file name is
+appended to the @code{.LOADED} variable.
+
+@findex -load
+If you would prefer that failure to load a dynamic object not be
+reported as an error, you can use the @code{-load} directive instead
+of @code{load}.  GNU @code{make} will not fail and no message will be
+generated if an object fails to load.  The failed object is not added
+to the @code{.LOADED} variable, which can then be consulted to
+determine if the load was successful.
+
+@node Remaking Loaded Objects, Loaded Object API, load Directive, Loading Objects
+@subsection How Loaded Objects Are Remade
+@cindex updating loaded objects
+@cindex remaking loaded objects
+@cindex loaded objects, remaking of
+
+Loaded objects undergo the same re-make procedure as makefiles
+(@pxref{Remaking Makefiles, ,How Makefiles Are Remade}).  If any
+loaded object is recreated, then @code{make} will start from scratch
+and re-read all the makefiles, and reload the object files again.  It
+is not necessary for the loaded object to do anything special to
+support this.@refill
+
+It's up to the makefile author to provide the rules needed for
+rebuilding the loaded object.
+
+@node Loaded Object API, Loaded Object Example, Remaking Loaded Objects, Loading Objects
+@subsection Loaded Object Interface
+@cindex loaded object API
+@cindex interface for loaded objects
+
+@cartouche
+@quotation Warning
+For this feature to be useful your extensions will need to invoke
+various functions internal to GNU @code{make}.  The programming
+interfaces provided in this release should not be considered stable:
+functions may be added, removed, or change calling signatures or
+implementations in future versions of GNU @code{make}.
+@end quotation
+@end cartouche
+
+To be useful, loaded objects must be able to interact with GNU
+@code{make}.  This interaction includes both interfaces the loaded
+object provides to makefiles and also interfaces @code{make} provides
+to the loaded object to manipulate @code{make}'s operation.
+
+The interface between loaded objects and @code{make} is defined by the
+@file{gnumake.h} C header file.  All loaded objects written in C
+should include this header file.  Any loaded object not written in C
+will need to implement the interface defined in this header file.
+
+Typically, a loaded object will register one or more new GNU
+@code{make} functions using the @code{gmk_add_function} routine from
+within its setup function.  The implementations of these @code{make}
+functions may make use of the @code{gmk_expand} and @code{gmk_eval}
+routines to perform their tasks, then optionally return a string as
+the result of the function expansion.
+
+@subsubheading Loaded Object Licensing
+@cindex loaded object licensing
+@cindex plugin_is_GPL_compatible
+
+Every dynamic extension should define the global symbol
+@code{plugin_is_GPL_compatible} to assert that it has been licensed
+under a GPL-compatible license.  If this symbol does not exist,
+@code{make} emits a fatal error and exits when it tries to load your
+extension.
+
+The declared type of the symbol should be @code{int}. It does not need
+to be in any allocated section, though.  The code merely asserts that
+the symbol exists in the global scope. Something like this is enough:
+
+@example
+int plugin_is_GPL_compatible;
+@end example
+
+@subsubheading Data Structures
+
+@table @code
+@item gmk_floc
+This structure represents a filename/location pair.  It is provided
+when defining items, so GNU @code{make} can inform the user later
+where the definition occurred if necessary.
+@end table
+
+@subsubheading Registering Functions
+@findex gmk_add_function
+
+There is currently one way for makefiles to invoke operations provided
+by the loaded object: through the @code{make} function call
+interface.  A loaded object can register one or more new functions
+which may then be invoked from within the makefile in the same way as
+any other function.
+
+Use @code{gmk_add_function} to create a new @code{make} function.  Its
+arguments are as follows:
+
+@table @code
+@item name
+The function name.  This is what the makefile should use to invoke the
+function.  The name must be between 1 and 255 characters long and it
+may only contain alphanumeric, period (@samp{.}), dash (@samp{-}), and
+underscore (@samp{_}) characters.  It may not begin with a period.
+
+@item func_ptr
+A pointer to a function that @code{make} will invoke when it expands
+the function in a makefile.  This function must be defined by the
+loaded object.
+
+@item min_args
+The minimum number of arguments the function will accept.  Must be
+between 0 and 255.  GNU @code{make} will check this and fail before
+invoking @code{func_ptr} if the function was invoked with too few
+arguments.
+
+@item max_args
+The maximum number of arguments the function will accept.  Must be
+between 0 and 255.  GNU @code{make} will check this and fail before
+invoking @code{func_ptr} if the function was invoked with too few
+arguments.  If the value is 0, then any number of arguments is
+accepted.  If the value is greater than 0, then it must be greater
+than or equal to @code{min_args}.
+
+@item flags
+Flags that specify how this function will operate; the desired flags
+should be OR'd together.  If the @code{GMK_FUNC_NOEXPAND} flag is
+given then the function arguments will not be expanded before the
+function is called; otherwise they will be expanded first.
+@end table
+
+@subsubheading Registered Function Interface
+@findex gmk_func_ptr
+
+A function registered with @code{make} must match the
+@code{gmk_func_ptr} type.  It will be invoked with three parameters:
+@code{name} (the name of the function), @code{argc} (the number of
+arguments to the function), and @code{argv} (an array of pointers to
+arguments to the function).  The last pointer (that is,
+@code{argv[argc]}) will be null (@code{0}).
+
+The return value of the function is the result of expanding the
+function.  If the function expands to nothing the return value may be
+null.  Otherwise, it must be a pointer to a string created with
+@code{gmk_alloc}.  Once the function returns, @code{make} owns this
+string and will free it when appropriate; it cannot be accessed by the
+loaded object.
+
+@subsubheading GNU @code{make} Facilities
+
+There are some facilities exported by GNU @code{make} for use by
+loaded objects.  Typically these would be run from within the
+setup function and/or the functions registered via
+@code{gmk_add_function}, to retrieve or modify the data @code{make}
+works with.
+
+@table @code
+@item gmk_expand
+@findex gmk_expand
+This function takes a string and expands it using @code{make}
+expansion rules.  The result of the expansion is returned in a
+nil-terminated string buffer.  The caller is responsible for calling
+@code{gmk_free} with a pointer to the returned buffer when done.
+
+@item gmk_eval
+@findex gmk_eval
+This function takes a buffer and evaluates it as a segment of makefile
+syntax.  This function can be used to define new variables, new rules,
+etc.  It is equivalent to using the @code{eval} @code{make} function.
+@end table
+
+Note that there is a difference between @code{gmk_eval} and calling
+@code{gmk_expand} with a string using the @code{eval} function: in
+the latter case the string will be expanded @emph{twice}; once by
+@code{gmk_expand} and then again by the @code{eval} function.  Using
+@code{gmk_eval} the buffer is only expanded once, at most (as it's
+read by the @code{make} parser).
+
+@subsubheading Memory Management
+
+Some systems allow for different memory management schemes.  Thus you
+should never pass memory that you've allocated directly to any
+@code{make} function, nor should you attempt to directly free any
+memory returned to you by any @code{make} function.  Instead, use the
+@code{gmk_alloc} and @code{gmk_free} functions.
+
+In particular, the string returned to @code{make} by a function
+registered using @code{gmk_add_function} @emph{must} be allocated
+using @code{gmk_alloc}, and the string returned from the @code{make}
+@code{gmk_expand} function @emph{must} be freed (when no longer
+needed) using @code{gmk_free}.
+
+@table @code
+@item gmk_alloc
+@findex gmk_alloc
+Return a pointer to a newly-allocated buffer.  This function will
+always return a valid pointer; if not enough memory is available
+@code{make} will exit.
+
+@item gmk_free
+@findex gmk_free
+Free a buffer returned to you by @code{make}.  Once the
+@code{gmk_free} function returns the string will no longer be valid.
+@end table
+
+@node Loaded Object Example,  , Loaded Object API, Loading Objects
+@subsection Example Loaded Object
+@cindex loaded object example
+@cindex example of loaded objects
+
+Let's suppose we wanted to write a new GNU @code{make} function that
+would create a temporary file and return its name.  We would like our
+function to take a prefix as an argument.  First we can write the
+function in a file @file{mk_temp.c}:
+
+@example
+@group
+#include <stdlib.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include <gnumake.h>
+
+int plugin_is_GPL_compatible;
+
+char *
+gen_tmpfile(const char *nm, int argc, char **argv)
+@{
+  int fd;
+
+  /* Compute the size of the filename and allocate space for it.  */
+  int len = strlen (argv[0]) + 6 + 1;
+  char *buf = gmk_alloc (len);
+
+  strcpy (buf, argv[0]);
+  strcat (buf, "XXXXXX");
+
+  fd = mkstemp(buf);
+  if (fd >= 0)
+    @{
+      /* Don't leak the file descriptor.  */
+      close (fd);
+      return buf;
+    @}
+
+  /* Failure.  */
+  fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno));
+  gmk_free (buf);
+  return NULL;
+@}
+
+int
+mk_temp_gmk_setup ()
+@{
+  /* Register the function with make name "mk-temp".  */
+  gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1);
+  return 1;
+@}
+@end group
+@end example
+
+Next, we will write a makefile that can build this shared object, load
+it, and use it:
+
+@example
+@group
+all:
+        @@echo Temporary file: $(mk-temp tmpfile.)
+
+load mk_temp.so
+
+mk_temp.so: mk_temp.c
+        $(CC) -shared -fPIC -o $@ $<
+@end group
+@end example
+
+On MS-Windows, due to peculiarities of how shared objects are
+produced, the compiler needs to scan the @dfn{import library} produced
+when building @code{make}, typically called
+@file{libgnumake-@var{version}.dll.a}, where @var{version} is the
+version of the load object API.  So the recipe to produce a shared
+object will look on Windows like this (assuming the API version is 1):
+
+@example
+@group
+mk_temp.dll: mk_temp.c
+        $(CC) -shared -o $@ $< -lgnumake-1
+@end group
+@end example
+
+Now when you run @code{make} you'll see something like:
+
+@example
+$ make
+cc -shared -fPIC -o mk_temp.so mk_temp.c
+Temporary filename: tmpfile.A7JEwd
+@end example
+
+@node Features, Missing, Extending make, Top
 @chapter Features of GNU @code{make}
 @cindex features of GNU @code{make}
 @cindex portability
@@ -10349,7 +11382,7 @@ Implicit Rules}) allows one pattern rule for installing members in an
 archive (@pxref{Archive Update}) to be sufficient.
 
 @item
-The arrangement of lines and backslash-newline combinations in
+The arrangement of lines and backslash/newline combinations in
 recipes is retained when the recipes are printed, so they appear as
 they do in the makefile, except for the stripping of initial
 whitespace.
@@ -10392,6 +11425,11 @@ many incarnations of @code{make} and similar programs, though not in the
 System V or BSD implementations.  @xref{Execution, ,Recipe Execution}.
 
 @item
+A number of different build tools that support parallelism also
+support collecting output and displaying as a single block.
+@xref{Parallel Output, ,Output During Parallel Execution}.
+
+@item
 Modified variable references using pattern substitution come from
 SunOS 4.  @xref{Reference, ,Basics of Variable References}.
 This functionality was provided in GNU @code{make} by the
@@ -10420,6 +11458,17 @@ nonexistent file comes from SunOS 4 @code{make}.  (But note that SunOS 4
 @code{make} does not allow multiple makefiles to be specified in one
 @code{-include} directive.)  The same feature appears with the name
 @code{sinclude} in SGI @code{make} and perhaps others.
+
+@item
+The @code{!=} shell assignment operator exists in many BSD of
+@code{make} and is purposefully implemented here to behave identically
+to those implementations.
+
+@item
+Various build management tools are implemented using scripting
+languages such as Perl or Python and thus provide a natural embedded
+scripting language, similar to GNU @code{make}'s integration of GNU
+Guile.
 @end itemize
 
 The remaining features are inventions new in GNU @code{make}:
@@ -10526,9 +11575,8 @@ Various new built-in implicit rules.
 @xref{Catalogue of Rules, ,Catalogue of Implicit Rules}.
 
 @item
-The built-in variable @samp{MAKE_VERSION} gives the version number of
-@code{make}.
-@vindex MAKE_VERSION
+Load dynamic objects which can modify the behavior of @code{make}.
+@xref{Loading Objects, ,Loading Dynamic Objects}.
 @end itemize
 
 @node Missing, Makefile Conventions, Features, Top
@@ -10549,7 +11597,7 @@ of archive file @var{file}.  The member is chosen, not by name, but by
 being an object file which defines the linker symbol @var{entry}.@refill
 
 This feature was not put into GNU @code{make} because of the
-nonmodularity of putting knowledge into @code{make} of the internal
+non-modularity of putting knowledge into @code{make} of the internal
 format of archive file symbol tables.
 @xref{Archive Symbols, ,Updating Archive Symbol Directories}.
 
@@ -10657,6 +11705,7 @@ Here is a summary of the directives GNU @code{make} recognizes:
 @item define @var{variable}
 @itemx define @var{variable} =
 @itemx define @var{variable} :=
+@itemx define @var{variable} ::=
 @itemx define @var{variable} +=
 @itemx define @var{variable} ?=
 @itemx endef
@@ -10871,6 +11920,11 @@ Evaluate @var{text} then read the results as makefile commands.
 Expands to the empty string.@*
 @xref{Eval Function, ,The @code{eval} Function}.
 
+@item $(file @var{op} @var{filename},@var{text})
+Expand the arguments, then open the file @var{filename} using mode
+@var{op} and write @var{text} to that file.@*
+@xref{File Function, ,The @code{file} Function}.
+
 @item $(value @var{var})
 Evaluates to the contents of the variable @var{var}, with no expansion
 performed on it.@*
@@ -10970,6 +12024,18 @@ 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 MAKE_VERSION
+
+The built-in variable @samp{MAKE_VERSION} expands to the version
+number of the GNU @code{make} program.
+@vindex MAKE_VERSION
+
+@item MAKE_HOST
+
+The built-in variable @samp{MAKE_HOST} expands to a string
+representing the host that GNU @code{make} was built to run on.
+@vindex MAKE_HOST
+
 @item MAKELEVEL
 
 The number of levels of recursion (sub-@code{make}s).@*
@@ -10986,6 +12052,17 @@ 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.
 
+@item GNUMAKEFLAGS
+
+Other flags parsed by @code{make}.  You can set this in the environment or
+a makefile to set @code{make} command-line flags.  GNU @code{make}
+never sets this variable itself.  This variable is only needed if
+you'd like to set GNU @code{make}-specific flags in a POSIX-compliant
+makefile.  This variable will be seen by GNU @code{make} and ignored
+by other @code{make} implementations.  It's not needed if you only use
+GNU @code{make}; just use @code{MAKEFLAGS} directly.
+@xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}.
+
 @item MAKECMDGOALS
 
 The targets given to @code{make} on the command line.  Setting this
@@ -11024,7 +12101,7 @@ option.  Errors that are fatal are prefixed with the string
 
 Error messages are all either prefixed with the name of the program
 (usually @samp{make}), or, if the error is found in a makefile, the name
-of the file and linenumber containing the problem.
+of the file and line number containing the problem.
 
 In the table below, these common prefixes are left off.
 
@@ -11038,7 +12115,7 @@ 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 Recipes}.
 
-If no @code{***} is attached to the message, then the subprocess failed
+If no @code{***} is attached to the message, then the sub-process failed
 but the rule in the makefile was prefixed with the @code{-} special
 character, so @code{make} ignored the error.
 
@@ -11078,7 +12155,7 @@ either explicit or implicit (including in the default rules database).
 
 If you want that file to be built, you will need to add a rule to your
 makefile describing how that target can be built.  Other possible
-sources of this problem are typos in the makefile (if that filename is
+sources of this problem are typos in the makefile (if that file name is
 wrong) or a corrupted source tree (if that file is not supposed to be
 built, but rather only a prerequisite).
 
@@ -11112,9 +12189,9 @@ prerequisites, etc., one of them depended on @var{xxx} again.
 @item Recursive variable `@var{xxx}' references itself (eventually).  Stop.
 This means you've defined a normal (recursive) @code{make} variable
 @var{xxx} that, when it's expanded, will refer to itself (@var{xxx}).
-This is not allowed; either use simply-expanded variables (@code{:=}) or
-use the append operator (@code{+=}).  @xref{Using Variables, ,How to Use
-Variables}.
+This is not allowed; either use simply-expanded variables (@samp{:=}
+or @samp{::=}) or use the append operator (@samp{+=}).  @xref{Using
+Variables, ,How to Use Variables}.
 
 @item Unterminated variable reference.  Stop.
 This means you forgot to provide the proper closing parenthesis
@@ -11129,12 +12206,15 @@ of its arguments.  @xref{Functions, ,Functions for Transforming Text}.
 @itemx multiple target patterns.  Stop.
 @itemx target pattern contains no `%'.  Stop.
 @itemx mixed implicit and static pattern rules.  Stop.
-These are generated for malformed static pattern rules.  The first means
-there's no pattern in the target section of the rule; the second means
-there are multiple patterns in the target section; the third means
-the target doesn't contain a pattern character (@code{%}); and the
-fourth means that all three parts of the static pattern rule contain
-pattern characters (@code{%})--only the first two parts should.
+These are generated for malformed static pattern rules.  The first
+means there's no pattern in the target section of the rule; the second
+means there are multiple patterns in the target section; the third
+means the target doesn't contain a pattern character (@code{%}); and
+the fourth means that all three parts of the static pattern rule
+contain pattern characters (@code{%})--only the first two parts
+should.  If you see these errors and you aren't trying to create a
+static pattern rule, check the value of any variables in your target
+and prerequisite lists to be sure they do not contain colons.
 @xref{Static Usage, ,Syntax of Static Pattern Rules}.
 
 @item warning: -jN forced in submake: disabling jobserver mode.
@@ -11167,7 +12247,8 @@ sequential manner.
 @appendix Complex Makefile Example
 
 Here is the makefile for the GNU @code{tar} program.  This is a
-moderately complex makefile.
+moderately complex makefile.  The first line uses a @code{#!} setting
+to allow the makefile to be executed directly.
 
 Because it is the first target, the default goal is @samp{all}.  An
 interesting feature of this makefile is that @file{testpad.h} is a
@@ -11203,6 +12284,7 @@ distribution kits.
 
 @example
 @group
+#!/usr/bin/make -f
 # Generated automatically from Makefile.in by configure.
 # Un*x Makefile for GNU tar program.
 # Copyright (C) 1991 Free Software Foundation, Inc.
index aac448b..047ad02 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 19 July 2010
-@set UPDATED-MONTH July 2010
-@set EDITION 3.82
-@set VERSION 3.82
+@set UPDATED 9 October 2013
+@set UPDATED-MONTH October 2013
+@set EDITION 4.0
+@set VERSION 4.0
index aac448b..047ad02 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 19 July 2010
-@set UPDATED-MONTH July 2010
-@set EDITION 3.82
-@set VERSION 3.82
+@set UPDATED 9 October 2013
+@set UPDATED-MONTH October 2013
+@set EDITION 4.0
+@set VERSION 4.0
index c911e18..4091463 100644 (file)
@@ -1,6 +1,5 @@
 @echo off\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 Copyright (C) 1998-2013 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
@@ -21,6 +20,7 @@ echo Building Make for MSDOS
 rem Echo ON so they will see what is going on.\r
 @echo on\r
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o\r
+gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g output.c -o output.o\r
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g job.c -o job.o\r
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g dir.c -o dir.o\r
 gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g file.c -o file.o\r
@@ -52,9 +52,11 @@ ar rv libglob.a glob.o fnmatch.o
 @echo off\r
 cd ..\r
 echo commands.o > respf.$$$\r
-for %%f in (job dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$\r
+for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$\r
 for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$\r
 echo glob/libglob.a >> respf.$$$\r
+rem gcc  -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g guile.c -o guile.o\r
+rem echo guile.o >> respf.$$$\r
 @echo Linking...\r
 @echo on\r
 gcc -o make.new @respf.$$$\r
index 2315b06..ba04e48 100644 (file)
--- a/expand.c
+++ b/expand.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
@@ -28,7 +26,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Initially, any errors reported when expanding strings will be reported
    against the file where the error appears.  */
-const struct floc **expanding_var = &reading_file;
+const gmk_floc **expanding_var = &reading_file;
 
 /* The next two describe the variable output buffer.
    This buffer is used to hold the variable-expansion of a line of the
@@ -63,8 +61,8 @@ variable_buffer_output (char *ptr, const char *string, unsigned int length)
     {
       unsigned int offset = ptr - variable_buffer;
       variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
-                               ? newlen + 100
-                               : 2 * variable_buffer_length);
+                                ? newlen + 100
+                                : 2 * variable_buffer_length);
       variable_buffer = xrealloc (variable_buffer, variable_buffer_length);
       ptr = variable_buffer + offset;
     }
@@ -98,8 +96,8 @@ char *
 recursively_expand_for_file (struct variable *v, struct file *file)
 {
   char *value;
-  const struct floc *this_var;
-  const struct floc **saved_varp;
+  const gmk_floc *this_var;
+  const gmk_floc **saved_varp;
   struct variable_set_list *save = 0;
   int set_reading = 0;
 
@@ -124,7 +122,7 @@ recursively_expand_for_file (struct variable *v, struct file *file)
       if (!v->exp_count)
         /* Expanding V causes infinite recursion.  Lose.  */
         fatal (*expanding_var,
-               _("Recursive variable `%s' references itself (eventually)"),
+               _("Recursive variable '%s' references itself (eventually)"),
                v->name);
       --v->exp_count;
     }
@@ -187,7 +185,7 @@ reference_variable (char *o, const char *name, unsigned int length)
    LENGTH bytes of STRING are actually scanned.  If LENGTH is -1, scan until
    a null byte is found.
 
-   Write the results to LINE, which must point into `variable_buffer'.  If
+   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.
@@ -197,12 +195,12 @@ variable_expand_string (char *line, const char *string, long length)
 {
   struct variable *v;
   const char *p, *p1;
-  char *abuf = NULL;
+  char *save;
   char *o;
   unsigned int line_offset;
 
   if (!line)
-    line = initialize_variable_output();
+    line = initialize_variable_output ();
   o = line;
   line_offset = line - variable_buffer;
 
@@ -212,133 +210,126 @@ variable_expand_string (char *line, const char *string, long length)
       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;
+  /* We need a copy of STRING: due to eval, it's possible that it will get
+     freed as we process it (it might be the value of a variable that's reset
+     for example).  Also having a nil-terminated string is handy.  */
+  save = length < 0 ? xstrdup (string) : xstrndup (string, length);
+  p = save;
 
   while (1)
     {
       /* Copy all following uninteresting chars all at once to the
          variable output buffer, and skip them.  Uninteresting chars end
-        at the next $ or the end of the input.  */
+         at the next $ or the end of the input.  */
 
       p1 = strchr (p, '$');
 
       o = variable_buffer_output (o, p, p1 != 0 ? (unsigned int)(p1 - p) : strlen (p) + 1);
 
       if (p1 == 0)
-       break;
+        break;
       p = p1 + 1;
 
       /* Dispatch on the char that follows the $.  */
 
       switch (*p)
-       {
-       case '$':
-         /* $$ seen means output one $ to the variable output buffer.  */
-         o = variable_buffer_output (o, p, 1);
-         break;
-
-       case '(':
-       case '{':
-         /* $(...) or ${...} is the general case of substitution.  */
-         {
-           char openparen = *p;
-           char closeparen = (openparen == '(') ? ')' : '}';
+        {
+        case '$':
+          /* $$ seen means output one $ to the variable output buffer.  */
+          o = variable_buffer_output (o, p, 1);
+          break;
+
+        case '(':
+        case '{':
+          /* $(...) or ${...} is the general case of substitution.  */
+          {
+            char openparen = *p;
+            char closeparen = (openparen == '(') ? ')' : '}';
             const char *begp;
-           const char *beg = p + 1;
-           char *op;
+            const char *beg = p + 1;
+            char *op;
             char *abeg = NULL;
-           const char *end, *colon;
-
-           op = o;
-           begp = p;
-           if (handle_function (&op, &begp))
-             {
-               o = op;
-               p = begp;
-               break;
-             }
-
-           /* Is there a variable reference inside the parens or braces?
-              If so, expand it before expanding the entire reference.  */
-
-           end = strchr (beg, closeparen);
-           if (end == 0)
+            const char *end, *colon;
+
+            op = o;
+            begp = p;
+            if (handle_function (&op, &begp))
+              {
+                o = op;
+                p = begp;
+                break;
+              }
+
+            /* Is there a variable reference inside the parens or braces?
+               If so, expand it before expanding the entire reference.  */
+
+            end = strchr (beg, closeparen);
+            if (end == 0)
               /* Unterminated variable reference.  */
               fatal (*expanding_var, _("unterminated variable reference"));
-           p1 = lindex (beg, end, '$');
-           if (p1 != 0)
-             {
-               /* BEG now points past the opening paren or brace.
-                  Count parens or braces until it is matched.  */
-               int count = 0;
-               for (p = beg; *p != '\0'; ++p)
-                 {
-                   if (*p == openparen)
-                     ++count;
-                   else if (*p == closeparen && --count < 0)
-                     break;
-                 }
-               /* If COUNT is >= 0, there were unmatched opening parens
-                  or braces, so we go to the simple case of a variable name
-                  such as `$($(a)'.  */
-               if (count < 0)
-                 {
-                   abeg = expand_argument (beg, p); /* Expand the name.  */
-                   beg = abeg;
-                   end = strchr (beg, '\0');
-                 }
-             }
-           else
-             /* Advance P to the end of this reference.  After we are
+            p1 = lindex (beg, end, '$');
+            if (p1 != 0)
+              {
+                /* BEG now points past the opening paren or brace.
+                   Count parens or braces until it is matched.  */
+                int count = 0;
+                for (p = beg; *p != '\0'; ++p)
+                  {
+                    if (*p == openparen)
+                      ++count;
+                    else if (*p == closeparen && --count < 0)
+                      break;
+                  }
+                /* If COUNT is >= 0, there were unmatched opening parens
+                   or braces, so we go to the simple case of a variable name
+                   such as '$($(a)'.  */
+                if (count < 0)
+                  {
+                    abeg = expand_argument (beg, p); /* Expand the name.  */
+                    beg = abeg;
+                    end = strchr (beg, '\0');
+                  }
+              }
+            else
+              /* Advance P to the end of this reference.  After we are
                  finished expanding this one, P will be incremented to
                  continue the scan.  */
-             p = end;
-
-           /* This is not a reference to a built-in function and
-              any variable references inside are now expanded.
-              Is the resultant text a substitution reference?  */
-
-           colon = lindex (beg, end, ':');
-           if (colon)
-             {
-               /* This looks like a substitution reference: $(FOO:A=B).  */
-               const char *subst_beg, *subst_end, *replace_beg, *replace_end;
-
-               subst_beg = colon + 1;
-               subst_end = lindex (subst_beg, end, '=');
-               if (subst_end == 0)
-                 /* There is no = in sight.  Punt on the substitution
-                    reference and treat this as a variable name containing
-                    a colon, in the code below.  */
-                 colon = 0;
-               else
-                 {
-                   replace_beg = subst_end + 1;
-                   replace_end = end;
-
-                   /* Extract the variable name before the colon
-                      and look up that variable.  */
-                   v = lookup_variable (beg, colon - beg);
-                   if (v == 0)
-                     warn_undefined (beg, colon - beg);
+              p = end;
+
+            /* This is not a reference to a built-in function and
+               any variable references inside are now expanded.
+               Is the resultant text a substitution reference?  */
+
+            colon = lindex (beg, end, ':');
+            if (colon)
+              {
+                /* This looks like a substitution reference: $(FOO:A=B).  */
+                const char *subst_beg = colon + 1;
+                const char *subst_end = lindex (subst_beg, end, '=');
+                if (subst_end == 0)
+                  /* There is no = in sight.  Punt on the substitution
+                     reference and treat this as a variable name containing
+                     a colon, in the code below.  */
+                  colon = 0;
+                else
+                  {
+                    const char *replace_beg = subst_end + 1;
+                    const char *replace_end = end;
+
+                    /* Extract the variable name before the colon
+                       and look up that variable.  */
+                    v = lookup_variable (beg, colon - beg);
+                    if (v == 0)
+                      warn_undefined (beg, colon - beg);
 
                     /* If the variable is not empty, perform the
                        substitution.  */
-                   if (v != 0 && *v->value != '\0')
-                     {
-                       char *pattern, *replace, *ppercent, *rpercent;
-                       char *value = (v->recursive
+                    if (v != 0 && *v->value != '\0')
+                      {
+                        char *pattern, *replace, *ppercent, *rpercent;
+                        char *value = (v->recursive
                                        ? recursively_expand (v)
-                                      : v->value);
+                                       : v->value);
 
                         /* Copy the pattern and the replacement.  Add in an
                            extra % at the beginning to use in case there
@@ -356,15 +347,15 @@ variable_expand_string (char *line, const char *string, long length)
 
                         /* Look for %.  Set the percent pointers properly
                            based on whether we find one or not.  */
-                       ppercent = find_percent (pattern);
-                       if (ppercent)
+                        ppercent = find_percent (pattern);
+                        if (ppercent)
                           {
                             ++ppercent;
                             rpercent = find_percent (replace);
                             if (rpercent)
                               ++rpercent;
                           }
-                       else
+                        else
                           {
                             ppercent = pattern;
                             rpercent = replace;
@@ -375,64 +366,63 @@ variable_expand_string (char *line, const char *string, long length)
                         o = patsubst_expand_pat (o, value, pattern, replace,
                                                  ppercent, rpercent);
 
-                       if (v->recursive)
-                         free (value);
-                     }
-                 }
-             }
+                        if (v->recursive)
+                          free (value);
+                      }
+                  }
+              }
 
-           if (colon == 0)
-             /* This is an ordinary variable reference.
-                Look up the value of the variable.  */
-               o = reference_variable (o, beg, end - beg);
+            if (colon == 0)
+              /* This is an ordinary variable reference.
+                 Look up the value of the variable.  */
+                o = reference_variable (o, beg, end - beg);
 
-         if (abeg)
-           free (abeg);
-         }
-         break;
+          if (abeg)
+            free (abeg);
+          }
+          break;
 
-       case '\0':
-         break;
+        case '\0':
+          break;
 
-       default:
-         if (isblank ((unsigned char)p[-1]))
-           break;
+        default:
+          if (isblank ((unsigned char)p[-1]))
+            break;
 
-         /* A $ followed by a random char is a variable reference:
-            $a is equivalent to $(a).  */
+          /* A $ followed by a random char is a variable reference:
+             $a is equivalent to $(a).  */
           o = reference_variable (o, p, 1);
 
-         break;
-       }
+          break;
+        }
 
       if (*p == '\0')
-       break;
+        break;
 
       ++p;
     }
 
-  if (abuf)
-    free (abuf);
+  free (save);
 
   variable_buffer_output (o, "", 1);
   return (variable_buffer + line_offset);
 }
 \f
 /* Scan LINE for variable references and expansion-function calls.
-   Build in `variable_buffer' the result of expanding the references and calls.
+   Build in 'variable_buffer' the result of expanding the references and calls.
    Return the address of the resulting string, which is null-terminated
    and is valid only until the next time this function is called.  */
 
 char *
 variable_expand (const char *line)
 {
-  return variable_expand_string(NULL, line, (long)-1);
+  return variable_expand_string (NULL, line, (long)-1);
 }
 \f
 /* Expand an argument for an expansion function.
    The text starting at STR and ending at END is variable-expanded
    into a null-terminated string that is returned as the value.
-   This is done without clobbering `variable_buffer' or the current
+   This is done without clobbering 'variable_buffer' or the current
    variable-expansion that is in progress.  */
 
 char *
@@ -442,7 +432,7 @@ expand_argument (const char *str, const char *end)
   char *r;
 
   if (str == end)
-    return xstrdup("");
+    return xstrdup ("");
 
   if (!end || *end == '\0')
     return allocated_variable_expand (str);
@@ -471,7 +461,7 @@ variable_expand_for_file (const char *line, struct file *file)
 {
   char *result;
   struct variable_set_list *savev;
-  const struct floc *savef;
+  const gmk_floc *savef;
 
   if (file == 0)
     return variable_expand (line);
@@ -499,10 +489,12 @@ variable_expand_for_file (const char *line, struct file *file)
 
 static char *
 variable_append (const char *name, unsigned int length,
-                 const struct variable_set_list *set)
+                 const struct variable_set_list *set, int local)
 {
   const struct variable *v;
   char *buf = 0;
+  /* If this set is local and the next is not a parent, then next is local.  */
+  int nextlocal = local && set->next_is_parent == 0;
 
   /* If there's nothing left to check, return the empty buffer.  */
   if (!set)
@@ -511,14 +503,14 @@ variable_append (const char *name, unsigned int length,
   /* Try to find the variable in this variable set.  */
   v = lookup_variable_in_set (name, length, set->set);
 
-  /* If there isn't one, look to see if there's one in a set above us.  */
-  if (!v)
-    return variable_append (name, length, set->next);
+  /* If there isn't one, or this one is private, try the set above us.  */
+  if (!v || (!local && v->private_var))
+    return variable_append (name, length, set->next, nextlocal);
 
   /* If this variable type is append, first get any upper values.
      If not, initialize the buffer.  */
   if (v->append)
-    buf = variable_append (name, length, set->next);
+    buf = variable_append (name, length, set->next, nextlocal);
   else
     buf = initialize_variable_output ();
 
@@ -548,7 +540,8 @@ allocated_variable_append (const struct variable *v)
 
   variable_buffer = 0;
 
-  val = variable_append (v->name, strlen (v->name), current_variable_set_list);
+  val = variable_append (v->name, strlen (v->name),
+                         current_variable_set_list, 1);
   variable_buffer_output (val, "", 1);
   val = variable_buffer;
 
diff --git a/file.c b/file.c
index 0a4edb2..b209d88 100644 (file)
--- a/file.c
+++ b/file.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,12 +14,12 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
-#include "dep.h"
 #include "filedef.h"
+#include "dep.h"
 #include "job.h"
 #include "commands.h"
 #include "variable.h"
@@ -56,11 +54,11 @@ static int
 file_hash_cmp (const void *x, const void *y)
 {
   return_ISTRING_COMPARE (((struct file const *) x)->hname,
-                         ((struct file const *) y)->hname);
+                          ((struct file const *) y)->hname);
 }
 
-#ifndef        FILE_BUCKETS
-#define FILE_BUCKETS   1007
+#ifndef FILE_BUCKETS
+#define FILE_BUCKETS    1007
 #endif
 static struct hash_table files;
 
@@ -105,20 +103,20 @@ lookup_file (const char *name)
 #endif
   while (name[0] == '.'
 #ifdef HAVE_DOS_PATHS
-        && (name[1] == '/' || name[1] == '\\')
+         && (name[1] == '/' || name[1] == '\\')
 #else
-        && name[1] == '/'
+         && name[1] == '/'
 #endif
-        && name[2] != '\0')
+         && name[2] != '\0')
     {
       name += 2;
       while (*name == '/'
 #ifdef HAVE_DOS_PATHS
-            || *name == '\\'
+             || *name == '\\'
 #endif
-            )
-       /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
-       ++name;
+             )
+        /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
+        ++name;
     }
 
   if (*name == '\0')
@@ -155,7 +153,7 @@ enter_file (const char *name)
   struct file file_key;
 
   assert (*name != '\0');
-  assert (strcache_iscached (name));
+  assert (! verify_flag || strcache_iscached (name));
 
 #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
   if (*name != '.')
@@ -179,11 +177,14 @@ enter_file (const char *name)
   file_slot = (struct file **) hash_find_slot (&files, &file_key);
   f = *file_slot;
   if (! HASH_VACANT (f) && !f->double_colon)
-    return f;
+    {
+      f->builtin = 0;
+      return f;
+    }
 
   new = xcalloc (sizeof (struct file));
   new->name = new->hname = name;
-  new->update_status = -1;
+  new->update_status = us_none;
 
   if (HASH_VACANT (f))
     {
@@ -202,7 +203,7 @@ enter_file (const char *name)
 }
 \f
 /* Rehash FILE to NAME.  This is not as simple as resetting
-   the `hname' member, since it must be put in a new hash bucket,
+   the 'hname' member, since it must be put in a new hash bucket,
    and possibly merged with an existing file called NAME.  */
 
 void
@@ -215,6 +216,7 @@ rehash_file (struct file *from_file, const char *to_hname)
   struct file *f;
 
   /* If it's already that name, we're done.  */
+  from_file->builtin = 0;
   file_key.hname = to_hname;
   if (! file_hash_cmp (from_file, &file_key))
     return;
@@ -264,18 +266,18 @@ rehash_file (struct file *from_file, const char *to_hname)
              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,"),
+                   _("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,"),
+                   _("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'."),
+                 _("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'."),
+                 _("Recipe for '%s' will be ignored in favor of the one for '%s'."),
                  to_hname, from_file->name);
         }
     }
@@ -295,12 +297,12 @@ rehash_file (struct file *from_file, const char *to_hname)
   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'"),
+    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'"),
+        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;
@@ -320,14 +322,16 @@ rehash_file (struct file *from_file, const char *to_hname)
   MERGE (is_target);
   MERGE (cmd_target);
   MERGE (phony);
+  MERGE (loaded);
   MERGE (ignore_vpath);
 #undef MERGE
 
+  to_file->builtin = 0;
   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,
+   the 'name' member, since it must be put in a new hash bucket,
    and possibly merged with an existing file called NAME.  */
 
 void
@@ -365,52 +369,52 @@ remove_intermediates (int sig)
   for ( ; file_slot < file_end; file_slot++)
     if (! HASH_VACANT (*file_slot))
       {
-       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
            it's not precious.  */
-       if (f->intermediate && (f->dontcare || !f->precious)
-           && !f->secondary && !f->cmd_target)
-         {
-           int status;
-           if (f->update_status == -1)
-             /* If nothing would have created this file yet,
-                don't print an "rm" command for it.  */
-             continue;
-           if (just_print_flag)
-             status = 0;
-           else
-             {
-               status = unlink (f->name);
-               if (status < 0 && errno == ENOENT)
-                 continue;
-             }
-           if (!f->dontcare)
-             {
-               if (sig)
-                 error (NILF, _("*** Deleting intermediate file `%s'"), f->name);
-               else
-                 {
-                   if (! doneany)
-                     DB (DB_BASIC, (_("Removing intermediate files...\n")));
-                   if (!silent_flag)
-                     {
-                       if (! doneany)
-                         {
-                           fputs ("rm ", stdout);
-                           doneany = 1;
-                         }
-                       else
-                         putchar (' ');
-                       fputs (f->name, stdout);
-                       fflush (stdout);
-                     }
-                 }
-               if (status < 0)
-                 perror_with_name ("unlink: ", f->name);
-             }
-         }
+        if (f->intermediate && (f->dontcare || !f->precious)
+            && !f->secondary && !f->cmd_target)
+          {
+            int status;
+            if (f->update_status == us_none)
+              /* If nothing would have created this file yet,
+                 don't print an "rm" command for it.  */
+              continue;
+            if (just_print_flag)
+              status = 0;
+            else
+              {
+                status = unlink (f->name);
+                if (status < 0 && errno == ENOENT)
+                  continue;
+              }
+            if (!f->dontcare)
+              {
+                if (sig)
+                  error (NILF, _("*** Deleting intermediate file '%s'"), f->name);
+                else
+                  {
+                    if (! doneany)
+                      DB (DB_BASIC, (_("Removing intermediate files...\n")));
+                    if (!silent_flag)
+                      {
+                        if (! doneany)
+                          {
+                            fputs ("rm ", stdout);
+                            doneany = 1;
+                          }
+                        else
+                          putchar (' ');
+                        fputs (f->name, stdout);
+                        fflush (stdout);
+                      }
+                  }
+                if (status < 0)
+                  perror_with_name ("unlink: ", f->name);
+              }
+          }
       }
 
   if (doneany && !sig)
@@ -426,7 +430,8 @@ remove_intermediates (int sig)
 struct dep *
 split_prereqs (char *p)
 {
-  struct dep *new = PARSE_FILE_SEQ (&p, struct dep, '|', NULL, 0);
+  struct dep *new = PARSE_FILE_SEQ (&p, struct dep, MAP_PIPE, NULL,
+                                    PARSEFS_NONE);
 
   if (*p)
     {
@@ -435,7 +440,7 @@ split_prereqs (char *p)
       struct dep *ood;
 
       ++p;
-      ood = PARSE_FILE_SEQ (&p, struct dep, '\0', NULL, 0);
+      ood = PARSE_SIMPLE_SEQ (&p, struct dep);
 
       if (! new)
         new = ood;
@@ -575,12 +580,11 @@ expand_deps (struct file *f)
          "$*" so they'll expand properly.  */
       if (d->staticpattern)
         {
-          char *o;
-          d->name = o = variable_expand ("");
+          char *o = variable_expand ("");
           o = subst_expand (o, name, "%", "$*", 1, 2, 0);
           *o = '\0';
           free (name);
-          d->name = name = xstrdup (d->name);
+          d->name = name = xstrdup (variable_buffer);
           d->staticpattern = 0;
         }
 
@@ -637,8 +641,8 @@ reset_updating (const void *item)
   f->updating = 0;
 }
 
-/* For each dependency of each file, make the `struct dep' point
-   at the appropriate `struct file' (which may have to be created).
+/* For each dependency of each file, make the 'struct dep' point
+   at the appropriate 'struct file' (which may have to be created).
 
    Also mark the files depended on by .PRECIOUS, .PHONY, .SILENT,
    and various other special targets.  */
@@ -693,23 +697,23 @@ snap_deps (void)
   for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev)
     for (d = f->deps; d != 0; d = d->next)
       for (f2 = d->file; f2 != 0; f2 = f2->prev)
-       f2->precious = 1;
+        f2->precious = 1;
 
   for (f = lookup_file (".LOW_RESOLUTION_TIME"); f != 0; f = f->prev)
     for (d = f->deps; d != 0; d = d->next)
       for (f2 = d->file; f2 != 0; f2 = f2->prev)
-       f2->low_resolution_time = 1;
+        f2->low_resolution_time = 1;
 
   for (f = lookup_file (".PHONY"); f != 0; f = f->prev)
     for (d = f->deps; d != 0; d = d->next)
       for (f2 = d->file; f2 != 0; f2 = f2->prev)
-       {
-         /* Mark this file as phony nonexistent target.  */
-         f2->phony = 1;
+        {
+          /* Mark this file as phony nonexistent target.  */
+          f2->phony = 1;
           f2->is_target = 1;
-         f2->last_mtime = NONEXISTENT_MTIME;
-         f2->mtime_before_update = NONEXISTENT_MTIME;
-       }
+          f2->last_mtime = NONEXISTENT_MTIME;
+          f2->mtime_before_update = NONEXISTENT_MTIME;
+        }
 
   for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev)
     /* Mark .INTERMEDIATE deps as intermediate files.  */
@@ -741,22 +745,22 @@ snap_deps (void)
   if (f != 0 && f->is_target)
     {
       if (f->deps == 0)
-       ignore_errors_flag = 1;
+        ignore_errors_flag = 1;
       else
-       for (d = f->deps; d != 0; d = d->next)
-         for (f2 = d->file; f2 != 0; f2 = f2->prev)
-           f2->command_flags |= COMMANDS_NOERROR;
+        for (d = f->deps; d != 0; d = d->next)
+          for (f2 = d->file; f2 != 0; f2 = f2->prev)
+            f2->command_flags |= COMMANDS_NOERROR;
     }
 
   f = lookup_file (".SILENT");
   if (f != 0 && f->is_target)
     {
       if (f->deps == 0)
-       silent_flag = 1;
+        silent_flag = 1;
       else
-       for (d = f->deps; d != 0; d = d->next)
-         for (f2 = d->file; f2 != 0; f2 = f2->prev)
-           f2->command_flags |= COMMANDS_SILENT;
+        for (d = f->deps; d != 0; d = d->next)
+          for (f2 = d->file; f2 != 0; f2 = f2->prev)
+            f2->command_flags |= COMMANDS_SILENT;
     }
 
   f = lookup_file (".NOTPARALLEL");
@@ -772,7 +776,7 @@ snap_deps (void)
 #endif
 }
 \f
-/* Set the `command_state' member of FILE and all its `also_make's.  */
+/* Set the 'command_state' member of FILE and all its 'also_make's.  */
 
 void
 set_command_state (struct file *file, enum cmd_state state)
@@ -788,20 +792,21 @@ set_command_state (struct file *file, enum cmd_state state)
 /* Convert an external file timestamp to internal form.  */
 
 FILE_TIMESTAMP
-file_timestamp_cons (const char *fname, time_t s, int ns)
+file_timestamp_cons (const char *fname, time_t stamp, long int ns)
 {
   int offset = ORDINARY_MTIME_MIN + (FILE_TIMESTAMP_HI_RES ? ns : 0);
+  FILE_TIMESTAMP s = stamp;
   FILE_TIMESTAMP product = (FILE_TIMESTAMP) s << FILE_TIMESTAMP_LO_BITS;
   FILE_TIMESTAMP ts = product + offset;
 
   if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX)
-        && product <= ts && ts <= ORDINARY_MTIME_MAX))
+         && product <= ts && ts <= ORDINARY_MTIME_MAX))
     {
       char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
       ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX;
       file_timestamp_sprintf (buf, ts);
       error (NILF, _("%s: Timestamp out of range; substituting %s"),
-            fname ? fname : _("Current time"), buf);
+             fname ? fname : _("Current time"), buf);
     }
 
   return ts;
@@ -825,10 +830,10 @@ file_timestamp_now (int *resolution)
     struct timespec timespec;
     if (clock_gettime (CLOCK_REALTIME, &timespec) == 0)
       {
-       r = 1;
-       s = timespec.tv_sec;
-       ns = timespec.tv_nsec;
-       goto got_time;
+        r = 1;
+        s = timespec.tv_sec;
+        ns = timespec.tv_nsec;
+        goto got_time;
       }
   }
 # endif
@@ -837,10 +842,10 @@ file_timestamp_now (int *resolution)
     struct timeval timeval;
     if (gettimeofday (&timeval, 0) == 0)
       {
-       r = 1000;
-       s = timeval.tv_sec;
-       ns = timeval.tv_usec * 1000;
-       goto got_time;
+        r = 1000;
+        s = timeval.tv_sec;
+        ns = timeval.tv_usec * 1000;
+        goto got_time;
       }
   }
 # endif
@@ -867,8 +872,8 @@ file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts)
 
   if (tm)
     sprintf (p, "%04d-%02d-%02d %02d:%02d:%02d",
-            tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-            tm->tm_hour, tm->tm_min, tm->tm_sec);
+             tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+             tm->tm_hour, tm->tm_min, tm->tm_sec);
   else if (t < 0)
     sprintf (p, "%ld", (long) t);
   else
@@ -919,7 +924,27 @@ print_file (const void *item)
 {
   const struct file *f = item;
 
+  /* If we're not using builtin targets, don't show them.
+
+     Ideally we'd be able to delete them altogether but currently there's no
+     facility to ever delete a file once it's been added.  */
+  if (no_builtin_rules_flag && f->builtin)
+    return;
+
   putchar ('\n');
+
+  if (f->cmds && f->cmds->recipe_prefix != cmd_prefix)
+    {
+      fputs (".RECIPEPREFIX = ", stdout);
+      cmd_prefix = f->cmds->recipe_prefix;
+      if (cmd_prefix != RECIPEPREFIX_DEFAULT)
+        putchar (cmd_prefix);
+      putchar ('\n');
+    }
+
+  if (f->variables != 0)
+    print_target_variables (f);
+
   if (!f->is_target)
     puts (_("# Not a target:"));
   printf ("%s:%s", f->name, f->double_colon ? ":" : "");
@@ -933,11 +958,13 @@ print_file (const void *item)
     puts (_("#  Command line target."));
   if (f->dontcare)
     puts (_("#  A default, MAKEFILES, or -include/sinclude makefile."));
+  if (f->builtin)
+    puts (_("#  Builtin rule"));
   puts (f->tried_implicit
         ? _("#  Implicit rule search has been done.")
         : _("#  Implicit rule search has not been done."));
   if (f->stem != 0)
-    printf (_("#  Implicit/static pattern stem: `%s'\n"), f->stem);
+    printf (_("#  Implicit/static pattern stem: '%s'\n"), f->stem);
   if (f->intermediate)
     puts (_("#  File is an intermediate prerequisite."));
   if (f->also_make != 0)
@@ -945,7 +972,7 @@ print_file (const void *item)
       const struct dep *d;
       fputs (_("#  Also makes:"), stdout);
       for (d = f->also_make; d != 0; d = d->next)
-       printf (" %s", dep_name (d));
+        printf (" %s", dep_name (d));
       putchar ('\n');
     }
   if (f->last_mtime == UNKNOWN_MTIME)
@@ -973,28 +1000,23 @@ print_file (const void *item)
     case cs_not_started:
     case cs_finished:
       switch (f->update_status)
-       {
-       case -1:
-         break;
-       case 0:
-         puts (_("#  Successfully updated."));
-         break;
-       case 1:
-         assert (question_flag);
-         puts (_("#  Needs to be updated (-q is set)."));
-         break;
-       case 2:
-         puts (_("#  Failed to be updated."));
-         break;
-       default:
-         puts (_("#  Invalid value in `update_status' member!"));
-         fflush (stdout);
-         fflush (stderr);
-         abort ();
-       }
+        {
+        case us_none:
+          break;
+        case us_success:
+          puts (_("#  Successfully updated."));
+          break;
+        case us_question:
+          assert (question_flag);
+          puts (_("#  Needs to be updated (-q is set)."));
+          break;
+        case us_failed:
+          puts (_("#  Failed to be updated."));
+          break;
+        }
       break;
     default:
-      puts (_("#  Invalid value in `command_state' member!"));
+      puts (_("#  Invalid value in 'command_state' member!"));
       fflush (stdout);
       fflush (stderr);
       abort ();
@@ -1026,7 +1048,7 @@ print_file_data_base (void)
 #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); \
+          error (NULL, _("%s: Field '%s' not cached: %s"), _p->name, # _n, _p->_n); \
     }while(0)
 
 static void
index 0a621b9..f458551 100644 (file)
--- a/filedef.h
+++ b/filedef.h
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -19,7 +17,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Structure that represents the info on one file
    that the makefile says how to make.
-   All of these are chained together through `next'.  */
+   All of these are chained together through 'next'.  */
 
 #include "hash.h"
 
@@ -28,22 +26,18 @@ struct file
     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.  */
-    const char *stem;          /* Implicit stem, if an implicit
+    struct dep *deps;           /* all dependencies, including duplicates */
+    struct commands *cmds;      /* Commands to execute for this target.  */
+    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
-                                           has been performed.  */
-    struct file *prev;         /* Previous entry for same file name;
-                                  used when there are multiple double-colon
-                                  entries for the same file.  */
+    struct dep *also_make;      /* Targets that are made by making this.  */
+    struct file *prev;          /* Previous entry for same file name;
+                                   used when there are multiple double-colon
+                                   entries for the same file.  */
     struct file *last;          /* Last entry for the same file name.  */
 
     /* File that this file was renamed to.  After any time that a
-       file could be renamed, call `check_renamed' (below).  */
+       file could be renamed, call 'check_renamed' (below).  */
     struct file *renamed;
 
     /* List of variable sets used for this file.  */
@@ -61,34 +55,44 @@ struct file
        the same file.  Otherwise this is null.  */
     struct file *double_colon;
 
-    short int update_status;   /* Status of the last attempt to update,
-                                  or -1 if none has been made.  */
-
-    enum cmd_state             /* State of the commands.  */
-      {                /* Note: It is important that cs_not_started be zero.  */
-       cs_not_started,         /* Not yet started.  */
-       cs_deps_running,        /* Dep commands running.  */
-       cs_running,             /* Commands running.  */
-       cs_finished             /* Commands finished.  */
+    FILE_TIMESTAMP last_mtime;  /* File's modtime, if already known.  */
+    FILE_TIMESTAMP mtime_before_update; /* File's modtime before any updating
+                                           has been performed.  */
+    int command_flags;          /* Flags OR'd in for cmds; see commands.h.  */
+    enum update_status          /* Status of the last attempt to update.  */
+      {
+        us_success = 0,         /* Successfully updated.  Must be 0!  */
+        us_none,                /* No attempt to update has been made.  */
+        us_question,            /* Needs to be updated (-q is is set).  */
+        us_failed               /* Update failed.  */
+      } update_status ENUM_BITFIELD (2);
+    enum cmd_state              /* State of the commands.  */
+      {
+        cs_not_started = 0,     /* Not yet started.  Must be 0!  */
+        cs_deps_running,        /* Dep commands running.  */
+        cs_running,             /* Commands running.  */
+        cs_finished             /* Commands finished.  */
       } command_state ENUM_BITFIELD (2);
 
-    unsigned int precious:1;   /* Non-0 means don't delete file on quit */
-    unsigned int low_resolution_time:1;        /* Nonzero if this file's time stamp
-                                          has only one-second resolution.  */
+    unsigned int builtin:1;     /* True if the file is a builtin rule. */
+    unsigned int precious:1;    /* Non-0 means don't delete file on quit */
+    unsigned int loaded:1;      /* True if the file is a loaded object. */
+    unsigned int low_resolution_time:1; /* Nonzero if this file's time stamp
+                                           has only one-second resolution.  */
     unsigned int tried_implicit:1; /* Nonzero if have searched
-                                     for implicit rule for making
-                                     this file; don't search again.  */
-    unsigned int updating:1;   /* Nonzero while updating deps of this file */
-    unsigned int updated:1;    /* Nonzero if this file has been remade.  */
-    unsigned int is_target:1;  /* Nonzero if file is described as target.  */
-    unsigned int cmd_target:1; /* Nonzero if file was given on cmd line.  */
-    unsigned int phony:1;      /* Nonzero if this is a phony file
-                                  i.e., a prerequisite of .PHONY.  */
+                                      for implicit rule for making
+                                      this file; don't search again.  */
+    unsigned int updating:1;    /* Nonzero while updating deps of this file */
+    unsigned int updated:1;     /* Nonzero if this file has been remade.  */
+    unsigned int is_target:1;   /* Nonzero if file is described as target.  */
+    unsigned int cmd_target:1;  /* Nonzero if file was given on cmd line.  */
+    unsigned int phony:1;       /* Nonzero if this is a phony file
+                                   i.e., a prerequisite of .PHONY.  */
     unsigned int intermediate:1;/* Nonzero if this is an intermediate file.  */
     unsigned int secondary:1;   /* Nonzero means remove_intermediates should
                                    not delete it.  */
-    unsigned int dontcare:1;   /* Nonzero if no complaint is to be made if
-                                  this target cannot be remade.  */
+    unsigned int dontcare:1;    /* Nonzero if no complaint is to be made if
+                                   this target cannot be remade.  */
     unsigned int ignore_vpath:1;/* Nonzero if we threw out VPATH name.  */
     unsigned int pat_searched:1;/* Nonzero if we already searched for
                                    pattern-specific variables.  */
@@ -119,7 +123,7 @@ void print_file_data_base (void);
 
 #if FILE_TIMESTAMP_HI_RES
 # define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
-    file_timestamp_cons (fname, (st).st_mtime, (st).st_mtim.ST_MTIM_NSEC)
+    file_timestamp_cons (fname, (st).st_mtime, (st).ST_MTIM_NSEC)
 #else
 # define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
     file_timestamp_cons (fname, (st).st_mtime, 0)
@@ -134,9 +138,9 @@ void print_file_data_base (void);
 #define FILE_TIMESTAMP_LO_BITS (FILE_TIMESTAMP_HI_RES ? 30 : 0)
 
 #define FILE_TIMESTAMP_S(ts) (((ts) - ORDINARY_MTIME_MIN) \
-                             >> FILE_TIMESTAMP_LO_BITS)
+                              >> FILE_TIMESTAMP_LO_BITS)
 #define FILE_TIMESTAMP_NS(ts) ((int) (((ts) - ORDINARY_MTIME_MIN) \
-                                     & ((1 << FILE_TIMESTAMP_LO_BITS) - 1)))
+                                      & ((1 << FILE_TIMESTAMP_LO_BITS) - 1)))
 
 /* Upper bound on length of string "YYYY-MM-DD HH:MM:SS.NNNNNNNNN"
    representing a file timestamp.  The upper bound is not necessarily 19,
@@ -156,7 +160,7 @@ void print_file_data_base (void);
     * 302 / 1000) \
    + 1 + 1 + 4 + 25)
 
-FILE_TIMESTAMP file_timestamp_cons (char const *, time_t, int);
+FILE_TIMESTAMP file_timestamp_cons (char const *, time_t, long int);
 FILE_TIMESTAMP file_timestamp_now (int *);
 void file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts);
 
@@ -187,13 +191,13 @@ FILE_TIMESTAMP f_mtime (struct file *file, int search);
 /* The smallest and largest ordinary timestamps.  */
 #define ORDINARY_MTIME_MIN (OLD_MTIME + 1)
 #define ORDINARY_MTIME_MAX ((FILE_TIMESTAMP_S (NEW_MTIME) \
-                            << FILE_TIMESTAMP_LO_BITS) \
-                           + ORDINARY_MTIME_MIN + FILE_TIMESTAMPS_PER_S - 1)
+                             << FILE_TIMESTAMP_LO_BITS) \
+                            + ORDINARY_MTIME_MIN + FILE_TIMESTAMPS_PER_S - 1)
 
-/* Modtime value to use for `infinitely new'.  We used to get the current time
-   from the system and use that whenever we wanted `new'.  But that causes
+/* Modtime value to use for 'infinitely new'.  We used to get the current time
+   from the system and use that whenever we wanted 'new'.  But that causes
    trouble when the machine running make and the machine holding a file have
-   different ideas about what time it is; and can also lose for `force'
+   different ideas about what time it is; and can also lose for 'force'
    targets, which need to be considered newer than anything that depends on
    them, even if said dependents' modtimes are in the future.  */
 #define NEW_MTIME INTEGER_TYPE_MAXIMUM (FILE_TIMESTAMP)
index e2f6c8c..ecce627 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "variable.h"
 #include "dep.h"
@@ -31,12 +29,16 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 struct function_table_entry
   {
+    union {
+      char *(*func_ptr) (char *output, char **argv, const char *fname);
+      gmk_func_ptr alloc_func_ptr;
+    } fptr;
     const char *name;
     unsigned char len;
     unsigned char minimum_args;
     unsigned char maximum_args;
-    char expand_args;
-    char *(*func_ptr) (char *output, char **argv, const char *fname);
+    unsigned char expand_args:1;
+    unsigned char alloc_fn:1;
   };
 
 static unsigned long
@@ -85,42 +87,42 @@ subst_expand (char *o, const char *text, const char *subst, const char *replace,
       /* The first occurrence of "" in any string is its end.  */
       o = variable_buffer_output (o, t, strlen (t));
       if (rlen > 0)
-       o = variable_buffer_output (o, replace, rlen);
+        o = variable_buffer_output (o, replace, rlen);
       return o;
     }
 
   do
     {
       if (by_word && slen == 0)
-       /* When matching by words, the empty string should match
-          the end of each word, rather than the end of the whole text.  */
-       p = end_of_token (next_token (t));
+        /* When matching by words, the empty string should match
+           the end of each word, rather than the end of the whole text.  */
+        p = end_of_token (next_token (t));
       else
-       {
-         p = strstr (t, subst);
-         if (p == 0)
-           {
-             /* No more matches.  Output everything left on the end.  */
-             o = variable_buffer_output (o, t, strlen (t));
-             return o;
-           }
-       }
+        {
+          p = strstr (t, subst);
+          if (p == 0)
+            {
+              /* No more matches.  Output everything left on the end.  */
+              o = variable_buffer_output (o, t, strlen (t));
+              return o;
+            }
+        }
 
       /* Output everything before this occurrence of the string to replace.  */
       if (p > t)
-       o = variable_buffer_output (o, t, p - t);
+        o = variable_buffer_output (o, t, p - t);
 
       /* If we're substituting only by fully matched words,
-        or only at the ends of words, check that this case qualifies.  */
+         or only at the ends of words, check that this case qualifies.  */
       if (by_word
           && ((p > text && !isblank ((unsigned char)p[-1]))
-              || (p[slen] != '\0' && !isblank ((unsigned char)p[slen]))))
-       /* Struck out.  Output the rest of the string that is
-          no longer to be replaced.  */
-       o = variable_buffer_output (o, subst, slen);
+              || ! STOP_SET (p[slen], MAP_BLANK|MAP_NUL)))
+        /* Struck out.  Output the rest of the string that is
+           no longer to be replaced.  */
+        o = variable_buffer_output (o, subst, slen);
       else if (rlen > 0)
-       /* Output the replacement string.  */
-       o = variable_buffer_output (o, replace, rlen);
+        /* Output the replacement string.  */
+        o = variable_buffer_output (o, replace, rlen);
 
       /* Advance T past the string to be replaced.  */
       t = p + slen;
@@ -167,7 +169,7 @@ patsubst_expand_pat (char *o, const char *text,
   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);
+                         strlen (pattern), strlen (replace), 1);
 
   /* Record the length of PATTERN before and after the %
      so we don't have to compute it more than once.  */
@@ -180,53 +182,53 @@ patsubst_expand_pat (char *o, const char *text,
 
       /* Is it big enough to match?  */
       if (len < pattern_prepercent_len + pattern_postpercent_len)
-       fail = 1;
+        fail = 1;
 
       /* Does the prefix match? */
       if (!fail && pattern_prepercent_len > 0
-         && (*t != *pattern
-             || t[pattern_prepercent_len - 1] != pattern_percent[-2]
-             || !strneq (t + 1, pattern + 1, pattern_prepercent_len - 1)))
-       fail = 1;
+          && (*t != *pattern
+              || t[pattern_prepercent_len - 1] != pattern_percent[-2]
+              || !strneq (t + 1, pattern + 1, pattern_prepercent_len - 1)))
+        fail = 1;
 
       /* Does the suffix match? */
       if (!fail && pattern_postpercent_len > 0
-         && (t[len - 1] != pattern_percent[pattern_postpercent_len - 1]
-             || t[len - pattern_postpercent_len] != *pattern_percent
-             || !strneq (&t[len - pattern_postpercent_len],
-                         pattern_percent, pattern_postpercent_len - 1)))
-       fail = 1;
+          && (t[len - 1] != pattern_percent[pattern_postpercent_len - 1]
+              || t[len - pattern_postpercent_len] != *pattern_percent
+              || !strneq (&t[len - pattern_postpercent_len],
+                          pattern_percent, pattern_postpercent_len - 1)))
+        fail = 1;
 
       if (fail)
-       /* It didn't match.  Output the string.  */
-       o = variable_buffer_output (o, t, len);
+        /* It didn't match.  Output the string.  */
+        o = variable_buffer_output (o, t, len);
       else
-       {
-         /* It matched.  Output the replacement.  */
-
-         /* Output the part of the replacement before the %.  */
-         o = variable_buffer_output (o, replace, replace_prepercent_len);
-
-         if (replace_percent != 0)
-           {
-             /* Output the part of the matched string that
-                matched the % in the pattern.  */
-             o = variable_buffer_output (o, t + pattern_prepercent_len,
-                                         len - (pattern_prepercent_len
-                                                + pattern_postpercent_len));
-             /* Output the part of the replacement after the %.  */
-             o = variable_buffer_output (o, replace_percent,
-                                         replace_postpercent_len);
-           }
-       }
+        {
+          /* It matched.  Output the replacement.  */
+
+          /* Output the part of the replacement before the %.  */
+          o = variable_buffer_output (o, replace, replace_prepercent_len);
+
+          if (replace_percent != 0)
+            {
+              /* Output the part of the matched string that
+                 matched the % in the pattern.  */
+              o = variable_buffer_output (o, t + pattern_prepercent_len,
+                                          len - (pattern_prepercent_len
+                                                 + pattern_postpercent_len));
+              /* Output the part of the replacement after the %.  */
+              o = variable_buffer_output (o, replace_percent,
+                                          replace_postpercent_len);
+            }
+        }
 
       /* Output a space, but not if the replacement is "".  */
       if (fail || replace_prepercent_len > 0
-         || (replace_percent != 0 && len + replace_postpercent_len > 0))
-       {
-         o = variable_buffer_output (o, " ", 1);
-         doneany = 1;
-       }
+          || (replace_percent != 0 && len + replace_postpercent_len > 0))
+        {
+          o = variable_buffer_output (o, " ", 1);
+          doneany = 1;
+        }
     }
   if (doneany)
     /* Kill the last space.  */
@@ -267,19 +269,19 @@ patsubst_expand (char *o, const char *text, char *pattern, char *replace)
 static const struct function_table_entry *
 lookup_function (const char *s)
 {
+  struct function_table_entry function_table_entry_key;
   const char *e = s;
 
-  while (*e && ( (*e >= 'a' && *e <= 'z') || *e == '-'))
+  while (STOP_SET (*e, MAP_USERFUNC))
     e++;
-  if (*e == '\0' || isblank ((unsigned char) *e))
-    {
-      struct function_table_entry function_table_entry_key;
-      function_table_entry_key.name = s;
-      function_table_entry_key.len = e - s;
 
-      return hash_find_item (&function_table, &function_table_entry_key);
-    }
-  return 0;
+  if (e == s || !STOP_SET(*e, MAP_NUL|MAP_SPACE))
+    return NULL;
+
+  function_table_entry_key.name = s;
+  function_table_entry_key.len = e - s;
+
+  return hash_find_item (&function_table, &function_table_entry_key);
 }
 \f
 
@@ -297,7 +299,7 @@ pattern_matches (const char *pattern, const char *percent, const char *str)
       memcpy (new_chars, pattern, len);
       percent = find_percent (new_chars);
       if (percent == 0)
-       return streq (new_chars, str);
+        return streq (new_chars, str);
       pattern = new_chars;
     }
 
@@ -331,9 +333,9 @@ find_next_argument (char startparen, char endparen,
 
     else if (*ptr == endparen)
       {
-       --count;
-       if (count < 0)
-         return NULL;
+        --count;
+        if (count < 0)
+          return NULL;
       }
 
     else if (*ptr == ',' && !count)
@@ -355,8 +357,8 @@ string_glob (char *line)
   struct nameseq *chain;
   unsigned int idx;
 
-  chain = PARSE_FILE_SEQ (&line, struct nameseq, '\0', NULL,
-                          /* We do not want parse_file_seq to strip `./'s.
+  chain = PARSE_FILE_SEQ (&line, struct nameseq, MAP_NUL, 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);
@@ -428,17 +430,17 @@ func_join (char *o, char **argv, const char *funcname UNUSED)
 
       tp = find_next_token (&list1_iterator, &len1);
       if (tp != 0)
-       o = variable_buffer_output (o, tp, len1);
+        o = variable_buffer_output (o, tp, len1);
 
       pp = find_next_token (&list2_iterator, &len2);
       if (pp != 0)
-       o = variable_buffer_output (o, pp, len2);
+        o = variable_buffer_output (o, pp, len2);
 
       if (tp != 0 || pp != 0)
-       {
-         o = variable_buffer_output (o, " ", 1);
-         doneany = 1;
-       }
+        {
+          o = variable_buffer_output (o, " ", 1);
+          doneany = 1;
+        }
     }
   while (tp != 0 || pp != 0);
   if (doneany)
@@ -461,29 +463,29 @@ func_origin (char *o, char **argv, const char *funcname UNUSED)
       {
       default:
       case o_invalid:
-       abort ();
-       break;
+        abort ();
+        break;
       case o_default:
-       o = variable_buffer_output (o, "default", 7);
-       break;
+        o = variable_buffer_output (o, "default", 7);
+        break;
       case o_env:
-       o = variable_buffer_output (o, "environment", 11);
-       break;
+        o = variable_buffer_output (o, "environment", 11);
+        break;
       case o_file:
-       o = variable_buffer_output (o, "file", 4);
-       break;
+        o = variable_buffer_output (o, "file", 4);
+        break;
       case o_env_override:
-       o = variable_buffer_output (o, "environment override", 20);
-       break;
+        o = variable_buffer_output (o, "environment override", 20);
+        break;
       case o_command:
-       o = variable_buffer_output (o, "command line", 12);
-       break;
+        o = variable_buffer_output (o, "command line", 12);
+        break;
       case o_override:
-       o = variable_buffer_output (o, "override", 8);
-       break;
+        o = variable_buffer_output (o, "override", 8);
+        break;
       case o_automatic:
-       o = variable_buffer_output (o, "automatic", 9);
-       break;
+        o = variable_buffer_output (o, "automatic", 9);
+        break;
       }
 
   return o;
@@ -505,16 +507,6 @@ func_flavor (char *o, char **argv, const char *funcname UNUSED)
   return o;
 }
 
-#ifdef VMS
-# define IS_PATHSEP(c) ((c) == ']')
-#else
-# ifdef HAVE_DOS_PATHS
-#  define IS_PATHSEP(c) ((c) == '/' || (c) == '\\')
-# else
-#  define IS_PATHSEP(c) ((c) == '/')
-# endif
-#endif
-
 
 static char *
 func_notdir_suffix (char *o, char **argv, const char *funcname)
@@ -525,44 +517,40 @@ func_notdir_suffix (char *o, char **argv, const char *funcname)
   int doneany =0;
   unsigned int len=0;
 
-  int is_suffix = streq (funcname, "suffix");
+  int is_suffix = funcname[0] == 's';
   int is_notdir = !is_suffix;
+  int stop = MAP_PATHSEP | (is_suffix ? MAP_DOT : 0);
   while ((p2 = find_next_token (&list_iterator, &len)) != 0)
     {
-      const char *p = p2 + len;
+      const char *p = p2 + len - 1;
 
-
-      while (p >= p2 && (!is_suffix || *p != '.'))
-       {
-         if (IS_PATHSEP (*p))
-           break;
-         --p;
-       }
+      while (p >= p2 && ! STOP_SET (*p, stop))
+        --p;
 
       if (p >= p2)
-       {
-         if (is_notdir)
-           ++p;
-         else if (*p != '.')
-           continue;
-         o = variable_buffer_output (o, p, len - (p - p2));
-       }
+        {
+          if (is_notdir)
+            ++p;
+          else if (*p != '.')
+            continue;
+          o = variable_buffer_output (o, p, len - (p - p2));
+        }
 #ifdef HAVE_DOS_PATHS
       /* Handle the case of "d:foo/bar".  */
-      else if (streq (funcname, "notdir") && p2[0] && p2[1] == ':')
-       {
-         p = p2 + 2;
-         o = variable_buffer_output (o, p, len - (p - p2));
-       }
+      else if (is_notdir && p2[0] && p2[1] == ':')
+        {
+          p = p2 + 2;
+          o = variable_buffer_output (o, p, len - (p - p2));
+        }
 #endif
       else if (is_notdir)
-       o = variable_buffer_output (o, p2, len);
+        o = variable_buffer_output (o, p2, len);
 
       if (is_notdir || p >= p2)
-       {
-         o = variable_buffer_output (o, " ", 1);
-         doneany = 1;
-       }
+        {
+          o = variable_buffer_output (o, " ", 1);
+          doneany = 1;
+        }
     }
 
   if (doneany)
@@ -579,21 +567,17 @@ func_basename_dir (char *o, char **argv, const char *funcname)
   /* Expand the argument.  */
   const char *p3 = argv[0];
   const char *p2;
-  int doneany=0;
-  unsigned int len=0;
-
-  int is_basename= streq (funcname, "basename");
-  int is_dir= !is_basename;
+  int doneany = 0;
+  unsigned int len = 0;
 
+  int is_basename = funcname[0] == 'b';
+  int is_dir = !is_basename;
+  int stop = MAP_PATHSEP | (is_basename ? MAP_DOT : 0) | MAP_NUL;
   while ((p2 = find_next_token (&p3, &len)) != 0)
     {
-      const char *p = p2 + len;
-      while (p >= p2 && (!is_basename  || *p != '.'))
-        {
-          if (IS_PATHSEP (*p))
-            break;
-          --p;
-        }
+      const char *p = p2 + len - 1;
+      while (p >= p2 && ! STOP_SET (*p, stop))
+        --p;
 
       if (p >= p2 && (is_dir))
         o = variable_buffer_output (o, p2, ++p - p2);
@@ -634,7 +618,7 @@ func_addsuffix_addprefix (char *o, char **argv, const char *funcname)
 {
   int fixlen = strlen (argv[0]);
   const char *list_iterator = argv[1];
-  int is_addprefix = streq (funcname, "addprefix");
+  int is_addprefix = funcname[3] == 'p';
   int is_addsuffix = !is_addprefix;
 
   int doneany = 0;
@@ -644,10 +628,10 @@ func_addsuffix_addprefix (char *o, char **argv, const char *funcname)
   while ((p = find_next_token (&list_iterator, &len)) != 0)
     {
       if (is_addprefix)
-       o = variable_buffer_output (o, argv[0], fixlen);
+        o = variable_buffer_output (o, argv[0], fixlen);
       o = variable_buffer_output (o, p, len);
       if (is_addsuffix)
-       o = variable_buffer_output (o, argv[0], fixlen);
+        o = variable_buffer_output (o, argv[0], fixlen);
       o = variable_buffer_output (o, " ", 1);
       doneany = 1;
     }
@@ -663,7 +647,7 @@ static char *
 func_subst (char *o, char **argv, const char *funcname UNUSED)
 {
   o = subst_expand (o, argv[2], argv[0], argv[1], strlen (argv[0]),
-                   strlen (argv[1]), 0);
+                    strlen (argv[1]), 0);
 
   return o;
 }
@@ -706,7 +690,7 @@ func_words (char *o, char **argv, const char *funcname UNUSED)
   const char *word_iterator = argv[0];
   char buf[20];
 
-  while (find_next_token (&word_iterator, (unsigned int *) 0) != 0)
+  while (find_next_token (&word_iterator, NULL) != 0)
     ++i;
 
   sprintf (buf, "%d", i);
@@ -738,7 +722,7 @@ check_numeric (const char *s, const char *msg)
   strip_whitespace (&s, &end);
 
   for (; s <= end; ++s)
-    if (!ISDIGIT (*s))  /* ISDIGIT only evals its arg once: see make.h.  */
+    if (!ISDIGIT (*s))  /* ISDIGIT only evals its arg once: see makeint.h.  */
       break;
 
   if (s <= end || end - beg < 0)
@@ -755,12 +739,12 @@ func_word (char *o, char **argv, const char *funcname UNUSED)
   int i;
 
   /* Check the first argument.  */
-  check_numeric (argv[0], _("non-numeric first argument to `word' function"));
+  check_numeric (argv[0], _("non-numeric first argument to 'word' function"));
   i = atoi (argv[0]);
 
   if (i == 0)
     fatal (*expanding_var,
-           _("first argument to `word' function must be greater than 0"));
+           _("first argument to 'word' function must be greater than 0"));
 
   end_p = argv[1];
   while ((p = find_next_token (&end_p, 0)) != 0)
@@ -780,14 +764,14 @@ func_wordlist (char *o, char **argv, const char *funcname UNUSED)
 
   /* Check the arguments.  */
   check_numeric (argv[0],
-                _("non-numeric first argument to `wordlist' function"));
+                 _("non-numeric first argument to 'wordlist' function"));
   check_numeric (argv[1],
-                _("non-numeric second argument to `wordlist' function"));
+                 _("non-numeric second argument to 'wordlist' function"));
 
   start = atoi (argv[0]);
   if (start < 1)
     fatal (*expanding_var,
-           "invalid first argument to `wordlist' function: `%d'", start);
+           "invalid first argument to 'wordlist' function: '%d'", start);
 
   count = atoi (argv[1]) - start + 1;
 
@@ -896,7 +880,7 @@ a_word_hash_cmp (const void *x, const void *y)
   if (result)
     return result;
   return_STRING_COMPARE (((struct a_word const *) x)->str,
-                        ((struct a_word const *) y)->str);
+                         ((struct a_word const *) y)->str);
 }
 
 struct a_pattern
@@ -905,7 +889,6 @@ struct a_pattern
   char *str;
   char *percent;
   int length;
-  int save_c;
 };
 
 static char *
@@ -919,7 +902,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
   struct a_pattern *pp;
 
   struct hash_table a_word_table;
-  int is_filter = streq (funcname, "filter");
+  int is_filter = funcname[CSTRLEN ("filter")] == '\0';
   const char *pat_iterator = argv[0];
   const char *word_iterator = argv[1];
   int literals = 0;
@@ -928,7 +911,9 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
   char *p;
   unsigned int len;
 
-  /* Chop ARGV[0] up into patterns to match against the words.  */
+  /* Chop ARGV[0] up into patterns to match against the words.
+     We don't need to preserve it because our caller frees all the
+     argument memory anyway.  */
 
   pattail = &pathead;
   while ((p = find_next_token (&pat_iterator, &len)) != 0)
@@ -939,15 +924,16 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
       pattail = &pat->next;
 
       if (*pat_iterator != '\0')
-       ++pat_iterator;
+        ++pat_iterator;
 
       pat->str = p;
-      pat->length = len;
-      pat->save_c = p[len];
       p[len] = '\0';
       pat->percent = find_percent (p);
       if (pat->percent == 0)
-       literals++;
+        literals++;
+
+      /* find_percent() might shorten the string so LEN is wrong.  */
+      pat->length = strlen (pat->str);
     }
   *pattail = 0;
 
@@ -962,7 +948,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
       wordtail = &word->next;
 
       if (*word_iterator != '\0')
-       ++word_iterator;
+        ++word_iterator;
 
       p[len] = '\0';
       word->str = p;
@@ -980,11 +966,11 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
       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);
-         if (owp)
-           wp->chain = owp;
-       }
+        {
+          struct a_word *owp = hash_insert (&a_word_table, wp);
+          if (owp)
+            wp->chain = owp;
+        }
     }
 
   if (words)
@@ -993,45 +979,42 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
 
       /* Run each pattern through the words, killing words.  */
       for (pp = pathead; pp != 0; pp = pp->next)
-       {
-         if (pp->percent)
-           for (wp = wordhead; wp != 0; wp = wp->next)
-             wp->matched |= pattern_matches (pp->str, pp->percent, wp->str);
-         else if (hashing)
-           {
-             struct a_word a_word_key;
-             a_word_key.str = pp->str;
-             a_word_key.length = pp->length;
-             wp = hash_find_item (&a_word_table, &a_word_key);
-             while (wp)
-               {
-                 wp->matched |= 1;
-                 wp = wp->chain;
-               }
-           }
-         else
-           for (wp = wordhead; wp != 0; wp = wp->next)
-             wp->matched |= (wp->length == pp->length
-                             && strneq (pp->str, wp->str, wp->length));
-       }
+        {
+          if (pp->percent)
+            for (wp = wordhead; wp != 0; wp = wp->next)
+              wp->matched |= pattern_matches (pp->str, pp->percent, wp->str);
+          else if (hashing)
+            {
+              struct a_word a_word_key;
+              a_word_key.str = pp->str;
+              a_word_key.length = pp->length;
+              wp = hash_find_item (&a_word_table, &a_word_key);
+              while (wp)
+                {
+                  wp->matched |= 1;
+                  wp = wp->chain;
+                }
+            }
+          else
+            for (wp = wordhead; wp != 0; wp = wp->next)
+              wp->matched |= (wp->length == pp->length
+                              && strneq (pp->str, wp->str, wp->length));
+        }
 
       /* Output the words that matched (or didn't, for filter-out).  */
       for (wp = wordhead; wp != 0; wp = wp->next)
-       if (is_filter ? wp->matched : !wp->matched)
-         {
-           o = variable_buffer_output (o, wp->str, strlen (wp->str));
-           o = variable_buffer_output (o, " ", 1);
-           doneany = 1;
-         }
+        if (is_filter ? wp->matched : !wp->matched)
+          {
+            o = variable_buffer_output (o, wp->str, strlen (wp->str));
+            o = variable_buffer_output (o, " ", 1);
+            doneany = 1;
+          }
 
       if (doneany)
-       /* Kill the last space.  */
-       --o;
+        /* Kill the last space.  */
+        --o;
     }
 
-  for (pp = pathead; pp != 0; pp = pp->next)
-    pp->str[pp->length] = pp->save_c;
-
   if (hashing)
     hash_free (&a_word_table, 0);
 
@@ -1051,12 +1034,12 @@ func_strip (char *o, char **argv, const char *funcname UNUSED)
       const char *word_start;
 
       while (isspace ((unsigned char)*p))
-       ++p;
+        ++p;
       word_start = p;
       for (i=0; *p != '\0' && !isspace ((unsigned char)*p); ++p, ++i)
-       {}
+        {}
       if (!i)
-       break;
+        break;
       o = variable_buffer_output (o, word_start, i);
       o = variable_buffer_output (o, " ", 1);
       doneany = 1;
@@ -1096,7 +1079,8 @@ func_error (char *o, char **argv, const char *funcname)
     }
   strcpy (p, *argvp);
 
-  switch (*funcname) {
+  switch (*funcname)
+    {
     case 'e':
       fatal (reading_file, "%s", msg);
 
@@ -1105,13 +1089,13 @@ func_error (char *o, char **argv, const char *funcname)
       break;
 
     case 'i':
-      printf ("%s\n", msg);
-      fflush(stdout);
+      outputs (0, msg);
+      outputs (0, "\n");
       break;
 
     default:
       fatal (*expanding_var, "Internal error: func_error: '%s'", funcname);
-  }
+    }
 
   /* The warning function expands to the empty string.  */
   return o;
@@ -1129,25 +1113,17 @@ func_sort (char *o, char **argv, const char *funcname UNUSED)
   int wordi;
   char *p;
   unsigned int len;
-  int i;
 
   /* 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, NULL)) != 0)
     {
-      char c = *(t++);
-
-      if (! isspace ((unsigned char)c))
-        continue;
-
+      ++t;
       ++wordi;
-
-      while (isspace ((unsigned char)*t))
-        ++t;
     }
 
-  words = xmalloc (wordi * sizeof (char *));
+  words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *));
 
   /* Now assign pointers to each string in the array.  */
   t = argv[0];
@@ -1161,6 +1137,8 @@ func_sort (char *o, char **argv, const char *funcname UNUSED)
 
   if (wordi)
     {
+      int i;
+
       /* Now sort the list of words.  */
       qsort (words, wordi, sizeof (char *), alpha_compare);
 
@@ -1304,12 +1282,12 @@ static char *
 func_and (char *o, char **argv, const char *funcname UNUSED)
 {
   char *expansion;
-  int result;
 
   while (1)
     {
       const char *begp = *argv;
       const char *endp = begp + strlen (*argv) - 1;
+      int result;
 
       /* An empty condition is always false.  */
       strip_whitespace (&begp, &endp);
@@ -1371,7 +1349,7 @@ func_eval (char *o, char **argv, const char *funcname UNUSED)
 
   install_variable_buffer (&buf, &len);
 
-  eval_buffer (argv[0]);
+  eval_buffer (argv[0], NULL);
 
   restore_variable_buffer (buf, len);
 
@@ -1387,35 +1365,39 @@ func_value (char *o, char **argv, const char *funcname UNUSED)
 
   /* Copy its value into the output buffer without expanding it.  */
   if (v)
-    o = variable_buffer_output (o, v->value, strlen(v->value));
+    o = variable_buffer_output (o, v->value, strlen (v->value));
 
   return o;
 }
 
 /*
-  \r  is replaced on UNIX as well. Is this desirable?
+  \r is replaced on UNIX as well. Is this desirable?
  */
 static void
-fold_newlines (char *buffer, unsigned int *length)
+fold_newlines (char *buffer, unsigned int *length, int trim_newlines)
 {
   char *dst = buffer;
   char *src = buffer;
-  char *last_nonnl = buffer -1;
+  char *last_nonnl = buffer - 1;
   src[*length] = 0;
   for (; *src != '\0'; ++src)
     {
       if (src[0] == '\r' && src[1] == '\n')
-       continue;
+        continue;
       if (*src == '\n')
-       {
-         *dst++ = ' ';
-       }
+        {
+          *dst++ = ' ';
+        }
       else
-       {
-         last_nonnl = dst;
-         *dst++ = *src;
-       }
+        {
+          last_nonnl = dst;
+          *dst++ = *src;
+        }
     }
+
+  if (!trim_newlines && (last_nonnl < (dst - 2)))
+    last_nonnl = dst - 2;
+
   *(++last_nonnl) = '\0';
   *length = last_nonnl - buffer;
 }
@@ -1433,85 +1415,128 @@ int shell_function_pid = 0, shell_function_completed;
 #include "sub_proc.h"
 
 
-void
+int
 windows32_openpipe (int *pipedes, pid_t *pid_p, char **command_argv, char **envp)
 {
   SECURITY_ATTRIBUTES saAttr;
-  HANDLE hIn;
-  HANDLE hErr;
+  HANDLE hIn = INVALID_HANDLE_VALUE;
+  HANDLE hErr = INVALID_HANDLE_VALUE;
   HANDLE hChildOutRd;
   HANDLE hChildOutWr;
-  HANDLE hProcess;
+  HANDLE hProcess, tmpIn, tmpErr;
+  DWORD e;
 
+  /* Set status for return.  */
+  pipedes[0] = pipedes[1] = -1;
+  *pid_p = (pid_t)-1;
 
   saAttr.nLength = sizeof (SECURITY_ATTRIBUTES);
   saAttr.bInheritHandle = TRUE;
   saAttr.lpSecurityDescriptor = NULL;
 
-  if (DuplicateHandle (GetCurrentProcess(),
-                     GetStdHandle(STD_INPUT_HANDLE),
-                     GetCurrentProcess(),
-                     &hIn,
-                     0,
-                     TRUE,
-                     DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"),
-          GetLastError());
-
-  }
-  if (DuplicateHandle(GetCurrentProcess(),
-                     GetStdHandle(STD_ERROR_HANDLE),
-                     GetCurrentProcess(),
-                     &hErr,
-                     0,
-                     TRUE,
-                     DUPLICATE_SAME_ACCESS) == FALSE) {
-    fatal (NILF, _("windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"),
-          GetLastError());
-  }
-
-  if (!CreatePipe(&hChildOutRd, &hChildOutWr, &saAttr, 0))
-    fatal (NILF, _("CreatePipe() failed (e=%ld)\n"), GetLastError());
-
-  hProcess = process_init_fd(hIn, hChildOutWr, hErr);
+  /* Standard handles returned by GetStdHandle can be NULL or
+     INVALID_HANDLE_VALUE if the parent process closed them.  If that
+     happens, we open the null device and pass its handle to
+     process_begin below as the corresponding handle to inherit.  */
+  tmpIn = GetStdHandle (STD_INPUT_HANDLE);
+  if (DuplicateHandle (GetCurrentProcess (), tmpIn,
+                       GetCurrentProcess (), &hIn,
+                       0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE)
+    {
+      e = GetLastError ();
+      if (e == ERROR_INVALID_HANDLE)
+        {
+          tmpIn = CreateFile ("NUL", GENERIC_READ,
+                              FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                              OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+          if (tmpIn != INVALID_HANDLE_VALUE
+              && DuplicateHandle (GetCurrentProcess (), tmpIn,
+                                  GetCurrentProcess (), &hIn,
+                                  0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE)
+            CloseHandle (tmpIn);
+        }
+      if (hIn == INVALID_HANDLE_VALUE)
+        {
+          error (NILF, _("windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"), e);
+          return -1;
+        }
+    }
+  tmpErr = GetStdHandle (STD_ERROR_HANDLE);
+  if (DuplicateHandle (GetCurrentProcess (), tmpErr,
+                       GetCurrentProcess (), &hErr,
+                       0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE)
+    {
+      e = GetLastError ();
+      if (e == ERROR_INVALID_HANDLE)
+        {
+          tmpErr = CreateFile ("NUL", GENERIC_WRITE,
+                               FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+          if (tmpErr != INVALID_HANDLE_VALUE
+              && DuplicateHandle (GetCurrentProcess (), tmpErr,
+                                  GetCurrentProcess (), &hErr,
+                                  0, TRUE, DUPLICATE_SAME_ACCESS) == FALSE)
+            CloseHandle (tmpErr);
+        }
+      if (hErr == INVALID_HANDLE_VALUE)
+        {
+          error (NILF, _("windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"), e);
+          return -1;
+        }
+    }
+
+  if (! CreatePipe (&hChildOutRd, &hChildOutWr, &saAttr, 0))
+    {
+      error (NILF, _("CreatePipe() failed (e=%ld)\n"), GetLastError());
+      return -1;
+    }
+
+  hProcess = process_init_fd (hIn, hChildOutWr, hErr);
 
   if (!hProcess)
-    fatal (NILF, _("windows32_openpipe(): process_init_fd() failed\n"));
+    {
+      error (NILF, _("windows32_openpipe(): process_init_fd() failed\n"));
+      return -1;
+    }
 
   /* make sure that CreateProcess() has Path it needs */
-  sync_Path_environment();
-  /* `sync_Path_environment' may realloc `environ', so take note of
+  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);
+  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 = (pid_t) hProcess;
+      /* set the pid for returning to caller */
+      *pid_p = (pid_t) hProcess;
 
-  /* set up to read data from child */
-  pipedes[0] = _open_osfhandle((intptr_t) hChildOutRd, O_RDONLY);
+      /* set up to read data from child */
+      pipedes[0] = _open_osfhandle ((intptr_t) hChildOutRd, O_RDONLY);
 
-  /* this will be closed almost right away */
-  pipedes[1] = _open_osfhandle((intptr_t) hChildOutWr, O_APPEND);
-  } else {
-    /* reap/cleanup the failed process */
-       process_cleanup(hProcess);
+      /* this will be closed almost right away */
+      pipedes[1] = _open_osfhandle ((intptr_t) hChildOutWr, O_APPEND);
+      return 0;
+    }
+  else
+    {
+      /* reap/cleanup the failed process */
+      process_cleanup (hProcess);
 
-    /* close handles which were duplicated, they weren't used */
-       CloseHandle(hIn);
-       CloseHandle(hErr);
+      /* close handles which were duplicated, they weren't used */
+      if (hIn != INVALID_HANDLE_VALUE)
+        CloseHandle (hIn);
+      if (hErr != INVALID_HANDLE_VALUE)
+        CloseHandle (hErr);
 
-       /* close pipe handles, they won't be used */
-       CloseHandle(hChildOutRd);
-       CloseHandle(hChildOutWr);
+      /* close pipe handles, they won't be used */
+      CloseHandle (hChildOutRd);
+      CloseHandle (hChildOutWr);
 
-    /* set status for return */
-    pipedes[0] = pipedes[1] = -1;
-    *pid_p = (pid_t)-1;
-  }
+      return -1;
+    }
 }
 #endif
 
@@ -1521,7 +1546,7 @@ FILE *
 msdos_openpipe (int* pipedes, int *pidp, char *text)
 {
   FILE *fpipe=0;
-  /* MSDOS can't fork, but it has `popen'.  */
+  /* MSDOS can't fork, but it has 'popen'.  */
   struct variable *sh = lookup_variable ("SHELL", 5);
   int e;
   extern int dos_command_running, dos_status;
@@ -1536,7 +1561,7 @@ msdos_openpipe (int* pipedes, int *pidp, char *text)
     {
       char buf[PATH_MAX + 7];
       /* This makes sure $SHELL value is used by $(shell), even
-        though the target environment is not passed to it.  */
+         though the target environment is not passed to it.  */
       sprintf (buf, "SHELL=%s", sh->value);
       putenv (buf);
     }
@@ -1555,9 +1580,9 @@ msdos_openpipe (int* pipedes, int *pidp, char *text)
       pipedes[0] = -1;
       *pidp = -1;
       if (dos_status)
-       errno = EINTR;
+        errno = EINTR;
       else if (errno == 0)
-       errno = ENOMEM;
+        errno = ENOMEM;
       shell_function_completed = -1;
     }
   else
@@ -1578,15 +1603,24 @@ msdos_openpipe (int* pipedes, int *pidp, char *text)
 #ifdef VMS
 
 /* VMS can't do $(shell ...)  */
+
+char *
+func_shell_base (char *o, char **argv, int trim_newlines)
+{
+  fprintf (stderr, "This platform does not support shell\n");
+  die (EXIT_FAILURE);
+  return NULL;
+}
+
 #define func_shell 0
 
 #else
 #ifndef _AMIGA
-static char *
-func_shell (char *o, char **argv, const char *funcname UNUSED)
+char *
+func_shell_base (char *o, char **argv, int trim_newlines)
 {
   char *batch_filename = NULL;
-
+  int errfd;
 #ifdef __MSDOS__
   FILE *fpipe;
 #endif
@@ -1597,23 +1631,36 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   pid_t pid;
 
 #ifndef __MSDOS__
+#ifdef WINDOWS32
+  /* Reset just_print_flag.  This is needed on Windows when batch files
+     are used to run the commands, because we normally refrain from
+     creating batch files under -n.  */
+  int j_p_f = just_print_flag;
+  just_print_flag = 0;
+#endif
+
   /* Construct the argument list.  */
   command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
                                          &batch_filename);
   if (command_argv == 0)
-    return o;
+    {
+#ifdef WINDOWS32
+      just_print_flag = j_p_f;
+#endif
+      return o;
+    }
 #endif
 
-  /* Using a target environment for `shell' loses in cases like:
-     export var = $(shell echo foobie)
-     because target_environment hits a loop trying to expand $(var)
-     to put it in the environment.  This is even more confusing when
-     var was not explicitly exported, but just appeared in the
-     calling environment.
+  /* Using a target environment for 'shell' loses in cases like:
+       export var = $(shell echo foobie)
+       bad := $(var)
+     because target_environment hits a loop trying to expand $(var) to put it
+     in the environment.  This is even more confusing when 'var' was not
+     explicitly exported, but just appeared in the calling environment.
 
      See Savannah bug #10593.
 
-  envp = target_environment (NILF);
+  envp = target_environment (NULL);
   */
 
   envp = environ;
@@ -1628,6 +1675,12 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   else
     error_prefix = "";
 
+  /* Set up the output in case the shell writes something.  */
+  output_start ();
+
+  errfd = (output_context && output_context->err >= 0
+           ? output_context->err : FD_STDERR);
+
 #if defined(__MSDOS__)
   fpipe = msdos_openpipe (pipedes, &pid, argv[0]);
   if (pipedes[0] < 0)
@@ -1637,11 +1690,14 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
     }
 #elif defined(WINDOWS32)
   windows32_openpipe (pipedes, &pid, command_argv, envp);
+  /* Restore the value of just_print_flag.  */
+  just_print_flag = j_p_f;
+
   if (pipedes[0] < 0)
     {
-      /* open of the pipe failed, mark as failed execution */
+      /* Open of the pipe failed, mark as failed execution.  */
       shell_function_completed = -1;
-
+      perror_with_name (error_prefix, "pipe");
       return o;
     }
   else
@@ -1657,15 +1713,22 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   CLOSE_ON_EXEC(pipedes[1]);
   CLOSE_ON_EXEC(pipedes[0]);
   /* Never use fork()/exec() here! Use spawn() instead in exec_command() */
-  pid = child_execute_job (0, pipedes[1], command_argv, envp);
+  pid = child_execute_job (FD_STDIN, pipedes[1], errfd, command_argv, envp);
   if (pid < 0)
     perror_with_name (error_prefix, "spawn");
 # else /* ! __EMX__ */
-  pid = vfork ();
+  pid = fork ();
   if (pid < 0)
     perror_with_name (error_prefix, "fork");
   else if (pid == 0)
-    child_execute_job (0, pipedes[1], command_argv, envp);
+    {
+#  ifdef SET_STACK_SIZE
+      /* Reset limits, if necessary.  */
+      if (stack_limit.rlim_cur)
+       setrlimit (RLIMIT_STACK, &stack_limit);
+#  endif
+      child_execute_job (FD_STDIN, pipedes[1], errfd, command_argv, envp);
+    }
   else
 # endif
 #endif
@@ -1685,10 +1748,10 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
       free (command_argv);
 
       /* 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.  */
+         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]);
+        close (pipedes[1]);
 #endif
 
       /* Set up and read from the pipe.  */
@@ -1698,23 +1761,23 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
 
       /* Read from the pipe until it gets EOF.  */
       for (i = 0; ; i += cc)
-       {
-         if (i == maxlen)
-           {
-             maxlen += 512;
-             buffer = xrealloc (buffer, maxlen + 1);
-           }
-
-         EINTRLOOP (cc, read (pipedes[0], &buffer[i], maxlen - i));
-         if (cc <= 0)
-           break;
-       }
+        {
+          if (i == maxlen)
+            {
+              maxlen += 512;
+              buffer = xrealloc (buffer, maxlen + 1);
+            }
+
+          EINTRLOOP (cc, read (pipedes[0], &buffer[i], maxlen - i));
+          if (cc <= 0)
+            break;
+        }
       buffer[i] = '\0';
 
       /* Close the read side of the pipe.  */
 #ifdef  __MSDOS__
       if (fpipe)
-       (void) pclose (fpipe);
+        (void) pclose (fpipe);
 #else
       (void) close (pipedes[0]);
 #endif
@@ -1722,34 +1785,35 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
       /* Loop until child_handler or reap_children()  sets
          shell_function_completed to the status of our child shell.  */
       while (shell_function_completed == 0)
-       reap_children (1, 0);
+        reap_children (1, 0);
 
-      if (batch_filename) {
-       DB (DB_VERBOSE, (_("Cleaning up temporary batch file %s\n"),
-                       batch_filename));
-       remove (batch_filename);
-       free (batch_filename);
-      }
+      if (batch_filename)
+        {
+          DB (DB_VERBOSE, (_("Cleaning up temporary batch file %s\n"),
+                           batch_filename));
+          remove (batch_filename);
+          free (batch_filename);
+        }
       shell_function_pid = 0;
 
       /* The child_handler function will set shell_function_completed
-        to 1 when the child dies normally, or to -1 if it
-        dies with status 127, which is most likely an exec fail.  */
+         to 1 when the child dies normally, or to -1 if it
+         dies with status 127, which is most likely an exec fail.  */
 
       if (shell_function_completed == -1)
-       {
-         /* This likely means that the execvp failed, so we should just
-            write the error message in the pipe from the child.  */
-         fputs (buffer, stderr);
-         fflush (stderr);
-       }
+        {
+          /* This likely means that the execvp failed, so we should just
+             write the error message in the pipe from the child.  */
+          fputs (buffer, stderr);
+          fflush (stderr);
+        }
       else
-       {
-         /* The child finished normally.  Replace all newlines in its output
-            with spaces, and put that in the variable output buffer.  */
-         fold_newlines (buffer, &i);
-         o = variable_buffer_output (o, buffer, i);
-       }
+        {
+          /* The child finished normally.  Replace all newlines in its output
+             with spaces, and put that in the variable output buffer.  */
+          fold_newlines (buffer, &i, trim_newlines);
+          o = variable_buffer_output (o, buffer, i);
+        }
 
       free (buffer);
     }
@@ -1757,12 +1821,12 @@ func_shell (char *o, char **argv, const char *funcname UNUSED)
   return o;
 }
 
-#else  /* _AMIGA */
+#else   /* _AMIGA */
 
 /* Do the Amiga version of func_shell.  */
 
-static char *
-func_shell (char *o, char **argv, const char *funcname)
+char *
+func_shell_base (char *o, char **argv, int trim_newlines)
 {
   /* Amiga can't fork nor spawn, but I can start a program with
      redirection of my choice.  However, this means that we
@@ -1792,7 +1856,7 @@ func_shell (char *o, char **argv, const char *funcname)
     return o;
 
   /* Note the mktemp() is a security hole, but this only runs on Amiga.
-     Ideally we would use main.c:open_tmpfile(), but this uses a special
+     Ideally we would use output_tmpfile(), but this uses a special
      Open(), not fopen(), and I'm not familiar enough with the code to mess
      with it.  */
   strcpy (tmp_output, "t:MakeshXXXXXXXX");
@@ -1827,33 +1891,39 @@ func_shell (char *o, char **argv, const char *funcname)
   do
     {
       if (i == maxlen)
-       {
-         maxlen += 512;
-         buffer = xrealloc (buffer, maxlen + 1);
-       }
+        {
+          maxlen += 512;
+          buffer = xrealloc (buffer, maxlen + 1);
+        }
 
       cc = Read (child_stdout, &buffer[i], maxlen - i);
       if (cc > 0)
-       i += cc;
+        i += cc;
     } while (cc > 0);
 
   Close (child_stdout);
 
-  fold_newlines (buffer, &i);
+  fold_newlines (buffer, &i, trim_newlines);
   o = variable_buffer_output (o, buffer, i);
   free (buffer);
   return o;
 }
 #endif  /* _AMIGA */
+
+char *
+func_shell (char *o, char **argv, const char *funcname UNUSED)
+{
+  return func_shell_base (o, argv, 1);
+}
 #endif  /* !VMS */
 
 #ifdef EXPERIMENTAL
 
 /*
-  equality. Return is string-boolean, ie, the empty string is false.
+  equality. Return is string-boolean, i.e., the empty string is false.
  */
 static char *
-func_eq (char *o, char **argv, char *funcname)
+func_eq (char *o, char **argv, char *funcname UNUSED)
 {
   int result = ! strcmp (argv[0], argv[1]);
   o = variable_buffer_output (o,  result ? "1" : "", result);
@@ -1865,7 +1935,7 @@ func_eq (char *o, char **argv, char *funcname)
   string-boolean not operator.
  */
 static char *
-func_not (char *o, char **argv, char *funcname)
+func_not (char *o, char **argv, char *funcname UNUSED)
 {
   const char *s = argv[0];
   int result = 0;
@@ -1879,15 +1949,19 @@ func_not (char *o, char **argv, char *funcname)
 \f
 
 #ifdef HAVE_DOS_PATHS
-#define IS_ABSOLUTE(n) (n[0] && n[1] == ':')
-#define ROOT_LEN 3
+# ifdef __CYGWIN__
+#  define IS_ABSOLUTE(n) ((n[0] && n[1] == ':') || STOP_SET (n[0], MAP_PATHSEP))
+# else
+#  define IS_ABSOLUTE(n) (n[0] && n[1] == ':')
+# endif
+# 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 ('/').   */
+/* Return the absolute name of file NAME which does not contain any '.',
+   '..' components nor any repeated path separators ('/').   */
 
 static char *
 abspath (const char *name, char *apath)
@@ -1905,50 +1979,54 @@ abspath (const char *name, char *apath)
     {
       /* It is unlikely we would make it until here but just to make sure. */
       if (!starting_directory)
-       return NULL;
+        return NULL;
 
       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';
-       }
+      if (STOP_SET (name[0], MAP_PATHSEP))
+        {
+          if (STOP_SET (name[1], MAP_PATHSEP))
+            {
+              /* 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
     {
+#if defined(__CYGWIN__) && defined(HAVE_DOS_PATHS)
+      if (STOP_SET (name[0], MAP_PATHSEP))
+       root_len = 1;
+#endif
       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--;
-       }
+      if (! STOP_SET (apath[root_len - 1], MAP_PATHSEP))
+        {
+          /* 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 */
+        apath[root_len - 1] = '/'; /* make sure it's a forward slash */
 #endif
     }
 
@@ -1957,41 +2035,42 @@ abspath (const char *name, char *apath)
       unsigned long len;
 
       /* Skip sequence of multiple path-separators.  */
-      while (IS_PATHSEP(*start))
-       ++start;
+      while (STOP_SET (*start, MAP_PATHSEP))
+        ++start;
 
       /* Find end of path component.  */
-      for (end = start; *end != '\0' && !IS_PATHSEP(*end); ++end)
+      for (end = start; ! STOP_SET (*end, MAP_PATHSEP|MAP_NUL); ++end)
         ;
 
       len = end - start;
 
       if (len == 0)
-       break;
+        break;
       else if (len == 1 && start[0] == '.')
-       /* nothing */;
+        /* nothing */;
       else if (len == 2 && start[0] == '.' && start[1] == '.')
-       {
-         /* Back up to previous component, ignore if at root already.  */
-         if (dest > apath + root_len)
-           for (--dest; !IS_PATHSEP(dest[-1]); --dest);
-       }
+        {
+          /* Back up to previous component, ignore if at root already.  */
+          if (dest > apath + root_len)
+            for (--dest; ! STOP_SET (dest[-1], MAP_PATHSEP); --dest)
+              ;
+        }
       else
-       {
-         if (!IS_PATHSEP(dest[-1]))
+        {
+          if (! STOP_SET (dest[-1], MAP_PATHSEP))
             *dest++ = '/';
 
-         if (dest + len >= apath_limit)
+          if (dest + len >= apath_limit)
             return NULL;
 
-         dest = memcpy (dest, start, len);
+          dest = memcpy (dest, start, len);
           dest += len;
-         *dest = '\0';
-       }
+          *dest = '\0';
+        }
     }
 
   /* Unless it is root strip trailing separator.  */
-  if (dest > apath + root_len && IS_PATHSEP(dest[-1]))
+  if (dest > apath + root_len && STOP_SET (dest[-1], MAP_PATHSEP))
     --dest;
 
   *dest = '\0';
@@ -2008,30 +2087,35 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
   const char *path = 0;
   int doneany = 0;
   unsigned int len = 0;
-#ifndef HAVE_REALPATH
-  struct stat st;
-#endif
-  PATH_VAR (in);
-  PATH_VAR (out);
 
   while ((path = find_next_token (&p, &len)) != 0)
     {
       if (len < GET_PATH_MAX)
         {
+          char *rp;
+          struct stat st;
+          PATH_VAR (in);
+          PATH_VAR (out);
+
           strncpy (in, path, len);
           in[len] = '\0';
 
-          if (
 #ifdef HAVE_REALPATH
-              realpath (in, out)
+          ENULLLOOP (rp, realpath (in, out));
 #else
-              abspath (in, out) && stat (out, &st) == 0
+          rp = abspath (in, out);
 #endif
-             )
+
+          if (rp)
             {
-              o = variable_buffer_output (o, out, strlen (out));
-              o = variable_buffer_output (o, " ", 1);
-              doneany = 1;
+              int r;
+              EINTRLOOP (r, stat (out, &st));
+              if (r == 0)
+                {
+                  o = variable_buffer_output (o, out, strlen (out));
+                  o = variable_buffer_output (o, " ", 1);
+                  doneany = 1;
+                }
             }
         }
     }
@@ -2044,6 +2128,45 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
 }
 
 static char *
+func_file (char *o, char **argv, const char *funcname UNUSED)
+{
+  char *fn = argv[0];
+
+  if (fn[0] == '>')
+    {
+      FILE *fp;
+      const char *mode = "w";
+
+      /* We are writing a file.  */
+      ++fn;
+      if (fn[0] == '>')
+        {
+          mode = "a";
+          ++fn;
+        }
+      fn = next_token (fn);
+
+      fp = fopen (fn, mode);
+      if (fp == NULL)
+        fatal (reading_file, _("open: %s: %s"), fn, strerror (errno));
+      else
+        {
+          int l = strlen (argv[1]);
+          int nl = (l == 0 || argv[1][l-1] != '\n');
+
+          if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF))
+            fatal (reading_file, _("write: %s: %s"), fn, strerror (errno));
+
+          fclose (fp);
+        }
+    }
+  else
+    fatal (reading_file, _("Invalid file operation: %s"), fn);
+
+  return o;
+}
+
+static char *
 func_abspath (char *o, char **argv, const char *funcname UNUSED)
 {
   /* Expand the argument.  */
@@ -2051,13 +2174,14 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
   const char *path = 0;
   int doneany = 0;
   unsigned int len = 0;
-  PATH_VAR (in);
-  PATH_VAR (out);
 
   while ((path = find_next_token (&p, &len)) != 0)
     {
       if (len < GET_PATH_MAX)
         {
+          PATH_VAR (in);
+          PATH_VAR (out);
+
           strncpy (in, path, len);
           in[len] = '\0';
 
@@ -2091,48 +2215,51 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
 
 static char *func_call (char *o, char **argv, const char *funcname);
 
+#define FT_ENTRY(_name, _min, _max, _exp, _func) \
+  { { (_func) }, STRING_SIZE_TUPLE(_name), (_min), (_max), (_exp), 0 }
 
 static struct function_table_entry function_table_init[] =
 {
- /* Name/size */                    /* MIN MAX EXP? Function */
-  { STRING_SIZE_TUPLE("abspath"),       0,  1,  1,  func_abspath},
-  { STRING_SIZE_TUPLE("addprefix"),     2,  2,  1,  func_addsuffix_addprefix},
-  { STRING_SIZE_TUPLE("addsuffix"),     2,  2,  1,  func_addsuffix_addprefix},
-  { STRING_SIZE_TUPLE("basename"),      0,  1,  1,  func_basename_dir},
-  { STRING_SIZE_TUPLE("dir"),           0,  1,  1,  func_basename_dir},
-  { STRING_SIZE_TUPLE("notdir"),        0,  1,  1,  func_notdir_suffix},
-  { STRING_SIZE_TUPLE("subst"),         3,  3,  1,  func_subst},
-  { STRING_SIZE_TUPLE("suffix"),        0,  1,  1,  func_notdir_suffix},
-  { STRING_SIZE_TUPLE("filter"),        2,  2,  1,  func_filter_filterout},
-  { STRING_SIZE_TUPLE("filter-out"),    2,  2,  1,  func_filter_filterout},
-  { STRING_SIZE_TUPLE("findstring"),    2,  2,  1,  func_findstring},
-  { STRING_SIZE_TUPLE("firstword"),     0,  1,  1,  func_firstword},
-  { STRING_SIZE_TUPLE("flavor"),        0,  1,  1,  func_flavor},
-  { STRING_SIZE_TUPLE("join"),          2,  2,  1,  func_join},
-  { STRING_SIZE_TUPLE("lastword"),      0,  1,  1,  func_lastword},
-  { STRING_SIZE_TUPLE("patsubst"),      3,  3,  1,  func_patsubst},
-  { STRING_SIZE_TUPLE("realpath"),      0,  1,  1,  func_realpath},
-  { STRING_SIZE_TUPLE("shell"),         0,  1,  1,  func_shell},
-  { STRING_SIZE_TUPLE("sort"),          0,  1,  1,  func_sort},
-  { STRING_SIZE_TUPLE("strip"),         0,  1,  1,  func_strip},
-  { STRING_SIZE_TUPLE("wildcard"),      0,  1,  1,  func_wildcard},
-  { STRING_SIZE_TUPLE("word"),          2,  2,  1,  func_word},
-  { STRING_SIZE_TUPLE("wordlist"),      3,  3,  1,  func_wordlist},
-  { STRING_SIZE_TUPLE("words"),         0,  1,  1,  func_words},
-  { STRING_SIZE_TUPLE("origin"),        0,  1,  1,  func_origin},
-  { STRING_SIZE_TUPLE("foreach"),       3,  3,  0,  func_foreach},
-  { STRING_SIZE_TUPLE("call"),          1,  0,  1,  func_call},
-  { STRING_SIZE_TUPLE("info"),          0,  1,  1,  func_error},
-  { STRING_SIZE_TUPLE("error"),         0,  1,  1,  func_error},
-  { STRING_SIZE_TUPLE("warning"),       0,  1,  1,  func_error},
-  { STRING_SIZE_TUPLE("if"),            2,  3,  0,  func_if},
-  { STRING_SIZE_TUPLE("or"),            1,  0,  0,  func_or},
-  { STRING_SIZE_TUPLE("and"),           1,  0,  0,  func_and},
-  { STRING_SIZE_TUPLE("value"),         0,  1,  1,  func_value},
-  { STRING_SIZE_TUPLE("eval"),          0,  1,  1,  func_eval},
+ /*         Name            MIN MAX EXP? Function */
+  FT_ENTRY ("abspath",       0,  1,  1,  func_abspath),
+  FT_ENTRY ("addprefix",     2,  2,  1,  func_addsuffix_addprefix),
+  FT_ENTRY ("addsuffix",     2,  2,  1,  func_addsuffix_addprefix),
+  FT_ENTRY ("basename",      0,  1,  1,  func_basename_dir),
+  FT_ENTRY ("dir",           0,  1,  1,  func_basename_dir),
+  FT_ENTRY ("notdir",        0,  1,  1,  func_notdir_suffix),
+  FT_ENTRY ("subst",         3,  3,  1,  func_subst),
+  FT_ENTRY ("suffix",        0,  1,  1,  func_notdir_suffix),
+  FT_ENTRY ("filter",        2,  2,  1,  func_filter_filterout),
+  FT_ENTRY ("filter-out",    2,  2,  1,  func_filter_filterout),
+  FT_ENTRY ("findstring",    2,  2,  1,  func_findstring),
+  FT_ENTRY ("firstword",     0,  1,  1,  func_firstword),
+  FT_ENTRY ("flavor",        0,  1,  1,  func_flavor),
+  FT_ENTRY ("join",          2,  2,  1,  func_join),
+  FT_ENTRY ("lastword",      0,  1,  1,  func_lastword),
+  FT_ENTRY ("patsubst",      3,  3,  1,  func_patsubst),
+  FT_ENTRY ("realpath",      0,  1,  1,  func_realpath),
+  FT_ENTRY ("shell",         0,  1,  1,  func_shell),
+  FT_ENTRY ("sort",          0,  1,  1,  func_sort),
+  FT_ENTRY ("strip",         0,  1,  1,  func_strip),
+  FT_ENTRY ("wildcard",      0,  1,  1,  func_wildcard),
+  FT_ENTRY ("word",          2,  2,  1,  func_word),
+  FT_ENTRY ("wordlist",      3,  3,  1,  func_wordlist),
+  FT_ENTRY ("words",         0,  1,  1,  func_words),
+  FT_ENTRY ("origin",        0,  1,  1,  func_origin),
+  FT_ENTRY ("foreach",       3,  3,  0,  func_foreach),
+  FT_ENTRY ("call",          1,  0,  1,  func_call),
+  FT_ENTRY ("info",          0,  1,  1,  func_error),
+  FT_ENTRY ("error",         0,  1,  1,  func_error),
+  FT_ENTRY ("warning",       0,  1,  1,  func_error),
+  FT_ENTRY ("if",            2,  3,  0,  func_if),
+  FT_ENTRY ("or",            1,  0,  0,  func_or),
+  FT_ENTRY ("and",           1,  0,  0,  func_and),
+  FT_ENTRY ("value",         0,  1,  1,  func_value),
+  FT_ENTRY ("eval",          0,  1,  1,  func_eval),
+  FT_ENTRY ("file",          1,  2,  1,  func_file),
 #ifdef EXPERIMENTAL
-  { STRING_SIZE_TUPLE("eq"),            2,  2,  1,  func_eq},
-  { STRING_SIZE_TUPLE("not"),           0,  1,  1,  func_not},
+  FT_ENTRY ("eq",            2,  2,  1,  func_eq),
+  FT_ENTRY ("not",           0,  1,  1,  func_not),
 #endif
 };
 
@@ -2145,23 +2272,38 @@ static char *
 expand_builtin_function (char *o, int argc, char **argv,
                          const struct function_table_entry *entry_p)
 {
+  char *p;
+
   if (argc < (int)entry_p->minimum_args)
     fatal (*expanding_var,
-           _("insufficient number of arguments (%d) to function `%s'"),
+           _("insufficient number of arguments (%d) to function '%s'"),
            argc, entry_p->name);
 
-  /* I suppose technically some function could do something with no
-     arguments, but so far none do, so just test it for all functions here
+  /* I suppose technically some function could do something with no arguments,
+     but so far no internal ones do, so just test it for all functions here
      rather than in each one.  We can change it later if necessary.  */
 
-  if (!argc)
+  if (!argc && !entry_p->alloc_fn)
     return o;
 
-  if (!entry_p->func_ptr)
+  if (!entry_p->fptr.func_ptr)
     fatal (*expanding_var,
-           _("unimplemented on this platform: function `%s'"), entry_p->name);
+           _("unimplemented on this platform: function '%s'"), entry_p->name);
 
-  return entry_p->func_ptr (o, argv, entry_p->name);
+  if (!entry_p->alloc_fn)
+    return entry_p->fptr.func_ptr (o, argv, entry_p->name);
+
+  /* This function allocates memory and returns it to us.
+     Write it to the variable buffer, then free it.  */
+
+  p = entry_p->fptr.alloc_func_ptr (entry_p->name, argc, argv);
+  if (p)
+    {
+      o = variable_buffer_output (o, p, strlen (p));
+      free (p);
+    }
+
+  return o;
 }
 
 /* Check for a function invocation in *STRINGP.  *STRINGP points at the
@@ -2209,8 +2351,8 @@ handle_function (char **op, const char **stringp)
 
   if (count >= 0)
     fatal (*expanding_var,
-          _("unterminated call to function `%s': missing `%c'"),
-          entry_p->name, closeparen);
+           _("unterminated call to function '%s': missing '%c'"),
+           entry_p->name, closeparen);
 
   *stringp = end;
 
@@ -2276,7 +2418,7 @@ handle_function (char **op, const char **stringp)
   if (entry_p->expand_args)
     for (argvp=argv; *argvp != 0; ++argvp)
       free (*argvp);
-  if (abeg)
+  else if (abeg)
     free (abeg);
 
   return 1;
@@ -2303,7 +2445,7 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
   /* There is no way to define a variable with a space in the name, so strip
      leading and trailing whitespace as a favor to the user.  */
   fname = argv[0];
-  while (*fname != '\0' && isspace ((unsigned char)*fname))
+  while (isspace ((unsigned char)*fname))
     ++fname;
 
   cp = fname + strlen (fname) - 1;
@@ -2388,11 +2530,49 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
 }
 
 void
+define_new_function (const gmk_floc *flocp, const char *name,
+                     unsigned int min, unsigned int max, unsigned int flags,
+                     gmk_func_ptr func)
+{
+  const char *e = name;
+  struct function_table_entry *ent;
+  size_t len;
+
+  while (STOP_SET (*e, MAP_USERFUNC))
+    e++;
+  len = e - name;
+
+  if (len == 0)
+    fatal (flocp, _("Empty function name\n"));
+  if (*name == '.' || *e != '\0')
+    fatal (flocp, _("Invalid function name: %s\n"), name);
+  if (len > 255)
+    fatal (flocp, _("Function name too long: %s\n"), name);
+  if (min > 255)
+    fatal (flocp, _("Invalid minimum argument count (%d) for function %s\n"),
+           min, name);
+  if (max > 255 || (max && max < min))
+    fatal (flocp, _("Invalid maximum argument count (%d) for function %s\n"),
+           max, name);
+
+  ent = xmalloc (sizeof (struct function_table_entry));
+  ent->name = name;
+  ent->len = len;
+  ent->minimum_args = min;
+  ent->maximum_args = max;
+  ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1;
+  ent->alloc_fn = 1;
+  ent->fptr.alloc_func_ptr = func;
+
+  hash_insert (&function_table, ent);
+}
+
+void
 hash_init_function_table (void)
 {
   hash_init (&function_table, FUNCTION_TABLE_ENTRIES * 2,
-            function_table_entry_hash_1, function_table_entry_hash_2,
-            function_table_entry_hash_cmp);
+             function_table_entry_hash_1, function_table_entry_hash_2,
+             function_table_entry_hash_cmp);
   hash_load (&function_table, function_table_init,
-            FUNCTION_TABLE_ENTRIES, sizeof (struct function_table_entry));
+             FUNCTION_TABLE_ENTRIES, sizeof (struct function_table_entry));
 }
index f9d7964..0f5d400 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1985-2013 Free Software Foundation, Inc.
 
 GNU Make is free software; you can redistribute it and/or modify it under the
 terms of the GNU General Public License as published by the Free Software
@@ -86,9 +84,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
 /* Exclude all the code except the test program at the end
-   if the system has its own `getloadavg' function.
+   if the system has its own 'getloadavg' function.
 
-   The declaration of `errno' is needed by the test program
+   The declaration of 'errno' is needed by the test program
    as well as the function itself, so it comes first.  */
 
 #include <errno.h>
@@ -745,7 +743,7 @@ getloadavg (double loadavg[], int nelem)
 #  define LDAV_DONE
   /* This call can return -1 for an error, but with good args
      it's not supposed to fail.  The first argument is for no
-     apparent reason of type `long int *'.  */
+     apparent reason of type 'long int *'.  */
   dg_sys_info ((long int *) &load_info,
               DG_SYS_INFO_LOAD_INFO_TYPE,
               DG_SYS_INFO_LOAD_VERSION_0);
@@ -987,7 +985,7 @@ getloadavg (double loadavg[], int nelem)
 #endif /* ! HAVE_GETLOADAVG */
 \f
 #ifdef TEST
-#include "make.h"
+#include "makeint.h"
 
 int
 main (int argc, char **argv)
index e992da5..5a40b6c 100644 (file)
--- a/getopt.c
+++ b/getopt.c
@@ -3,9 +3,7 @@ NOTE: getopt is now part of the C library, so if you don't know what
 "Keep this file name-space clean" means, talk to drepper@gnu.org
 before changing it!
 
-Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1987-2013 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.
@@ -83,7 +81,7 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define _(msgid)    gettext (msgid)
 
 
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
+/* This version of `getopt' appears to the caller like standard Unix 'getopt'
    but it behaves differently for the user, since it allows the user
    to intersperse the options with the other arguments.
 
@@ -658,7 +656,7 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
       if (ambig && !exact)
        {
          if (opterr)
-           fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+           fprintf (stderr, _("%s: option '%s' is ambiguous\n"),
                     argv[0], argv[optind]);
          nextchar += strlen (nextchar);
          optind++;
@@ -682,12 +680,12 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
                   if (argv[optind - 1][1] == '-')
                    /* --option */
                    fprintf (stderr,
-                    _("%s: option `--%s' doesn't allow an argument\n"),
+                    _("%s: option '--%s' doesn't allow an argument\n"),
                     argv[0], pfound->name);
                   else
                    /* +option or -option */
                    fprintf (stderr,
-                    _("%s: option `%c%s' doesn't allow an argument\n"),
+                    _("%s: option '%c%s' doesn't allow an argument\n"),
                     argv[0], argv[optind - 1][0], pfound->name);
 
                  nextchar += strlen (nextchar);
@@ -704,7 +702,7 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
                {
                  if (opterr)
                    fprintf (stderr,
-                          _("%s: option `%s' requires an argument\n"),
+                          _("%s: option '%s' requires an argument\n"),
                           argv[0], argv[optind - 1]);
                  nextchar += strlen (nextchar);
                  optopt = pfound->val;
@@ -733,11 +731,11 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
            {
              if (argv[optind][1] == '-')
                /* --option */
-               fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+               fprintf (stderr, _("%s: unrecognized option '--%s'\n"),
                         argv[0], nextchar);
              else
                /* +option or -option */
-               fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+               fprintf (stderr, _("%s: unrecognized option '%c%s'\n"),
                         argv[0], argv[optind][0], nextchar);
            }
          nextchar = (char *) "";
@@ -843,7 +841,7 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
        if (ambig && !exact)
          {
            if (opterr)
-             fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+             fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"),
                       argv[0], argv[optind]);
            nextchar += strlen (nextchar);
            optind++;
@@ -862,7 +860,7 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
                  {
                    if (opterr)
                      fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
+%s: option '-W %s' doesn't allow an argument\n"),
                               argv[0], pfound->name);
 
                    nextchar += strlen (nextchar);
@@ -877,7 +875,7 @@ _getopt_internal (int argc, char *const *argv, const char *optstring,
                  {
                    if (opterr)
                      fprintf (stderr,
-                              _("%s: option `%s' requires an argument\n"),
+                              _("%s: option '%s' requires an argument\n"),
                               argv[0], argv[optind - 1]);
                    nextchar += strlen (nextchar);
                    return optstring[0] == ':' ? ':' : '?';
@@ -1003,7 +1001,7 @@ main (int argc, char **argv)
          break;
 
        case 'c':
-         printf ("option c with value `%s'\n", optarg);
+         printf ("option c with value '%s'\n", optarg);
          break;
 
        case '?':
index dff9998..cb8865e 100644 (file)
--- a/getopt.h
+++ b/getopt.h
@@ -1,7 +1,5 @@
 /* Declarations for getopt.
-Copyright (C) 1989, 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.
+Copyright (C) 1989-2013 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.
index 429ad4a..51bea51 100644 (file)
--- a/getopt1.c
+++ b/getopt1.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1987-1994, 1996-2013 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.
@@ -149,11 +147,11 @@ main (int argc, char **argv)
          break;
 
        case 'c':
-         printf ("option c with value `%s'\n", optarg);
+         printf ("option c with value '%s'\n", optarg);
          break;
 
        case 'd':
-         printf ("option d with value `%s'\n", optarg);
+         printf ("option d with value '%s'\n", optarg);
          break;
 
        case '?':
index e8b8b3a..f1156b9 100644 (file)
--- a/gettext.h
+++ b/gettext.h
@@ -1,6 +1,5 @@
 /* Convenience header for conditional use of GNU <libintl.h>.
-Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 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
index 44be58d..3f79418 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # this program.  If not, see <http://www.gnu.org/licenses/>.
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -58,20 +75,26 @@ 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/intlmacosx.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
        $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 libglob_a_AR = $(AR) $(ARFLAGS)
 libglob_a_LIBADD =
 am_libglob_a_OBJECTS = glob.$(OBJEXT) fnmatch.$(OBJEXT)
@@ -82,16 +105,32 @@ am__depfiles_maybe = depfiles
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(libglob_a_SOURCES)
 DIST_SOURCES = $(libglob_a_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -111,16 +150,21 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 KMEM_GROUP = @KMEM_GROUP@
 LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
@@ -133,8 +177,8 @@ LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NEED_SETGID = @NEED_SETGID@
 OBJEXT = @OBJEXT@
@@ -147,6 +191,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REMOTE = @REMOTE@
@@ -156,6 +203,8 @@ STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -251,10 +300,10 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libglob.a: $(libglob_a_OBJECTS) $(libglob_a_DEPENDENCIES) 
-       -rm -f libglob.a
-       $(libglob_a_AR) libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
-       $(RANLIB) libglob.a
+libglob.a: $(libglob_a_OBJECTS) $(libglob_a_DEPENDENCIES) $(EXTRA_libglob_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libglob.a
+       $(AM_V_AR)$(libglob_a_AR) libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libglob.a
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -266,18 +315,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.Po@am__quote@
 
 .c.o:
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -375,10 +424,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
index a613aff..0992de3 100644 (file)
@@ -56,7 +56,7 @@ typedef __SIZE_TYPE__ __size_t;
 #  else
 /* This is a guess.  */
 /*hb
- *     Conflicts with DECCs aready defined type __size_t.
+ *     Conflicts with DECCs already defined type __size_t.
  *     Defining an own type with a name beginning with '__' is no good.
  *     Anyway if DECC is used and __SIZE_T is defined then __size_t is
  *     already defined (and I hope it's exactly the one we need here).
diff --git a/gmk-default.h b/gmk-default.h
new file mode 100644 (file)
index 0000000..9fa09a6
--- /dev/null
@@ -0,0 +1,28 @@
+static const char *const GUILE_module_defn = " \
+(define (to-string-maybe x) \
+  (cond \
+   ((or (not x) \
+        (unspecified? x) \
+        (variable? x) \
+        (null? x) \
+        (and (string? x) (string-null? x))) \
+    #f) \
+   ((eq? x #t) \"#t\") \
+   ((or (symbol? x) (number? x)) \
+    (object->string x)) \
+   ((char? x) \
+    (string x)) \
+   ((and (string? x) (string-every char-set:printing x)) \
+    x) \
+   (else (error \"Unknown object:\" x)))) \
+(define (obj-to-str x) \
+  (let ((acc '())) \
+    (define (walk x) \
+      (cond ((pair? x) (walk (car x)) (walk (cdr x))) \
+            ((to-string-maybe x) => (lambda (s) (set! acc (cons s acc)))))) \
+    (walk x) \
+    (string-join (reverse! acc)))) \
+(define (gmk-var v) \
+  (gmk-expand (format #f \"$(~a)\" (obj-to-str v)))) \
+(export gmk-expand gmk-eval gmk-var) \
+";
diff --git a/gmk-default.scm b/gmk-default.scm
new file mode 100644 (file)
index 0000000..89db652
--- /dev/null
@@ -0,0 +1,53 @@
+;; Contents of the (gnu make) Guile module
+;; Copyright (C) 2011-2013 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/>.
+
+(define (to-string-maybe x)
+  (cond
+   ;; In GNU make, "false" is the empty string
+   ((or (not x)
+        (unspecified? x)
+        (variable? x)
+        (null? x)
+        (and (string? x) (string-null? x)))
+    #f)
+   ;; We want something not false... not sure about this
+   ((eq? x #t) "#t")
+   ;; Basics
+   ((or (symbol? x) (number? x))
+    (object->string x))
+   ((char? x)
+    (string x))
+   ;; Printable string (no special characters)
+   ((and (string? x) (string-every char-set:printing x))
+    x)
+   ;; No idea: fail
+   (else (error "Unknown object:" x))))
+
+(define (obj-to-str x)
+  (let ((acc '()))
+    (define (walk x)
+      (cond ((pair? x) (walk (car x)) (walk (cdr x)))
+            ((to-string-maybe x) => (lambda (s) (set! acc (cons s acc))))))
+    (walk x)
+    (string-join (reverse! acc))))
+
+;; Return the value of the GNU make variable V
+(define (gmk-var v)
+  (gmk-expand (format #f "$(~a)" (obj-to-str v))))
+
+;; Export the public interfaces
+(export gmk-expand gmk-eval gmk-var)
diff --git a/gnumake.h b/gnumake.h
new file mode 100644 (file)
index 0000000..94d725e
--- /dev/null
+++ b/gnumake.h
@@ -0,0 +1,79 @@
+/* External interfaces usable by dynamic objects loaded into GNU Make.
+   --THIS API IS A "TECHNOLOGY PREVIEW" ONLY.  IT IS NOT A STABLE INTERFACE--
+
+Copyright (C) 2013 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 _GNUMAKE_H_
+#define _GNUMAKE_H_
+
+/* Specify the location of elements read from makefiles.  */
+typedef struct
+  {
+    const char *filenm;
+    unsigned long lineno;
+  } gmk_floc;
+
+typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv);
+
+#ifdef _WIN32
+# ifdef GMK_BUILDING_MAKE
+#  define GMK_EXPORT  __declspec(dllexport)
+# else
+#  define GMK_EXPORT  __declspec(dllimport)
+# endif
+#else
+# define GMK_EXPORT
+#endif
+
+/* Free memory returned by the gmk_expand() function.  */
+GMK_EXPORT void gmk_free (char *str);
+
+/* Allocate memory in GNU make's context.  */
+GMK_EXPORT char *gmk_alloc (unsigned int len);
+
+/* Run $(eval ...) on the provided string BUFFER.  */
+GMK_EXPORT void gmk_eval (const char *buffer, const gmk_floc *floc);
+
+/* Run GNU make expansion on the provided string STR.
+   Returns an allocated buffer that the caller must free with gmk_free().  */
+GMK_EXPORT char *gmk_expand (const char *str);
+
+/* Register a new GNU make function NAME (maximum of 255 chars long).
+   When the function is expanded in the makefile, FUNC will be invoked with
+   the appropriate arguments.
+
+   The return value of FUNC must be either NULL, in which case it expands to
+   the empty string, or a pointer to the result of the expansion in a string
+   created by gmk_alloc().  GNU make will free the memory when it's done.
+
+   MIN_ARGS is the minimum number of arguments the function requires.
+   MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum).
+   MIN_ARGS and MAX_ARGS may not exceed 255.
+
+   The FLAGS value may be GMK_FUNC_DEFAULT, or one or more of the following
+   flags OR'd together:
+
+     GMK_FUNC_NOEXPAND: the arguments to the function will be not be expanded
+                        before FUNC is called.
+*/
+GMK_EXPORT void gmk_add_function (const char *name, gmk_func_ptr func,
+                                  unsigned int min_args, unsigned int max_args,
+                                  unsigned int flags);
+
+#define GMK_FUNC_DEFAULT    0x00
+#define GMK_FUNC_NOEXPAND   0x01
+
+#endif  /* _GNUMAKE_H_ */
diff --git a/guile.c b/guile.c
new file mode 100644 (file)
index 0000000..499585c
--- /dev/null
+++ b/guile.c
@@ -0,0 +1,146 @@
+/* GNU Guile interface for GNU Make.
+Copyright (C) 2011-2013 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 "makeint.h"
+#include "gnumake.h"
+
+#include "debug.h"
+#include "filedef.h"
+#include "dep.h"
+#include "variable.h"
+
+#include <libguile.h>
+
+/* Pre-2.0 versions of Guile don't have a typedef for gsubr function types.  */
+#if SCM_MAJOR_VERSION < 2
+# define GSUBR_TYPE         SCM (*) ()
+/* Guile 1.x doesn't really support i18n.  */
+# define EVAL_STRING(_s)    scm_c_eval_string (_s)
+#else
+# define GSUBR_TYPE         scm_t_subr
+# define EVAL_STRING(_s)    scm_eval_string (scm_from_utf8_string (_s))
+#endif
+
+static SCM make_mod = SCM_EOL;
+static SCM obj_to_str = SCM_EOL;
+
+/* Convert an SCM object into a string.  */
+static char *
+cvt_scm_to_str (SCM obj)
+{
+  return scm_to_locale_string (scm_call_1 (obj_to_str, obj));
+}
+
+/* Perform the GNU make expansion function.  */
+static SCM
+guile_expand_wrapper (SCM obj)
+{
+  char *str = cvt_scm_to_str (obj);
+  SCM ret;
+  char *res;
+
+  DB (DB_BASIC, (_("guile: Expanding '%s'\n"), str));
+  res = gmk_expand (str);
+  ret = scm_from_locale_string (res);
+
+  free (str);
+  free (res);
+
+  return ret;
+}
+
+/* Perform the GNU make eval function.  */
+static SCM
+guile_eval_wrapper (SCM obj)
+{
+  char *str = cvt_scm_to_str (obj);
+
+  DB (DB_BASIC, (_("guile: Evaluating '%s'\n"), str));
+  gmk_eval (str, 0);
+
+  return SCM_BOOL_F;
+}
+
+/* Invoked by scm_c_define_module(), in the context of the GNU make module.  */
+static void
+guile_define_module (void *data UNUSED)
+{
+/* Ingest the predefined Guile module for GNU make.  */
+#include "gmk-default.h"
+
+  /* Register a subr for GNU make's eval capability.  */
+  scm_c_define_gsubr ("gmk-expand", 1, 0, 0, (GSUBR_TYPE) guile_expand_wrapper);
+
+  /* Register a subr for GNU make's eval capability.  */
+  scm_c_define_gsubr ("gmk-eval", 1, 0, 0, (GSUBR_TYPE) guile_eval_wrapper);
+
+  /* Define the rest of the module.  */
+  scm_c_eval_string (GUILE_module_defn);
+}
+
+/* Initialize the GNU make Guile module.  */
+static void *
+guile_init (void *arg UNUSED)
+{
+  /* Define the module.  */
+  make_mod = scm_c_define_module ("gnu make", guile_define_module, NULL);
+
+  /* Get a reference to the object-to-string translator, for later.  */
+  obj_to_str = scm_variable_ref (scm_c_module_lookup (make_mod, "obj-to-str"));
+
+  /* Import the GNU make module exports into the generic space.  */
+  scm_c_eval_string ("(use-modules (gnu make))");
+
+  return NULL;
+}
+
+static void *
+internal_guile_eval (void *arg)
+{
+  return cvt_scm_to_str (EVAL_STRING (arg));
+}
+
+/* This is the function registered with make  */
+static char *
+func_guile (const char *funcname UNUSED, unsigned int argc UNUSED, char **argv)
+{
+  static int init = 0;
+
+  if (! init)
+    {
+      /* Initialize the Guile interpreter.  */
+      scm_with_guile (guile_init, NULL);
+      init = 1;
+    }
+
+  if (argv[0] && argv[0][0] != '\0')
+    return scm_with_guile (internal_guile_eval, argv[0]);
+
+  return NULL;
+}
+
+/* ----- Public interface ----- */
+
+/* We could send the flocp to define_new_function(), but since guile is
+   "kind of" built-in, that didn't seem so useful.  */
+int
+guile_gmake_setup (const gmk_floc *flocp UNUSED)
+{
+  /* Create a make function "guile".  */
+  gmk_add_function ("guile", func_guile, 0, 1, GMK_FUNC_DEFAULT);
+
+  return 1;
+}
diff --git a/hash.c b/hash.c
index b91447c..ca2d02d 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -14,10 +14,10 @@ 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 "make.h"
+#include "makeint.h"
 #include "hash.h"
 
-#define        CALLOC(t, n) ((t *) calloc (sizeof (t), (n)))
+#define        CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n)))
 #define MALLOC(t, n) ((t *) xmalloc (sizeof (t) * (n)))
 #define REALLOC(o, t, n) ((t *) xrealloc ((o), sizeof (t) * (n)))
 #define CLONE(o, t, n) ((t *) memcpy (MALLOC (t, (n)), (o), sizeof (t) * (n)))
@@ -26,7 +26,7 @@ static void hash_rehash __P((struct hash_table* ht));
 static unsigned long round_up_2 __P((unsigned long rough));
 
 /* Implement double hashing with open addressing.  The table size is
-   always a power of two.  The secondary (`increment') hash function
+   always a power of two.  The secondary ('increment') hash function
    is forced to return an odd-value, in order to be relatively prime
    to the table size.  This guarantees that the increment can
    potentially hit every slot in the table during collision
@@ -61,7 +61,7 @@ hash_init (struct hash_table *ht, unsigned long size,
   ht->ht_compare = hash_cmp;
 }
 
-/* Load an array of items into `ht'.  */
+/* Load an array of items into 'ht'.  */
 
 void
 hash_load (struct hash_table *ht, void *item_table,
@@ -75,9 +75,9 @@ hash_load (struct hash_table *ht, void *item_table,
     }
 }
 
-/* Returns the address of the table slot matching `key'.  If `key' is
+/* Returns the address of the table slot matching 'key'.  If 'key' is
    not found, return the address of an empty slot suitable for
-   inserting `key'.  The caller is responsible for incrementing
+   inserting 'key'.  The caller is responsible for incrementing
    ht_fill on insertion.  */
 
 void **
diff --git a/hash.h b/hash.h
index 2c78e63..960cbd7 100644 (file)
--- a/hash.h
+++ b/hash.h
@@ -28,9 +28,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #else /* Not C++ or ANSI C.  */
 # undef        __P
 # define __P(protos)   ()
-/* We can get away without defining `const' here only because in this file
-   it is used only inside the prototype for `fnmatch', which is elided in
-   non-ANSI C where `const' is problematical.  */
+/* We can get away without defining 'const' here only because in this file
+   it is used only inside the prototype for 'fnmatch', which is elided in
+   non-ANSI C where 'const' is problematical.  */
 #endif /* C++ or ANSI C.  */
 
 typedef unsigned long (*hash_func_t) __P((void const *key));
@@ -41,6 +41,9 @@ typedef void (*hash_map_arg_func_t) __P((void const *item, void *arg));
 struct hash_table
 {
   void **ht_vec;
+  hash_func_t ht_hash_1;       /* primary hash function */
+  hash_func_t ht_hash_2;       /* secondary hash function */
+  hash_cmp_func_t ht_compare;  /* comparison function */
   unsigned long ht_size;       /* total number of slots (power of 2) */
   unsigned long ht_capacity;   /* usable slots, limited by loading-factor */
   unsigned long ht_fill;       /* items in table */
@@ -48,9 +51,6 @@ struct hash_table
   unsigned long ht_collisions; /* # of failed calls to comparison function */
   unsigned long ht_lookups;    /* # of queries */
   unsigned int ht_rehashes;    /* # of times we've expanded table */
-  hash_func_t ht_hash_1;       /* primary hash function */
-  hash_func_t ht_hash_2;       /* secondary hash function */
-  hash_cmp_func_t ht_compare;  /* comparison function */
 };
 
 typedef int (*qsort_cmp_t) __P((void const *, void const *));
index 5f98108..5fedec0 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "rule.h"
 #include "dep.h"
@@ -37,7 +35,7 @@ static int pattern_search (struct file *file, int archive,
 int
 try_implicit_rule (struct file *file, unsigned int depth)
 {
-  DBF (DB_IMPLICIT, _("Looking for an implicit rule for `%s'.\n"));
+  DBF (DB_IMPLICIT, _("Looking for an implicit rule for '%s'.\n"));
 
   /* The order of these searches was previously reversed.  My logic now is
      that since the non-archive search uses more information in the target
@@ -53,7 +51,7 @@ try_implicit_rule (struct file *file, unsigned int depth)
   if (ar_name (file->name))
     {
       DBF (DB_IMPLICIT,
-           _("Looking for archive-member implicit rule for `%s'.\n"));
+           _("Looking for archive-member implicit rule for '%s'.\n"));
       if (pattern_search (file, 1, depth, 0))
         return 1;
     }
@@ -219,13 +217,10 @@ pattern_search (struct file *file, int archive,
   struct file *int_file = 0;
 
   /* List of dependencies found recursively.  */
-  struct patdeps *deplist
-    = xmalloc (max_pattern_deps * sizeof (struct patdeps));
+  unsigned int max_deps = max_pattern_deps;
+  struct patdeps *deplist = xmalloc (max_deps * sizeof (struct patdeps));
   struct patdeps *pat = deplist;
 
-  /* All the prerequisites actually found for a rule, after expansion.  */
-  struct dep *deps;
-
   /* Names of possible dependencies are constructed in this buffer.  */
   char *depname = alloca (namelen + max_pattern_dep_length);
 
@@ -251,11 +246,9 @@ pattern_search (struct file *file, int archive,
   int file_vars_initialized = 0;
 
   /* Nonzero if we have matched a pattern-rule target
-     that is not just `%'.  */
+     that is not just '%'.  */
   int specific_rule_matched = 0;
 
-  struct dep dep_simple;
-
   unsigned int ri;  /* uninit checks OK */
   struct rule *rule;
 
@@ -402,10 +395,10 @@ pattern_search (struct file *file, int archive,
              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].matches = ti;
           tryrules[nrules].stemlen = stemlen + (check_lastslash ? pathlen : 0);
           tryrules[nrules].order = nrules;
-         tryrules[nrules].checked_lastslash = check_lastslash;
+          tryrules[nrules].checked_lastslash = check_lastslash;
           ++nrules;
         }
     }
@@ -488,7 +481,14 @@ pattern_search (struct file *file, int archive,
               dir = pathdir;
             }
 
-          DBS (DB_IMPLICIT, (_("Trying pattern rule with stem `%.*s'.\n"),
+          if (stemlen > GET_PATH_MAX)
+            {
+              DBS (DB_IMPLICIT, (_("Stem too long: '%.*s'.\n"),
+                                 (int) stemlen, stem));
+              continue;
+            }
+
+          DBS (DB_IMPLICIT, (_("Trying pattern rule with stem '%.*s'.\n"),
                              (int) stemlen, stem));
 
           strncpy (stem_str, stem, stemlen);
@@ -530,11 +530,9 @@ pattern_search (struct file *file, int archive,
               /* 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)
-                    dep_simple.name = nptr;
+                    strcpy (depname, nptr);
                   else
                     {
                       char *o = depname;
@@ -548,13 +546,19 @@ pattern_search (struct file *file, int archive,
                       memcpy (o, stem_str, stemlen);
                       o += stemlen;
                       strcpy (o, p + 1);
-                      dep_simple.name = strcache_add (depname);
                     }
-                  dl = &dep_simple;
+
+                  /* Parse the expanded string.  It might have wildcards.  */
+                  p = depname;
+                  dl = PARSE_SIMPLE_SEQ (&p, struct dep);
+                  for (d = dl; d != NULL; d = d->next)
+                    {
+                      ++deps_found;
+                      d->ignore_mtime = dep->ignore_mtime;
+                    }
 
                   /* We've used up this dep, so next time get a new one.  */
                   nptr = 0;
-                  ++deps_found;
                 }
 
               /* We have to perform second expansion on this prereq.  In an
@@ -570,6 +574,7 @@ pattern_search (struct file *file, int archive,
                 {
                   int add_dir = 0;
                   unsigned int len;
+                  struct dep **dptr;
 
                   nptr = get_next_word (nptr, &len);
                   if (nptr == 0)
@@ -612,6 +617,9 @@ pattern_search (struct file *file, int archive,
                         add_dir = 1;
                     }
 
+                  /* Set up for the next word.  */
+                  nptr += len;
+
                   /* Initialize and set file variables if we haven't already
                      done so. */
                   if (!file_vars_initialized)
@@ -630,32 +638,47 @@ pattern_search (struct file *file, int archive,
 
                   /* Perform the 2nd expansion.  */
                   p = variable_expand_for_file (depname, file);
+                  dptr = &dl;
 
-                  /* Parse the expanded string. */
-                  dl = PARSE_FILE_SEQ (&p, struct dep, order_only ? '\0' : '|',
-                                       add_dir ? dir : NULL, 0);
-
-                  for (d = dl; d != NULL; d = d->next)
+                  /* Parse the results into a deps list.  */
+                  do
                     {
-                      ++deps_found;
-                      if (order_only)
-                        d->ignore_mtime = 1;
-                    }
+                      /* Parse the expanded string. */
+                      struct dep *dp = PARSE_FILE_SEQ (&p, struct dep,
+                                                       order_only ? MAP_NUL : MAP_PIPE,
+                                                       add_dir ? dir : NULL, PARSEFS_NONE);
+                      *dptr = dp;
 
-                  /* Set up for the next word.  */
-                  nptr += len;
+                      for (d = dp; d != NULL; d = d->next)
+                        {
+                          ++deps_found;
+                          if (order_only)
+                            d->ignore_mtime = 1;
+                          dptr = &d->next;
+                        }
+
+                      /* If we stopped due to an order-only token, note it.  */
+                      if (*p == '|')
+                        {
+                          order_only = 1;
+                          ++p;
+                        }
+                    }
+                  while (*p != '\0');
                 }
 
               /* If there are more than max_pattern_deps prerequisites (due to
                  2nd expansion), reset it and realloc the arrays.  */
 
-              if (deps_found > max_pattern_deps)
+              if (deps_found > max_deps)
                 {
                   unsigned int l = pat - deplist;
+                  /* This might have changed due to recursion.  */
+                  max_pattern_deps = MAX(max_pattern_deps, deps_found);
+                  max_deps = max_pattern_deps;
                   deplist = xrealloc (deplist,
-                                      deps_found * sizeof (struct patdeps));
+                                      max_deps * sizeof (struct patdeps));
                   pat = deplist + l;
-                  max_pattern_deps = deps_found;
                 }
 
               /* Go through the nameseq and handle each as a prereq name.  */
@@ -671,8 +694,8 @@ pattern_search (struct file *file, int archive,
                          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"),
+                            ? _("Rejecting impossible rule prerequisite '%s'.\n")
+                            : _("Rejecting impossible implicit prerequisite '%s'.\n"),
                             d->name));
                       tryrules[ri].rule = 0;
 
@@ -685,8 +708,8 @@ pattern_search (struct file *file, int archive,
 
                   DBS (DB_IMPLICIT,
                        (is_rule
-                        ? _("Trying rule prerequisite `%s'.\n")
-                        : _("Trying implicit prerequisite `%s'.\n"), d->name));
+                        ? _("Trying rule prerequisite '%s'.\n")
+                        : _("Trying implicit prerequisite '%s'.\n"), d->name));
 
                   /* If this prereq is also explicitly mentioned for FILE,
                      skip all tests below since it must be built no matter
@@ -725,7 +748,7 @@ pattern_search (struct file *file, int archive,
                     if (vname)
                       {
                         DBS (DB_IMPLICIT,
-                             (_("Found prerequisite `%s' as VPATH `%s'\n"),
+                             (_("Found prerequisite '%s' as VPATH '%s'\n"),
                               d->name, vname));
                         (pat++)->name = d->name;
                         continue;
@@ -739,7 +762,7 @@ pattern_search (struct file *file, int archive,
                   if (intermed_ok)
                     {
                       DBS (DB_IMPLICIT,
-                           (_("Looking for a rule with intermediate file `%s'.\n"),
+                           (_("Looking for a rule with intermediate file '%s'.\n"),
                             d->name));
 
                       if (int_file == 0)
@@ -755,8 +778,8 @@ pattern_search (struct file *file, int archive,
                           pat->pattern = int_file->name;
                           int_file->name = d->name;
                           pat->file = int_file;
-                          (pat++)->name = d->name;
                           int_file = 0;
+                          (pat++)->name = d->name;
                           continue;
                         }
 
@@ -777,8 +800,7 @@ pattern_search (struct file *file, int archive,
                 }
 
               /* Free the ns chain.  */
-              if (dl != &dep_simple)
-                free_dep_chain (dl);
+              free_dep_chain (dl);
 
               if (failed)
                 break;
@@ -788,17 +810,14 @@ pattern_search (struct file *file, int archive,
 
           file->stem = 0;
 
-          /* This rule is no longer `in use' for recursive searches.  */
+          /* This rule is no longer 'in use' for recursive searches.  */
           rule->in_use = 0;
 
           if (! failed)
             /* This pattern rule does apply.  Stop looking for one.  */
             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;
+          /* This pattern rule does not apply.  Keep looking.  */
         }
 
       /* If we found an applicable rule without intermediate files, don't try
@@ -890,8 +909,8 @@ pattern_search (struct file *file, int archive,
           /* 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.  */
+             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
@@ -935,7 +954,7 @@ pattern_search (struct file *file, int archive,
   }
 
   /* If this rule builds other targets, too, put the others into FILE's
-     `also_make' member.  */
+     'also_make' member.  */
 
   if (rule->num > 1)
     for (ri = 0; ri < rule->num; ++ri)
diff --git a/job.c b/job.c
index aacfb84..febfac0 100644 (file)
--- a/job.c
+++ b/job.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
@@ -108,6 +106,7 @@ static void vmsWaitForChildren (int *);
 # include "sub_proc.h"
 # include "w32err.h"
 # include "pathstuff.h"
+# define WAIT_NOHANG 1
 #endif /* WINDOWS32 */
 
 #ifdef __EMX__
@@ -119,13 +118,13 @@ static void vmsWaitForChildren (int *);
 #endif
 
 #ifdef HAVE_WAITPID
-# define WAIT_NOHANG(status)   waitpid (-1, (status), WNOHANG)
-#else  /* Don't have waitpid.  */
+# define WAIT_NOHANG(status)    waitpid (-1, (status), WNOHANG)
+#else   /* Don't have waitpid.  */
 # ifdef HAVE_WAIT3
 #  ifndef wait3
 extern int wait3 ();
 #  endif
-#  define WAIT_NOHANG(status)  wait3 ((status), WNOHANG, (struct rusage *) 0)
+#  define WAIT_NOHANG(status)   wait3 ((status), WNOHANG, (struct rusage *) 0)
 # endif /* Have wait3.  */
 #endif /* Have waitpid.  */
 
@@ -133,7 +132,7 @@ extern int wait3 ();
 int wait ();
 #endif
 
-#ifndef        HAVE_UNION_WAIT
+#ifndef HAVE_UNION_WAIT
 
 # define WAIT_T int
 
@@ -153,7 +152,7 @@ int wait ();
 #  define WIFEXITED(x) (WTERMSIG (x) == 0)
 # endif
 
-#else  /* Have `union wait'.  */
+#else   /* Have 'union wait'.  */
 
 # define WAIT_T union wait
 # ifndef WTERMSIG
@@ -172,7 +171,7 @@ int wait ();
 #  define WIFEXITED(x) (WTERMSIG(x) == 0)
 # endif
 
-#endif /* Don't have `union wait'.  */
+#endif  /* Don't have 'union wait'.  */
 
 #if !defined(HAVE_UNISTD_H) && !defined(WINDOWS32)
 int dup2 ();
@@ -224,7 +223,7 @@ struct child *children = 0;
 
 unsigned int job_slots_used = 0;
 
-/* Nonzero if the `good' standard input is in use.  */
+/* Nonzero if the 'good' standard input is in use.  */
 
 static int good_stdin_used = 0;
 
@@ -244,14 +243,15 @@ unsigned long job_counter = 0;
 
 unsigned int jobserver_tokens = 0;
 \f
+
 #ifdef WINDOWS32
 /*
- * The macro which references this function is defined in make.h.
+ * The macro which references this function is defined in makeint.h.
  */
 int
-w32_kill(pid_t pid, int sig)
+w32_kill (pid_t pid, int sig)
 {
-  return ((process_kill((HANDLE)pid, sig) == TRUE) ? 0 : -1);
+  return ((process_kill ((HANDLE)pid, sig) == TRUE) ? 0 : -1);
 }
 
 /* This function creates a temporary file name with an extension specified
@@ -264,9 +264,18 @@ create_batch_file (char const *base, int unixy, int *fd)
   const char *const ext = unixy ? "sh" : "bat";
   const char *error_string = NULL;
   char temp_path[MAXPATHLEN]; /* need to know its length */
-  unsigned path_size = GetTempPath(sizeof temp_path, temp_path);
+  unsigned path_size = GetTempPath (sizeof temp_path, temp_path);
   int path_is_dot = 0;
-  unsigned uniq = 1;
+  /* The following variable is static so we won't try to reuse a name
+     that was generated a little while ago, because that file might
+     not be on disk yet, since we use FILE_ATTRIBUTE_TEMPORARY below,
+     which tells the OS it doesn't need to flush the cache to disk.
+     If the file is not yet on disk, we might think the name is
+     available, while it really isn't.  This happens in parallel
+     builds, where Make doesn't wait for one job to finish before it
+     launches the next one.  */
+  static unsigned uniq = 0;
+  static int second_loop = 0;
   const unsigned sizemax = strlen (base) + strlen (ext) + 10;
 
   if (path_size == 0)
@@ -275,9 +284,19 @@ create_batch_file (char const *base, int unixy, int *fd)
       path_is_dot = 1;
     }
 
+  ++uniq;
+  if (uniq >= 0x10000 && !second_loop)
+    {
+      /* If we already had 64K batch files in this
+         process, make a second loop through the numbers,
+         looking for free slots, i.e. files that were
+         deleted in the meantime.  */
+      second_loop = 1;
+      uniq = 1;
+    }
   while (path_size > 0 &&
          path_size + sizemax < sizeof temp_path &&
-         uniq < 0x10000)
+         !(uniq >= 0x10000 && second_loop))
     {
       unsigned size = sprintf (temp_path + path_size,
                                "%s%s-%x.%s",
@@ -294,10 +313,17 @@ create_batch_file (char const *base, int unixy, int *fd)
 
       if (h == INVALID_HANDLE_VALUE)
         {
-          const DWORD er = GetLastError();
+          const DWORD er = GetLastError ();
 
           if (er == ERROR_FILE_EXISTS || er == ERROR_ALREADY_EXISTS)
-            ++uniq;
+            {
+              ++uniq;
+              if (uniq == 0x10000 && !second_loop)
+                {
+                  second_loop = 1;
+                  uniq = 1;
+                }
+            }
 
           /* the temporary path is not guaranteed to exist */
           else if (path_is_dot == 0)
@@ -373,11 +399,12 @@ _is_unixy_shell (const char *path)
   if (*name == '/' || *name == '\\') name++;
 
   i = 0;
-  while (known_os2shells[i] != NULL) {
-    if (strcasecmp (name, known_os2shells[i]) == 0)
-      return 0; /* not a unix shell */
-    i++;
-  }
+  while (known_os2shells[i] != NULL)
+    {
+      if (strcasecmp (name, known_os2shells[i]) == 0)
+        return 0; /* not a unix shell */
+      i++;
+    }
 
   /* in doubt assume a unix like shell */
   return 1;
@@ -388,8 +415,8 @@ _is_unixy_shell (const char *path)
 int
 is_bourne_compatible_shell (const char *path)
 {
-  /* list of known unix (Bourne-like) shells */
-  const char *unix_shells[] = {
+  /* List of known POSIX (or POSIX-ish) shells.  */
+  static const char *unix_shells[] = {
     "sh",
     "bash",
     "ksh",
@@ -399,7 +426,7 @@ is_bourne_compatible_shell (const char *path)
     "dash",
     NULL
   };
-  unsigned i, len;
+  const char **s;
 
   /* find the rightmost '/' or '\\' */
   const char *name = strrchr (path, '/');
@@ -412,20 +439,21 @@ is_bourne_compatible_shell (const char *path)
   else if (!name)   /* name and p must be 0 */
     name = path;
 
-  if (*name == '/' || *name == '\\') name++;
+  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]);
+  for (s = unix_shells; *s != NULL; ++s)
+    {
 #if defined(WINDOWS32) || defined(__MSDOS__)
-    if ((strncasecmp (name, unix_shells[i], len) == 0) &&
-      (strlen(name) >= len && (name[len] == '\0' || name[len] == '.')))
+      unsigned int len = strlen (*s);
+      if ((strlen (name) >= len && STOP_SET (name[len], MAP_DOT|MAP_NUL))
+          && strncasecmp (name, *s, len) == 0)
 #else
-    if ((strncmp (name, unix_shells[i], len) == 0) &&
-      (strlen(name) >= len && name[len] == '\0'))
+      if (strcmp (name, *s) == 0)
 #endif
-       return 1; /* a known unix-style shell */
-  }
+        return 1; /* a known unix-style shell */
+    }
 
   /* if not on the list, assume it's not a Bourne-like shell */
   return 0;
@@ -437,28 +465,60 @@ is_bourne_compatible_shell (const char *path)
    Append "(ignored)" if IGNORED is nonzero.  */
 
 static void
-child_error (const char *target_name,
+child_error (struct child *child,
              int exit_code, int exit_sig, int coredump, int ignored)
 {
+  const char *pre = "*** ";
+  const char *post = "";
+  const char *dump = "";
+  const struct file *f = child->file;
+  const gmk_floc *flocp = &f->cmds->fileinfo;
+  const char *nm;
+
   if (ignored && silent_flag)
     return;
 
+  if (exit_sig && coredump)
+    dump = _(" (core dumped)");
+
+  if (ignored)
+    {
+      pre = "";
+      post = _(" (ignored)");
+    }
+
+  if (! flocp->filenm)
+    nm = _("<builtin>");
+  else
+    {
+      char *a = alloca (strlen (flocp->filenm) + 1 + 11 + 1);
+      sprintf (a, "%s:%lu", flocp->filenm, flocp->lineno);
+      nm = a;
+    }
+
+  OUTPUT_SET (&child->output);
+
+  message (0, _("%s: recipe for target '%s' failed"), nm, f->name);
+
 #ifdef VMS
-  if (!(exit_code & 1))
-      error (NILF,
-             (ignored ? _("*** [%s] Error 0x%x (ignored)")
-              : _("*** [%s] Error 0x%x")),
-             target_name, exit_code);
+  if ((exit_code & 1) != 0)
+    {
+      OUTPUT_UNSET ();
+      return;
+    }
+
+  error (NILF, _("%s[%s] Error 0x%x%s"), pre, f->name, exit_code, post);
 #else
   if (exit_sig == 0)
-    error (NILF, ignored ? _("[%s] Error %d (ignored)") :
-          _("*** [%s] Error %d"),
-          target_name, exit_code);
+    error (NILF, _("%s[%s] Error %d%s"), pre, f->name, exit_code, post);
   else
-    error (NILF, "*** [%s] %s%s",
-          target_name, strsignal (exit_sig),
-          coredump ? _(" (core dumped)") : "");
+    {
+      const char *s = strsignal (exit_sig);
+      error (NILF, _("%s[%s] %s%s%s"), pre, f->name, s, dump, post);
+    }
 #endif /* VMS */
+
+  OUTPUT_UNSET ();
 }
 \f
 
@@ -498,7 +558,7 @@ child_handler (int sig UNUSED)
 extern int shell_function_pid, shell_function_completed;
 
 /* Reap all dead children, storing the returned status and the new command
-   state (`cs_finished') in the `file' member of the `struct child' for the
+   state ('cs_finished') in the 'file' member of the 'struct child' for the
    dead child, and removing the child from the chain.  In addition, if BLOCK
    nonzero, we block in this function until we've reaped at least one
    complete child, waiting for it to die if necessary.  If ERR is nonzero,
@@ -509,9 +569,9 @@ reap_children (int block, int err)
 {
 #ifndef WINDOWS32
   WAIT_T status;
+#endif
   /* Initially, assume we have some.  */
   int reap_more = 1;
-#endif
 
 #ifdef WAIT_NOHANG
 # define REAP_MORE reap_more
@@ -533,115 +593,115 @@ reap_children (int block, int err)
       int remote = 0;
       pid_t pid;
       int exit_code, exit_sig, coredump;
-      register struct child *lastc, *c;
+      struct child *lastc, *c;
       int child_failed;
       int any_remote, any_local;
       int dontcare;
 
       if (err && block)
-       {
+        {
           static int printed = 0;
 
-         /* We might block for a while, so let the user know why.
+          /* We might block for a while, so let the user know why.
              Only print this message once no matter how many jobs are left.  */
-         fflush (stdout);
+          fflush (stdout);
           if (!printed)
             error (NILF, _("*** Waiting for unfinished jobs...."));
           printed = 1;
-       }
+        }
 
       /* We have one less dead child to reap.  As noted in
-        child_handler() above, this count is completely unimportant for
-        all modern, POSIX-y systems that support wait3() or waitpid().
-        The rest of this comment below applies only to early, broken
-        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;
-               dead_children = register;
-        a SIGCHLD could come between the two instructions.
-        child_handler increments dead_children.
-        The second instruction here would lose that increment.  But the
-        only effect of dead_children being wrong is that we might wait
-        longer than necessary to reap a child, and lose some parallelism;
-        and we might print the "Waiting for unfinished jobs" message above
-        when not necessary.  */
+         child_handler() above, this count is completely unimportant for
+         all modern, POSIX-y systems that support wait3() or waitpid().
+         The rest of this comment below applies only to early, broken
+         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;
+                dead_children = register;
+         a SIGCHLD could come between the two instructions.
+         child_handler increments dead_children.
+         The second instruction here would lose that increment.  But the
+         only effect of dead_children being wrong is that we might wait
+         longer than necessary to reap a child, and lose some parallelism;
+         and we might print the "Waiting for unfinished jobs" message above
+         when not necessary.  */
 
       if (dead_children > 0)
-       --dead_children;
+        --dead_children;
 
       any_remote = 0;
       any_local = shell_function_pid != 0;
       for (c = children; c != 0; c = c->next)
-       {
-         any_remote |= c->remote;
-         any_local |= ! c->remote;
-         DB (DB_JOBS, (_("Live child %p (%s) PID %s %s\n"),
+        {
+          any_remote |= c->remote;
+          any_local |= ! c->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;
+          break;
 #endif
-       }
+        }
 
       /* First, check for remote children.  */
       if (any_remote)
-       pid = remote_status (&exit_code, &exit_sig, &coredump, 0);
+        pid = remote_status (&exit_code, &exit_sig, &coredump, 0);
       else
-       pid = 0;
+        pid = 0;
 
       if (pid > 0)
-       /* We got a remote child.  */
-       remote = 1;
+        /* We got a remote child.  */
+        remote = 1;
       else if (pid < 0)
-       {
+        {
           /* A remote status command failed miserably.  Punt.  */
-       remote_status_lose:
-         pfatal_with_name ("remote_status");
-       }
+        remote_status_lose:
+          pfatal_with_name ("remote_status");
+        }
       else
-       {
-         /* No remote children.  Check for local children.  */
+        {
+          /* No remote children.  Check for local children.  */
 #if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32)
-         if (any_local)
-           {
+          if (any_local)
+            {
 #ifdef VMS
-             vmsWaitForChildren (&status);
-             pid = c->pid;
+              vmsWaitForChildren (&status);
+              pid = c->pid;
 #else
 #ifdef WAIT_NOHANG
-             if (!block)
-               pid = WAIT_NOHANG (&status);
-             else
+              if (!block)
+                pid = WAIT_NOHANG (&status);
+              else
 #endif
-               EINTRLOOP(pid, wait (&status));
+                EINTRLOOP(pid, wait (&status));
 #endif /* !VMS */
-           }
-         else
-           pid = 0;
+            }
+          else
+            pid = 0;
 
-         if (pid < 0)
-           {
+          if (pid < 0)
+            {
               /* The wait*() failed miserably.  Punt.  */
-             pfatal_with_name ("wait");
-           }
-         else if (pid > 0)
-           {
-             /* We got a child exit; chop the status word up.  */
-             exit_code = WEXITSTATUS (status);
-             exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
-             coredump = WCOREDUMP (status);
+              pfatal_with_name ("wait");
+            }
+          else if (pid > 0)
+            {
+              /* We got a child exit; chop the status word up.  */
+              exit_code = WEXITSTATUS (status);
+              exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
+              coredump = WCOREDUMP (status);
 
               /* If we have started jobs in this second, remove one.  */
               if (job_counter)
                 --job_counter;
-           }
-         else
-           {
-             /* No local children are dead.  */
+            }
+          else
+            {
+              /* No local children are dead.  */
               reap_more = 0;
 
-             if (!block || !any_remote)
+              if (!block || !any_remote)
                 break;
 
               /* Now try a blocking wait for a remote child.  */
@@ -654,32 +714,32 @@ reap_children (int block, int err)
 
               /* We got a remote child.  */
               remote = 1;
-           }
+            }
 #endif /* !__MSDOS__, !Amiga, !WINDOWS32.  */
 
 #ifdef __MSDOS__
-         /* Life is very different on MSDOS.  */
-         pid = dos_pid - 1;
-         status = dos_status;
-         exit_code = WEXITSTATUS (status);
-         if (exit_code == 0xff)
-           exit_code = -1;
-         exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
-         coredump = 0;
+          /* Life is very different on MSDOS.  */
+          pid = dos_pid - 1;
+          status = dos_status;
+          exit_code = WEXITSTATUS (status);
+          if (exit_code == 0xff)
+            exit_code = -1;
+          exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
+          coredump = 0;
 #endif /* __MSDOS__ */
 #ifdef _AMIGA
-         /* Same on Amiga */
-         pid = amiga_pid - 1;
-         status = amiga_status;
-         exit_code = amiga_status;
-         exit_sig = 0;
-         coredump = 0;
+          /* Same on Amiga */
+          pid = amiga_pid - 1;
+          status = amiga_status;
+          exit_code = amiga_status;
+          exit_sig = 0;
+          coredump = 0;
 #endif /* _AMIGA */
 #ifdef WINDOWS32
           {
             HANDLE hPID;
-            int werr;
             HANDLE hcTID, hcPID;
+            DWORD dwWaitStatus = 0;
             exit_code = 0;
             exit_sig = 0;
             coredump = 0;
@@ -696,58 +756,69 @@ reap_children (int block, int err)
                     DWORD e = GetLastError ();
                     fprintf (stderr,
                              "Determine main thread ID (Error %ld: %s)\n",
-                             e, map_windows32_error_to_string(e));
+                             e, map_windows32_error_to_string (e));
                   }
                 else
                   DB (DB_VERBOSE, ("Main thread handle = %p\n", main_thread));
               }
 
             /* wait for anything to finish */
-            hPID = process_wait_for_any();
+            hPID = process_wait_for_any (block, &dwWaitStatus);
             if (hPID)
               {
-
                 /* was an error found on this process? */
-                werr = process_last_err(hPID);
+                int werr = process_last_err (hPID);
 
                 /* get exit data */
-                exit_code = process_exit_code(hPID);
+                exit_code = process_exit_code (hPID);
 
                 if (werr)
-                  fprintf(stderr, "make (e=%d): %s",
-                          exit_code, map_windows32_error_to_string(exit_code));
+                  fprintf (stderr, "make (e=%d): %s", exit_code,
+                           map_windows32_error_to_string (exit_code));
 
                 /* signal */
-                exit_sig = process_signal(hPID);
+                exit_sig = process_signal (hPID);
 
                 /* cleanup process */
-                process_cleanup(hPID);
+                process_cleanup (hPID);
 
                 coredump = 0;
               }
+            else if (dwWaitStatus == WAIT_FAILED)
+              {
+                /* The WaitForMultipleObjects() failed miserably.  Punt.  */
+                pfatal_with_name ("WaitForMultipleObjects");
+              }
+            else if (dwWaitStatus == WAIT_TIMEOUT)
+              {
+                /* No child processes are finished.  Give up waiting. */
+                reap_more = 0;
+                break;
+              }
+
             pid = (pid_t) hPID;
           }
 #endif /* WINDOWS32 */
-       }
+        }
 
-      /* Check if this is the child of the `shell' function.  */
+      /* Check if this is the child of the 'shell' function.  */
       if (!remote && pid == shell_function_pid)
-       {
-         /* It is.  Leave an indicator for the `shell' function.  */
-         if (exit_sig == 0 && exit_code == 127)
-           shell_function_completed = -1;
-         else
-           shell_function_completed = 1;
-         break;
-       }
+        {
+          /* It is.  Leave an indicator for the 'shell' function.  */
+          if (exit_sig == 0 && exit_code == 127)
+            shell_function_completed = -1;
+          else
+            shell_function_completed = 1;
+          break;
+        }
 
       child_failed = exit_sig != 0 || exit_code != 0;
 
       /* Search for a child matching the deceased one.  */
       lastc = 0;
       for (c = children; c != 0; lastc = c, c = c->next)
-       if (c->remote == remote && c->pid == pid)
-         break;
+        if (c->pid == pid && c->remote == remote)
+          break;
 
       if (c == 0)
         /* An unknown child died.
@@ -759,17 +830,23 @@ reap_children (int block, int err)
                     : _("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"),
-                      c->sh_batch_file));
+      if (c->sh_batch_file)
+        {
+          int rm_status;
 
-        /* just try and remove, don't care if this fails */
-        remove (c->sh_batch_file);
+          DB (DB_JOBS, (_("Cleaning up temp batch file %s\n"),
+                        c->sh_batch_file));
 
-        /* all done with memory */
-        free (c->sh_batch_file);
-        c->sh_batch_file = NULL;
-      }
+          errno = 0;
+          rm_status = remove (c->sh_batch_file);
+          if (rm_status)
+            DB (DB_JOBS, (_("Cleaning up temp batch file %s failed (%d)\n"),
+                          c->sh_batch_file, errno));
+
+          /* all done with memory */
+          free (c->sh_batch_file);
+          c->sh_batch_file = NULL;
+        }
 
       /* If this child had the good stdin, say it is now free.  */
       if (c->good_stdin)
@@ -784,9 +861,9 @@ reap_children (int block, int err)
           static int delete_on_error = -1;
 
           if (!dontcare)
-            child_error (c->file->name, exit_code, exit_sig, coredump, 0);
+            child_error (c, exit_code, exit_sig, coredump, 0);
 
-          c->file->update_status = 2;
+          c->file->update_status = us_failed;
           if (delete_on_error == -1)
             {
               struct file *f = lookup_file (".DELETE_ON_ERROR");
@@ -800,8 +877,7 @@ reap_children (int block, int err)
           if (child_failed)
             {
               /* The commands failed, but we don't care.  */
-              child_error (c->file->name,
-                           exit_code, exit_sig, coredump, 1);
+              child_error (c, exit_code, exit_sig, coredump, 1);
               child_failed = 0;
             }
 
@@ -814,10 +890,16 @@ reap_children (int block, int err)
                      Since there are more commands that wanted to be run,
                      the target was not completely remade.  So we treat
                      this as if a command had failed.  */
-                  c->file->update_status = 2;
+                  c->file->update_status = us_failed;
                 }
               else
                 {
+#ifndef NO_OUTPUT_SYNC
+                  /* If we're sync'ing per line, write the previous line's
+                     output before starting the next one.  */
+                  if (output_sync == OUTPUT_SYNC_LINE)
+                    output_dump (&c->output);
+#endif
                   /* Check again whether to start remotely.
                      Whether or not we want to changes over time.
                      Also, start_remote_job may need state set up
@@ -835,7 +917,7 @@ reap_children (int block, int err)
                     continue;
                 }
 
-              if (c->file->update_status != 0)
+              if (c->file->update_status != us_success)
                 /* We failed to start the commands.  */
                 delete_child_targets (c);
             }
@@ -843,12 +925,18 @@ reap_children (int block, int err)
             /* There are no more commands.  We got through them all
                without an unignored error.  Now the target has been
                successfully updated.  */
-            c->file->update_status = 0;
+            c->file->update_status = us_success;
         }
 
-      /* When we get here, all the commands for C->file are finished
-         (or aborted) and C->file->update_status contains 0 or 2.  But
-         C->file->command_state is still cs_running if all the commands
+      /* When we get here, all the commands for c->file are finished.  */
+
+#ifndef NO_OUTPUT_SYNC
+      /* Synchronize any remaining parallel output.  */
+      output_dump (&c->output);
+#endif
+
+      /* At this point c->file->update_status is success or failed.  But
+         c->file->command_state is still cs_running if all the commands
          ran; notice_finish_file looks for cs_running to tell it that
          it's interesting to check the file's modtime again now.  */
 
@@ -901,6 +989,8 @@ reap_children (int block, int err)
 static void
 free_child (struct child *child)
 {
+  output_close (&child->output);
+
   if (!jobserver_tokens)
     fatal (NILF, "INTERNAL: Freeing child %p (%s) but no tokens left!\n",
            child, child->file->name);
@@ -908,6 +998,19 @@ free_child (struct child *child)
   /* If we're using the jobserver and this child is not the only outstanding
      job, put a token back into the pipe for it.  */
 
+#ifdef WINDOWS32
+  if (has_jobserver_semaphore () && jobserver_tokens > 1)
+    {
+      if (! release_jobserver_semaphore ())
+        {
+          DWORD err = GetLastError ();
+          fatal (NILF, _("release jobserver semaphore: (Error %ld: %s)"),
+                 err, map_windows32_error_to_string (err));
+        }
+
+      DB (DB_JOBS, (_("Released token for child %p (%s).\n"), child, child->file->name));
+    }
+#else
   if (job_fds[1] >= 0 && jobserver_tokens > 1)
     {
       char token = '+';
@@ -917,11 +1020,12 @@ free_child (struct child *child)
 
       EINTRLOOP (r, write (job_fds[1], &token, 1));
       if (r != 1)
-       pfatal_with_name (_("write jobserver"));
+        pfatal_with_name (_("write jobserver"));
 
       DB (DB_JOBS, (_("Released token for child %p (%s).\n"),
                     child, child->file->name));
     }
+#endif
 
   --jobserver_tokens;
 
@@ -932,7 +1036,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 (child->command_lines[i]);
       free (child->command_lines);
     }
 
@@ -940,7 +1044,7 @@ free_child (struct child *child)
     {
       register char **ep = child->environment;
       while (*ep != 0)
-       free (*ep++);
+        free (*ep++);
       free (child->environment);
     }
 
@@ -973,7 +1077,7 @@ unblock_sigs (void)
 }
 #endif
 
-#ifdef MAKE_JOBSERVER
+#if defined(MAKE_JOBSERVER) && !defined(WINDOWS32)
 RETSIGTYPE
 job_noop (int sig UNUSED)
 {
@@ -1018,7 +1122,7 @@ set_child_handler_action_flags (int set_handler, int set_alarm)
    CHILD is updated to reflect the commands and ID of the child process.
 
    NOTE: On return fatal signals are blocked!  The caller is responsible
-   for calling `unblock_sigs', once the new child is safely on the chain so
+   for calling 'unblock_sigs', once the new child is safely on the chain so
    it can be cleaned up in the event of a fatal signal.  */
 
 static void
@@ -1027,9 +1131,8 @@ start_job_command (struct child *child)
 #if !defined(_AMIGA) && !defined(WINDOWS32)
   static int bad_stdin = -1;
 #endif
+  int flags;
   char *p;
-  /* Must be volatile to silence bogus GCC warning about longjmp/vfork.  */
-  volatile int flags;
 #ifdef VMS
   char *argv;
 #else
@@ -1043,7 +1146,7 @@ start_job_command (struct child *child)
   /* Combine the flags parsed for the line itself with
      the flags specified globally for this target.  */
   flags = (child->file->command_flags
-          | child->file->cmds->lines_flags[child->command_line - 1]);
+           | child->file->cmds->lines_flags[child->command_line - 1]);
 
   p = child->command_ptr;
   child->noerror = ((flags & COMMANDS_NOERROR) != 0);
@@ -1051,13 +1154,13 @@ start_job_command (struct child *child)
   while (*p != '\0')
     {
       if (*p == '@')
-       flags |= COMMANDS_SILENT;
+        flags |= COMMANDS_SILENT;
       else if (*p == '+')
-       flags |= COMMANDS_RECURSE;
+        flags |= COMMANDS_RECURSE;
       else if (*p == '-')
-       child->noerror = 1;
+        child->noerror = 1;
       else if (!isblank ((unsigned char)*p))
-       break;
+        break;
       ++p;
     }
 
@@ -1070,29 +1173,44 @@ start_job_command (struct child *child)
   child->file->cmds->lines_flags[child->command_line - 1]
     |= flags & COMMANDS_RECURSE;
 
-  /* Figure out an argument list from this command line.  */
+  /* POSIX requires that a recipe prefix after a backslash-newline should
+     be ignored.  Remove it now so the output is correct.  */
+  {
+    char prefix = child->file->cmds->recipe_prefix;
+    char *p1, *p2;
+    p1 = p2 = p;
+    while (*p1 != '\0')
+      {
+        *(p2++) = *p1;
+        if (p1[0] == '\n' && p1[1] == prefix)
+          ++p1;
+        ++p1;
+      }
+    *p2 = *p1;
+  }
 
+  /* Figure out an argument list from this command line.  */
   {
     char *end = 0;
 #ifdef VMS
     argv = p;
 #else
     argv = construct_command_argv (p, &end, child->file,
-                                  child->file->cmds->lines_flags[child->command_line - 1],
-                                  &child->sh_batch_file);
+                                   child->file->cmds->lines_flags[child->command_line - 1],
+                                   &child->sh_batch_file);
 #endif
     if (end == NULL)
       child->command_ptr = NULL;
     else
       {
-       *end++ = '\0';
-       child->command_ptr = end;
+        *end++ = '\0';
+        child->command_ptr = end;
       }
   }
 
-  /* If -q was given, say that updating `failed' if there was any text on the
-     command line, or `succeeded' otherwise.  The exit status of 1 tells the
-     user that -q is saying `something to do'; the exit status for a random
+  /* If -q was given, say that updating 'failed' if there was any text on the
+     command line, or 'succeeded' otherwise.  The exit status of 1 tells the
+     user that -q is saying 'something to do'; the exit status for a random
      error is 2.  */
   if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE))
     {
@@ -1100,7 +1218,7 @@ start_job_command (struct child *child)
       free (argv[0]);
       free (argv);
 #endif
-      child->file->update_status = 1;
+      child->file->update_status = us_question;
       notice_finished_file (child->file);
       return;
     }
@@ -1108,7 +1226,7 @@ start_job_command (struct child *child)
   if (touch_flag && !(flags & COMMANDS_RECURSE))
     {
       /* Go on to the next command.  It might be the recursive one.
-        We construct ARGV only to find the end of the command line.  */
+         We construct ARGV only to find the end of the command line.  */
 #ifndef VMS
       if (argv)
         {
@@ -1127,24 +1245,39 @@ start_job_command (struct child *child)
 #endif
       /* This line has no commands.  Go to the next.  */
       if (job_next_command (child))
-       start_job_command (child);
+        start_job_command (child);
       else
-       {
-         /* No more commands.  Make sure we're "running"; we might not be if
+        {
+          /* No more commands.  Make sure we're "running"; we might not be if
              (e.g.) all commands were skipped due to -n.  */
           set_command_state (child->file, cs_running);
-         child->file->update_status = 0;
-         notice_finished_file (child->file);
-       }
+          child->file->update_status = us_success;
+          notice_finished_file (child->file);
+        }
+
+      OUTPUT_UNSET();
       return;
     }
 
-  /* Print out the command.  If silent, we call `message' with null so it
-     can log the working directory before the command's own error messages
-     appear.  */
+  /* Are we going to synchronize this command's output?  Do so if either we're
+     in SYNC_RECURSE mode or this command is not recursive.  We'll also check
+     output_sync separately below in case it changes due to error.  */
+  child->output.syncout = output_sync && (output_sync == OUTPUT_SYNC_RECURSE
+                                          || !(flags & COMMANDS_RECURSE));
 
-  message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag))
-          ? "%s" : (char *) 0, p);
+  OUTPUT_SET (&child->output);
+
+#ifndef NO_OUTPUT_SYNC
+  if (! child->output.syncout)
+    /* We don't want to sync this command: to avoid misordered
+       output ensure any already-synced content is written.  */
+    output_dump (&child->output);
+#endif
+
+  /* Print the command if appropriate.  */
+  if (just_print_flag || trace_flag
+      || (!(flags & COMMANDS_SILENT) && !silent_flag))
+    message (0, "%s", p);
 
   /* Tell update_goal_chain that a command has been started on behalf of
      this target.  It is important that this happens here and not in
@@ -1164,15 +1297,15 @@ start_job_command (struct child *child)
 #if !defined(VMS) && !defined(_AMIGA)
   if (
 #if defined __MSDOS__ || defined (__EMX__)
-      unixy_shell      /* the test is complicated and we already did it */
+      unixy_shell       /* the test is complicated and we already did it */
 #else
-      (argv[0] && is_bourne_compatible_shell(argv[0]))
+      (argv[0] && is_bourne_compatible_shell (argv[0]))
 #endif
       && (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[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)
     {
@@ -1193,6 +1326,9 @@ start_job_command (struct child *child)
       goto next_command;
     }
 
+  /* We're sure we're going to invoke a command: set up the output.  */
+  output_start ();
+
   /* Flush the output streams so they won't have things written twice.  */
 
   fflush (stdout);
@@ -1206,26 +1342,26 @@ start_job_command (struct child *child)
   if (bad_stdin == -1)
     {
       /* Make a file descriptor that is the read end of a broken pipe.
-        This will be used for some children's standard inputs.  */
+         This will be used for some children's standard inputs.  */
       int pd[2];
       if (pipe (pd) == 0)
-       {
-         /* Close the write side.  */
-         (void) close (pd[1]);
-         /* Save the read side.  */
-         bad_stdin = pd[0];
-
-         /* Set the descriptor to close on exec, so it does not litter any
-            child's descriptor table.  When it is dup2'd onto descriptor 0,
-            that descriptor will not close on exec.  */
-         CLOSE_ON_EXEC (bad_stdin);
-       }
+        {
+          /* Close the write side.  */
+          (void) close (pd[1]);
+          /* Save the read side.  */
+          bad_stdin = pd[0];
+
+          /* Set the descriptor to close on exec, so it does not litter any
+             child's descriptor table.  When it is dup2'd onto descriptor 0,
+             that descriptor will not close on exec.  */
+          CLOSE_ON_EXEC (bad_stdin);
+        }
     }
 
 #endif /* !WINDOWS32 && !_AMIGA && !__MSDOS__ */
 
-  /* Decide whether to give this child the `good' standard input
-     (one that points to the terminal or whatever), or the `bad' one
+  /* Decide whether to give this child the 'good' standard input
+     (one that points to the terminal or whatever), or the 'bad' one
      that points to the read side of a broken pipe.  */
 
   child->good_stdin = !good_stdin_used;
@@ -1250,21 +1386,21 @@ start_job_command (struct child *child)
     {
       int is_remote, id, used_stdin;
       if (start_remote_job (argv, child->environment,
-                           child->good_stdin ? 0 : bad_stdin,
-                           &is_remote, &id, &used_stdin))
+                            child->good_stdin ? 0 : bad_stdin,
+                            &is_remote, &id, &used_stdin))
         /* Don't give up; remote execution may fail for various reasons.  If
            so, simply run the job locally.  */
-       goto run_local;
+        goto run_local;
       else
-       {
-         if (child->good_stdin && !used_stdin)
-           {
-             child->good_stdin = 0;
-             good_stdin_used = 0;
-           }
-         child->remote = is_remote;
-         child->pid = id;
-       }
+        {
+          if (child->good_stdin && !used_stdin)
+            {
+              child->good_stdin = 0;
+              good_stdin_used = 0;
+            }
+          child->remote = is_remote;
+          child->pid = id;
+        }
     }
   else
 #endif /* !VMS */
@@ -1279,11 +1415,12 @@ start_job_command (struct child *child)
       child->remote = 0;
 
 #ifdef VMS
-      if (!child_execute_job (argv, child)) {
-        /* Fork failed!  */
-        perror_with_name ("vfork", "");
-        goto error;
-      }
+      if (!child_execute_job (argv, child))
+        {
+          /* Fork failed!  */
+          perror_with_name ("fork", "");
+          goto error;
+        }
 
 #else
 
@@ -1293,41 +1430,45 @@ start_job_command (struct child *child)
       /* If we aren't running a recursive command and we have a jobserver
          pipe, close it before exec'ing.  */
       if (!(flags & COMMANDS_RECURSE) && job_fds[0] >= 0)
-       {
-         CLOSE_ON_EXEC (job_fds[0]);
-         CLOSE_ON_EXEC (job_fds[1]);
-       }
+        {
+          CLOSE_ON_EXEC (job_fds[0]);
+          CLOSE_ON_EXEC (job_fds[1]);
+        }
       if (job_rfd >= 0)
-       CLOSE_ON_EXEC (job_rfd);
+        CLOSE_ON_EXEC (job_rfd);
 
       /* Never use fork()/exec() here! Use spawn() instead in exec_command() */
-      child->pid = child_execute_job (child->good_stdin ? 0 : bad_stdin, 1,
+      child->pid = child_execute_job (child->good_stdin ? FD_STDIN : bad_stdin,
+                                      FD_STDOUT, FD_STDERR,
                                       argv, child->environment);
       if (child->pid < 0)
-       {
-         /* spawn failed!  */
-         unblock_sigs ();
-         perror_with_name ("spawn", "");
-         goto error;
-       }
+        {
+          /* spawn failed!  */
+          unblock_sigs ();
+          perror_with_name ("spawn", "");
+          goto error;
+        }
 
       /* undo CLOSE_ON_EXEC() after the child process has been started */
       if (!(flags & COMMANDS_RECURSE) && job_fds[0] >= 0)
-       {
-         fcntl (job_fds[0], F_SETFD, 0);
-         fcntl (job_fds[1], F_SETFD, 0);
-       }
+        {
+          fcntl (job_fds[0], F_SETFD, 0);
+          fcntl (job_fds[1], F_SETFD, 0);
+        }
       if (job_rfd >= 0)
-       fcntl (job_rfd, F_SETFD, 0);
+        fcntl (job_rfd, F_SETFD, 0);
 
 #else  /* !__EMX__ */
 
-      child->pid = vfork ();
-      environ = parent_environ;        /* Restore value child may have clobbered.  */
+      child->pid = fork ();
+      environ = parent_environ; /* Restore value child may have clobbered.  */
       if (child->pid == 0)
-       {
-         /* We are the child side.  */
-         unblock_sigs ();
+        {
+          int outfd = FD_STDOUT;
+          int errfd = FD_STDERR;
+
+          /* We are the child side.  */
+          unblock_sigs ();
 
           /* If we aren't running a recursive command and we have a jobserver
              pipe, close it before exec'ing.  */
@@ -1345,21 +1486,30 @@ start_job_command (struct child *child)
             setrlimit (RLIMIT_STACK, &stack_limit);
 #endif
 
-         child_execute_job (child->good_stdin ? 0 : bad_stdin, 1,
-                             argv, child->environment);
-       }
+          /* Divert child output if output_sync in use.  */
+          if (child->output.syncout)
+            {
+              if (child->output.out >= 0)
+                outfd = child->output.out;
+              if (child->output.err >= 0)
+                errfd = child->output.err;
+            }
+
+          child_execute_job (child->good_stdin ? FD_STDIN : bad_stdin,
+                             outfd, errfd, argv, child->environment);
+        }
       else if (child->pid < 0)
-       {
-         /* Fork failed!  */
-         unblock_sigs ();
-         perror_with_name ("vfork", "");
-         goto error;
-       }
+        {
+          /* Fork failed!  */
+          unblock_sigs ();
+          perror_with_name ("fork", "");
+          goto error;
+        }
 # endif  /* !__EMX__ */
 #endif /* !VMS */
     }
 
-#else  /* __MSDOS__ or Amiga or WINDOWS32 */
+#else   /* __MSDOS__ or Amiga or WINDOWS32 */
 #ifdef __MSDOS__
   {
     int proc_return;
@@ -1367,37 +1517,37 @@ start_job_command (struct child *child)
     block_sigs ();
     dos_status = 0;
 
-    /* We call `system' to do the job of the SHELL, since stock DOS
-       shell is too dumb.  Our `system' knows how to handle long
+    /* We call 'system' to do the job of the SHELL, since stock DOS
+       shell is too dumb.  Our 'system' knows how to handle long
        command lines even if pipes/redirection is needed; it will only
        call COMMAND.COM when its internal commands are used.  */
     if (execute_by_shell)
       {
-       char *cmdline = argv[0];
-       /* We don't have a way to pass environment to `system',
-          so we need to save and restore ours, sigh...  */
-       char **parent_environ = environ;
-
-       environ = child->environment;
-
-       /* If we have a *real* shell, tell `system' to call
-          it to do everything for us.  */
-       if (unixy_shell)
-         {
-           /* A *real* shell on MSDOS may not support long
-              command lines the DJGPP way, so we must use `system'.  */
-           cmdline = argv[2];  /* get past "shell -c" */
-         }
-
-       dos_command_running = 1;
-       proc_return = system (cmdline);
-       environ = parent_environ;
-       execute_by_shell = 0;   /* for the next time */
+        char *cmdline = argv[0];
+        /* We don't have a way to pass environment to 'system',
+           so we need to save and restore ours, sigh...  */
+        char **parent_environ = environ;
+
+        environ = child->environment;
+
+        /* If we have a *real* shell, tell 'system' to call
+           it to do everything for us.  */
+        if (unixy_shell)
+          {
+            /* A *real* shell on MSDOS may not support long
+               command lines the DJGPP way, so we must use 'system'.  */
+            cmdline = argv[2];  /* get past "shell -c" */
+          }
+
+        dos_command_running = 1;
+        proc_return = system (cmdline);
+        environ = parent_environ;
+        execute_by_shell = 0;   /* for the next time */
       }
     else
       {
-       dos_command_running = 1;
-       proc_return = spawnvpe (P_WAIT, argv[0], argv, child->environment);
+        dos_command_running = 1;
+        proc_return = spawnvpe (P_WAIT, argv[0], argv, child->environment);
       }
 
     /* Need to unblock signals before turning off
@@ -1426,7 +1576,7 @@ start_job_command (struct child *child)
      amiga_batch_file = 0;
      DeleteFile (amiga_bname);        /* Ignore errors.  */
   }
-#endif /* Amiga */
+#endif  /* Amiga */
 #ifdef WINDOWS32
   {
       HANDLE hPID;
@@ -1440,26 +1590,35 @@ start_job_command (struct child *child)
             *arg0 = '\\';
 
       /* make sure CreateProcess() has Path it needs */
-      sync_Path_environment();
-
-      hPID = process_easy(argv, child->environment);
+      sync_Path_environment ();
+
+#ifndef NO_OUTPUT_SYNC
+          /* Divert child output if output_sync in use.  Don't capture
+             recursive make output unless we are synchronizing "make" mode.  */
+          if (child->output.syncout)
+            hPID = process_easy (argv, child->environment,
+                                 child->output.out, child->output.err);
+          else
+#endif
+            hPID = process_easy (argv, child->environment, -1, -1);
 
       if (hPID != INVALID_HANDLE_VALUE)
         child->pid = (pid_t) hPID;
-      else {
-        int i;
-        unblock_sigs();
-        fprintf(stderr,
-                _("process_easy() failed to launch process (e=%ld)\n"),
-                process_last_err(hPID));
-        for (i = 0; argv[i]; i++)
-          fprintf(stderr, "%s ", argv[i]);
-        fprintf(stderr, _("\nCounted %d args in failed launch\n"), i);
-        goto error;
-      }
+      else
+        {
+          int i;
+          unblock_sigs ();
+          fprintf (stderr,
+                   _("process_easy() failed to launch process (e=%ld)\n"),
+                   process_last_err (hPID));
+          for (i = 0; argv[i]; i++)
+            fprintf (stderr, "%s ", argv[i]);
+          fprintf (stderr, _("\nCounted %d args in failed launch\n"), i);
+          goto error;
+        }
   }
 #endif /* WINDOWS32 */
-#endif /* __MSDOS__ or Amiga or WINDOWS32 */
+#endif  /* __MSDOS__ or Amiga or WINDOWS32 */
 
   /* Bump the number of jobs started in this second.  */
   ++job_counter;
@@ -1475,17 +1634,18 @@ start_job_command (struct child *child)
   free (argv);
 #endif
 
+  OUTPUT_UNSET();
   return;
 
  error:
-  child->file->update_status = 2;
+  child->file->update_status = us_failed;
   notice_finished_file (child->file);
-  return;
+  OUTPUT_UNSET();
 }
 
 /* Try to start a child running.
    Returns nonzero if the child was started (and maybe finished), or zero if
-   the load was too high and the child was put on the `waiting_jobs' chain.  */
+   the load was too high and the child was put on the 'waiting_jobs' chain.  */
 
 static int
 start_waiting_job (struct child *c)
@@ -1503,9 +1663,9 @@ start_waiting_job (struct child *c)
   if (!c->remote
       && ((job_slots_used > 0 && load_too_high ())
 #ifdef WINDOWS32
-         || (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
+          || (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
 #endif
-         ))
+          ))
     {
       /* Put this child on the chain of children waiting for the load average
          to go down.  */
@@ -1533,7 +1693,7 @@ start_waiting_job (struct child *c)
 
     case cs_not_started:
       /* All the command lines turned out to be empty.  */
-      f->update_status = 0;
+      f->update_status = us_success;
       /* FALLTHROUGH */
 
     case cs_finished:
@@ -1549,7 +1709,7 @@ start_waiting_job (struct child *c)
   return 1;
 }
 
-/* Create a `struct child' for FILE and start its commands running.  */
+/* Create a 'struct child' for FILE and start its commands running.  */
 
 void
 new_job (struct file *file)
@@ -1569,119 +1729,127 @@ new_job (struct file *file)
   /* Chop the commands up into lines if they aren't already.  */
   chop_commands (cmds);
 
+  /* Start the command sequence, record it in a new
+     'struct child', and add that to the chain.  */
+
+  c = xcalloc (sizeof (struct child));
+  output_init (&c->output);
+
+  c->file = file;
+  c->sh_batch_file = NULL;
+
+  /* Cache dontcare flag because file->dontcare can be changed once we
+     return. Check dontcare inheritance mechanism for details.  */
+  c->dontcare = file->dontcare;
+
+  /* Start saving output in case the expansion uses $(info ...) etc.  */
+  OUTPUT_SET (&c->output);
+
   /* Expand the command lines and store the results in LINES.  */
   lines = xmalloc (cmds->ncommand_lines * sizeof (char *));
   for (i = 0; i < cmds->ncommand_lines; ++i)
     {
       /* Collapse backslash-newline combinations that are inside variable
-        or function references.  These are left alone by the parser so
-        that they will appear in the echoing of commands (where they look
-        nice); and collapsed by construct_command_argv when it tokenizes.
-        But letting them survive inside function invocations loses because
-        we don't want the functions to see them as part of the text.  */
+         or function references.  These are left alone by the parser so
+         that they will appear in the echoing of commands (where they look
+         nice); and collapsed by construct_command_argv when it tokenizes.
+         But letting them survive inside function invocations loses because
+         we don't want the functions to see them as part of the text.  */
 
       char *in, *out, *ref;
 
       /* IN points to where in the line we are scanning.
-        OUT points to where in the line we are writing.
-        When we collapse a backslash-newline combination,
-        IN gets ahead of OUT.  */
+         OUT points to where in the line we are writing.
+         When we collapse a backslash-newline combination,
+         IN gets ahead of OUT.  */
 
       in = out = cmds->command_lines[i];
       while ((ref = strchr (in, '$')) != 0)
-       {
-         ++ref;                /* Move past the $.  */
-
-         if (out != in)
-           /* 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).  */
-           memmove (out, in, ref - in);
-
-         /* Move both pointers past the boring stuff.  */
-         out += ref - in;
-         in = ref;
-
-         if (*ref == '(' || *ref == '{')
-           {
-             char openparen = *ref;
-             char closeparen = openparen == '(' ? ')' : '}';
-             int count;
-             char *p;
-
-             *out++ = *in++;   /* Copy OPENPAREN.  */
-             /* IN now points past the opening paren or brace.
-                Count parens or braces until it is matched.  */
-             count = 0;
-             while (*in != '\0')
-               {
-                 if (*in == closeparen && --count < 0)
-                   break;
-                 else if (*in == '\\' && in[1] == '\n')
-                   {
-                     /* We have found a backslash-newline inside a
-                        variable or function reference.  Eat it and
-                        any following whitespace.  */
-
-                     int quoted = 0;
-                     for (p = in - 1; p > ref && *p == '\\'; --p)
-                       quoted = !quoted;
-
-                     if (quoted)
-                       /* There were two or more backslashes, so this is
-                          not really a continuation line.  We don't collapse
-                          the quoting backslashes here as is done in
-                          collapse_continuations, because the line will
-                          be collapsed again after expansion.  */
-                       *out++ = *in++;
-                     else
-                       {
-                         /* Skip the backslash, newline and
-                            any following whitespace.  */
-                         in = next_token (in + 2);
-
-                         /* Discard any preceding whitespace that has
-                            already been written to the output.  */
-                         while (out > ref
-                                && isblank ((unsigned char)out[-1]))
-                           --out;
-
-                         /* Replace it all with a single space.  */
-                         *out++ = ' ';
-                       }
-                   }
-                 else
-                   {
-                     if (*in == openparen)
-                       ++count;
-
-                     *out++ = *in++;
-                   }
-               }
-           }
-       }
+        {
+          ++ref;                /* Move past the $.  */
+
+          if (out != in)
+            /* 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).  */
+            memmove (out, in, ref - in);
+
+          /* Move both pointers past the boring stuff.  */
+          out += ref - in;
+          in = ref;
+
+          if (*ref == '(' || *ref == '{')
+            {
+              char openparen = *ref;
+              char closeparen = openparen == '(' ? ')' : '}';
+              char *outref;
+              int count;
+              char *p;
+
+              *out++ = *in++;   /* Copy OPENPAREN.  */
+              outref = out;
+              /* IN now points past the opening paren or brace.
+                 Count parens or braces until it is matched.  */
+              count = 0;
+              while (*in != '\0')
+                {
+                  if (*in == closeparen && --count < 0)
+                    break;
+                  else if (*in == '\\' && in[1] == '\n')
+                    {
+                      /* We have found a backslash-newline inside a
+                         variable or function reference.  Eat it and
+                         any following whitespace.  */
+
+                      int quoted = 0;
+                      for (p = in - 1; p > ref && *p == '\\'; --p)
+                        quoted = !quoted;
+
+                      if (quoted)
+                        /* There were two or more backslashes, so this is
+                           not really a continuation line.  We don't collapse
+                           the quoting backslashes here as is done in
+                           collapse_continuations, because the line will
+                           be collapsed again after expansion.  */
+                        *out++ = *in++;
+                      else
+                        {
+                          /* Skip the backslash, newline and
+                             any following whitespace.  */
+                          in = next_token (in + 2);
+
+                          /* Discard any preceding whitespace that has
+                             already been written to the output.  */
+                          while (out > outref
+                                 && isblank ((unsigned char)out[-1]))
+                            --out;
+
+                          /* Replace it all with a single space.  */
+                          *out++ = ' ';
+                        }
+                    }
+                  else
+                    {
+                      if (*in == openparen)
+                        ++count;
+
+                      *out++ = *in++;
+                    }
+                }
+            }
+        }
 
       /* There are no more references in this line to worry about.
-        Copy the remaining uninteresting text to the output.  */
+         Copy the remaining uninteresting text to the output.  */
       if (out != in)
-       memmove (out, in, strlen (in) + 1);
+        memmove (out, in, strlen (in) + 1);
 
       /* Finally, expand the line.  */
       lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i],
-                                                    file);
+                                                     file);
     }
 
-  /* Start the command sequence, record it in a new
-     `struct child', and add that to the chain.  */
-
-  c = xcalloc (sizeof (struct child));
-  c->file = file;
   c->command_lines = lines;
-  c->sh_batch_file = NULL;
-
-  /* Cache dontcare flag because file->dontcare can be changed once we
-     return. Check dontcare inheritance mechanism for details.  */
-  c->dontcare = file->dontcare;
 
   /* Fetch the first command line to be run.  */
   job_next_command (c);
@@ -1706,12 +1874,18 @@ new_job (struct file *file)
      just once).  Also more thought needs to go into the entire algorithm;
      this is where the old parallel job code waits, so...  */
 
+#ifdef WINDOWS32
+  else if (has_jobserver_semaphore ())
+#else
   else if (job_fds[0] >= 0)
+#endif
     while (1)
       {
+        int got_token;
+#ifndef WINDOWS32
         char token;
-       int got_token;
-       int saved_errno;
+        int saved_errno;
+#endif
 
         DB (DB_JOBS, ("Need a job token; we %shave children\n",
                       children ? "" : "don't "));
@@ -1720,6 +1894,7 @@ new_job (struct file *file)
         if (!jobserver_tokens)
           break;
 
+#ifndef WINDOWS32
         /* Read a token.  As long as there's no token available we'll block.
            We enable interruptible system calls before the read(2) so that if
            we get a SIGCHLD while we're waiting, we'll return with EINTR and
@@ -1748,12 +1923,13 @@ new_job (struct file *file)
             DB (DB_JOBS, ("Duplicate the job FD\n"));
             job_rfd = dup (job_fds[0]);
           }
+#endif
 
         /* Reap anything that's currently waiting.  */
         reap_children (0, 0);
 
         /* Kick off any jobs we have waiting for an opportunity that
-           can run now (ie waiting for load). */
+           can run now (i.e., waiting for load). */
         start_waiting_jobs ();
 
         /* If our "free" slot has become available, use it; we don't need an
@@ -1766,51 +1942,83 @@ new_job (struct file *file)
         if (!children)
           fatal (NILF, "INTERNAL: no children as we go to sleep on read\n");
 
+#ifdef WINDOWS32
+        /* On Windows we simply wait for the jobserver semaphore to become
+         * signalled or one of our child processes to terminate.
+         */
+        got_token = wait_for_semaphore_or_child_process ();
+        if (got_token < 0)
+          {
+            DWORD err = GetLastError ();
+            fatal (NILF, _("semaphore or child process wait: (Error %ld: %s)"),
+                   err, map_windows32_error_to_string (err));
+          }
+#else
         /* Set interruptible system calls, and read() for a job token.  */
-       set_child_handler_action_flags (1, waiting_jobs != NULL);
-       got_token = read (job_rfd, &token, 1);
-       saved_errno = errno;
-       set_child_handler_action_flags (0, waiting_jobs != NULL);
+        set_child_handler_action_flags (1, waiting_jobs != NULL);
+        got_token = read (job_rfd, &token, 1);
+        saved_errno = errno;
+        set_child_handler_action_flags (0, waiting_jobs != NULL);
+#endif
 
         /* If we got one, we're done here.  */
-       if (got_token == 1)
+        if (got_token == 1)
           {
             DB (DB_JOBS, (_("Obtained token for child %p (%s).\n"),
                           c, c->file->name));
             break;
           }
 
+#ifndef WINDOWS32
         /* If the error _wasn't_ expected (EINTR or EBADF), punt.  Otherwise,
            go back and reap_children(), and try again.  */
-       errno = saved_errno;
+        errno = saved_errno;
         if (errno != EINTR && errno != EBADF)
           pfatal_with_name (_("read jobs pipe"));
         if (errno == EBADF)
           DB (DB_JOBS, ("Read returned EBADF.\n"));
+#endif
       }
 #endif
 
   ++jobserver_tokens;
 
-  /* The job is now primed.  Start it running.
-     (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));
+  /* Trace the build.
+     Use message here so that changes to working directories are logged.  */
+  if (trace_flag)
+    {
+      char *newer = allocated_variable_expand_for_file ("$?", c->file);
+      const char *nm;
+
+      if (! cmds->fileinfo.filenm)
+        nm = _("<builtin>");
+      else
+        {
+          char *n = alloca (strlen (cmds->fileinfo.filenm) + 1 + 11 + 1);
+          sprintf (n, "%s:%lu", cmds->fileinfo.filenm, cmds->fileinfo.lineno);
+          nm = n;
+        }
+
+      if (newer[0] == '\0')
+        message (0, _("%s: target '%s' does not exist"), nm, c->file->name);
+      else
+        message (0, _("%s: update target '%s' due to: %s"), nm,
+                 c->file->name, newer);
 
+      free (newer);
+    }
 
+  /* The job is now primed.  Start it running.
+     (This will notice if there is in fact no recipe.)  */
   start_waiting_job (c);
 
   if (job_slots == 1 || not_parallel)
     /* Since there is only one job slot, make things run linearly.
-       Wait for the child to die, setting the state to `cs_finished'.  */
+       Wait for the child to die, setting the state to 'cs_finished'.  */
     while (file->command_state == cs_running)
       reap_children (1, 0);
 
+  OUTPUT_UNSET ();
   return;
 }
 \f
@@ -1824,14 +2032,14 @@ job_next_command (struct child *child)
     {
       /* There are no more lines in the expansion of this line.  */
       if (child->command_line == child->file->cmds->ncommand_lines)
-       {
-         /* There are no more lines to be expanded.  */
-         child->command_ptr = 0;
-         return 0;
-       }
+        {
+          /* There are no more lines to be expanded.  */
+          child->command_ptr = 0;
+          return 0;
+        }
       else
-       /* Get the next line to run.  */
-       child->command_ptr = child->command_lines[child->command_line++];
+        /* Get the next line to run.  */
+        child->command_ptr = child->command_lines[child->command_line++];
     }
   return 1;
 }
@@ -1903,14 +2111,14 @@ load_too_high (void)
       static int lossage = -1;
       /* Complain only once for the same error.  */
       if (lossage == -1 || errno != lossage)
-       {
-         if (errno == 0)
-           /* An errno value of zero means getloadavg is just unsupported.  */
-           error (NILF,
+        {
+          if (errno == 0)
+            /* An errno value of zero means getloadavg is just unsupported.  */
+            error (NILF,
                    _("cannot enforce load limits on this operating system"));
-         else
-           perror_with_name (_("cannot enforce load limit: "), "getloadavg");
-       }
+          else
+            perror_with_name (_("cannot enforce load limit: "), "getloadavg");
+        }
       lossage = errno;
       load = 0;
     }
@@ -1960,7 +2168,7 @@ start_waiting_jobs (void)
       waiting_jobs = job->next;
 
       /* Try to start that job.  We break out of the loop as soon
-        as start_waiting_job puts one back on the waiting list.  */
+         as start_waiting_job puts one back on the waiting list.  */
     }
   while (start_waiting_job (job) && waiting_jobs != 0);
 
@@ -1972,59 +2180,82 @@ start_waiting_jobs (void)
 /* EMX: Start a child process. This function returns the new pid.  */
 # if defined __EMX__
 int
-child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
+child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
+                   char **argv, char **envp)
 {
   int pid;
-  /* stdin_fd == 0 means: nothing to do for stdin;
-     stdout_fd == 1 means: nothing to do for stdout */
-  int save_stdin = (stdin_fd != 0) ? dup (0) : 0;
-  int save_stdout = (stdout_fd != 1) ? dup (1): 1;
-
-  /* < 0 only if dup() failed */
-  if (save_stdin < 0)
-    fatal (NILF, _("no more file handles: could not duplicate stdin\n"));
-  if (save_stdout < 0)
-    fatal (NILF, _("no more file handles: could not duplicate stdout\n"));
-
-  /* Close unnecessary file handles for the child.  */
-  if (save_stdin != 0)
-    CLOSE_ON_EXEC (save_stdin);
-  if (save_stdout != 1)
-    CLOSE_ON_EXEC (save_stdout);
-
-  /* Connect the pipes to the child process.  */
-  if (stdin_fd != 0)
-    (void) dup2 (stdin_fd, 0);
-  if (stdout_fd != 1)
-    (void) dup2 (stdout_fd, 1);
-
-  /* stdin_fd and stdout_fd must be closed on exit because we are
-     still in the parent process */
-  if (stdin_fd != 0)
-    CLOSE_ON_EXEC (stdin_fd);
-  if (stdout_fd != 1)
-    CLOSE_ON_EXEC (stdout_fd);
+  int save_stdin = -1;
+  int save_stdout = -1;
+  int save_stderr = -1;
+
+  /* For each FD which needs to be redirected first make a dup of the standard
+     FD to save and mark it close on exec so our child won't see it.  Then
+     dup2() the standard FD to the redirect FD, and also mark the redirect FD
+     as close on exec. */
+  if (stdin_fd != FD_STDIN)
+    {
+      save_stdin = dup (FD_STDIN);
+      if (save_stdin < 0)
+        fatal (NILF, _("no more file handles: could not duplicate stdin\n"));
+      CLOSE_ON_EXEC (save_stdin);
+
+      dup2 (stdin_fd, FD_STDIN);
+      CLOSE_ON_EXEC (stdin_fd);
+    }
+
+  if (stdout_fd != FD_STDOUT)
+    {
+      save_stdout = dup (FD_STDOUT);
+      if (save_stdout < 0)
+        fatal (NILF, _("no more file handles: could not duplicate stdout\n"));
+      CLOSE_ON_EXEC (save_stdout);
+
+      dup2 (stdout_fd, FD_STDOUT);
+      CLOSE_ON_EXEC (stdout_fd);
+    }
+
+  if (stderr_fd != FD_STDERR)
+    {
+      if (stderr_fd != stdout_fd)
+        {
+          save_stderr = dup (FD_STDERR);
+          if (save_stderr < 0)
+            fatal (NILF, _("no more file handles: could not duplicate stderr\n"));
+          CLOSE_ON_EXEC (save_stderr);
+        }
+
+      dup2 (stderr_fd, FD_STDERR);
+      CLOSE_ON_EXEC (stderr_fd);
+    }
 
   /* Run the command.  */
   pid = exec_command (argv, envp);
 
-  /* Restore stdout/stdin of the parent and close temporary FDs.  */
-  if (stdin_fd != 0)
+  /* Restore stdout/stdin/stderr of the parent and close temporary FDs.  */
+  if (save_stdin >= 0)
     {
-      if (dup2 (save_stdin, 0) != 0)
+      if (dup2 (save_stdin, FD_STDIN) != FD_STDIN)
         fatal (NILF, _("Could not restore stdin\n"));
       else
         close (save_stdin);
     }
 
-  if (stdout_fd != 1)
+  if (save_stdout >= 0)
     {
-      if (dup2 (save_stdout, 1) != 1)
+      if (dup2 (save_stdout, FD_STDOUT) != FD_STDOUT)
         fatal (NILF, _("Could not restore stdout\n"));
       else
         close (save_stdout);
     }
 
+  if (save_stderr >= 0)
+    {
+      if (dup2 (save_stderr, FD_STDERR) != FD_STDERR)
+        fatal (NILF, _("Could not restore stderr\n"));
+      else
+        close (save_stderr);
+    }
+
   return pid;
 }
 
@@ -2032,19 +2263,28 @@ child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
 
 /* UNIX:
    Replace the current process with one executing the command in ARGV.
-   STDIN_FD and STDOUT_FD are used as the process's stdin and stdout; ENVP is
-   the environment of the new program.  This function does not return.  */
+   STDIN_FD/STDOUT_FD/STDERR_FD are used as the process's stdin/stdout/stderr;
+   ENVP is the environment of the new program.  This function does not return.  */
 void
-child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
+child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
+                   char **argv, char **envp)
 {
-  if (stdin_fd != 0)
-    (void) dup2 (stdin_fd, 0);
-  if (stdout_fd != 1)
-    (void) dup2 (stdout_fd, 1);
-  if (stdin_fd != 0)
-    (void) close (stdin_fd);
-  if (stdout_fd != 1)
-    (void) close (stdout_fd);
+  /* For any redirected FD, dup2() it to the standard FD then close it.  */
+  if (stdin_fd != FD_STDIN)
+    {
+      dup2 (stdin_fd, FD_STDIN);
+      close (stdin_fd);
+    }
+
+  if (stdout_fd != FD_STDOUT)
+    dup2 (stdout_fd, FD_STDOUT);
+  if (stderr_fd != FD_STDERR)
+    dup2 (stderr_fd, FD_STDERR);
+
+  if (stdout_fd != FD_STDOUT)
+    close (stdout_fd);
+  if (stderr_fd != FD_STDERR && stderr_fd != stdout_fd)
+    close (stderr_fd);
 
   /* Run the command.  */
   exec_command (argv, envp);
@@ -2077,61 +2317,59 @@ exec_command (char **argv, char **envp)
 #ifdef WINDOWS32
   HANDLE hPID;
   HANDLE hWaitPID;
-  int err = 0;
   int exit_code = EXIT_FAILURE;
 
   /* make sure CreateProcess() has Path it needs */
-  sync_Path_environment();
+  sync_Path_environment ();
 
   /* launch command */
-  hPID = process_easy(argv, envp);
+  hPID = process_easy (argv, envp, -1, -1);
 
   /* make sure launch ok */
   if (hPID == INVALID_HANDLE_VALUE)
     {
       int i;
-      fprintf(stderr,
-              _("process_easy() failed to launch process (e=%ld)\n"),
-              process_last_err(hPID));
+      fprintf (stderr, _("process_easy() failed to launch process (e=%ld)\n"),
+               process_last_err (hPID));
       for (i = 0; argv[i]; i++)
-          fprintf(stderr, "%s ", argv[i]);
-      fprintf(stderr, _("\nCounted %d args in failed launch\n"), i);
-      exit(EXIT_FAILURE);
+          fprintf (stderr, "%s ", argv[i]);
+      fprintf (stderr, _("\nCounted %d args in failed launch\n"), i);
+      exit (EXIT_FAILURE);
     }
 
   /* wait and reap last child */
-  hWaitPID = process_wait_for_any();
+  hWaitPID = process_wait_for_any (1, 0);
   while (hWaitPID)
     {
       /* was an error found on this process? */
-      err = process_last_err(hWaitPID);
+      int err = process_last_err (hWaitPID);
 
       /* get exit data */
-      exit_code = process_exit_code(hWaitPID);
+      exit_code = process_exit_code (hWaitPID);
 
       if (err)
-          fprintf(stderr, "make (e=%d, rc=%d): %s",
-                  err, exit_code, map_windows32_error_to_string(err));
+          fprintf (stderr, "make (e=%d, rc=%d): %s",
+                   err, exit_code, map_windows32_error_to_string (err));
 
       /* cleanup process */
-      process_cleanup(hWaitPID);
+      process_cleanup (hWaitPID);
 
       /* expect to find only last pid, warn about other pids reaped */
       if (hWaitPID == hPID)
           break;
       else
-       {
-         char *pidstr = xstrdup (pid2str ((pid_t)hWaitPID));
-
-          fprintf(stderr,
-                  _("make reaped child pid %s, still waiting for pid %s\n"),
-                 pidstr, pid2str ((pid_t)hPID));
-         free (pidstr);
-       }
+        {
+          char *pidstr = xstrdup (pid2str ((pid_t)hWaitPID));
+
+          fprintf (stderr,
+                   _("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 */
-  exit(exit_code);
+  exit (exit_code);
 
 #else  /* !WINDOWS32 */
 
@@ -2143,10 +2381,8 @@ exec_command (char **argv, char **envp)
   child_access ();
 
 # ifdef __EMX__
-
   /* Run the program.  */
   pid = spawnvpe (P_NOWAIT, argv[0], argv, envp);
-
   if (pid >= 0)
     return pid;
 
@@ -2155,7 +2391,6 @@ exec_command (char **argv, char **envp)
     errno = ENOEXEC;
 
 # else
-
   /* Run the program.  */
   environ = envp;
   execvp (argv[0], argv);
@@ -2169,37 +2404,37 @@ exec_command (char **argv, char **envp)
       break;
     case ENOEXEC:
       {
-       /* The file is not executable.  Try it as a shell script.  */
-       extern char *getenv ();
-       char *shell;
-       char **new_argv;
-       int argc;
+        /* The file is not executable.  Try it as a shell script.  */
+        extern char *getenv ();
+        char *shell;
+        char **new_argv;
+        int argc;
         int i=1;
 
 # ifdef __EMX__
         /* Do not use $SHELL from the environment */
-       struct variable *p = lookup_variable ("SHELL", 5);
-       if (p)
-         shell = p->value;
+        struct variable *p = lookup_variable ("SHELL", 5);
+        if (p)
+          shell = p->value;
         else
           shell = 0;
 # else
-       shell = getenv ("SHELL");
+        shell = getenv ("SHELL");
 # endif
-       if (shell == 0)
-         shell = default_shell;
+        if (shell == 0)
+          shell = default_shell;
 
-       argc = 1;
-       while (argv[argc] != 0)
-         ++argc;
+        argc = 1;
+        while (argv[argc] != 0)
+          ++argc;
 
 # ifdef __EMX__
         if (!unixy_shell)
           ++argc;
 # endif
 
-       new_argv = alloca ((1 + argc + 1) * sizeof (char *));
-       new_argv[0] = shell;
+        new_argv = alloca ((1 + argc + 1) * sizeof (char *));
+        new_argv[0] = shell;
 
 # ifdef __EMX__
         if (!unixy_shell)
@@ -2211,24 +2446,24 @@ exec_command (char **argv, char **envp)
 # endif
 
         new_argv[i] = argv[0];
-       while (argc > 0)
-         {
-           new_argv[i + argc] = argv[argc];
-           --argc;
-         }
+        while (argc > 0)
+          {
+            new_argv[i + argc] = argv[argc];
+            --argc;
+          }
 
 # ifdef __EMX__
-       pid = spawnvpe (P_NOWAIT, shell, new_argv, envp);
-       if (pid >= 0)
+        pid = spawnvpe (P_NOWAIT, shell, new_argv, envp);
+        if (pid >= 0)
           break;
 # else
-       execvp (shell, new_argv);
+        execvp (shell, new_argv);
 # endif
-       if (errno == ENOENT)
-         error (NILF, _("%s: Shell program not found"), shell);
-       else
-         perror_with_name ("execvp: ", shell);
-       break;
+        if (errno == ENOENT)
+          error (NILF, _("%s: Shell program not found"), shell);
+        else
+          perror_with_name ("execvp: ", shell);
+        break;
       }
 
 # ifdef __EMX__
@@ -2267,7 +2502,7 @@ void clean_tmp (void)
 #ifndef VMS
 /* Figure out the argument list necessary to run LINE as a command.  Try to
    avoid using a shell.  This routine handles only ' quoting, and " quoting
-   when no backslash, $ or ` characters are seen in the quotes.  Starting
+   when no backslash, $ or ' characters are seen in the quotes.  Starting
    quotes may be escaped with a backslash.  If any of the characters in
    sh_chars[] is seen, or any of the builtin commands listed in sh_cmds[]
    is the first word of a line, the shell is used.
@@ -2286,26 +2521,26 @@ void clean_tmp (void)
 static char **
 construct_command_argv_internal (char *line, char **restp, char *shell,
                                  char *shellflags, char *ifs, int flags,
-                                char **batch_filename_ptr)
+                                 char **batch_filename UNUSED)
 {
 #ifdef __MSDOS__
   /* MSDOS supports both the stock DOS shell and ports of Unixy shells.
-     We call `system' for anything that requires ``slow'' processing,
+     We call 'system' for anything that requires ''slow'' processing,
      because DOS shells are too dumb.  When $SHELL points to a real
-     (unix-style) shell, `system' just calls it to do everything.  When
-     $SHELL points to a DOS shell, `system' does most of the work
+     (unix-style) shell, 'system' just calls it to do everything.  When
+     $SHELL points to a DOS shell, 'system' does most of the work
      internally, calling the shell only for its internal commands.
      However, it looks on the $PATH first, so you can e.g. have an
-     external command named `mkdir'.
+     external command named 'mkdir'.
 
-     Since we call `system', certain characters and commands below are
+     Since we call 'system', certain characters and commands below are
      actually not specific to COMMAND.COM, but to the DJGPP implementation
-     of `system'.  In particular:
+     of 'system'.  In particular:
 
        The shell wildcard characters are in DOS_CHARS because they will
-       not be expanded if we call the child via `spawnXX'.
+       not be expanded if we call the child via 'spawnXX'.
 
-       The `;' is in DOS_CHARS, because our `system' knows how to run
+       The ';' is in DOS_CHARS, because our 'system' knows how to run
        multiple commands on a single line.
 
        DOS_CHARS also include characters special to 4DOS/NDOS, so we
@@ -2313,19 +2548,19 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
        commands and special characters.  */
   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", "md",
-                                "mkdir", "path", "pause", "prompt", "rd",
-                                "rmdir", "rem", "ren", "rename", "set",
-                                "shift", "time", "type", "ver", "verify",
-                                "vol", ":", 0 };
+                                 "copy", "ctty", "date", "del", "dir", "echo",
+                                 "erase", "exit", "for", "goto", "if", "md",
+                                 "mkdir", "path", "pause", "prompt", "rd",
+                                 "rmdir", "rem", "ren", "rename", "set",
+                                 "shift", "time", "type", "ver", "verify",
+                                 "vol", ":", 0 };
 
   static char sh_chars_sh[]  = "#;\"*?[]&|<>(){}$`^";
   static char *sh_cmds_sh[]  = { "cd", "echo", "eval", "exec", "exit", "login",
-                                "logout", "set", "umask", "wait", "while",
-                                "for", "case", "if", ":", ".", "break",
-                                "continue", "export", "read", "readonly",
-                                "shift", "times", "trap", "switch", "unset",
+                                 "logout", "set", "umask", "wait", "while",
+                                 "for", "case", "if", ":", ".", "break",
+                                 "continue", "export", "read", "readonly",
+                                 "shift", "times", "trap", "switch", "unset",
                                  "ulimit", 0 };
 
   char *sh_chars;
@@ -2333,28 +2568,28 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #elif defined (__EMX__)
   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", "md",
-                                "mkdir", "path", "pause", "prompt", "rd",
-                                "rmdir", "rem", "ren", "rename", "set",
-                                "shift", "time", "type", "ver", "verify",
-                                "vol", ":", 0 };
+                                 "copy", "ctty", "date", "del", "dir", "echo",
+                                 "erase", "exit", "for", "goto", "if", "md",
+                                 "mkdir", "path", "pause", "prompt", "rd",
+                                 "rmdir", "rem", "ren", "rename", "set",
+                                 "shift", "time", "type", "ver", "verify",
+                                 "vol", ":", 0 };
 
   static char sh_chars_os2[] = "*?[];|<>%^()\"'&";
   static char *sh_cmds_os2[] = { "call", "cd", "chcp", "chdir", "cls", "copy",
-                            "date", "del", "detach", "dir", "echo",
-                            "endlocal", "erase", "exit", "for", "goto", "if",
-                            "keys", "md", "mkdir", "move", "path", "pause",
-                            "prompt", "rd", "rem", "ren", "rename", "rmdir",
-                            "set", "setlocal", "shift", "start", "time",
+                             "date", "del", "detach", "dir", "echo",
+                             "endlocal", "erase", "exit", "for", "goto", "if",
+                             "keys", "md", "mkdir", "move", "path", "pause",
+                             "prompt", "rd", "rem", "ren", "rename", "rmdir",
+                             "set", "setlocal", "shift", "start", "time",
                              "type", "ver", "verify", "vol", ":", 0 };
 
   static char sh_chars_sh[]  = "#;\"*?[]&|<>(){}$`^~'";
   static char *sh_cmds_sh[]  = { "echo", "cd", "eval", "exec", "exit", "login",
-                                "logout", "set", "umask", "wait", "while",
-                                "for", "case", "if", ":", ".", "break",
-                                "continue", "export", "read", "readonly",
-                                "shift", "times", "trap", "switch", "unset",
+                                 "logout", "set", "umask", "wait", "while",
+                                 "for", "case", "if", ":", ".", "break",
+                                 "continue", "export", "read", "readonly",
+                                 "shift", "times", "trap", "switch", "unset",
                                  0 };
   char *sh_chars;
   char **sh_cmds;
@@ -2362,27 +2597,34 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #elif defined (_AMIGA)
   static char sh_chars[] = "#;\"|<>()?*$`";
   static char *sh_cmds[] = { "cd", "eval", "if", "delete", "echo", "copy",
-                            "rename", "set", "setenv", "date", "makedir",
-                            "skip", "else", "endif", "path", "prompt",
-                            "unset", "unsetenv", "version",
-                            0 };
+                             "rename", "set", "setenv", "date", "makedir",
+                             "skip", "else", "endif", "path", "prompt",
+                             "unset", "unsetenv", "version",
+                             0 };
 #elif defined (WINDOWS32)
-  static char sh_chars_dos[] = "\"|&<>";
+  /* We used to have a double quote (") in sh_chars_dos[] below, but
+     that caused any command line with quoted file names be run
+     through a temporary batch file, which introduces command-line
+     limit of 4K charcaters imposed by cmd.exe.  Since CreateProcess
+     can handle quoted file names just fine, removing the quote lifts
+     the limit from a very frequent use case, because using quoted
+     file names is commonplace on MS-Windows.  */
+  static char sh_chars_dos[] = "|&<>";
   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 };
+                                 "chdir", "cls", "color", "copy", "ctty",
+                                 "date", "del", "dir", "echo", "echo.",
+                                 "endlocal", "erase", "exit", "for", "ftype",
+                                 "goto", "if", "if", "md", "mkdir", "move",
+                                 "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",
-                            "case", "if", ":", ".", "break", "continue",
-                            "export", "read", "readonly", "shift", "times",
-                            "trap", "switch", "test",
+                             "logout", "set", "umask", "wait", "while", "for",
+                             "case", "if", ":", ".", "break", "continue",
+                             "export", "read", "readonly", "shift", "times",
+                             "trap", "switch", "test",
 #ifdef BATCH_MODE_ONLY_SHELL
                  "echo",
 #endif
@@ -2404,7 +2646,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
      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  /* HAVE_DOS_PATHS */
 #endif
   int i;
   char *p;
@@ -2416,13 +2658,16 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #ifdef WINDOWS32
   int slow_flag = 0;
 
-  if (!unixy_shell) {
-    sh_cmds = sh_cmds_dos;
-    sh_chars = sh_chars_dos;
-  } else {
-    sh_cmds = sh_cmds_sh;
-    sh_chars = sh_chars_sh;
-  }
+  if (!unixy_shell)
+    {
+      sh_cmds = sh_cmds_dos;
+      sh_chars = sh_chars_dos;
+    }
+  else
+    {
+      sh_cmds = sh_cmds_sh;
+      sh_chars = sh_chars_sh;
+    }
 #endif /* WINDOWS32 */
 
   if (restp != NULL)
@@ -2434,6 +2679,9 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
   if (*line == '\0')
     return 0;
 
+  if (shellflags == 0)
+    shellflags = posix_pedantic ? "-ec" : "-c";
+
   /* See if it is safe to parse commands internally.  */
   if (shell == 0)
     shell = default_shell;
@@ -2458,7 +2706,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     {
       extern int _is_unixy_shell (const char *_path);
 
-      DB (DB_BASIC, (_("$SHELL changed (was `%s', now `%s')\n"),
+      DB (DB_BASIC, (_("$SHELL changed (was '%s', now '%s')\n"),
                      default_shell, shell));
       unixy_shell = _is_unixy_shell (shell);
       /* we must allocate a copy of shell: construct_command_argv() will free
@@ -2491,7 +2739,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
   if (ifs != 0)
     for (ap = ifs; *ap != '\0'; ++ap)
       if (*ap != ' ' && *ap != '\t' && *ap != '\n')
-       goto slow;
+        goto slow;
 
   if (shellflags != 0)
     if (shellflags[0] != '-'
@@ -2516,28 +2764,27 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       assert (ap <= end);
 
       if (instring)
-       {
-         /* Inside a string, just copy any char except a closing quote
-            or a backslash-newline combination.  */
-         if (*p == instring)
-           {
-             instring = 0;
-             if (ap == new_argv[0] || *(ap-1) == '\0')
-               last_argument_was_empty = 1;
-           }
-         else if (*p == '\\' && p[1] == '\n')
+        {
+          /* Inside a string, just copy any char except a closing quote
+             or a backslash-newline combination.  */
+          if (*p == instring)
+            {
+              instring = 0;
+              if (ap == new_argv[0] || *(ap-1) == '\0')
+                last_argument_was_empty = 1;
+            }
+          else if (*p == '\\' && p[1] == '\n')
             {
               /* Backslash-newline is handled differently depending on what
                  kind of string we're in: inside single-quoted strings you
-                 keep them; in double-quoted strings they disappear.
-                For DOS/Windows/OS2, if we don't have a POSIX shell,
-                we keep the pre-POSIX behavior of removing the
-                backslash-newline.  */
+                 keep them; in double-quoted strings they disappear.  For
+                 DOS/Windows/OS2, if we don't have a POSIX shell, we keep the
+                 pre-POSIX behavior of removing the backslash-newline.  */
               if (instring == '"'
 #if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32)
-                 || !unixy_shell
+                  || !unixy_shell
 #endif
-                 )
+                  )
                 ++p;
               else
                 {
@@ -2545,61 +2792,74 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                   *(ap++) = *p;
                 }
             }
-         else if (*p == '\n' && restp != NULL)
-           {
-             /* End of the command line.  */
-             *restp = p;
-             goto end_of_line;
-           }
-         /* Backslash, $, and ` are special inside double quotes.
-            If we see any of those, punt.
-            But on MSDOS, if we use COMMAND.COM, double and single
-            quotes have the same effect.  */
-         else if (instring == '"' && strchr ("\\$`", *p) != 0 && unixy_shell)
-           goto slow;
-         else
-           *ap++ = *p;
-       }
+          else if (*p == '\n' && restp != NULL)
+            {
+              /* End of the command line.  */
+              *restp = p;
+              goto end_of_line;
+            }
+          /* Backslash, $, and ` are special inside double quotes.
+             If we see any of those, punt.
+             But on MSDOS, if we use COMMAND.COM, double and single
+             quotes have the same effect.  */
+          else if (instring == '"' && strchr ("\\$`", *p) != 0 && unixy_shell)
+            goto slow;
+#ifdef WINDOWS32
+          else if (instring == '"' && strncmp (p, "\\\"", 2) == 0)
+            *ap++ = *++p;
+#endif
+          else
+            *ap++ = *p;
+        }
       else if (strchr (sh_chars, *p) != 0)
-       /* Not inside a string, but it's a special char.  */
-       goto slow;
+        /* 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;
+        /* 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.  */
-       goto slow;
+        /* '...' is a wildcard in DJGPP.  */
+        goto slow;
 #endif
       else
-       /* Not a special char.  */
-       switch (*p)
-         {
-         case '=':
-           /* Equals is a special character in leading words before the
-              first word with no equals sign in it.  This is not the case
-              with sh -k, but we never get here when using nonstandard
-              shell flags.  */
-           if (! seen_nonequals && unixy_shell)
-             goto slow;
-           word_has_equals = 1;
-           *ap++ = '=';
-           break;
-
-         case '\\':
-           /* Backslash-newline has special case handling, ref POSIX.
+        /* Not a special char.  */
+        switch (*p)
+          {
+          case '=':
+            /* Equals is a special character in leading words before the
+               first word with no equals sign in it.  This is not the case
+               with sh -k, but we never get here when using nonstandard
+               shell flags.  */
+            if (! seen_nonequals && unixy_shell)
+              goto slow;
+            word_has_equals = 1;
+            *ap++ = '=';
+            break;
+
+          case '\\':
+            /* Backslash-newline has special case handling, ref POSIX.
                We're in the fastpath, so emulate what the shell would do.  */
-           if (p[1] == '\n')
-             {
-               /* Throw out the backslash and newline.  */
+            if (p[1] == '\n')
+              {
+                /* Throw out the backslash and newline.  */
                 ++p;
 
                 /* If there's nothing in this argument yet, skip any
                    whitespace before the start of the next word.  */
                 if (ap == new_argv[i])
                   p = next_token (p + 1) - 1;
-             }
-           else if (p[1] != '\0')
+              }
+#ifdef WINDOWS32
+            /* Backslash before whitespace is not special if our shell
+               is not Unixy.  */
+            else if (isspace (p[1]) && !unixy_shell)
+              {
+                *ap++ = *p;
+                break;
+              }
+#endif
+            else if (p[1] != '\0')
               {
 #ifdef HAVE_DOS_PATHS
                 /* Only remove backslashes before characters special to Unixy
@@ -2629,69 +2889,69 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
                 /* Copy and skip the following char.  */
                 *ap++ = *++p;
               }
-           break;
-
-         case '\'':
-         case '"':
-           instring = *p;
-           break;
-
-         case '\n':
-           if (restp != NULL)
-             {
-               /* End of the command line.  */
-               *restp = p;
-               goto end_of_line;
-             }
-           else
-             /* Newlines are not special.  */
-             *ap++ = '\n';
-           break;
-
-         case ' ':
-         case '\t':
-           /* We have the end of an argument.
-              Terminate the text of the argument.  */
-           *ap++ = '\0';
-           new_argv[++i] = ap;
-           last_argument_was_empty = 0;
-
-           /* Update SEEN_NONEQUALS, which tells us if every word
-              heretofore has contained an `='.  */
-           seen_nonequals |= ! word_has_equals;
-           if (word_has_equals && ! seen_nonequals)
-             /* An `=' in a word before the first
-                word without one is magical.  */
-             goto slow;
-           word_has_equals = 0; /* Prepare for the next word.  */
-
-           /* If this argument is the command name,
-              see if it is a built-in shell command.
-              If so, have the shell handle it.  */
-           if (i == 1)
-             {
-               register int j;
-               for (j = 0; sh_cmds[j] != 0; ++j)
+            break;
+
+          case '\'':
+          case '"':
+            instring = *p;
+            break;
+
+          case '\n':
+            if (restp != NULL)
+              {
+                /* End of the command line.  */
+                *restp = p;
+                goto end_of_line;
+              }
+            else
+              /* Newlines are not special.  */
+              *ap++ = '\n';
+            break;
+
+          case ' ':
+          case '\t':
+            /* We have the end of an argument.
+               Terminate the text of the argument.  */
+            *ap++ = '\0';
+            new_argv[++i] = ap;
+            last_argument_was_empty = 0;
+
+            /* Update SEEN_NONEQUALS, which tells us if every word
+               heretofore has contained an '='.  */
+            seen_nonequals |= ! word_has_equals;
+            if (word_has_equals && ! seen_nonequals)
+              /* An '=' in a word before the first
+                 word without one is magical.  */
+              goto slow;
+            word_has_equals = 0; /* Prepare for the next word.  */
+
+            /* If this argument is the command name,
+               see if it is a built-in shell command.
+               If so, have the shell handle it.  */
+            if (i == 1)
+              {
+                register int j;
+                for (j = 0; sh_cmds[j] != 0; ++j)
                   {
                     if (streq (sh_cmds[j], new_argv[0]))
                       goto slow;
-# ifdef __EMX__
+#if defined(__EMX__) || defined(WINDOWS32)
                     /* Non-Unix shells are case insensitive.  */
                     if (!unixy_shell
                         && strcasecmp (sh_cmds[j], new_argv[0]) == 0)
                       goto slow;
-# endif
+#endif
                   }
-             }
+              }
 
-           /* Ignore multiple whitespace chars.  */
-           p = next_token (p) - 1;
-           break;
+            /* Ignore multiple whitespace chars.  */
+            p = next_token (p) - 1;
+            break;
 
-         default:
-           *ap++ = *p;
-           break;
-         }
+          default:
+            *ap++ = *p;
+            break;
+          }
     }
  end_of_line:
 
@@ -2710,8 +2970,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     {
       register int j;
       for (j = 0; sh_cmds[j] != 0; ++j)
-       if (streq (sh_cmds[j], new_argv[0]))
-         goto slow;
+        if (streq (sh_cmds[j], new_argv[0]))
+          goto slow;
     }
 
   if (new_argv[0] == 0)
@@ -2735,7 +2995,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     }
 
 #ifdef __MSDOS__
-  execute_by_shell = 1;        /* actually, call `system' if shell isn't unixy */
+  execute_by_shell = 1; /* actually, call 'system' if shell isn't unixy */
 #endif
 
 #ifdef _AMIGA
@@ -2750,14 +3010,14 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     for (dptr=buffer; *ptr; )
     {
       if (*ptr == '\\' && ptr[1] == '\n')
-       ptr += 2;
+        ptr += 2;
       else if (*ptr == '@') /* Kludge: multiline commands */
       {
-       ptr += 2;
-       *dptr++ = '\n';
+        ptr += 2;
+        *dptr++ = '\n';
       }
       else
-       *dptr++ = *ptr++;
+        *dptr++ = *ptr++;
     }
     *dptr = 0;
 
@@ -2765,7 +3025,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
     new_argv[0] = buffer;
     new_argv[1] = 0;
   }
-#else  /* Not Amiga  */
+#else   /* Not Amiga  */
 #ifdef WINDOWS32
   /*
    * Not eating this whitespace caused things like
@@ -2790,37 +3050,44 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
        Then recurse, expanding this command line to get the final
        argument list.  */
 
+    char *new_line;
     unsigned int shell_len = strlen (shell);
     unsigned int line_len = strlen (line);
-    unsigned int sflags_len = strlen (shellflags);
+    unsigned int sflags_len = shellflags ? strlen (shellflags) : 0;
+#ifdef WINDOWS32
     char *command_ptr = NULL; /* used for batch_mode_shell mode */
-    char *new_line;
+#endif
 
 # ifdef __EMX__ /* is this necessary? */
-    if (!unixy_shell)
+    if (!unixy_shell && shellflags)
       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. */
+        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 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 */
+        if (unixy_shell)     /* the test is complicated and we already did it */
 #else
-       if (is_bourne_compatible_shell(shell))
+        if (is_bourne_compatible_shell (shell)
+#ifdef WINDOWS32
+            /* If we didn't find any sh.exe, don't behave is if we did!  */
+            && !no_default_sh_exe
+#endif
+            )
 #endif
           {
             const char *f = line;
@@ -2856,35 +3123,136 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
               }
             *t = '\0';
           }
+#ifdef WINDOWS32
+        else    /* non-Posix shell (cmd.exe etc.) */
+          {
+            const char *f = line;
+            char *t = line;
+            char *tstart = t;
+            int temp_fd;
+            FILE* batch = NULL;
+            int id = GetCurrentProcessId ();
+            PATH_VAR(fbuf);
+
+            /* Generate a file name for the temporary batch file.  */
+            sprintf (fbuf, "make%d", id);
+            *batch_filename = create_batch_file (fbuf, 0, &temp_fd);
+            DB (DB_JOBS, (_("Creating temporary batch file %s\n"),
+                          *batch_filename));
+
+            /* Create a FILE object for the batch file, and write to it the
+               commands to be executed.  Put the batch file in TEXT mode.  */
+            _setmode (temp_fd, _O_TEXT);
+            batch = _fdopen (temp_fd, "wt");
+            fputs ("@echo off\n", batch);
+            DB (DB_JOBS, (_("Batch file contents:\n\t@echo off\n")));
+
+            /* Copy the recipe, removing and ignoring interior prefix chars
+               [@+-]: they're meaningless in .ONESHELL mode.  */
+            while (*f != '\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')
+                  {
+                    /* Remove the escaped newlines in the command, and
+                       the whitespace that follows them.  Windows
+                       shells cannot handle escaped newlines.  */
+                    if (*f == '\\' && f[1] == '\n')
+                      {
+                        f += 2;
+                        while (isblank (*f))
+                          ++f;
+                      }
+                    *(t++) = *(f++);
+                    /* On an unescaped newline, we're done with this
+                       line.  */
+                    if (f[-1] == '\n')
+                      break;
+                  }
+                /* Write another line into the batch file.  */
+                if (t > tstart)
+                  {
+                    int c = *t;
+                    *t = '\0';
+                    fputs (tstart, batch);
+                    DB (DB_JOBS, ("\t%s", tstart));
+                    tstart = t;
+                    *t = c;
+                  }
+              }
+            DB (DB_JOBS, ("\n"));
+            fclose (batch);
+
+            /* Create an argv list for the shell command line that
+               will run the batch file.  */
+            new_argv = xmalloc (2 * sizeof (char *));
+            new_argv[0] = xstrdup (*batch_filename);
+            new_argv[1] = NULL;
+            return new_argv;
+          }
+#endif /* WINDOWS32 */
+        /* Create an argv list for the shell command line.  */
+        {
+          int n = 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_argv = xmalloc ((4 + sflags_len/2) * sizeof (char *));
+          new_argv[n++] = xstrdup (shell);
+
+          /* Chop up the shellflags (if any) and assign them.  */
+          if (! shellflags)
+            new_argv[n++] = xstrdup ("");
+          else
+            {
+              const char *s = shellflags;
+              char *t;
+              unsigned int len;
+              while ((t = find_next_token (&s, &len)) != 0)
+                new_argv[n++] = xstrndup (t, len);
+            }
+
+          /* Set the command to invoke.  */
+          new_argv[n++] = line;
+          new_argv[n++] = NULL;
+        }
+        return new_argv;
       }
 
-    new_line = alloca (shell_len + 1 + sflags_len + 1
-                             + (line_len*2) + 1);
+    new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1
+                        + (line_len*2) + 1);
     ap = new_line;
-    memcpy (ap, shell, shell_len);
-    ap += shell_len;
+    /* Copy SHELL, escaping any characters special to the shell.  If
+       we don't escape them, construct_command_argv_internal will
+       recursively call itself ad nauseam, or until stack overflow,
+       whichever happens first.  */
+    for (p = shell; *p != '\0'; ++p)
+      {
+        if (strchr (sh_chars, *p) != 0)
+          *(ap++) = '\\';
+        *(ap++) = *p;
+      }
     *(ap++) = ' ';
-    memcpy (ap, shellflags, sflags_len);
+    if (shellflags)
+      memcpy (ap, shellflags, sflags_len);
     ap += sflags_len;
     *(ap++) = ' ';
+#ifdef WINDOWS32
     command_ptr = ap;
+#endif
     for (p = line; *p != '\0'; ++p)
       {
-       if (restp != NULL && *p == '\n')
-         {
-           *restp = p;
-           break;
-         }
-       else if (*p == '\\' && p[1] == '\n')
-         {
-           /* POSIX says we keep the backslash-newline.  If we don't have a
+        if (restp != NULL && *p == '\n')
+          {
+            *restp = p;
+            break;
+          }
+        else if (*p == '\\' && p[1] == '\n')
+          {
+            /* 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)
@@ -2892,97 +3260,108 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 #else
 # define PRESERVE_BSNL  1
 #endif
-           if (PRESERVE_BSNL)
-             {
-               *(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;
-           continue;
-         }
+            if (PRESERVE_BSNL)
+              {
+                *(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;
+            continue;
+          }
 
         /* DOS shells don't know about backslash-escaping.  */
-       if (unixy_shell && !batch_mode_shell &&
+        if (unixy_shell && !batch_mode_shell &&
             (*p == '\\' || *p == '\'' || *p == '"'
              || isspace ((unsigned char)*p)
              || strchr (sh_chars, *p) != 0))
-         *ap++ = '\\';
+          *ap++ = '\\';
 #ifdef __MSDOS__
         else if (unixy_shell && strneq (p, "...", 3))
           {
-            /* The case of `...' wildcard again.  */
+            /* The case of '...' wildcard again.  */
             strcpy (ap, "\\.\\.\\");
             ap += 5;
             p  += 2;
           }
 #endif
-       *ap++ = *p;
+        *ap++ = *p;
       }
     if (ap == new_line + shell_len + sflags_len + 2)
-      /* Line was empty.  */
-      return 0;
+      {
+        /* Line was empty.  */
+        free (new_line);
+        return 0;
+      }
     *ap = '\0';
 
 #ifdef WINDOWS32
     /* 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 && !(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 = xmalloc(2 * sizeof (char *));
-      new_argv[0] = xstrdup ("");
-      new_argv[1] = NULL;
-    } else if ((no_default_sh_exe || batch_mode_shell) && batch_filename_ptr) {
-      int temp_fd;
-      FILE* batch = NULL;
-      int id = GetCurrentProcessId();
-      PATH_VAR(fbuf);
-
-      /* create a file name */
-      sprintf(fbuf, "make%d", id);
-      *batch_filename_ptr = create_batch_file (fbuf, unixy_shell, &temp_fd);
-
-      DB (DB_JOBS, (_("Creating temporary batch file %s\n"),
-                    *batch_filename_ptr));
-
-      /* Create a FILE object for the batch file, and write to it the
-        commands to be executed.  Put the batch file in TEXT mode.  */
-      _setmode (temp_fd, _O_TEXT);
-      batch = _fdopen (temp_fd, "wt");
-      if (!unixy_shell)
-        fputs ("@echo off\n", batch);
-      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 = xmalloc(3 * sizeof (char *));
-      if (unixy_shell) {
-        new_argv[0] = xstrdup (shell);
-        new_argv[1] = *batch_filename_ptr; /* only argv[0] gets freed later */
-      } else {
-        new_argv[0] = xstrdup (*batch_filename_ptr);
+    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 = xmalloc (2 * sizeof (char *));
+        new_argv[0] = xstrdup ("");
         new_argv[1] = NULL;
       }
-      new_argv[2] = NULL;
-    } else
+    else if ((no_default_sh_exe || batch_mode_shell) && batch_filename)
+      {
+        int temp_fd;
+        FILE* batch = NULL;
+        int id = GetCurrentProcessId ();
+        PATH_VAR (fbuf);
+
+        /* create a file name */
+        sprintf (fbuf, "make%d", id);
+        *batch_filename = create_batch_file (fbuf, unixy_shell, &temp_fd);
+
+        DB (DB_JOBS, (_("Creating temporary batch file %s\n"),
+                      *batch_filename));
+
+        /* Create a FILE object for the batch file, and write to it the
+           commands to be executed.  Put the batch file in TEXT mode.  */
+        _setmode (temp_fd, _O_TEXT);
+        batch = _fdopen (temp_fd, "wt");
+        if (!unixy_shell)
+          fputs ("@echo off\n", batch);
+        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 = xmalloc (3 * sizeof (char *));
+        if (unixy_shell)
+          {
+            new_argv[0] = xstrdup (shell);
+            new_argv[1] = *batch_filename; /* only argv[0] gets freed later */
+          }
+        else
+          {
+            new_argv[0] = xstrdup (*batch_filename);
+            new_argv[1] = NULL;
+          }
+        new_argv[2] = NULL;
+      }
+    else
 #endif /* WINDOWS32 */
 
     if (unixy_shell)
-      new_argv = construct_command_argv_internal (new_line, 0, 0, 0, 0, flags, 0);
+      new_argv = construct_command_argv_internal (new_line, 0, 0, 0, 0,
+                                                  flags, 0);
 
 #ifdef __EMX__
     else if (!unixy_shell)
       {
-       /* new_line is local, must not be freed therefore
+        /* new_line is local, must not be freed therefore
            We use line here instead of new_line because we run the shell
            manually.  */
         size_t line_len = strlen (line);
@@ -3065,8 +3444,10 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
       fatal (NILF, _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"),
             __FILE__, __LINE__);
 #endif
+
+    free (new_line);
   }
-#endif /* ! AMIGA */
+#endif  /* ! AMIGA */
 
   return new_argv;
 }
@@ -3074,7 +3455,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 
 /* Figure out the argument list necessary to run LINE as a command.  Try to
    avoid using a shell.  This routine handles only ' quoting, and " quoting
-   when no backslash, $ or ` characters are seen in the quotes.  Starting
+   when no backslash, $ or ' characters are seen in the quotes.  Starting
    quotes may be escaped with a backslash.  If any of the characters in
    sh_chars[] is seen, or any of the builtin commands listed in sh_cmds[]
    is the first word of a line, the shell is used.
@@ -3087,7 +3468,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
 
 char **
 construct_command_argv (char *line, char **restp, struct file *file,
-                        int cmd_flags, char **batch_filename_ptr)
+                        int cmd_flags, char **batch_filename)
 {
   char *shell, *ifs, *shellflags;
   char **argv;
@@ -3101,13 +3482,13 @@ construct_command_argv (char *line, char **restp, struct file *file,
   for (;;)
     {
       while ((*cptr != 0)
-            && (isspace ((unsigned char)*cptr)))
-       cptr++;
+             && (isspace ((unsigned char)*cptr)))
+        cptr++;
       if (*cptr == 0)
-       break;
+        break;
       while ((*cptr != 0)
-            && (!isspace((unsigned char)*cptr)))
-       cptr++;
+             && (!isspace ((unsigned char)*cptr)))
+        cptr++;
       argc++;
     }
 
@@ -3120,17 +3501,17 @@ construct_command_argv (char *line, char **restp, struct file *file,
   for (;;)
     {
       while ((*cptr != 0)
-            && (isspace ((unsigned char)*cptr)))
-       cptr++;
+             && (isspace ((unsigned char)*cptr)))
+        cptr++;
       if (*cptr == 0)
-       break;
+        break;
       DB (DB_JOBS, ("argv[%d] = [%s]\n", argc, cptr));
       argv[argc++] = cptr;
       while ((*cptr != 0)
-            && (!isspace((unsigned char)*cptr)))
-       cptr++;
+             && (!isspace ((unsigned char)*cptr)))
+        cptr++;
       if (*cptr != 0)
-       *cptr++ = 0;
+        *cptr++ = 0;
     }
 #else
   {
@@ -3144,10 +3525,11 @@ construct_command_argv (char *line, char **restp, struct file *file,
      * Convert to forward slashes so that construct_command_argv_internal()
      * is not confused.
      */
-    if (shell) {
-      char *p = w32ify (shell, 0);
-      strcpy (shell, p);
-    }
+    if (shell)
+      {
+        char *p = w32ify (shell, 0);
+        strcpy (shell, p);
+      }
 #endif
 #ifdef __EMX__
     {
@@ -3155,12 +3537,12 @@ construct_command_argv (char *line, char **restp, struct file *file,
       static const char *last_shell = "";
       static int init = 0;
       if (init == 0)
-       {
-         unixroot = getenv ("UNIXROOT");
-         /* unixroot must be NULL or not empty */
-         if (unixroot && unixroot[0] == '\0') unixroot = NULL;
-         init = 1;
-       }
+        {
+          unixroot = getenv ("UNIXROOT");
+          /* unixroot must be NULL or not empty */
+          if (unixroot && unixroot[0] == '\0') unixroot = NULL;
+          init = 1;
+        }
 
       /* if we have an unixroot drive and if shell is not default_shell
          (which means it's either cmd.exe or the test has already been
@@ -3168,29 +3550,29 @@ construct_command_argv (char *line, char **restp, struct file *file,
          try whether it exists e.g.: if "/bin/sh" does not exist use
          "$UNIXROOT/bin/sh" instead.  */
       if (unixroot && shell && strcmp (shell, last_shell) != 0
-         && (shell[0] == '/' || shell[0] == '\\'))
-       {
-         /* trying a new shell, check whether it exists */
-         size_t size = strlen (shell);
-         char *buf = xmalloc (size + 7);
-         memcpy (buf, shell, size);
-         memcpy (buf + size, ".exe", 5); /* including the trailing '\0' */
+          && (shell[0] == '/' || shell[0] == '\\'))
+        {
+          /* trying a new shell, check whether it exists */
+          size_t size = strlen (shell);
+          char *buf = xmalloc (size + 7);
+          memcpy (buf, shell, size);
+          memcpy (buf + size, ".exe", 5); /* including the trailing '\0' */
           if (access (shell, F_OK) != 0 && access (buf, F_OK) != 0)
-           {
-             /* try the same for the unixroot drive */
-             memmove (buf + 2, buf, size + 5);
-             buf[0] = unixroot[0];
-             buf[1] = unixroot[1];
-             if (access (buf, F_OK) == 0)
-               /* we have found a shell! */
-               /* free(shell); */
-               shell = buf;
-             else
-               free (buf);
-           }
-         else
+            {
+              /* try the same for the unixroot drive */
+              memmove (buf + 2, buf, size + 5);
+              buf[0] = unixroot[0];
+              buf[1] = unixroot[1];
+              if (access (buf, F_OK) == 0)
+                /* we have found a shell! */
+                /* free(shell); */
+                shell = buf;
+              else
+                free (buf);
+            }
+          else
             free (buf);
-       }
+        }
     }
 #endif /* __EMX__ */
 
@@ -3201,7 +3583,7 @@ construct_command_argv (char *line, char **restp, struct file *file,
   }
 
   argv = construct_command_argv_internal (line, restp, shell, shellflags, ifs,
-                                          cmd_flags, batch_filename_ptr);
+                                          cmd_flags, batch_filename);
 
   free (shell);
   free (shellflags);
diff --git a/job.h b/job.h
index d346b5e..8a20177 100644 (file)
--- a/job.h
+++ b/job.h
@@ -1,7 +1,5 @@
 /* Definitions for managing subprocesses in GNU Make.
-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.
+Copyright (C) 1992-2013 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
@@ -16,8 +14,7 @@ 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 SEEN_JOB_H
-#define SEEN_JOB_H
+#include "output.h"
 
 #ifdef HAVE_FCNTL_H
 # include <fcntl.h>
@@ -28,7 +25,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* How to set close-on-exec for a file descriptor.  */
 
 #if !defined F_SETFD
-# define CLOSE_ON_EXEC(_d)
+# ifdef WINDOWS32
+#  define CLOSE_ON_EXEC(_d)  process_noinherit(_d)
+# else
+#  define CLOSE_ON_EXEC(_d)
+# endif
 #else
 # ifndef FD_CLOEXEC
 #  define FD_CLOEXEC 1
@@ -36,34 +37,78 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 # define CLOSE_ON_EXEC(_d) (void) fcntl ((_d), F_SETFD, FD_CLOEXEC)
 #endif
 
+#ifdef NO_OUTPUT_SYNC
+# define RECORD_SYNC_MUTEX(m) \
+    error (NILF, \
+           _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."));
+#else
+# ifdef WINDOWS32
+/* For emulations in w32/compat/posixfcn.c.  */
+#  define F_GETFD 1
+#  define F_SETLKW 2
+/* Implementation note: None of the values of l_type below can be zero
+   -- they are compared with a static instance of the struct, so zero
+   means unknown/invalid, see w32/compat/posixfcn.c. */
+#  define F_WRLCK 1
+#  define F_UNLCK 2
+
+struct flock
+  {
+    short l_type;
+    short l_whence;
+    off_t l_start;
+    off_t l_len;
+    pid_t l_pid;
+  };
+
+/* This type is actually a HANDLE, but we want to avoid including
+   windows.h as much as possible.  */
+typedef intptr_t sync_handle_t;
+
+/* Public functions emulated/provided in posixfcn.c.  */
+int fcntl (intptr_t fd, int cmd, ...);
+intptr_t create_mutex (void);
+int same_stream (FILE *f1, FILE *f2);
+
+#  define RECORD_SYNC_MUTEX(m) record_sync_mutex(m)
+void record_sync_mutex (const char *str);
+void prepare_mutex_handle_string (intptr_t hdl);
+# else  /* !WINDOWS32 */
+
+typedef int sync_handle_t;      /* file descriptor */
+
+#  define RECORD_SYNC_MUTEX(m) (void)(m)
+
+# endif
+#endif  /* !NO_OUTPUT_SYNC */
+
 /* Structure describing a running or dead child process.  */
 
 struct child
   {
-    struct child *next;                /* Link in the chain.  */
-
-    struct file *file;         /* File being remade.  */
+    struct child *next;         /* Link in the chain.  */
 
-    char **environment;                /* Environment for commands.  */
+    struct file *file;          /* File being remade.  */
 
-    char **command_lines;      /* Array of variable-expanded cmd lines.  */
-    unsigned int command_line; /* Index into above.  */
-    char *command_ptr;         /* Ptr into command_lines[command_line].  */
+    char **environment;         /* Environment for commands.  */
+    char *sh_batch_file;        /* Script file for shell commands */
+    char **command_lines;       /* Array of variable-expanded cmd lines.  */
+    char *command_ptr;          /* Ptr into command_lines[command_line].  */
 
-    pid_t pid;                 /* Child process's ID number.  */
 #ifdef VMS
-    int efn;                   /* Completion event flag number */
-    int cstatus;               /* Completion status */
     char *comname;              /* Temporary command file name */
+    int efn;                    /* Completion event flag number */
+    int cstatus;                /* Completion status */
 #endif
-    char *sh_batch_file;        /* Script file for shell commands */
-    unsigned int remote:1;     /* Nonzero if executing remotely.  */
 
-    unsigned int noerror:1;    /* Nonzero if commands contained a `-'.  */
-
-    unsigned int good_stdin:1; /* Nonzero if this child has a good stdin.  */
-    unsigned int deleted:1;    /* Nonzero if targets have been deleted.  */
-    unsigned int dontcare:1;    /* Saved dontcare flag.  */
+    unsigned int  command_line; /* Index into command_lines.  */
+    struct output output;       /* Output for this child.  */
+    pid_t         pid;          /* Child process's ID number.  */
+    unsigned int  remote:1;     /* Nonzero if executing remotely.  */
+    unsigned int  noerror:1;    /* Nonzero if commands contained a '-'.  */
+    unsigned int  good_stdin:1; /* Nonzero if this child has a good stdin.  */
+    unsigned int  deleted:1;    /* Nonzero if targets have been deleted.  */
+    unsigned int  dontcare:1;   /* Saved dontcare flag.  */
   };
 
 extern struct child *children;
@@ -77,17 +122,24 @@ char **construct_command_argv (char *line, char **restp, struct file *file,
                                int cmd_flags, char** batch_file);
 #ifdef VMS
 int child_execute_job (char *argv, struct child *child);
-#elif defined(__EMX__)
-int child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
 #else
-void child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
+# define FD_STDIN       (fileno (stdin))
+# define FD_STDOUT      (fileno (stdout))
+# define FD_STDERR      (fileno (stderr))
+# if defined(__EMX__)
+int child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
+                       char **argv, char **envp);
+# else
+void child_execute_job (int stdin_fd, int stdout_fd, int stderr_fd,
+                        char **argv, char **envp) __attribute__ ((noreturn));
+# endif
 #endif
 #ifdef _AMIGA
-void exec_command (char **argv);
+void exec_command (char **argv) __attribute__ ((noreturn));
 #elif defined(__EMX__)
 int exec_command (char **argv, char **envp);
 #else
-void exec_command (char **argv, char **envp);
+void exec_command (char **argv, char **envp) __attribute__ ((noreturn));
 #endif
 
 extern unsigned int job_slots_used;
@@ -96,14 +148,12 @@ void block_sigs (void);
 #ifdef POSIX
 void unblock_sigs (void);
 #else
-#ifdef HAVE_SIGSETMASK
+#ifdef  HAVE_SIGSETMASK
 extern int fatal_signal_mask;
-#define        unblock_sigs()  sigsetmask (0)
+#define unblock_sigs()  sigsetmask (0)
 #else
-#define        unblock_sigs()
+#define unblock_sigs()
 #endif
 #endif
 
 extern unsigned int jobserver_tokens;
-
-#endif /* SEEN_JOB_H */
diff --git a/load.c b/load.c
new file mode 100644 (file)
index 0000000..a2cbc25
--- /dev/null
+++ b/load.c
@@ -0,0 +1,240 @@
+/* Loading dynamic objects for GNU Make.
+Copyright (C) 2012-2013 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 "makeint.h"
+
+#if MAKE_LOAD
+
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <errno.h>
+
+#define SYMBOL_EXTENSION        "_gmk_setup"
+
+#include "debug.h"
+#include "filedef.h"
+#include "variable.h"
+
+struct load_list
+  {
+    struct load_list *next;
+    const char *name;
+    void *dlp;
+  };
+
+static struct load_list *loaded_syms = NULL;
+
+static load_func_t
+load_object (const gmk_floc *flocp, int noerror,
+             const char *ldname, const char *symname)
+{
+  static void *global_dl = NULL;
+  load_func_t symp;
+
+  if (! global_dl)
+    {
+      global_dl = dlopen (NULL, RTLD_NOW|RTLD_GLOBAL);
+      if (! global_dl)
+        fatal (flocp, _("Failed to open global symbol table: %s"), dlerror ());
+    }
+
+  symp = (load_func_t) dlsym (global_dl, symname);
+  if (! symp)
+    {
+      struct load_list *new;
+      void *dlp = NULL;
+
+    /* If the path has no "/", try the current directory first.  */
+      if (! strchr (ldname, '/')
+#ifdef HAVE_DOS_PATHS
+          && ! strchr (ldname, '\\')
+#endif
+         )
+        dlp = dlopen (concat (2, "./", ldname), RTLD_LAZY|RTLD_GLOBAL);
+
+      /* If we haven't opened it yet, try the default search path.  */
+      if (! dlp)
+        dlp = dlopen (ldname, RTLD_LAZY|RTLD_GLOBAL);
+
+      /* Still no?  Then fail.  */
+      if (! dlp)
+        {
+          if (noerror)
+            DB (DB_BASIC, ("%s", dlerror ()));
+          else
+            error (flocp, "%s", dlerror ());
+          return NULL;
+        }
+
+      /* Assert that the GPL license symbol is defined.  */
+      symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible");
+      if (! symp)
+        fatal (flocp, _("Loaded object %s is not declared to be GPL compatible"),
+               ldname);
+
+      symp = (load_func_t) dlsym (dlp, symname);
+      if (! symp)
+        fatal (flocp, _("Failed to load symbol %s from %s: %s"),
+               symname, ldname, dlerror ());
+
+      /* Add this symbol to a trivial lookup table.  This is not efficient but
+         it's highly unlikely we'll be loading lots of objects, and we only
+         need it to look them up on unload, if we rebuild them.  */
+      new = xmalloc (sizeof (struct load_list));
+      new->name = xstrdup (ldname);
+      new->dlp = dlp;
+      new->next = loaded_syms;
+      loaded_syms = new;
+    }
+
+  return symp;
+}
+
+int
+load_file (const gmk_floc *flocp, const char **ldname, int noerror)
+{
+  int nmlen = strlen (*ldname);
+  char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1);
+  char *symname = NULL;
+  char *loaded;
+  const char *fp;
+  int r;
+  load_func_t symp;
+
+  /* Break the input into an object file name and a symbol name.  If no symbol
+     name was provided, compute one from the object file name.  */
+  fp = strchr (*ldname, '(');
+  if (fp)
+    {
+      const char *ep;
+
+      /* There's an open paren, so see if there's a close paren: if so use
+         that as the symbol name.  We can't have whitespace: it would have
+         been chopped up before this function is called.  */
+      ep = strchr (fp+1, ')');
+      if (ep && ep[1] == '\0')
+        {
+          int l = fp - *ldname;;
+
+          ++fp;
+          if (fp == ep)
+            fatal (flocp, _("Empty symbol name for load: %s"), *ldname);
+
+          /* Make a copy of the ldname part.  */
+          memcpy (new, *ldname, l);
+          new[l] = '\0';
+          *ldname = new;
+
+          /* Make a copy of the symbol name part.  */
+          symname = new + l + 1;
+          memcpy (symname, fp, ep - fp);
+          symname[ep - fp] = '\0';
+        }
+    }
+
+  /* Add this name to the string cache so it can be reused later.  */
+  *ldname = strcache_add (*ldname);
+
+  /* If this object has been loaded, we're done.  */
+  loaded = allocated_variable_expand ("$(.LOADED)");
+  fp = strstr (loaded, *ldname);
+  r = fp && (fp==loaded || fp[-1]==' ') && (fp[nmlen]=='\0' || fp[nmlen]==' ');
+  free (loaded);
+  if (r)
+    return 1;
+
+  /* If we didn't find a symbol name yet, construct it from the ldname.  */
+  if (! symname)
+    {
+      char *p = new;
+
+      fp = strrchr (*ldname, '/');
+#ifdef HAVE_DOS_PATHS
+      if (fp)
+        {
+          const char *fp2 = strchr (fp, '\\');
+
+          if (fp2 > fp)
+            fp = fp2;
+        }
+      else
+        fp = strrchr (*ldname, '\\');
+      /* The (improbable) case of d:foo.  */
+      if (fp && *fp && fp[1] == ':')
+        fp++;
+#endif
+      if (!fp)
+        fp = *ldname;
+      else
+        ++fp;
+      while (isalnum (*fp) || *fp == '_')
+        *(p++) = *(fp++);
+      strcpy (p, SYMBOL_EXTENSION);
+      symname = new;
+    }
+
+  DB (DB_VERBOSE, (_("Loading symbol %s from %s\n"), symname, *ldname));
+
+  /* Load it!  */
+  symp = load_object (flocp, noerror, *ldname, symname);
+  if (! symp)
+    return 0;
+
+  /* Invoke the symbol.  */
+  r = (*symp) (flocp);
+
+  /* If it succeeded, add the load file to the loaded variable.  */
+  if (r > 0)
+    do_variable_definition (flocp, ".LOADED", *ldname, o_default, f_append, 0);
+
+  return r;
+}
+
+void
+unload_file (const char *name)
+{
+  struct load_list *d;
+
+  for (d = loaded_syms; d != NULL; d = d->next)
+    if (streq (d->name, name) && d->dlp)
+      {
+        if (dlclose (d->dlp))
+          perror_with_name ("dlclose", d->name);
+        d->dlp = NULL;
+        break;
+      }
+}
+
+#else
+
+int
+load_file (const gmk_floc *flocp, const char **ldname, int noerror)
+{
+  if (! noerror)
+    fatal (flocp, _("The 'load' operation is not supported on this platform."));
+
+  return 0;
+}
+
+void
+unload_file (const char *name)
+{
+  fatal (NILF, "INTERNAL: Cannot unload when load is not supported!");
+}
+
+#endif  /* MAKE_LOAD */
diff --git a/loadapi.c b/loadapi.c
new file mode 100644 (file)
index 0000000..0568cbd
--- /dev/null
+++ b/loadapi.c
@@ -0,0 +1,61 @@
+/* API for GNU Make dynamic objects.
+Copyright (C) 2013 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 "makeint.h"
+
+#include "filedef.h"
+#include "variable.h"
+#include "dep.h"
+
+/* Allocate a buffer in our context, so we can free it.  */
+char *
+gmk_alloc (unsigned int len)
+{
+  return xmalloc (len);
+}
+
+/* Free a buffer returned by gmk_expand().  */
+void
+gmk_free (char *s)
+{
+  free (s);
+}
+
+/* Evaluate a buffer as make syntax.
+   Ideally eval_buffer() will take const char *, but not yet.  */
+void
+gmk_eval (const char *buffer, const gmk_floc *floc)
+{
+  char *s = xstrdup (buffer);
+  eval_buffer (s, floc);
+  free (s);
+}
+
+/* Expand a string and return an allocated buffer.
+   Caller must call gmk_free() with this buffer.  */
+char *
+gmk_expand (const char *ref)
+{
+  return allocated_variable_expand (ref);
+}
+
+/* Register a function to be called from makefiles.  */
+void
+gmk_add_function (const char *name, gmk_func_ptr func,
+                  unsigned int min, unsigned int max, unsigned int flags)
+{
+  define_new_function (reading_file, name, min, max, flags, func);
+}
diff --git a/main.c b/main.c
index c6989e3..f60e6be 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,9 +14,9 @@ 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 "make.h"
-#include "dep.h"
+#include "makeint.h"
 #include "filedef.h"
+#include "dep.h"
 #include "variable.h"
 #include "job.h"
 #include "commands.h"
@@ -32,9 +30,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 # include <proto/dos.h>
 #endif
 #ifdef WINDOWS32
-#include <windows.h>
-#include <io.h>
-#include "pathstuff.h"
+# include <windows.h>
+# include <io.h>
+# include "pathstuff.h"
+# include "sub_proc.h"
+# include "w32err.h"
 #endif
 #ifdef __EMX__
 # include <sys/types.h>
@@ -64,11 +64,11 @@ void verify_file_data_base (void);
 # define HAVE_WAIT_NOHANG
 #endif
 
-#ifndef        HAVE_UNISTD_H
+#ifndef HAVE_UNISTD_H
 int chdir ();
 #endif
-#ifndef        STDC_HEADERS
-# ifndef sun                   /* Sun has an incorrect decl in a header.  */
+#ifndef STDC_HEADERS
+# ifndef sun                    /* Sun has an incorrect decl in a header.  */
 void exit (int) __attribute__ ((noreturn));
 # endif
 double atof ();
@@ -79,7 +79,7 @@ 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 struct variable *define_makeflags (int all, int makefile);
 static char *quote_for_env (char *out, const char *in);
 static void initialize_global_hash_tables (void);
 
@@ -88,29 +88,29 @@ static void initialize_global_hash_tables (void);
 
 struct command_switch
   {
-    int c;                     /* The switch character.  */
+    int c;                      /* The switch character.  */
 
-    enum                       /* Type of the value.  */
+    enum                        /* Type of the value.  */
       {
-       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.  */
+        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;
 
-    void *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.  */
+    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.  */
 
-    const void *noarg_value;   /* Pointer to value used if no arg given.  */
-    const void *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.  */
+    char *long_name;            /* Long option name.  */
   };
 
 /* True if C is a switch value that corresponds to a short option.  */
@@ -122,14 +122,18 @@ struct command_switch
 
 struct stringlist
   {
-    const char **list; /* Nil-terminated list of strings.  */
-    unsigned int idx;  /* Index into above.  */
-    unsigned int max;  /* Number of pointers allocated.  */
+    const char **list;  /* Nil-terminated list of strings.  */
+    unsigned int idx;   /* Index into above.  */
+    unsigned int max;   /* Number of pointers allocated.  */
   };
 
 
 /* The recognized command switches.  */
 
+/* Nonzero means do extra verification (that may slow things down).  */
+
+int verify_flag;
+
 /* Nonzero means do not print commands to be executed (-s).  */
 
 int silent_flag;
@@ -146,14 +150,14 @@ int just_print_flag;
 
 /* Print debugging info (--debug).  */
 
-static struct stringlist *db_flags;
+static struct stringlist *db_flags = 0;
 static int debug_flag = 0;
 
 int db_level = 0;
 
-/* Output level (--verbosity).  */
+/* Synchronize output (--output-sync).  */
 
-static struct stringlist *verbosity_flags;
+static struct stringlist *output_sync_option = 0;
 
 #ifdef WINDOWS32
 /* Suspend make in main for a short time to allow debugger to attach */
@@ -235,6 +239,11 @@ static struct stringlist *jobserver_fds = 0;
 int job_fds[2] = { -1, -1 };
 int job_rfd = -1;
 
+/* Handle for the mutex used on Windows to synchronize output of our
+   children under -O.  */
+
+static struct stringlist *sync_mutex = 0;
+
 /* Maximum load average at which multiple jobs will be run.
    Negative values mean unlimited, while zero means limit to
    zero load (which could be useful to start infinite jobs remotely
@@ -343,6 +352,9 @@ static const char *const usage[] =
   -o FILE, --old-file=FILE, --assume-old=FILE\n\
                               Consider FILE to be very old and don't remake it.\n"),
     N_("\
+  -O[TYPE], --output-sync[=TYPE]\n\
+                              Synchronize output of parallel jobs by TYPE.\n"),
+    N_("\
   -p, --print-data-base       Print make's internal database.\n"),
     N_("\
   -q, --question              Run no recipe; exit status says if up to date.\n"),
@@ -358,6 +370,8 @@ static const char *const usage[] =
     N_("\
   -t, --touch                 Touch targets instead of remaking them.\n"),
     N_("\
+  --trace                     Print tracing information.\n"),
+    N_("\
   -v, --version               Print the version number of make and exit.\n"),
     N_("\
   -w, --print-directory       Print the current directory.\n"),
@@ -371,40 +385,26 @@ static const char *const usage[] =
     NULL
   };
 
-/* The table of command switches.  */
+/* The table of command switches.
+   Order matters here: this is the order MAKEFLAGS will be constructed.
+   So be sure all simple flags (single char, no argument) come first.  */
 
 static const struct command_switch switches[] =
   {
     { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 },
     { '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, &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, &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, &max_load_average, 1, 1, 0, &default_load_average,
-      &default_load_average, "load-average" },
-#else
-    { 'l', positive_int, &max_load_average, 1, 1, 0, &default_load_average,
-      &default_load_average, "load-average" },
-#endif
     { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, "check-symlink-times" },
     { 'm', ignore, 0, 0, 0, 0, 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" },
@@ -415,15 +415,36 @@ static const struct command_switch switches[] =
       "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" },
+
+    /* These options take arguments.  */
+    { 'C', filename, &directories, 0, 0, 0, 0, 0, "directory" },
+    { 'f', filename, &makefiles, 0, 0, 0, 0, 0, "file" },
+    { 'I', filename, &include_directories, 1, 1, 0, 0, 0,
+      "include-dir" },
+    { 'j', positive_int, &job_slots, 1, 1, 0, &inf_jobs, &default_job_slots,
+      "jobs" },
+#ifndef NO_FLOAT
+    { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average,
+      &default_load_average, "load-average" },
+#else
+    { 'l', positive_int, &max_load_average, 1, 1, 0, &default_load_average,
+      &default_load_average, "load-average" },
+#endif
+    { 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" },
+    { 'O', string, &output_sync_option, 1, 1, 0, "target", 0, "output-sync" },
+    { 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" },
+
+    /* These are long-style options.  */
+    { CHAR_MAX+1, string, &db_flags, 1, 1, 0, "basic", 0, "debug" },
+    { CHAR_MAX+2, string, &jobserver_fds, 1, 1, 0, 0, 0, "jobserver-fds" },
+    { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, "trace" },
     { CHAR_MAX+4, flag, &inhibit_print_directory_flag, 1, 1, 0, 0, 0,
       "no-print-directory" },
-    { '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" },
+    { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, "sync-mutex" },
     { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
   };
 
@@ -431,15 +452,15 @@ static const struct command_switch switches[] =
 
 static struct option long_option_aliases[] =
   {
-    { "quiet",         no_argument,            0, 's' },
-    { "stop",          no_argument,            0, 'S' },
-    { "new-file",      required_argument,      0, 'W' },
-    { "assume-new",    required_argument,      0, 'W' },
-    { "assume-old",    required_argument,      0, 'o' },
-    { "max-load",      optional_argument,      0, 'l' },
-    { "dry-run",       no_argument,            0, 'n' },
-    { "recon",         no_argument,            0, 'n' },
-    { "makefile",      required_argument,      0, 'f' },
+    { "quiet",          no_argument,            0, 's' },
+    { "stop",           no_argument,            0, 'S' },
+    { "new-file",       required_argument,      0, 'W' },
+    { "assume-new",     required_argument,      0, 'W' },
+    { "assume-old",     required_argument,      0, 'o' },
+    { "max-load",       optional_argument,      0, 'l' },
+    { "dry-run",        no_argument,            0, 'n' },
+    { "recon",          no_argument,            0, 'n' },
+    { "makefile",       required_argument,      0, 'f' },
   };
 
 /* List of goal targets.  */
@@ -486,7 +507,7 @@ struct variable * default_goal_var;
 
 struct file *default_file;
 
-/* Nonzero if we have seen the magic `.POSIX' target.
+/* Nonzero if we have seen the magic '.POSIX' target.
    This turns on pedantic compliance with POSIX.2.  */
 
 int posix_pedantic;
@@ -502,7 +523,17 @@ int second_expansion;
 
 int one_shell;
 
-/* Nonzero if we have seen the `.NOTPARALLEL' target.
+/* One of OUTPUT_SYNC_* if the "--output-sync" option was given.  This
+   attempts to synchronize the output of parallel jobs such that the results
+   of each job stay together.  */
+
+int output_sync = OUTPUT_SYNC_NONE;
+
+/* Nonzero if the "--trace" option was given.  */
+
+int trace_flag = 0;
+
+/* Nonzero if we have seen the '.NOTPARALLEL' target.
    This turns off parallel builds for this invocation of make.  */
 
 int not_parallel;
@@ -512,13 +543,25 @@ int not_parallel;
    warning at the end of the run. */
 
 int clock_skew_detected;
+
+/* Map of possible stop characters for searching strings.  */
+#ifndef UCHAR_MAX
+# define UCHAR_MAX 255
+#endif
+unsigned short stopchar_map[UCHAR_MAX + 1] = {0};
+
+/* If output-sync is enabled we'll collect all the output generated due to
+   options, while reading makefiles, etc.  */
+
+struct output make_sync;
+
 \f
 /* Mask of signals that are being caught with fatal_error_signal.  */
 
-#ifdef POSIX
+#ifdef  POSIX
 sigset_t fatal_signal_set;
 #else
-# ifdef        HAVE_SIGSETMASK
+# ifdef HAVE_SIGSETMASK
 int fatal_signal_mask;
 # endif
 #endif
@@ -554,6 +597,46 @@ initialize_global_hash_tables (void)
   hash_init_function_table ();
 }
 
+/* This character map locate stop chars when parsing GNU makefiles.
+   Each element is true if we should stop parsing on that character.  */
+
+static void
+initialize_stopchar_map ()
+{
+  int i;
+
+  stopchar_map[(int)'\0'] = MAP_NUL;
+  stopchar_map[(int)'#'] = MAP_COMMENT;
+  stopchar_map[(int)';'] = MAP_SEMI;
+  stopchar_map[(int)'='] = MAP_EQUALS;
+  stopchar_map[(int)':'] = MAP_COLON;
+  stopchar_map[(int)'%'] = MAP_PERCENT;
+  stopchar_map[(int)'|'] = MAP_PIPE;
+  stopchar_map[(int)'.'] = MAP_DOT | MAP_USERFUNC;
+  stopchar_map[(int)','] = MAP_COMMA;
+  stopchar_map[(int)'$'] = MAP_VARIABLE;
+
+  stopchar_map[(int)'-'] = MAP_USERFUNC;
+  stopchar_map[(int)'_'] = MAP_USERFUNC;
+
+  stopchar_map[(int)'/'] = MAP_PATHSEP;
+#if defined(VMS)
+  stopchar_map[(int)']'] = MAP_PATHSEP;
+#elif defined(HAVE_DOS_PATHS)
+  stopchar_map[(int)'\\'] = MAP_PATHSEP;
+#endif
+
+  for (i = 1; i <= UCHAR_MAX; ++i)
+    {
+      if (isblank(i))
+        stopchar_map[i] = MAP_BLANK;
+      if (isspace(i))
+        stopchar_map[i] |= MAP_SPACE;
+      if (isalnum(i))
+        stopchar_map[i] = MAP_USERFUNC;
+    }
+}
+
 static const char *
 expand_command_line_file (char *name)
 {
@@ -567,7 +650,7 @@ expand_command_line_file (char *name)
     {
       expanded = tilde_expand (name);
       if (expanded != 0)
-       name = expanded;
+        name = expanded;
     }
 
   /* This is also done in parse_file_seq, so this is redundant
@@ -577,16 +660,16 @@ expand_command_line_file (char *name)
     {
       name += 2;
       while (*name == '/')
-       /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
-       ++name;
+        /* Skip following slashes: ".//foo" is "foo", not "/foo".  */
+        ++name;
     }
 
   if (*name == '\0')
     {
       /* It was all slashes!  Move back to the dot and truncate
-        it after the first slash, so it becomes just "./".  */
+         it after the first slash, so it becomes just "./".  */
       do
-       --name;
+        --name;
       while (name[0] != '.');
       name[2] = '\0';
     }
@@ -617,52 +700,127 @@ decode_debug_flags (void)
   if (debug_flag)
     db_level = DB_ALL;
 
-  if (!db_flags)
+  if (db_flags)
+    for (pp=db_flags->list; *pp; ++pp)
+      {
+        const char *p = *pp;
+
+        while (1)
+          {
+            switch (tolower (p[0]))
+              {
+              case 'a':
+                db_level |= DB_ALL;
+                break;
+              case 'b':
+                db_level |= DB_BASIC;
+                break;
+              case 'i':
+                db_level |= DB_BASIC | DB_IMPLICIT;
+                break;
+              case 'j':
+                db_level |= DB_JOBS;
+                break;
+              case 'm':
+                db_level |= DB_BASIC | DB_MAKEFILES;
+                break;
+              case 'n':
+                db_level = 0;
+                break;
+              case 'v':
+                db_level |= DB_BASIC | DB_VERBOSE;
+                break;
+              default:
+                fatal (NILF, _("unknown debug level specification '%s'"), p);
+              }
+
+            while (*(++p) != '\0')
+              if (*p == ',' || *p == ' ')
+                {
+                  ++p;
+                  break;
+                }
+
+            if (*p == '\0')
+              break;
+          }
+      }
+
+  if (db_level)
+    verify_flag = 1;
+
+  if (! db_level)
+    debug_flag = 0;
+}
+
+static void
+decode_output_sync_flags (void)
+{
+  const char **pp;
+
+  if (!output_sync_option)
     return;
 
-  for (pp=db_flags->list; *pp; ++pp)
+  for (pp=output_sync_option->list; *pp; ++pp)
     {
       const char *p = *pp;
 
-      while (1)
-        {
-          switch (tolower (p[0]))
-            {
-            case 'a':
-              db_level |= DB_ALL;
-              break;
-            case 'b':
-              db_level |= DB_BASIC;
-              break;
-            case 'i':
-              db_level |= DB_BASIC | DB_IMPLICIT;
-              break;
-            case 'j':
-              db_level |= DB_JOBS;
-              break;
-            case 'm':
-              db_level |= DB_BASIC | DB_MAKEFILES;
-              break;
-            case 'v':
-              db_level |= DB_BASIC | DB_VERBOSE;
-              break;
-            default:
-              fatal (NILF, _("unknown debug level specification `%s'"), p);
-            }
+      if (streq (p, "none"))
+        output_sync = OUTPUT_SYNC_NONE;
+      else if (streq (p, "line"))
+        output_sync = OUTPUT_SYNC_LINE;
+      else if (streq (p, "target"))
+        output_sync = OUTPUT_SYNC_TARGET;
+      else if (streq (p, "recurse"))
+        output_sync = OUTPUT_SYNC_RECURSE;
+      else
+        fatal (NILF, _("unknown output-sync type '%s'"), p);
+    }
 
-          while (*(++p) != '\0')
-            if (*p == ',' || *p == ' ')
-              break;
+  if (sync_mutex)
+    {
+      const char *mp;
+      unsigned int idx;
 
-          if (*p == '\0')
-            break;
+      for (idx = 1; idx < sync_mutex->idx; idx++)
+        if (!streq (sync_mutex->list[0], sync_mutex->list[idx]))
+          fatal (NILF, _("internal error: multiple --sync-mutex options"));
 
-          ++p;
-        }
+      /* Now parse the mutex handle string.  */
+      mp = sync_mutex->list[0];
+      RECORD_SYNC_MUTEX (mp);
     }
 }
 
 #ifdef WINDOWS32
+
+#ifndef NO_OUTPUT_SYNC
+
+/* This is called from start_job_command when it detects that
+   output_sync option is in effect.  The handle to the synchronization
+   mutex is passed, as a string, to sub-makes via the --sync-mutex
+   command-line argument.  */
+void
+prepare_mutex_handle_string (sync_handle_t handle)
+{
+  if (!sync_mutex)
+    {
+      /* 2 hex digits per byte + 2 characters for "0x" + null.  */
+      char hdl_string[2 * sizeof (sync_handle_t) + 2 + 1];
+
+      /* Prepare the mutex handle string for our children.  */
+      sprintf (hdl_string, "0x%x", handle);
+      sync_mutex = xmalloc (sizeof (struct stringlist));
+      sync_mutex->list = xmalloc (sizeof (char *));
+      sync_mutex->list[0] = xstrdup (hdl_string);
+      sync_mutex->idx = 1;
+      sync_mutex->max = 1;
+      define_makeflags (1, 0);
+    }
+}
+
+#endif  /* NO_OUTPUT_SYNC */
+
 /*
  * HANDLE runtime exceptions by avoiding a requestor on the GUI. Capture
  * exception and print it to stderr instead.
@@ -673,11 +831,11 @@ decode_debug_flags (void)
  *   debuggers can attach.
  */
 LONG WINAPI
-handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
+handle_runtime_exceptions (struct _EXCEPTION_POINTERS *exinfo)
 {
   PEXCEPTION_RECORD exrec = exinfo->ExceptionRecord;
-  LPSTR cmdline = GetCommandLine();
-  LPSTR prg = strtok(cmdline, " ");
+  LPSTR cmdline = GetCommandLine ();
+  LPSTR prg = strtok (cmdline, " ");
   CHAR errmsg[1024];
 #ifdef USE_EVENT_LOG
   HANDLE hEventSource;
@@ -686,54 +844,54 @@ handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
 
   if (! ISDB (DB_VERBOSE))
     {
-      sprintf(errmsg,
-              _("%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"),
-              prg, exrec->ExceptionCode, exrec->ExceptionAddress);
-      fprintf(stderr, errmsg);
-      exit(255);
+      sprintf (errmsg,
+               _("%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 = 0x%p\n"),
-          prg, exrec->ExceptionCode, exrec->ExceptionFlags,
-          exrec->ExceptionAddress);
+  sprintf (errmsg,
+           _("\nUnhandled exception filter called from program %s\nExceptionCode = %lx\nExceptionFlags = %lx\nExceptionAddress = 0x%p\n"),
+           prg, exrec->ExceptionCode, exrec->ExceptionFlags,
+           exrec->ExceptionAddress);
 
   if (exrec->ExceptionCode == EXCEPTION_ACCESS_VIOLATION
       && exrec->NumberParameters >= 2)
-    sprintf(&errmsg[strlen(errmsg)],
-            (exrec->ExceptionInformation[0]
-             ? _("Access violation: write operation at address 0x%p\n")
-             : _("Access violation: read operation at address 0x%p\n")),
-            (PVOID)exrec->ExceptionInformation[1]);
+    sprintf (&errmsg[strlen(errmsg)],
+             (exrec->ExceptionInformation[0]
+              ? _("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
-  hEventSource = RegisterEventSource(NULL, "GNU Make");
+  hEventSource = RegisterEventSource (NULL, "GNU Make");
   lpszStrings[0] = errmsg;
 
   if (hEventSource != NULL)
     {
-      ReportEvent(hEventSource,         /* handle of event source */
-                  EVENTLOG_ERROR_TYPE,  /* event type */
-                  0,                    /* event category */
-                  0,                    /* event ID */
-                  NULL,                 /* current user's SID */
-                  1,                    /* strings in lpszStrings */
-                  0,                    /* no bytes of raw data */
-                  lpszStrings,          /* array of error strings */
-                  NULL);                /* no raw data */
-
-      (VOID) DeregisterEventSource(hEventSource);
+      ReportEvent (hEventSource,         /* handle of event source */
+                   EVENTLOG_ERROR_TYPE,  /* event type */
+                   0,                    /* event category */
+                   0,                    /* event ID */
+                   NULL,                 /* current user's SID */
+                   1,                    /* strings in lpszStrings */
+                   0,                    /* no bytes of raw data */
+                   lpszStrings,          /* array of error strings */
+                   NULL);                /* no raw data */
+
+      (VOID) DeregisterEventSource (hEventSource);
     }
 #endif
 
   /* Write the error to stderr too */
-  fprintf(stderr, errmsg);
+  fprintf (stderr, errmsg);
 
 #ifdef DEBUG
   return EXCEPTION_CONTINUE_SEARCH;
 #else
-  exit(255);
+  exit (255);
   return (255); /* not reached */
 #endif
 }
@@ -741,7 +899,7 @@ handle_runtime_exceptions( struct _EXCEPTION_POINTERS *exinfo )
 /*
  * On WIN32 systems we don't have the luxury of a /bin directory that
  * is mapped globally to every drive mounted to the system. Since make could
- * be invoked from any drive, and we don't want to propogate /bin/sh
+ * be invoked from any drive, and we don't want to propagate /bin/sh
  * to every single drive. Allow ourselves a chance to search for
  * a value for default shell here (if the default path does not exist).
  */
@@ -773,75 +931,92 @@ find_and_set_default_shell (const char *token)
       || ((tokend - 4 == search_token
            || (tokend - 4 > search_token
                && (tokend[-5] == '/' || tokend[-5] == '\\')))
-          && !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));
-    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)) {
-    /* 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));
-    sh_found = 1;
-  } else {
-    char *p;
-    struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("PATH"));
-
-    /* Search Path for shell */
-    if (v && v->value) {
-      char *ep;
-
-      p  = v->value;
-      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));
-          sh_found = 1;
-          *ep = PATH_SEPARATOR_CHAR;
-
-          /* terminate loop */
-          p += strlen (p);
-        } else {
-          *ep = PATH_SEPARATOR_CHAR;
-           p = ++ep;
-        }
+          && !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));
+      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 (_access (search_token, 0) == 0)
+    {
+      /* 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));
+      sh_found = 1;
+    }
+  else
+    {
+      char *p;
+      struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("PATH"));
 
-        ep = strchr (p, PATH_SEPARATOR_CHAR);
-      }
+      /* Search Path for shell */
+      if (v && v->value)
+        {
+          char *ep;
 
-      /* 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));
-          sh_found = 1;
-      }
+          p  = v->value;
+          ep = strchr (p, PATH_SEPARATOR_CHAR);
+
+          while (ep && *ep)
+            {
+              *ep = '\0';
+
+              sprintf (sh_path, "%s/%s", p, search_token);
+              if (_access (sh_path, 0) == 0)
+                {
+                  default_shell = xstrdup (w32ify (sh_path, 0));
+                  sh_found = 1;
+                  *ep = PATH_SEPARATOR_CHAR;
+
+                  /* terminate loop */
+                  p += strlen (p);
+                }
+              else
+                {
+                  *ep = PATH_SEPARATOR_CHAR;
+                  p = ++ep;
+                }
+
+              ep = strchr (p, PATH_SEPARATOR_CHAR);
+            }
 
-      if (sh_found)
-        DB (DB_VERBOSE,
-            (_("find_and_set_shell() path search set default_shell = %s\n"),
-             default_shell));
+          /* be sure to check last element of Path */
+          if (p && *p)
+            {
+              sprintf (sh_path, "%s/%s", p, search_token);
+              if (_access (sh_path, 0) == 0)
+                {
+                  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"),
+                 default_shell));
+        }
     }
-  }
 
   /* naive test */
-  if (!unixy_shell && sh_found &&
-      (strstr (default_shell, "sh") || strstr (default_shell, "SH"))) {
-    unixy_shell = 1;
-    batch_mode_shell = 0;
-  }
+  if (!unixy_shell && sh_found
+      && (strstr (default_shell, "sh") || strstr (default_shell, "SH")))
+    {
+      unixy_shell = 1;
+      batch_mode_shell = 0;
+    }
 
 #ifdef BATCH_MODE_ONLY_SHELL
   batch_mode_shell = 1;
@@ -863,51 +1038,6 @@ msdos_return_to_initial_directory (void)
 }
 #endif  /* __MSDOS__ */
 
-char *mktemp (char *template);
-int mkstemp (char *template);
-
-FILE *
-open_tmpfile(char **name, const char *template)
-{
-#ifdef HAVE_FDOPEN
-  int fd;
-#endif
-
-#if defined HAVE_MKSTEMP || defined HAVE_MKTEMP
-# define TEMPLATE_LEN   strlen (template)
-#else
-# define TEMPLATE_LEN   L_tmpnam
-#endif
-  *name = xmalloc (TEMPLATE_LEN + 1);
-  strcpy (*name, template);
-
-#if defined HAVE_MKSTEMP && defined HAVE_FDOPEN
-  /* It's safest to use mkstemp(), if we can.  */
-  fd = mkstemp (*name);
-  if (fd == -1)
-    return 0;
-  return fdopen (fd, "w");
-#else
-# ifdef HAVE_MKTEMP
-  (void) mktemp (*name);
-# else
-  (void) tmpnam (*name);
-# endif
-
-# ifdef HAVE_FDOPEN
-  /* Can't use mkstemp(), but guard against a race condition.  */
-  fd = open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600);
-  if (fd == -1)
-    return 0;
-  return fdopen (fd, "w");
-# else
-  /* Not secure, but what can we do?  */
-  return fopen (*name, "w");
-# endif
-#endif
-}
-
-
 #ifdef _AMIGA
 int
 main (int argc, char **argv)
@@ -918,20 +1048,25 @@ main (int argc, char **argv, char **envp)
 {
   static char *stdin_nm = 0;
   int makefile_status = MAKE_SUCCESS;
-  struct dep *read_makefiles;
+  struct dep *read_files;
   PATH_VAR (current_directory);
   unsigned int restarts = 0;
+  unsigned int syncing = 0;
 #ifdef WINDOWS32
   char *unix_path = NULL;
   char *windows32_path = NULL;
 
-  SetUnhandledExceptionFilter(handle_runtime_exceptions);
+  SetUnhandledExceptionFilter (handle_runtime_exceptions);
 
   /* start off assuming we have no shell */
   unixy_shell = 0;
   no_default_sh_exe = 1;
 #endif
 
+  output_init (&make_sync);
+
+  initialize_stopchar_map();
+
 #ifdef SET_STACK_SIZE
  /* Get rid of any avoidable limit on stack size.  */
   {
@@ -950,24 +1085,23 @@ main (int argc, char **argv, char **envp)
   }
 #endif
 
-#ifdef HAVE_ATEXIT
-  atexit (close_stdout);
-#endif
-
   /* Needed for OS/2 */
-  initialize_main(&argc, &argv);
+  initialize_main (&argc, &argv);
 
-  reading_file = 0;
+#ifdef MAKE_MAINTAINER_MODE
+  /* In maintainer mode we always enable verification.  */
+  verify_flag = 1;
+#endif
 
 #if defined (__MSDOS__) && !defined (_POSIX_SOURCE)
-  /* Request the most powerful version of `system', to
+  /* Request the most powerful version of 'system', to
      make up for the dumb default shell.  */
   __system_flags = (__system_redirect
-                   | __system_use_shell
-                   | __system_allow_multiple_cmds
-                   | __system_allow_long_cmds
-                   | __system_handle_null_commands
-                   | __system_emulate_chdir);
+                    | __system_use_shell
+                    | __system_allow_multiple_cmds
+                    | __system_allow_long_cmds
+                    | __system_handle_null_commands
+                    | __system_emulate_chdir);
 
 #endif
 
@@ -978,22 +1112,22 @@ main (int argc, char **argv, char **envp)
   (void)bindtextdomain (PACKAGE, LOCALEDIR);
   (void)textdomain (PACKAGE);
 
-#ifdef POSIX
+#ifdef  POSIX
   sigemptyset (&fatal_signal_set);
-#define        ADD_SIG(sig)    sigaddset (&fatal_signal_set, sig)
+#define ADD_SIG(sig)    sigaddset (&fatal_signal_set, sig)
 #else
-#ifdef HAVE_SIGSETMASK
+#ifdef  HAVE_SIGSETMASK
   fatal_signal_mask = 0;
-#define        ADD_SIG(sig)    fatal_signal_mask |= sigmask (sig)
+#define ADD_SIG(sig)    fatal_signal_mask |= sigmask (sig)
 #else
-#define        ADD_SIG(sig)    (void)sig      /* Needed to avoid warnings in MSVC.  */
+#define ADD_SIG(sig)    (void)sig
 #endif
 #endif
 
-#define        FATAL_SIG(sig)                                                        \
-  if (bsd_signal (sig, fatal_error_signal) == SIG_IGN)                       \
-    bsd_signal (sig, SIG_IGN);                                               \
-  else                                                                       \
+#define FATAL_SIG(sig)                                                        \
+  if (bsd_signal (sig, fatal_error_signal) == SIG_IGN)                        \
+    bsd_signal (sig, SIG_IGN);                                                \
+  else                                                                        \
     ADD_SIG (sig);
 
 #ifdef SIGHUP
@@ -1012,7 +1146,7 @@ main (int argc, char **argv, char **envp)
   FATAL_SIG (SIGFPE);
 #endif
 
-#ifdef SIGDANGER
+#ifdef  SIGDANGER
   FATAL_SIG (SIGDANGER);
 #endif
 #ifdef SIGXCPU
@@ -1022,7 +1156,7 @@ main (int argc, char **argv, char **envp)
   FATAL_SIG (SIGXFSZ);
 #endif
 
-#undef FATAL_SIG
+#undef  FATAL_SIG
 
   /* Do not ignore the child-death signal.  This must be done before
      any children could possibly be created; otherwise, the wait
@@ -1038,18 +1172,7 @@ main (int argc, char **argv, char **envp)
 # endif
 #endif
 
-  /* Make sure stdout is line-buffered.  */
-
-#ifdef HAVE_SETVBUF
-# ifdef SETVBUF_REVERSED
-  setvbuf (stdout, _IOLBF, xmalloc (BUFSIZ), BUFSIZ);
-# else /* setvbuf not reversed.  */
-  /* Some buggy systems lose if we pass 0 instead of allocating ourselves.  */
-  setvbuf (stdout, 0, _IOLBF, BUFSIZ);
-# endif        /* setvbuf reversed.  */
-#elif HAVE_SETLINEBUF
-  setlinebuf (stdout);
-#endif /* setlinebuf missing.  */
+  output_init (NULL);
 
   /* Figure out where this program lives.  */
 
@@ -1066,27 +1189,26 @@ main (int argc, char **argv, char **envp)
 #endif
 #if defined(__MSDOS__) || defined(__EMX__)
       if (program == 0)
-       program = strrchr (argv[0], '\\');
+        program = strrchr (argv[0], '\\');
       else
-       {
-         /* Some weird environments might pass us argv[0] with
-            both kinds of slashes; we must find the rightmost.  */
-         char *p = strrchr (argv[0], '\\');
-         if (p && p > program)
-           program = p;
-       }
+        {
+          /* Some weird environments might pass us argv[0] with
+             both kinds of slashes; we must find the rightmost.  */
+          char *p = strrchr (argv[0], '\\');
+          if (p && p > program)
+            program = p;
+        }
       if (program == 0 && argv[0][1] == ':')
-       program = argv[0] + 1;
+        program = argv[0] + 1;
 #endif
 #ifdef WINDOWS32
       if (program == 0)
         {
           /* Extract program from full path */
-          int argv0_len;
           program = strrchr (argv[0], '\\');
           if (program)
             {
-              argv0_len = strlen(program);
+              int argv0_len = strlen (program);
               if (argv0_len > 4 && streq (&program[argv0_len - 4], ".exe"))
                 /* Remove .exe extension */
                 program[argv0_len - 4] = '\0';
@@ -1094,9 +1216,9 @@ main (int argc, char **argv, char **envp)
         }
 #endif
       if (program == 0)
-       program = argv[0];
+        program = argv[0];
       else
-       ++program;
+        ++program;
     }
 
   /* Set up to access user data (files).  */
@@ -1112,7 +1234,7 @@ main (int argc, char **argv, char **envp)
   if (getcwd (current_directory, GET_PATH_MAX) == 0)
 #endif
     {
-#ifdef HAVE_GETCWD
+#ifdef  HAVE_GETCWD
       perror_with_name ("getcwd", "");
 #else
       error (NILF, "getwd: %s", current_directory);
@@ -1122,6 +1244,7 @@ main (int argc, char **argv, char **envp)
     }
   else
     directory_before_chdir = xstrdup (current_directory);
+
 #ifdef  __MSDOS__
   /* Make sure we will return to the initial directory, come what may.  */
   atexit (msdos_return_to_initial_directory);
@@ -1134,25 +1257,39 @@ main (int argc, char **argv, char **envp)
   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.  */
+     Use a separate variable 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"
+                           " else-if shortest-stem undefine oneshell"
 #ifndef NO_ARCHIVES
                            " archives"
 #endif
 #ifdef MAKE_JOBSERVER
                            " jobserver"
 #endif
+#ifndef NO_OUTPUT_SYNC
+                           " output-sync"
+#endif
 #ifdef MAKE_SYMLINKS
                            " check-symlink"
 #endif
+#ifdef HAVE_GUILE
+                           " guile"
+#endif
+#ifdef MAKE_LOAD
+                           " load"
+#endif
                            ;
 
     define_variable_cname (".FEATURES", features, o_default, 0);
   }
 
+#ifdef HAVE_GUILE
+  /* Configure GNU Guile support */
+  guile_gmake_setup (NILF);
+#endif
+
   /* 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.  */
@@ -1163,62 +1300,67 @@ main (int argc, char **argv, char **envp)
 
     for (i = 0; envp[i] != 0; ++i)
       {
-        int do_not_define = 0;
+        struct variable *v;
         char *ep = envp[i];
+        /* By default, export all variables culled from the environment.  */
+        enum variable_export export = v_export;
+        unsigned int len;
 
-        while (*ep != '\0' && *ep != '=')
+        while (! STOP_SET (*ep, MAP_EQUALS))
           ++ep;
+
+        /* If there's no equals sign it's a malformed environment.  Ignore.  */
+        if (*ep == '\0')
+          continue;
+
 #ifdef WINDOWS32
-        if (!unix_path && strneq(envp[i], "PATH=", 5))
+        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)
+        else if (!strnicmp (envp[i], "Path=", 5))
           {
-            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;
+            if (!windows32_path)
+              windows32_path = ep+1;
+            /* PATH gets defined after the loop exits.  */
+            continue;
+          }
 #endif
-                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"))
+        /* Length of the variable name, and skip the '='.  */
+        len = ep++ - envp[i];
+
+        /* If this is MAKE_RESTARTS, check to see if the "already printed
+           the enter statement" flag is set.  */
+        if (len == 13 && strneq (envp[i], "MAKE_RESTARTS", 13))
+          {
+            if (*ep == '-')
               {
-                v->export = v_noexport;
-                restarts = (unsigned int) atoi (ep + 1);
+                OUTPUT_TRACED ();
+                ++ep;
               }
+            restarts = (unsigned int) atoi (ep);
+            export = v_noexport;
+          }
+
+        v = define_variable (envp[i], len, ep, o_env, 1);
+
+        /* 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__
+            export = v_noexport;
+#endif
+            shell_var.name = "SHELL";
+            shell_var.length = 5;
+            shell_var.value = xstrdup (ep);
           }
+
+        v->export = export;
       }
   }
 #ifdef WINDOWS32
     /* If we didn't find a correctly spelled PATH we define PATH as
-     * either the first mispelled value or an empty string
+     * either the first misspelled value or an empty string
      */
     if (!unix_path)
       define_variable_cname ("PATH", windows32_path ? windows32_path : "",
@@ -1226,38 +1368,50 @@ main (int argc, char **argv, char **envp)
 #endif
 #else /* For Amiga, read the ENV: device, ignoring all dirs */
     {
-       BPTR env, file, old;
-       char buffer[1024];
-       int len;
-       __aligned struct FileInfoBlock fib;
-
-       env = Lock ("ENV:", ACCESS_READ);
-       if (env)
-       {
-           old = CurrentDir (DupLock(env));
-           Examine (env, &fib);
-
-           while (ExNext (env, &fib))
-           {
-               if (fib.fib_DirEntryType < 0) /* File */
-               {
-                   /* Define an empty variable. It will be filled in
-                       variable_lookup(). Makes startup quite a bit
-                       faster. */
-                       define_variable (fib.fib_FileName,
-                           strlen (fib.fib_FileName),
-                       "", o_env, 1)->export = v_export;
-               }
-           }
-           UnLock (env);
-           UnLock(CurrentDir(old));
-       }
+        BPTR env, file, old;
+        char buffer[1024];
+        int len;
+        __aligned struct FileInfoBlock fib;
+
+        env = Lock ("ENV:", ACCESS_READ);
+        if (env)
+          {
+            old = CurrentDir (DupLock (env));
+            Examine (env, &fib);
+
+            while (ExNext (env, &fib))
+              {
+                if (fib.fib_DirEntryType < 0) /* File */
+                  {
+                    /* Define an empty variable. It will be filled in
+                       variable_lookup(). Makes startup quite a bit faster. */
+                    define_variable (fib.fib_FileName,
+                                     strlen (fib.fib_FileName),
+                                     "", o_env, 1)->export = v_export;
+                  }
+              }
+            UnLock (env);
+            UnLock (CurrentDir (old));
+          }
     }
 #endif
 
   /* Decode the switches.  */
 
+  decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS"));
+
+  /* Clear GNUMAKEFLAGS to avoid duplication.  */
+  define_variable_cname ("GNUMAKEFLAGS", "", o_env, 0);
+
   decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
+
+  /* In output sync mode we need to sync any output generated by reading the
+     makefiles, such as in $(info ...) or stderr from $(shell ...) etc.  */
+
+  syncing = make_sync.syncout = (output_sync == OUTPUT_SYNC_LINE
+                                 || output_sync == OUTPUT_SYNC_TARGET);
+  OUTPUT_SET (&make_sync);
+
 #if 0
   /* People write things like:
         MFLAGS="CC=gcc -pipe" "CFLAGS=-g"
@@ -1267,30 +1421,48 @@ main (int argc, char **argv, char **envp)
 
   decode_switches (argc, argv, 0);
 
-#ifdef WINDOWS32
-  if (suspend_flag) {
-        fprintf(stderr, "%s (pid = %ld)\n", argv[0], GetCurrentProcessId());
-        fprintf(stderr, _("%s is suspending for 30 seconds..."), argv[0]);
-        Sleep(30 * 1000);
-        fprintf(stderr, _("done sleep(30). Continuing.\n"));
+  /* Reset in case the switches changed our minds.  */
+  syncing = (output_sync == OUTPUT_SYNC_LINE
+             || output_sync == OUTPUT_SYNC_TARGET);
+
+  if (make_sync.syncout && ! syncing)
+    output_close (&make_sync);
+
+  make_sync.syncout = syncing;
+  OUTPUT_SET (&make_sync);
+
+  /* Figure out the level of recursion.  */
+  {
+    struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME));
+    if (v && v->value[0] != '\0' && v->value[0] != '-')
+      makelevel = (unsigned int) atoi (v->value);
+    else
+      makelevel = 0;
   }
-#endif
 
-  decode_debug_flags ();
+#ifdef WINDOWS32
+  if (suspend_flag)
+    {
+      fprintf (stderr, "%s (pid = %ld)\n", argv[0], GetCurrentProcessId ());
+      fprintf (stderr, _("%s is suspending for 30 seconds..."), argv[0]);
+      Sleep (30 * 1000);
+      fprintf (stderr, _("done sleep(30). Continuing.\n"));
+    }
+#endif
 
   /* Set always_make_flag if -B was given and we've not restarted already.  */
   always_make_flag = always_make_set && (restarts == 0);
 
-  /* Print version information.  */
-  if (print_version_flag || print_data_base_flag || db_level)
+  /* Print version information, and exit.  */
+  if (print_version_flag)
     {
       print_version ();
-
-      /* `make --version' is supposed to just print the version and exit.  */
-      if (print_version_flag)
-        die (0);
+      die (0);
     }
 
+  if (ISDB (DB_BASIC))
+    print_version ();
+
 #ifndef VMS
   /* Set the "MAKE_COMMAND" variable to the name we were invoked with.
      (If it is a relative pathname with a slash, prepend our directory name
@@ -1304,10 +1476,9 @@ main (int argc, char **argv, char **envp)
    * matter if the path is one way or the other for
    * CreateProcess().
    */
-  if (strpbrk(argv[0], "/:\\") ||
-      strstr(argv[0], "..") ||
-      strneq(argv[0], "//", 2))
-    argv[0] = xstrdup(w32ify(argv[0],1));
+  if (strpbrk (argv[0], "/:\\") || strstr (argv[0], "..")
+      || strneq (argv[0], "//", 2))
+    argv[0] = xstrdup (w32ify (argv[0], 1));
 #else /* WINDOWS32 */
 #if defined (__MSDOS__) || defined (__EMX__)
   if (strchr (argv[0], '\\'))
@@ -1316,8 +1487,8 @@ main (int argc, char **argv, char **envp)
 
       argv[0] = xstrdup (argv[0]);
       for (p = argv[0]; *p; p++)
-       if (*p == '\\')
-         *p = '/';
+        if (*p == '\\')
+          *p = '/';
     }
   /* If argv[0] is not in absolute form, prepend the current
      directory.  This can happen when Make is invoked by another DJGPP
@@ -1344,58 +1515,150 @@ main (int argc, char **argv, char **envp)
 #endif /* WINDOWS32 */
 #endif
 
-  /* The extra indirection through $(MAKE_COMMAND) is done
-     for hysterical raisins.  */
-  define_variable_cname ("MAKE_COMMAND", argv[0], o_default, 0);
-  define_variable_cname ("MAKE", "$(MAKE_COMMAND)", o_default, 1);
+  /* We may move, but until we do, here we are.  */
+  starting_directory = current_directory;
 
-  if (command_variables != 0)
-    {
-      struct command_variable *cv;
-      struct variable *v;
-      unsigned int len = 0;
-      char *value, *p;
+#ifdef MAKE_JOBSERVER
+  /* If the jobserver-fds option is seen, make sure that -j is reasonable.
+     This can't be usefully set in the makefile, and we want to verify the
+     FDs are valid before any other aspect of make has a chance to start
+     using them for something else.  */
 
-      /* Figure out how much space will be taken up by the command-line
-        variable definitions.  */
-      for (cv = command_variables; cv != 0; cv = cv->next)
-       {
-         v = cv->variable;
-         len += 2 * strlen (v->name);
-         if (! v->recursive)
-           ++len;
-         ++len;
-         len += 2 * strlen (v->value);
-         ++len;
-       }
+  if (jobserver_fds)
+    {
+      const char *cp;
+      unsigned int ui;
 
-      /* Now allocate a buffer big enough and fill it.  */
-      p = value = alloca (len);
-      for (cv = command_variables; cv != 0; cv = cv->next)
-       {
-         v = cv->variable;
-         p = quote_for_env (p, v->name);
-         if (! v->recursive)
-           *p++ = ':';
-         *p++ = '=';
-         p = quote_for_env (p, v->value);
-         *p++ = ' ';
-       }
-      p[-1] = '\0';            /* Kill the final space and terminate.  */
+      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"));
 
-      /* Define an unchangeable variable with a name that no POSIX.2
-        makefile could validly use for its own variable.  */
-      define_variable_cname ("-*-command-variables-*-", value, o_automatic, 0);
+      /* Now parse the fds string and make sure it has the proper format.  */
 
-      /* Define the variable; this will not override any user definition.
-         Normally a reference to this variable is written into the value of
-         MAKEFLAGS, allowing the user to override this value to affect the
-         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. */
-      define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}",
-                             o_env, 1);
-    }
+      cp = jobserver_fds->list[0];
+
+#ifdef WINDOWS32
+      if (! open_jobserver_semaphore (cp))
+        {
+          DWORD err = GetLastError ();
+          fatal (NILF, _("internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"),
+                 cp, err, map_windows32_error_to_string (err));
+        }
+      DB (DB_JOBS, (_("Jobserver client (semaphore %s)\n"), cp));
+#else
+      if (sscanf (cp, "%d,%d", &job_fds[0], &job_fds[1]) != 2)
+        fatal (NILF,
+               _("internal error: invalid --jobserver-fds string '%s'"), cp);
+
+      DB (DB_JOBS,
+          (_("Jobserver client (fds %d,%d)\n"), job_fds[0], job_fds[1]));
+#endif
+
+      /* 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.
+         If we've restarted, we already printed this the first time.  */
+
+      if (job_slots > 0)
+        {
+          if (! restarts)
+            error (NILF, _("warning: -jN forced in submake: disabling jobserver mode."));
+        }
+#ifndef WINDOWS32
+#ifdef HAVE_FCNTL
+# define FD_OK(_f) ((fcntl ((_f), F_GETFD) != -1) || (errno != EBADF))
+#else
+# define FD_OK(_f) 1
+#endif
+      /* 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.  */
+      else if (!FD_OK (job_fds[0]) || !FD_OK (job_fds[1])
+               || (job_rfd = dup (job_fds[0])) < 0)
+        {
+          if (errno != EBADF)
+            pfatal_with_name (_("dup jobserver"));
+
+          error (NILF,
+                 _("warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."));
+          job_slots = 1;
+          job_fds[0] = job_fds[1] = -1;
+        }
+#endif
+
+      if (job_slots > 0)
+        {
+#ifdef WINDOWS32
+          free_jobserver_semaphore ();
+#else
+          if (job_fds[0] >= 0)
+            close (job_fds[0]);
+          if (job_fds[1] >= 0)
+            close (job_fds[1]);
+#endif
+          job_fds[0] = job_fds[1] = -1;
+          free (jobserver_fds->list);
+          free (jobserver_fds);
+          jobserver_fds = 0;
+        }
+    }
+#endif
+
+  /* The extra indirection through $(MAKE_COMMAND) is done
+     for hysterical raisins.  */
+  define_variable_cname ("MAKE_COMMAND", argv[0], o_default, 0);
+  define_variable_cname ("MAKE", "$(MAKE_COMMAND)", o_default, 1);
+
+  if (command_variables != 0)
+    {
+      struct command_variable *cv;
+      struct variable *v;
+      unsigned int len = 0;
+      char *value, *p;
+
+      /* Figure out how much space will be taken up by the command-line
+         variable definitions.  */
+      for (cv = command_variables; cv != 0; cv = cv->next)
+        {
+          v = cv->variable;
+          len += 2 * strlen (v->name);
+          if (! v->recursive)
+            ++len;
+          ++len;
+          len += 2 * strlen (v->value);
+          ++len;
+        }
+
+      /* Now allocate a buffer big enough and fill it.  */
+      p = value = alloca (len);
+      for (cv = command_variables; cv != 0; cv = cv->next)
+        {
+          v = cv->variable;
+          p = quote_for_env (p, v->name);
+          if (! v->recursive)
+            *p++ = ':';
+          *p++ = '=';
+          p = quote_for_env (p, v->value);
+          *p++ = ' ';
+        }
+      p[-1] = '\0';             /* Kill the final space and terminate.  */
+
+      /* Define an unchangeable variable with a name that no POSIX.2
+         makefile could validly use for its own variable.  */
+      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
+         MAKEFLAGS, allowing the user to override this value to affect the
+         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. */
+      define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}",
+                             o_env, 1);
+    }
 
   /* If there were -C flags, move ourselves about.  */
   if (directories != 0)
@@ -1429,17 +1692,8 @@ main (int argc, char **argv, char **envp)
    * lookups to fail because the current directory (.) was pointing
    * at the wrong place when it was first evaluated.
    */
-   no_default_sh_exe = !find_and_set_default_shell(NULL);
-
+   no_default_sh_exe = !find_and_set_default_shell (NULL);
 #endif /* WINDOWS32 */
-  /* Figure out the level of recursion.  */
-  {
-    struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME));
-    if (v != 0 && v->value[0] != '\0' && v->value[0] != '-')
-      makelevel = (unsigned int) atoi (v->value);
-    else
-      makelevel = 0;
-  }
 
   /* Except under -s, always do -w in sub-makes and under -C.  */
   if (!silent_flag && (directories != 0 || makelevel > 0))
@@ -1458,27 +1712,24 @@ main (int argc, char **argv, char **envp)
   construct_include_path (include_directories == 0
                           ? 0 : include_directories->list);
 
-  /* Figure out where we are now, after chdir'ing.  */
-  if (directories == 0)
-    /* We didn't move, so we're still in the same place.  */
-    starting_directory = current_directory;
-  else
+  /* If we chdir'ed, figure out where we are now.  */
+  if (directories)
     {
 #ifdef WINDOWS32
       if (getcwd_fs (current_directory, GET_PATH_MAX) == 0)
 #else
       if (getcwd (current_directory, GET_PATH_MAX) == 0)
 #endif
-       {
-#ifdef HAVE_GETCWD
-         perror_with_name ("getcwd", "");
+        {
+#ifdef  HAVE_GETCWD
+          perror_with_name ("getcwd", "");
 #else
-         error (NILF, "getwd: %s", current_directory);
+          error (NILF, "getwd: %s", current_directory);
 #endif
-         starting_directory = 0;
-       }
+          starting_directory = 0;
+        }
       else
-       starting_directory = current_directory;
+        starting_directory = current_directory;
     }
 
   define_variable_cname ("CURDIR", current_directory, o_file, 0);
@@ -1489,12 +1740,12 @@ main (int argc, char **argv, char **envp)
     {
       unsigned int i;
       for (i = 0; i < makefiles->idx; ++i)
-       if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0')
-         {
-           /* This makefile is standard input.  Since we may re-exec
-              and thus re-read the makefiles, we read standard input
-              into a temporary file and read from that.  */
-           FILE *outfile;
+        if (makefiles->list[i][0] == '-' && makefiles->list[i][1] == '\0')
+          {
+            /* This makefile is standard input.  Since we may re-exec
+               and thus re-read the makefiles, we read standard input
+               into a temporary file and read from that.  */
+            FILE *outfile;
             char *template, *tmpdir;
 
             if (stdin_nm)
@@ -1511,63 +1762,63 @@ main (int argc, char **argv, char **envp)
 #endif
 #define DEFAULT_TMPFILE     "GmXXXXXX"
 
-           if (((tmpdir = getenv ("TMPDIR")) == NULL || *tmpdir == '\0')
+            if (((tmpdir = getenv ("TMPDIR")) == NULL || *tmpdir == '\0')
 #if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__)
                 /* These are also used commonly on these platforms.  */
                 && ((tmpdir = getenv ("TEMP")) == NULL || *tmpdir == '\0')
                 && ((tmpdir = getenv ("TMP")) == NULL || *tmpdir == '\0')
 #endif
                )
-             tmpdir = DEFAULT_TMPDIR;
+              tmpdir = DEFAULT_TMPDIR;
 
-            template = alloca (strlen (tmpdir) + sizeof (DEFAULT_TMPFILE) + 1);
-           strcpy (template, tmpdir);
+            template = alloca (strlen (tmpdir) + CSTRLEN (DEFAULT_TMPFILE) + 2);
+            strcpy (template, tmpdir);
 
 #ifdef HAVE_DOS_PATHS
-           if (strchr ("/\\", template[strlen (template) - 1]) == NULL)
-             strcat (template, "/");
+            if (strchr ("/\\", template[strlen (template) - 1]) == NULL)
+              strcat (template, "/");
 #else
 # ifndef VMS
-           if (template[strlen (template) - 1] != '/')
-             strcat (template, "/");
+            if (template[strlen (template) - 1] != '/')
+              strcat (template, "/");
 # endif /* !VMS */
 #endif /* !HAVE_DOS_PATHS */
 
-           strcat (template, DEFAULT_TMPFILE);
-           outfile = open_tmpfile (&stdin_nm, template);
-           if (outfile == 0)
-             pfatal_with_name (_("fopen (temporary file)"));
-           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)"));
-             }
-           fclose (outfile);
-
-           /* Replace the name that read_all_makefiles will
-              see with the name of the temporary file.  */
+            strcat (template, DEFAULT_TMPFILE);
+            outfile = output_tmpfile (&stdin_nm, template);
+            if (outfile == 0)
+              pfatal_with_name (_("fopen (temporary file)"));
+            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)"));
+              }
+            fclose (outfile);
+
+            /* Replace the name that read_all_makefiles will
+               see with the name of the temporary file.  */
             makefiles->list[i] = strcache_add (stdin_nm);
 
-           /* Make sure the temporary file will not be remade.  */
+            /* Make sure the temporary file will not be remade.  */
             {
               struct file *f = enter_file (strcache_add (stdin_nm));
               f->updated = 1;
-              f->update_status = 0;
+              f->update_status = us_success;
               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;
             }
-         }
+          }
     }
 
 #ifndef __EMX__ /* Don't use a SIGCHLD handler for OS/2 */
 #if defined(MAKE_JOBSERVER) || !defined(HAVE_WAIT_NOHANG)
   /* Set up to handle children dying.  This must be done before
-     reading in the makefiles so that `shell' function calls will work.
+     reading in the makefiles so that 'shell' function calls will work.
 
      If we don't have a hanging wait we have to fall back to old, broken
      functionality here and rely on the signal handler and counting
@@ -1596,7 +1847,6 @@ main (int argc, char **argv, char **envp)
 #endif
 
   /* Define the initial list of suffixes for old-style rules.  */
-
   set_default_suffixes ();
 
   /* Define the file rules for the built-in suffix rules.  These will later
@@ -1604,17 +1854,14 @@ main (int argc, char **argv, char **envp)
      install_default_implicit_rules, but since that happens after reading
      makefiles, it results in the built-in pattern rules taking precedence
      over makefile-specified suffix rules, which is wrong.  */
-
   install_default_suffix_rules ();
 
   /* Define some internal and special variables.  */
-
   define_automatic_variables ();
 
-  /* Set up the MAKEFLAGS and MFLAGS variables
-     so makefiles can look at them.  */
-
-  define_makeflags (0, 0);
+  /* Set up the MAKEFLAGS and MFLAGS variables for makefiles to see.
+     Initialize it to be exported but allow the makefile to reset it.  */
+  define_makeflags (0, 0)->export = v_export;
 
   /* Define the default variables.  */
   define_default_variables ();
@@ -1630,13 +1877,13 @@ main (int argc, char **argv, char **envp)
     {
       char *p, *value;
       unsigned int i;
-      unsigned int len = sizeof ("--eval=") * eval_strings->idx;
+      unsigned int len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx;
 
       for (i = 0; i < eval_strings->idx; ++i)
         {
           p = xstrdup (eval_strings->list[i]);
           len += 2 * strlen (p);
-          eval_buffer (p);
+          eval_buffer (p, NULL);
           free (p);
         }
 
@@ -1644,7 +1891,7 @@ main (int argc, char **argv, char **envp)
       for (i = 0; i < eval_strings->idx; ++i)
         {
           strcpy (p, "--eval=");
-          p += strlen (p);
+          p += CSTRLEN ("--eval=");
           p = quote_for_env (p, eval_strings->list[i]);
           *(p++) = ' ';
         }
@@ -1655,13 +1902,12 @@ main (int argc, char **argv, char **envp)
 
   /* Read all the makefiles.  */
 
-  read_makefiles
-    = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list);
+  read_files = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list);
 
 #ifdef WINDOWS32
   /* look one last time after reading all Makefiles */
   if (no_default_sh_exe)
-    no_default_sh_exe = !find_and_set_default_shell(NULL);
+    no_default_sh_exe = !find_and_set_default_shell (NULL);
 #endif /* WINDOWS32 */
 
 #if defined (__MSDOS__) || defined (__EMX__)
@@ -1674,24 +1920,59 @@ main (int argc, char **argv, char **envp)
 
     if (shv && *shv->value)
       {
-       char *shell_path = recursively_expand(shv);
-
-       if (shell_path && _is_unixy_shell (shell_path))
-         unixy_shell = 1;
-       else
-         unixy_shell = 0;
-       if (shell_path)
-         default_shell = shell_path;
+        char *shell_path = recursively_expand (shv);
+
+        if (shell_path && _is_unixy_shell (shell_path))
+          unixy_shell = 1;
+        else
+          unixy_shell = 0;
+        if (shell_path)
+          default_shell = shell_path;
       }
   }
 #endif /* __MSDOS__ || __EMX__ */
 
-  /* Decode switches again, in case the variables were set by the makefile.  */
-  decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
+  {
+    int old_builtin_rules_flag = no_builtin_rules_flag;
+    int old_builtin_variables_flag = no_builtin_variables_flag;
+
+    /* Decode switches again, for variables set by the makefile.  */
+    decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS"));
+
+    /* Clear GNUMAKEFLAGS to avoid duplication.  */
+    define_variable_cname ("GNUMAKEFLAGS", "", o_override, 0);
+
+    decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS"));
 #if 0
-  decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
+    decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
 #endif
 
+    /* Reset in case the switches changed our mind.  */
+    syncing = (output_sync == OUTPUT_SYNC_LINE
+               || output_sync == OUTPUT_SYNC_TARGET);
+
+    if (make_sync.syncout && ! syncing)
+      output_close (&make_sync);
+
+    make_sync.syncout = syncing;
+    OUTPUT_SET (&make_sync);
+
+    /* If we've disabled builtin rules, get rid of them.  */
+    if (no_builtin_rules_flag && ! old_builtin_rules_flag)
+      {
+        if (suffix_file->builtin)
+          {
+            free_dep_chain (suffix_file->deps);
+            suffix_file->deps = 0;
+          }
+        define_variable_cname ("SUFFIXES", "", o_default, 0);
+      }
+
+    /* If we've disabled builtin variables, get rid of them.  */
+    if (no_builtin_variables_flag && ! old_builtin_variables_flag)
+      undefine_default_variables ();
+  }
+
 #if defined (__MSDOS__) || defined (__EMX__)
   if (job_slots != 1
 # ifdef __EMX__
@@ -1707,74 +1988,36 @@ main (int argc, char **argv, char **envp)
 #endif
 
 #ifdef MAKE_JOBSERVER
-  /* If the jobserver-fds option is seen, make sure that -j is reasonable.  */
+  /* 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 (jobserver_fds)
+  if (job_slots > 1)
     {
-      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"));
-
-      /* Now parse the fds string and make sure it has the proper format.  */
-
-      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);
-
-      DB (DB_JOBS,
-          (_("Jobserver client (fds %d,%d)\n"), job_fds[0], job_fds[1]));
-
-      /* 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.  */
-
-      if (job_slots > 0)
-        error (NILF,
-               _("warning: -jN forced in submake: disabling jobserver mode."));
+      char *cp;
 
-      /* 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.  */
+#ifdef WINDOWS32
+      /* sub_proc.c cannot wait for more than MAXIMUM_WAIT_OBJECTS objects
+       * and one of them is the job-server semaphore object.  Limit the
+       * number of available job slots to (MAXIMUM_WAIT_OBJECTS - 1). */
 
-      else if ((job_rfd = dup (job_fds[0])) < 0)
+      if (job_slots >= MAXIMUM_WAIT_OBJECTS)
         {
-          if (errno != EBADF)
-            pfatal_with_name (_("dup jobserver"));
-
-          error (NILF,
-                 _("warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."));
-          job_slots = 1;
+          job_slots = MAXIMUM_WAIT_OBJECTS - 1;
+          DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), job_slots));
         }
 
-      if (job_slots > 0)
+      if (! create_jobserver_semaphore (job_slots - 1))
         {
-          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;
+          DWORD err = GetLastError ();
+          fatal (NILF, _("creating jobserver semaphore: (Error %ld: %s)"),
+                 err, map_windows32_error_to_string (err));
         }
-    }
-
-  /* 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;
+#else
       char c = '+';
 
       if (pipe (job_fds) < 0 || (job_rfd = dup (job_fds[0])) < 0)
-       pfatal_with_name (_("creating jobs pipe"));
+        pfatal_with_name (_("creating jobs pipe"));
+#endif
 
       /* 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
@@ -1783,6 +2026,10 @@ main (int argc, char **argv, char **envp)
 
       master_job_slots = job_slots;
 
+#ifdef WINDOWS32
+      /* We're using the jobserver so set job_slots to 0. */
+      job_slots = 0;
+#else
       while (--job_slots)
         {
           int r;
@@ -1791,14 +2038,19 @@ main (int argc, char **argv, char **envp)
           if (r != 1)
             pfatal_with_name (_("init jobserver pipe"));
         }
+#endif
 
       /* Fill in the jobserver_fds struct for our children.  */
 
-      cp = xmalloc ((sizeof ("1024")*2)+1);
+#ifdef WINDOWS32
+      cp = xmalloc (MAX_PATH + 1);
+      strcpy (cp, get_jobserver_semaphore_name ());
+#else
+      cp = xmalloc ((CSTRLEN ("1024") * 2) + 2);
       sprintf (cp, "%d,%d", job_fds[0], job_fds[1]);
+#endif
 
-      jobserver_fds = (struct stringlist *)
-                        xmalloc (sizeof (struct stringlist));
+      jobserver_fds = xmalloc (sizeof (struct stringlist));
       jobserver_fds->list = xmalloc (sizeof (char *));
       jobserver_fds->list[0] = cp;
       jobserver_fds->idx = 1;
@@ -1818,7 +2070,7 @@ main (int argc, char **argv, char **envp)
 
   define_makeflags (1, 0);
 
-  /* Make each `struct dep' point at the `struct file' for the file
+  /* Make each 'struct dep' point at the 'struct file' for the file
      depended on.  Also do magic for special targets.  */
 
   snap_deps ();
@@ -1857,7 +2109,7 @@ main (int argc, char **argv, char **envp)
           struct file *f = enter_file (*p);
           f->last_mtime = f->mtime_before_update = OLD_MTIME;
           f->updated = 1;
-          f->update_status = 0;
+          f->update_status = us_success;
           f->command_state = cs_finished;
         }
     }
@@ -1866,16 +2118,21 @@ main (int argc, char **argv, char **envp)
     {
       const char **p;
       for (p = new_files->list; *p != 0; ++p)
-       {
-         struct file *f = enter_file (*p);
-         f->last_mtime = f->mtime_before_update = NEW_MTIME;
-       }
+        {
+          struct file *f = enter_file (*p);
+          f->last_mtime = f->mtime_before_update = NEW_MTIME;
+        }
     }
 
   /* Initialize the remote job module.  */
   remote_setup ();
 
-  if (read_makefiles != 0)
+  /* Dump any output we've collected.  */
+
+  OUTPUT_UNSET ();
+  output_close (&make_sync);
+
+  if (read_files != 0)
     {
       /* Update any makefiles if necessary.  */
 
@@ -1884,7 +2141,7 @@ main (int argc, char **argv, char **envp)
       char **nargv;
       int nargc;
       int orig_db_level = db_level;
-      int status;
+      enum update_status status;
 
       if (! ISDB (DB_MAKEFILES))
         db_level = DB_NONE;
@@ -1892,88 +2149,88 @@ main (int argc, char **argv, char **envp)
       DB (DB_BASIC, (_("Updating makefiles....\n")));
 
       /* Remove any makefiles we don't want to try to update.
-        Also record the current modtimes so we can compare them later.  */
+         Also record the current modtimes so we can compare them later.  */
       {
-       register struct dep *d, *last;
-       last = 0;
-       d = read_makefiles;
-       while (d != 0)
-         {
-           struct file *f = d->file;
-           if (f->double_colon)
-             for (f = f->double_colon; f != NULL; f = f->prev)
-               {
-                 if (f->deps == 0 && f->cmds != 0)
-                   {
-                     /* This makefile is a :: target with commands, but
-                        no dependencies.  So, it will always be remade.
-                        This might well cause an infinite loop, so don't
-                        try to remake it.  (This will only happen if
-                        your makefiles are written exceptionally
-                        stupidly; but if you work for Athena, that's how
-                        you write your makefiles.)  */
-
-                     DB (DB_VERBOSE,
-                          (_("Makefile `%s' might loop; not remaking it.\n"),
+        register struct dep *d, *last;
+        last = 0;
+        d = read_files;
+        while (d != 0)
+          {
+            struct file *f = d->file;
+            if (f->double_colon)
+              for (f = f->double_colon; f != NULL; f = f->prev)
+                {
+                  if (f->deps == 0 && f->cmds != 0)
+                    {
+                      /* This makefile is a :: target with commands, but
+                         no dependencies.  So, it will always be remade.
+                         This might well cause an infinite loop, so don't
+                         try to remake it.  (This will only happen if
+                         your makefiles are written exceptionally
+                         stupidly; but if you work for Athena, that's how
+                         you write your makefiles.)  */
+
+                      DB (DB_VERBOSE,
+                          (_("Makefile '%s' might loop; not remaking it.\n"),
                            f->name));
 
-                     if (last == 0)
-                       read_makefiles = d->next;
-                     else
-                       last->next = d->next;
+                      if (last == 0)
+                        read_files = d->next;
+                      else
+                        last->next = d->next;
 
-                     /* Free the storage.  */
+                      /* Free the storage.  */
                       free_dep (d);
 
-                     d = last == 0 ? read_makefiles : last->next;
+                      d = last == 0 ? read_files : last->next;
 
-                     break;
-                   }
-               }
-           if (f == NULL || !f->double_colon)
-             {
+                      break;
+                    }
+                }
+            if (f == NULL || !f->double_colon)
+              {
                 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;
-             }
-         }
+                makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file);
+                last = d;
+                d = d->next;
+              }
+          }
       }
 
-      /* Set up `MAKEFLAGS' specially while remaking makefiles.  */
+      /* Set up 'MAKEFLAGS' specially while remaking makefiles.  */
       define_makeflags (1, 1);
 
       rebuilding_makefiles = 1;
-      status = update_goal_chain (read_makefiles);
+      status = update_goal_chain (read_files);
       rebuilding_makefiles = 0;
 
       switch (status)
-       {
-       case 1:
+        {
+        case us_question:
           /* The only way this can happen is if the user specified -q and asked
            * for one of the makefiles to be remade as a target on the command
            * line.  Since we're not actually updating anything with -q we can
            * treat this as "did nothing".
            */
 
-       case -1:
-         /* Did nothing.  */
-         break;
-
-       case 2:
-         /* Failed to update.  Figure out if we care.  */
-         {
-           /* Nonzero if any makefile was successfully remade.  */
-           int any_remade = 0;
-           /* Nonzero if any makefile we care about failed
-              in updating or could not be found at all.  */
-           int any_failed = 0;
-           unsigned int i;
+        case us_none:
+          /* Did nothing.  */
+          break;
+
+        case us_failed:
+          /* Failed to update.  Figure out if we care.  */
+          {
+            /* Nonzero if any makefile was successfully remade.  */
+            int any_remade = 0;
+            /* Nonzero if any makefile we care about failed
+               in updating or could not be found at all.  */
+            int any_failed = 0;
+            unsigned int i;
             struct dep *d;
 
-           for (i = 0, d = read_makefiles; d != 0; ++i, d = d->next)
+            for (i = 0, d = read_files; d != 0; ++i, d = d->next)
               {
                 /* Reset the considered flag; we may need to look at the file
                    again to print an error.  */
@@ -1982,7 +2239,7 @@ main (int argc, char **argv, char **envp)
                 if (d->file->updated)
                   {
                     /* This makefile was updated.  */
-                    if (d->file->update_status == 0)
+                    if (d->file->update_status == us_success)
                       {
                         /* It was successfully updated.  */
                         any_remade |= (file_mtime_no_search (d->file)
@@ -1993,7 +2250,7 @@ main (int argc, char **argv, char **envp)
                         FILE_TIMESTAMP mtime;
                         /* The update failed and this makefile was not
                            from the MAKEFILES variable, so we care.  */
-                        error (NILF, _("Failed to remake makefile `%s'."),
+                        error (NILF, _("Failed to remake makefile '%s'."),
                                d->file->name);
                         mtime = file_mtime_no_search (d->file);
                         any_remade |= (mtime != NONEXISTENT_MTIME
@@ -2010,55 +2267,53 @@ main (int argc, char **argv, char **envp)
                         /* An included makefile.  We don't need
                            to die, but we do want to complain.  */
                         error (NILF,
-                               _("Included makefile `%s' was not found."),
+                               _("Included makefile '%s' was not found."),
                                dep_name (d));
                       else
                         {
                           /* A normal makefile.  We must die later.  */
-                          error (NILF, _("Makefile `%s' was not found"),
+                          error (NILF, _("Makefile '%s' was not found"),
                                  dep_name (d));
                           any_failed = 1;
                         }
                     }
               }
             /* Reset this to empty so we get the right error message below.  */
-            read_makefiles = 0;
+            read_files = 0;
 
-           if (any_remade)
-             goto re_exec;
-           if (any_failed)
-             die (2);
+            if (any_remade)
+              goto re_exec;
+            if (any_failed)
+              die (2);
             break;
-         }
-
-       case 0:
-       re_exec:
-         /* Updated successfully.  Re-exec ourselves.  */
+          }
 
-         remove_intermediates (0);
+        case us_success:
+        re_exec:
+          /* Updated successfully.  Re-exec ourselves.  */
 
-         if (print_data_base_flag)
-           print_data_base ();
+          remove_intermediates (0);
 
-         log_working_directory (0);
+          if (print_data_base_flag)
+            print_data_base ();
 
           clean_jobserver (0);
 
-         if (makefiles != 0)
-           {
-             /* These names might have changed.  */
-             int i, j = 0;
-             for (i = 1; i < argc; ++i)
-               if (strneq (argv[i], "-f", 2)) /* XXX */
-                 {
-                   if (argv[i][2] == '\0')
+          if (makefiles != 0)
+            {
+              /* These names might have changed.  */
+              int i, j = 0;
+              for (i = 1; i < argc; ++i)
+                if (strneq (argv[i], "-f", 2)) /* XXX */
+                  {
+                    if (argv[i][2] == '\0')
                       /* This cast is OK since we never modify argv.  */
-                     argv[++i] = (char *) makefiles->list[j];
-                   else
-                     argv[i] = xstrdup (concat (2, "-f", makefiles->list[j]));
-                   ++j;
-                 }
-           }
+                      argv[++i] = (char *) makefiles->list[j];
+                    else
+                      argv[i] = xstrdup (concat (2, "-f", makefiles->list[j]));
+                    ++j;
+                  }
+            }
 
           /* Add -o option for the stdin temporary file, if necessary.  */
           nargc = argc;
@@ -2072,118 +2327,111 @@ main (int argc, char **argv, char **envp)
           else
             nargv = argv;
 
-         if (directories != 0 && directories->idx > 0)
-           {
-             int bad = 1;
-             if (directory_before_chdir != 0)
-               {
-                 if (chdir (directory_before_chdir) < 0)
-                     perror_with_name ("chdir", "");
-                 else
-                   bad = 0;
-               }
-             if (bad)
-               fatal (NILF, _("Couldn't change back to original directory."));
-           }
+          if (directories != 0 && directories->idx > 0)
+            {
+              int bad = 1;
+              if (directory_before_chdir != 0)
+                {
+                  if (chdir (directory_before_chdir) < 0)
+                      perror_with_name ("chdir", "");
+                  else
+                    bad = 0;
+                }
+              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 we're re-exec'ing the first make, put back the number of
+             job slots so define_makefiles() will get it right.  */
+          if (master_job_slots)
+            job_slots = master_job_slots;
 
-         if (ISDB (DB_BASIC))
-           {
-             char **p;
-             printf (_("Re-executing[%u]:"), restarts);
-             for (p = nargv; *p != 0; ++p)
-               printf (" %s", *p);
-             putchar ('\n');
-           }
+          if (ISDB (DB_BASIC))
+            {
+              char **p;
+              printf (_("Re-executing[%u]:"), restarts);
+              for (p = nargv; *p != 0; ++p)
+                printf (" %s", *p);
+              putchar ('\n');
+            }
 
 #ifndef _AMIGA
           {
             char **p;
             for (p = environ; *p != 0; ++p)
               {
-                if (strneq (*p, MAKELEVEL_NAME, MAKELEVEL_LENGTH)
-                    && (*p)[MAKELEVEL_LENGTH] == '=')
+                if (strneq (*p, MAKELEVEL_NAME "=", MAKELEVEL_LENGTH+1))
                   {
                     *p = alloca (40);
                     sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel);
                   }
-                if (strneq (*p, "MAKE_RESTARTS=", 14))
+                else if (strneq (*p, "MAKE_RESTARTS=", CSTRLEN ("MAKE_RESTARTS=")))
                   {
                     *p = alloca (40);
-                    sprintf (*p, "MAKE_RESTARTS=%u", restarts);
+                    sprintf (*p, "MAKE_RESTARTS=%s%u",
+                             OUTPUT_IS_TRACED () ? "-" : "", restarts);
                     restarts = 0;
                   }
               }
           }
 #else /* AMIGA */
-         {
-           char buffer[256];
+          {
+            char buffer[256];
 
             sprintf (buffer, "%u", makelevel);
             SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY);
 
-            sprintf (buffer, "%u", restarts);
+            sprintf (buffer, "%s%u", OUTPUT_IS_TRACED () ? "-" : "", restarts);
             SetVar ("MAKE_RESTARTS", buffer, -1, GVF_GLOBAL_ONLY);
             restarts = 0;
-         }
+          }
 #endif
 
           /* If we didn't set the restarts variable yet, add it.  */
           if (restarts)
             {
               char *b = alloca (40);
-              sprintf (b, "MAKE_RESTARTS=%u", restarts);
+              sprintf (b, "MAKE_RESTARTS=%s%u",
+                       OUTPUT_IS_TRACED () ? "-" : "", restarts);
               putenv (b);
             }
 
-         fflush (stdout);
-         fflush (stderr);
+          fflush (stdout);
+          fflush (stderr);
 
           /* Close the dup'd jobserver pipe if we opened one.  */
           if (job_rfd >= 0)
             close (job_rfd);
 
 #ifdef _AMIGA
-         exec_command (nargv);
-         exit (0);
+          exec_command (nargv);
+          exit (0);
 #elif defined (__EMX__)
-         {
-           /* It is not possible to use execve() here because this
-              would cause the parent process to be terminated with
-              exit code 0 before the child process has been terminated.
-              Therefore it may be the best solution simply to spawn the
-              child process including all file handles and to wait for its
-              termination. */
-           int pid;
-           int status;
-           pid = child_execute_job (0, 1, nargv, environ);
-
-           /* is this loop really necessary? */
-           do {
-             pid = wait (&status);
-           } while (pid <= 0);
-           /* use the exit code of the child process */
-           exit (WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE);
-         }
+          {
+            /* It is not possible to use execve() here because this
+               would cause the parent process to be terminated with
+               exit code 0 before the child process has been terminated.
+               Therefore it may be the best solution simply to spawn the
+               child process including all file handles and to wait for its
+               termination. */
+            int pid;
+            int r;
+            pid = child_execute_job (FD_STDIN, FD_STDOUT, FD_STDERR,
+                                     nargv, environ);
+
+            /* is this loop really necessary? */
+            do {
+              pid = wait (&r);
+            } while (pid <= 0);
+            /* use the exit code of the child process */
+            exit (WIFEXITED(r) ? WEXITSTATUS(r) : EXIT_FAILURE);
+          }
 #else
-         exec_command (nargv, environ);
+          exec_command (nargv, environ);
 #endif
-         /* NOTREACHED */
-
-       default:
-#define BOGUS_UPDATE_STATUS 0
-         assert (BOGUS_UPDATE_STATUS);
-         break;
-       }
+        }
 
       db_level = orig_db_level;
 
@@ -2192,7 +2440,7 @@ main (int argc, char **argv, char **envp)
         free (makefile_mtimes);
     }
 
-  /* Set up `MAKEFLAGS' again for the normal targets.  */
+  /* Set up 'MAKEFLAGS' again for the normal targets.  */
   define_makeflags (1, 0);
 
   /* Set always_make_flag if -B was given.  */
@@ -2203,10 +2451,10 @@ main (int argc, char **argv, char **envp)
     {
       const char **p;
       for (p = new_files->list; *p != 0; ++p)
-       {
-         struct file *f = enter_file (*p);
-         f->last_mtime = f->mtime_before_update = NEW_MTIME;
-       }
+        {
+          struct file *f = enter_file (*p);
+          f->last_mtime = f->mtime_before_update = NEW_MTIME;
+        }
     }
 
   /* If there is a temp file from reading a makefile from stdin, get rid of
@@ -2239,7 +2487,7 @@ main (int argc, char **argv, char **envp)
             {
               struct nameseq *ns;
 
-              ns = PARSE_FILE_SEQ (&p, struct nameseq, '\0', NULL, 0);
+              ns = PARSE_SIMPLE_SEQ (&p, struct nameseq);
               if (ns)
                 {
                   /* .DEFAULT_GOAL should contain one target. */
@@ -2266,7 +2514,7 @@ main (int argc, char **argv, char **envp)
 
   if (!goals)
     {
-      if (read_makefiles == 0)
+      if (read_files == 0)
         fatal (NILF, _("No targets specified and no makefile found"));
 
       fatal (NILF, _("No targets"));
@@ -2277,27 +2525,23 @@ main (int argc, char **argv, char **envp)
   DB (DB_BASIC, (_("Updating goal targets....\n")));
 
   {
-    int status;
-
     switch (update_goal_chain (goals))
     {
-      case -1:
+      case us_none:
         /* Nothing happened.  */
-      case 0:
-        /* Updated successfully.  */
-        status = makefile_status;
+        /* FALLTHROUGH */
+      case us_success:
+        /* Keep the previous result.  */
         break;
-      case 1:
+      case us_question:
         /* We are under -q and would run some commands.  */
-        status = MAKE_TROUBLE;
+        makefile_status = MAKE_TROUBLE;
         break;
-      case 2:
+      case us_failed:
         /* Updating failed.  POSIX.2 specifies exit status >1 for this;
            but in VMS, there is only success and failure.  */
-        status = MAKE_FAILURE;
+        makefile_status = MAKE_FAILURE;
         break;
-      default:
-        abort ();
     }
 
     /* If we detected some clock skew, generate one last warning */
@@ -2306,19 +2550,19 @@ main (int argc, char **argv, char **envp)
              _("warning:  Clock skew detected.  Your build may be incomplete."));
 
     /* Exit.  */
-    die (status);
+    die (makefile_status);
   }
 
   /* NOTREACHED */
-  return 0;
+  exit (0);
 }
 \f
 /* Parsing of arguments, decoding of switches.  */
 
 static char options[1 + sizeof (switches) / sizeof (switches[0]) * 3];
 static struct option long_options[(sizeof (switches) / sizeof (switches[0])) +
-                                 (sizeof (long_option_aliases) /
-                                  sizeof (long_option_aliases[0]))];
+                                  (sizeof (long_option_aliases) /
+                                   sizeof (long_option_aliases[0]))];
 
 /* Fill in the string and vector for getopt.  */
 static void
@@ -2341,89 +2585,93 @@ init_switches (void)
   for (i = 0; switches[i].c != '\0'; ++i)
     {
       long_options[i].name = (switches[i].long_name == 0 ? "" :
-                             switches[i].long_name);
+                              switches[i].long_name);
       long_options[i].flag = 0;
       long_options[i].val = switches[i].c;
       if (short_option (switches[i].c))
-       *p++ = switches[i].c;
+        *p++ = switches[i].c;
       switch (switches[i].type)
-       {
-       case flag:
-       case flag_off:
-       case ignore:
-         long_options[i].has_arg = no_argument;
-         break;
-
-       case string:
+        {
+        case flag:
+        case flag_off:
+        case ignore:
+          long_options[i].has_arg = no_argument;
+          break;
+
+        case string:
         case filename:
-       case positive_int:
-       case floating:
-         if (short_option (switches[i].c))
-           *p++ = ':';
-         if (switches[i].noarg_value != 0)
-           {
-             if (short_option (switches[i].c))
-               *p++ = ':';
-             long_options[i].has_arg = optional_argument;
-           }
-         else
-           long_options[i].has_arg = required_argument;
-         break;
-       }
+        case positive_int:
+        case floating:
+          if (short_option (switches[i].c))
+            *p++ = ':';
+          if (switches[i].noarg_value != 0)
+            {
+              if (short_option (switches[i].c))
+                *p++ = ':';
+              long_options[i].has_arg = optional_argument;
+            }
+          else
+            long_options[i].has_arg = required_argument;
+          break;
+        }
     }
   *p = '\0';
   for (c = 0; c < (sizeof (long_option_aliases) /
-                  sizeof (long_option_aliases[0]));
+                   sizeof (long_option_aliases[0]));
        ++c)
     long_options[i++] = long_option_aliases[c];
   long_options[i].name = 0;
 }
 
+
+/* Non-option argument.  It might be a variable definition.  */
 static void
 handle_non_switch_argument (char *arg, int env)
 {
-  /* Non-option argument.  It might be a variable definition.  */
   struct variable *v;
+
   if (arg[0] == '-' && arg[1] == '\0')
-    /* Ignore plain `-' for compatibility.  */
+    /* Ignore plain '-' for compatibility.  */
     return;
+
   v = try_variable_definition (0, arg, o_command, 0);
   if (v != 0)
     {
       /* It is indeed a variable definition.  If we don't already have this
-        one, record a pointer to the variable for later use in
-        define_makeflags.  */
+         one, record a pointer to the variable for later use in
+         define_makeflags.  */
       struct command_variable *cv;
 
       for (cv = command_variables; cv != 0; cv = cv->next)
         if (cv->variable == v)
           break;
 
-      if (! cv) {
-        cv = xmalloc (sizeof (*cv));
-        cv->variable = v;
-        cv->next = command_variables;
-        command_variables = cv;
-      }
+      if (! cv)
+        {
+          cv = xmalloc (sizeof (*cv));
+          cv->variable = v;
+          cv->next = command_variables;
+          command_variables = cv;
+        }
     }
   else if (! 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.  */
+         target!  Enter it as a file and add it to the dep chain of
+         goals.  */
       struct file *f = enter_file (strcache_add (expand_command_line_file (arg)));
       f->cmd_target = 1;
 
       if (goals == 0)
-       {
-         goals = alloc_dep ();
-         lastgoal = goals;
-       }
+        {
+          goals = alloc_dep ();
+          lastgoal = goals;
+        }
       else
-       {
-         lastgoal->next = alloc_dep ();
-         lastgoal = lastgoal->next;
-       }
+        {
+          lastgoal->next = alloc_dep ();
+          lastgoal = lastgoal->next;
+        }
 
       lastgoal->file = f;
 
@@ -2508,47 +2756,47 @@ decode_switches (int argc, char **argv, int env)
       /* Parse the next argument.  */
       c = getopt_long (argc, argv, options, long_options, (int *) 0);
       if (c == EOF)
-       /* End of arguments, or "--" marker seen.  */
-       break;
+        /* End of arguments, or "--" marker seen.  */
+        break;
       else if (c == 1)
-       /* An argument not starting with a dash.  */
-       handle_non_switch_argument (optarg, env);
+        /* An argument not starting with a dash.  */
+        handle_non_switch_argument (optarg, env);
       else if (c == '?')
-       /* Bad option.  We will print a usage message and die later.
-          But continue to parse the other options so the user can
-          see all he did wrong.  */
-       bad = 1;
+        /* Bad option.  We will print a usage message and die later.
+           But continue to parse the other options so the user can
+           see all he did wrong.  */
+        bad = 1;
       else
-       for (cs = switches; cs->c != '\0'; ++cs)
-         if (cs->c == c)
-           {
-             /* Whether or not we will actually do anything with
-                this switch.  We test this individually inside the
-                switch below rather than just once outside it, so that
-                options which are to be ignored still consume args.  */
-             int doit = !env || cs->env;
-
-             switch (cs->type)
-               {
-               default:
-                 abort ();
-
-               case ignore:
-                 break;
-
-               case flag:
-               case flag_off:
-                 if (doit)
-                   *(int *) cs->value_ptr = cs->type == flag;
-                 break;
-
-               case string:
-               case filename:
-                 if (!doit)
-                   break;
-
-                 if (optarg == 0)
-                   optarg = xstrdup (cs->noarg_value);
+        for (cs = switches; cs->c != '\0'; ++cs)
+          if (cs->c == c)
+            {
+              /* Whether or not we will actually do anything with
+                 this switch.  We test this individually inside the
+                 switch below rather than just once outside it, so that
+                 options which are to be ignored still consume args.  */
+              int doit = !env || cs->env;
+
+              switch (cs->type)
+                {
+                default:
+                  abort ();
+
+                case ignore:
+                  break;
+
+                case flag:
+                case flag_off:
+                  if (doit)
+                    *(int *) cs->value_ptr = cs->type == flag;
+                  break;
+
+                case string:
+                case filename:
+                  if (!doit)
+                    break;
+
+                  if (optarg == 0)
+                    optarg = xstrdup (cs->noarg_value);
                   else if (*optarg == '\0')
                     {
                       char opt[2] = "c";
@@ -2559,39 +2807,38 @@ decode_switches (int argc, char **argv, int env)
                       else
                         op = cs->long_name;
 
-                      error (NILF, _("the `%s%s' option requires a non-empty string argument"),
+                      error (NILF, _("the '%s%s' option requires a non-empty string argument"),
                              short_option (cs->c) ? "-" : "--", op);
                       bad = 1;
                     }
 
-                 sl = *(struct stringlist **) cs->value_ptr;
-                 if (sl == 0)
-                   {
-                     sl = (struct stringlist *)
-                       xmalloc (sizeof (struct stringlist));
-                     sl->max = 5;
-                     sl->idx = 0;
-                     sl->list = xmalloc (5 * sizeof (char *));
-                     *(struct stringlist **) cs->value_ptr = sl;
-                   }
-                 else if (sl->idx == sl->max - 1)
-                   {
-                     sl->max += 5;
+                  sl = *(struct stringlist **) cs->value_ptr;
+                  if (sl == 0)
+                    {
+                      sl = xmalloc (sizeof (struct stringlist));
+                      sl->max = 5;
+                      sl->idx = 0;
+                      sl->list = xmalloc (5 * sizeof (char *));
+                      *(struct stringlist **) cs->value_ptr = sl;
+                    }
+                  else if (sl->idx == sl->max - 1)
+                    {
+                      sl->max += 5;
                       /* MSVC erroneously warns without a cast here.  */
-                     sl->list = xrealloc ((void *)sl->list,
+                      sl->list = xrealloc ((void *)sl->list,
                                            sl->max * sizeof (char *));
-                   }
+                    }
                   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;
+                  sl->list[sl->idx] = 0;
+                  break;
 
-               case positive_int:
+                case positive_int:
                   /* See if we have an option argument; if we do require that
                      it's all digits, not something like "10foo".  */
-                 if (optarg == 0 && argc > optind)
+                  if (optarg == 0 && argc > optind)
                     {
                       const char *cp;
                       for (cp=argv[optind]; ISDIGIT (cp[0]); ++cp)
@@ -2600,50 +2847,50 @@ decode_switches (int argc, char **argv, int env)
                         optarg = argv[optind++];
                     }
 
-                 if (!doit)
-                   break;
+                  if (!doit)
+                    break;
 
-                 if (optarg != 0)
-                   {
-                     int i = atoi (optarg);
+                  if (optarg != 0)
+                    {
+                      int i = atoi (optarg);
                       const char *cp;
 
                       /* Yes, I realize we're repeating this in some cases.  */
                       for (cp = optarg; ISDIGIT (cp[0]); ++cp)
                         ;
 
-                     if (i < 1 || cp[0] != '\0')
-                       {
-                          error (NILF, _("the `-%c' option requires a positive integral argument"),
+                      if (i < 1 || cp[0] != '\0')
+                        {
+                          error (NILF, _("the '-%c' option requires a positive integer argument"),
                                  cs->c);
-                         bad = 1;
-                       }
-                     else
-                       *(unsigned int *) cs->value_ptr = i;
-                   }
-                 else
-                   *(unsigned int *) cs->value_ptr
-                     = *(unsigned int *) cs->noarg_value;
-                 break;
+                          bad = 1;
+                        }
+                      else
+                        *(unsigned int *) cs->value_ptr = i;
+                    }
+                  else
+                    *(unsigned int *) cs->value_ptr
+                      = *(unsigned int *) cs->noarg_value;
+                  break;
 
 #ifndef NO_FLOAT
-               case floating:
-                 if (optarg == 0 && optind < argc
-                     && (ISDIGIT (argv[optind][0]) || argv[optind][0] == '.'))
-                   optarg = argv[optind++];
+                case floating:
+                  if (optarg == 0 && optind < argc
+                      && (ISDIGIT (argv[optind][0]) || argv[optind][0] == '.'))
+                    optarg = argv[optind++];
 
-                 if (doit)
-                   *(double *) cs->value_ptr
-                     = (optarg != 0 ? atof (optarg)
-                        : *(double *) cs->noarg_value);
+                  if (doit)
+                    *(double *) cs->value_ptr
+                      = (optarg != 0 ? atof (optarg)
+                         : *(double *) cs->noarg_value);
 
-                 break;
+                  break;
 #endif
-               }
+                }
 
-             /* We've found the switch.  Stop looking.  */
-             break;
-           }
+              /* We've found the switch.  Stop looking.  */
+              break;
+            }
     }
 
   /* There are no more options according to getting getopt, but there may
@@ -2653,12 +2900,15 @@ decode_switches (int argc, char **argv, int env)
   while (optind < argc)
     handle_non_switch_argument (argv[optind++], env);
 
-
   if (!env && (bad || print_usage_flag))
     {
       print_usage (bad);
       die (bad ? 2 : 0);
     }
+
+  /* If there are any options that need to be decoded do it now.  */
+  decode_debug_flags ();
+  decode_output_sync_flags ();
 }
 
 /* Decode switches from environment variable ENVAR (which is LEN chars long).
@@ -2704,17 +2954,17 @@ decode_env_switches (char *envar, unsigned int len)
   while (*value != '\0')
     {
       if (*value == '\\' && value[1] != '\0')
-       ++value;                /* Skip the backslash.  */
+        ++value;                /* Skip the backslash.  */
       else if (isblank ((unsigned char)*value))
-       {
-         /* End of the word.  */
-         *p++ = '\0';
-         argv[++argc] = p;
-         do
-           ++value;
-         while (isblank ((unsigned char)*value));
-         continue;
-       }
+        {
+          /* End of the word.  */
+          *p++ = '\0';
+          argv[++argc] = p;
+          do
+            ++value;
+          while (isblank ((unsigned char)*value));
+          continue;
+        }
       *p++ = *value++;
     }
   *p = '\0';
@@ -2743,7 +2993,7 @@ quote_for_env (char *out, const char *in)
   while (*in != '\0')
     {
       if (*in == '$')
-       *out++ = '$';
+        *out++ = '$';
       else if (isblank ((unsigned char)*in) || *in == '\\')
         *out++ = '\\';
       *out++ = *in++;
@@ -2754,9 +3004,9 @@ quote_for_env (char *out, const char *in)
 
 /* Define the MAKEFLAGS and MFLAGS variables to reflect the settings of the
    command switches.  Include options with args if ALL is nonzero.
-   Don't include options with the `no_makefile' flag set if MAKEFILE.  */
+   Don't include options with the 'no_makefile' flag set if MAKEFILE.  */
 
-static const char *
+static struct variable *
 define_makeflags (int all, int makefile)
 {
   const char ref[] = "$(MAKEOVERRIDES)";
@@ -2764,11 +3014,9 @@ define_makeflags (int all, int makefile)
   const char evalref[] = "$(-*-eval-flags-*-)";
   const struct command_switch *cs;
   char *flagstring;
-  register char *p;
-  unsigned int words;
-  struct variable *v;
+  char *p;
 
-  /* We will construct a linked list of `struct flag's describing
+  /* We will construct a linked list of 'struct flag's describing
      all the flags which need to go in MAKEFLAGS.  Then, once we
      know how many there are and their lengths, we can put them all
      together in a string.  */
@@ -2780,259 +3028,210 @@ define_makeflags (int all, int makefile)
       const char *arg;
     };
   struct flag *flags = 0;
+  struct flag *last = 0;
   unsigned int flagslen = 0;
-#define        ADD_FLAG(ARG, LEN) \
-  do {                                                                       \
-    struct flag *new = alloca (sizeof (struct flag));                        \
-    new->cs = cs;                                                            \
-    new->arg = (ARG);                                                        \
-    new->next = flags;                                                       \
-    flags = new;                                                             \
-    if (new->arg == 0)                                                       \
-      ++flagslen;              /* Just a single flag letter.  */             \
-    else                                                                     \
-      /* " -x foo", plus space to expand "foo".  */                          \
-      flagslen += 1 + 1 + 1 + 1 + (3 * (LEN));                               \
-    if (!short_option (cs->c))                                               \
+#define ADD_FLAG(ARG, LEN) \
+  do {                                                                        \
+    struct flag *new = alloca (sizeof (struct flag));                         \
+    new->cs = cs;                                                             \
+    new->arg = (ARG);                                                         \
+    new->next = 0;                                                            \
+    if (! flags)                                                              \
+      flags = new;                                                            \
+    else                                                                      \
+      last->next = new;                                                       \
+    last = new;                                                               \
+    if (new->arg == 0)                                                        \
+      /* Just a single flag letter: " -x"  */                                 \
+      flagslen += 3;                                                          \
+    else                                                                      \
+      /* " -xfoo", plus space to escape "foo".  */                            \
+      flagslen += 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);                                \
+      flagslen += 2 + strlen (cs->long_name);                                 \
   } while (0)
 
   for (cs = switches; cs->c != '\0'; ++cs)
     if (cs->toenv && (!makefile || !cs->no_makefile))
       switch (cs->type)
-       {
-       case ignore:
-         break;
-
-       case flag:
-       case flag_off:
-         if (!*(int *) cs->value_ptr == (cs->type == flag_off)
-             && (cs->default_value == 0
-                 || *(int *) cs->value_ptr != *(int *) cs->default_value))
-           ADD_FLAG (0, 0);
-         break;
-
-       case positive_int:
-         if (all)
-           {
-             if ((cs->default_value != 0
-                  && (*(unsigned int *) cs->value_ptr
-                      == *(unsigned int *) cs->default_value)))
-               break;
-             else if (cs->noarg_value != 0
-                      && (*(unsigned int *) cs->value_ptr ==
-                          *(unsigned int *) cs->noarg_value))
-               ADD_FLAG ("", 0); /* Optional value omitted; see below.  */
-             else if (cs->c == 'j')
-               /* Special case for `-j'.  */
-               ADD_FLAG ("1", 1);
-             else
-               {
-                 char *buf = alloca (30);
-                 sprintf (buf, "%u", *(unsigned int *) cs->value_ptr);
-                 ADD_FLAG (buf, strlen (buf));
-               }
-           }
-         break;
+        {
+        case ignore:
+          break;
+
+        case flag:
+        case flag_off:
+          if (!*(int *) cs->value_ptr == (cs->type == flag_off)
+              && (cs->default_value == 0
+                  || *(int *) cs->value_ptr != *(int *) cs->default_value))
+            ADD_FLAG (0, 0);
+          break;
+
+        case positive_int:
+          if (all)
+            {
+              if ((cs->default_value != 0
+                   && (*(unsigned int *) cs->value_ptr
+                       == *(unsigned int *) cs->default_value)))
+                break;
+              else if (cs->noarg_value != 0
+                       && (*(unsigned int *) cs->value_ptr ==
+                           *(unsigned int *) cs->noarg_value))
+                ADD_FLAG ("", 0); /* Optional value omitted; see below.  */
+              else
+                {
+                  char *buf = alloca (30);
+                  sprintf (buf, "%u", *(unsigned int *) cs->value_ptr);
+                  ADD_FLAG (buf, strlen (buf));
+                }
+            }
+          break;
 
 #ifndef NO_FLOAT
-       case floating:
-         if (all)
-           {
-             if (cs->default_value != 0
-                 && (*(double *) cs->value_ptr
-                     == *(double *) cs->default_value))
-               break;
-             else if (cs->noarg_value != 0
-                      && (*(double *) cs->value_ptr
-                          == *(double *) cs->noarg_value))
-               ADD_FLAG ("", 0); /* Optional value omitted; see below.  */
-             else
-               {
-                 char *buf = alloca (100);
-                 sprintf (buf, "%g", *(double *) cs->value_ptr);
-                 ADD_FLAG (buf, strlen (buf));
-               }
-           }
-         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).  */
-                 unsigned int i = sl->idx;
-                 while (i-- > 0)
-                   ADD_FLAG (sl->list[i], strlen (sl->list[i]));
-               }
-           }
-         break;
-
-       default:
-         abort ();
-       }
-
-  /* Four more for the possible " -- ".  */
-  flagslen += 4 + sizeof (posixref) + sizeof (evalref);
-
-#undef ADD_FLAG
+        case floating:
+          if (all)
+            {
+              if (cs->default_value != 0
+                  && (*(double *) cs->value_ptr
+                      == *(double *) cs->default_value))
+                break;
+              else if (cs->noarg_value != 0
+                       && (*(double *) cs->value_ptr
+                           == *(double *) cs->noarg_value))
+                ADD_FLAG ("", 0); /* Optional value omitted; see below.  */
+              else
+                {
+                  char *buf = alloca (100);
+                  sprintf (buf, "%g", *(double *) cs->value_ptr);
+                  ADD_FLAG (buf, strlen (buf));
+                }
+            }
+          break;
+#endif
+
+        case filename:
+        case string:
+          if (all)
+            {
+              struct stringlist *sl = *(struct stringlist **) cs->value_ptr;
+              if (sl != 0)
+                {
+                  unsigned int i;
+                  for (i = 0; i < sl->idx; ++i)
+                    ADD_FLAG (sl->list[i], strlen (sl->list[i]));
+                }
+            }
+          break;
+
+        default:
+          abort ();
+        }
+
+#undef  ADD_FLAG
+
+  /* Four more for the possible " -- ", plus variable references.  */
+  flagslen += 4 + CSTRLEN (posixref) + 1 + CSTRLEN (evalref) + 1;
 
   /* Construct the value in FLAGSTRING.
      We allocate enough space for a preceding dash and trailing null.  */
   flagstring = alloca (1 + flagslen + 1);
   memset (flagstring, '\0', 1 + flagslen + 1);
   p = flagstring;
-  words = 1;
+
+  /* Start with a dash, for MFLAGS.  */
   *p++ = '-';
-  while (flags != 0)
+
+  /* Add simple options as a group.  */
+  while (flags != 0 && !flags->arg && short_option (flags->cs->c))
+    {
+      *p++ = flags->cs->c;
+      flags = flags->next;
+    }
+
+  /* Now add more complex flags: ones with options and/or long names.  */
+  while (flags)
     {
+      *p++ = ' ';
+      *p++ = '-';
+
       /* Add the flag letter or name to the string.  */
       if (short_option (flags->cs->c))
-       *p++ = flags->cs->c;
+        *p++ = flags->cs->c;
       else
-       {
-          if (*p != '-')
-            {
-              *p++ = ' ';
-              *p++ = '-';
-            }
-         *p++ = '-';
-         strcpy (p, flags->cs->long_name);
-         p += strlen (p);
-       }
-      if (flags->arg != 0)
-       {
-         /* A flag that takes an optional argument which in this case is
-            omitted is specified by ARG being "".  We must distinguish
-            because a following flag appended without an intervening " -"
-            is considered the arg for the first.  */
-         if (flags->arg[0] != '\0')
-           {
-             /* Add its argument too.  */
-             *p++ = !short_option (flags->cs->c) ? '=' : ' ';
-             p = quote_for_env (p, flags->arg);
-           }
-         ++words;
-         /* Write a following space and dash, for the next flag.  */
-         *p++ = ' ';
-         *p++ = '-';
-       }
-      else if (!short_option (flags->cs->c))
-       {
-         ++words;
-         /* Long options must each go in their own word,
-            so we write the following space and dash.  */
-         *p++ = ' ';
-         *p++ = '-';
-       }
+        {
+          /* Long options require a double-dash.  */
+          *p++ = '-';
+          strcpy (p, flags->cs->long_name);
+          p += strlen (p);
+        }
+      /* An omitted optional argument has an ARG of "".  */
+      if (flags->arg && flags->arg[0] != '\0')
+        {
+          if (!short_option (flags->cs->c))
+            /* Long options require '='.  */
+            *p++ = '=';
+          p = quote_for_env (p, flags->arg);
+        }
       flags = flags->next;
     }
 
-  /* Define MFLAGS before appending variable definitions.  */
-
+  /* If no flags at all, get rid of the initial dash.  */
   if (p == &flagstring[1])
-    /* No flags.  */
-    flagstring[0] = '\0';
-  else if (p[-1] == '-')
     {
-      /* Kill the final space and dash.  */
-      p -= 2;
-      *p = '\0';
+      flagstring[0] = '\0';
+      p = flagstring;
     }
-  else
-    /* Terminate the string.  */
-    *p = '\0';
 
-  /* Since MFLAGS is not parsed for flags, there is no reason to
+  /* Define MFLAGS before appending variable definitions.  Omit an initial
+     empty dash.  Since MFLAGS is not parsed for flags, there is no reason to
      override any makefile redefinition.  */
-  define_variable_cname ("MFLAGS", flagstring, o_env, 1);
+  define_variable_cname ("MFLAGS",
+                         flagstring + (flagstring[0] == '-' && flagstring[1] == ' ' ? 2 : 0),
+                         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;
+      *p++ = ' ';
+      memcpy (p, evalref, CSTRLEN (evalref));
+      p += CSTRLEN (evalref);
     }
 
-  if (all && command_variables != 0)
+  if (all && command_variables)
     {
-      /* Now write a reference to $(MAKEOVERRIDES), which contains all the
-        command-line variable definitions.  */
+      /* Write a reference to $(MAKEOVERRIDES), which contains all the
+         command-line variable definitions.  Separate the variables from the
+         switches with a "--" arg.  */
 
-      if (p == &flagstring[1])
-       /* No flags written, so elide the leading dash already written.  */
-       p = flagstring;
-      else
-       {
-         /* Separate the variables from the switches with a "--" arg.  */
-         if (p[-1] != '-')
-           {
-             /* We did not already write a trailing " -".  */
-             *p++ = ' ';
-             *p++ = '-';
-           }
-         /* There is a trailing " -"; fill it out to " -- ".  */
-         *p++ = '-';
-         *p++ = ' ';
-       }
+      strcpy (p, " -- ");
+      p += 4;
 
       /* Copy in the string.  */
       if (posix_pedantic)
-       {
-         memcpy (p, posixref, sizeof (posixref) - 1);
-         p += sizeof (posixref) - 1;
-       }
+        {
+          memcpy (p, posixref, CSTRLEN (posixref));
+          p += CSTRLEN (posixref);
+        }
       else
-       {
-         memcpy (p, ref, sizeof (ref) - 1);
-         p += sizeof (ref) - 1;
-       }
-    }
-  else if (p == &flagstring[1])
-    {
-      words = 0;
-      --p;
+        {
+          memcpy (p, ref, CSTRLEN (ref));
+          p += CSTRLEN (ref);
+        }
     }
-  else if (p[-1] == '-')
-    /* Kill the final space and dash.  */
-    p -= 2;
-  /* Terminate the string.  */
-  *p = '\0';
 
-  /* If there are switches, omit the leading dash unless it is a single long
-     option with two leading dashes.  */
-  if (flagstring[0] == '-' && flagstring[1] != '-')
+  /* If there is a leading dash, omit it.  */
+  if (flagstring[0] == '-')
     ++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;
+  /* 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.  Then we used o_file, but that
+     lost when users added -e, causing a previous MAKEFLAGS env. var. to take
+     precedence over the new one.  Of course, an override or command
+     definition will still take precedence.  */
+  return define_variable_cname ("MAKEFLAGS", flagstring,
+                                env_overrides ? o_env_override : o_file, 1);
 }
 \f
 /* Print version information.  */
@@ -3059,9 +3258,10 @@ print_version (void)
   /* 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.  */
+     word "Copyright"), so it hardly seems worth it.  */
 
-  printf ("%sCopyright (C) 2010  Free Software Foundation, Inc.\n", precede);
+  printf ("%sCopyright (C) 1988-2013 Free Software Foundation, Inc.\n",
+          precede);
 
   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\
@@ -3071,7 +3271,7 @@ print_version (void)
   printed_version = 1;
 
   /* Flush stdout so the user doesn't have to wait to see the
-     version information while things are thought about.  */
+     version information while make thinks about things.  */
   fflush (stdout);
 }
 
@@ -3080,9 +3280,10 @@ print_version (void)
 static void
 print_data_base ()
 {
-  time_t when;
+  time_t when = time ((time_t *) 0);
+
+  print_version ();
 
-  when = time ((time_t *) 0);
   printf (_("\n# Make data base, printed on %s"), ctime (&when));
 
   print_variable_data_base ();
@@ -3099,27 +3300,37 @@ print_data_base ()
 static void
 clean_jobserver (int status)
 {
-  char token = '+';
-
   /* Sanity: have we written all our jobserver tokens back?  If our
      exit status is 2 that means some kind of syntax error; we might not
      have written all our tokens so do that now.  If tokens are left
      after any other error code, that's bad.  */
 
+#ifdef WINDOWS32
+  if (has_jobserver_semaphore () && jobserver_tokens)
+#else
+  char token = '+';
+
   if (job_fds[0] != -1 && jobserver_tokens)
+#endif
     {
       if (status != 2)
         error (NILF,
                "INTERNAL: Exiting with %u jobserver tokens (should be 0)!",
                jobserver_tokens);
       else
-        while (jobserver_tokens--)
+        /* Don't write back the "free" token */
+        while (--jobserver_tokens)
           {
+#ifdef WINDOWS32
+            if (! release_jobserver_semaphore ())
+              perror_with_name ("release_jobserver_semaphore", "");
+#else
             int r;
 
             EINTRLOOP (r, write (job_fds[1], &token, 1));
             if (r != 1)
               perror_with_name ("write", "");
+#endif
           }
     }
 
@@ -3131,18 +3342,27 @@ clean_jobserver (int status)
       /* We didn't write one for ourself, so start at 1.  */
       unsigned int tcnt = 1;
 
+#ifdef WINDOWS32
+      while (acquire_jobserver_semaphore ())
+          ++tcnt;
+#else
       /* Close the write side, so the read() won't hang.  */
       close (job_fds[1]);
 
       while (read (job_fds[0], &token, 1) == 1)
         ++tcnt;
+#endif
 
       if (tcnt != master_job_slots)
         error (NILF,
                "INTERNAL: Exiting with %u jobserver tokens available; should be %u!",
                tcnt, master_job_slots);
 
+#ifdef WINDOWS32
+      free_jobserver_semaphore ();
+#else
       close (job_fds[0]);
+#endif
 
       /* 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
@@ -3172,12 +3392,12 @@ die (int status)
       dying = 1;
 
       if (print_version_flag)
-       print_version ();
+        print_version ();
 
       /* Wait for children to die.  */
       err = (status != 0);
       while (job_slots_used > 0)
-       reap_children (1, err);
+        reap_children (1, err);
 
       /* Let the remote job module clean up its state.  */
       remote_cleanup ();
@@ -3186,80 +3406,34 @@ die (int status)
       remove_intermediates (0);
 
       if (print_data_base_flag)
-       print_data_base ();
+        print_data_base ();
 
-      verify_file_data_base ();
+      if (verify_flag)
+        verify_file_data_base ();
 
       clean_jobserver (status);
 
+      if (output_context)
+        {
+          assert (output_context == &make_sync);
+          OUTPUT_UNSET ();
+          output_close (&make_sync);
+        }
+
+      output_close (NULL);
+
       /* Try to move back to the original directory.  This is essential on
-        MS-DOS (where there is really only one process), and on Unix it
-        puts core files in the original directory instead of the -C
-        directory.  Must wait until after remove_intermediates(), or unlinks
+         MS-DOS (where there is really only one process), and on Unix it
+         puts core files in the original directory instead of the -C
+         directory.  Must wait until after remove_intermediates(), or unlinks
          of relative pathnames fail.  */
       if (directory_before_chdir != 0)
         {
           /* If it fails we don't care: shut up GCC.  */
-          int _x;
+          int _x UNUSED;
           _x = chdir (directory_before_chdir);
         }
-
-      log_working_directory (0);
     }
 
   exit (status);
 }
-\f
-/* Write a message indicating that we've just entered or
-   left (according to ENTERING) the current directory.  */
-
-void
-log_working_directory (int entering)
-{
-  static int entered = 0;
-
-  /* Print nothing without the flag.  Don't print the entering message
-     again if we already have.  Don't print the leaving message if we
-     haven't printed the entering message.  */
-  if (! print_directory_flag || entering == entered)
-    return;
-
-  entered = entering;
-
-  if (print_data_base_flag)
-    fputs ("# ", stdout);
-
-  /* Use entire sentences to give the translators a fighting chance.  */
-
-  if (makelevel == 0)
-    if (starting_directory == 0)
-      if (entering)
-        printf (_("%s: Entering an unknown directory\n"), program);
-      else
-        printf (_("%s: Leaving an unknown directory\n"), program);
-    else
-      if (entering)
-        printf (_("%s: Entering directory `%s'\n"),
-                program, starting_directory);
-      else
-        printf (_("%s: Leaving directory `%s'\n"),
-                program, starting_directory);
-  else
-    if (starting_directory == 0)
-      if (entering)
-        printf (_("%s[%u]: Entering an unknown directory\n"),
-                program, makelevel);
-      else
-        printf (_("%s[%u]: Leaving an unknown directory\n"),
-                program, makelevel);
-    else
-      if (entering)
-        printf (_("%s[%u]: Entering directory `%s'\n"),
-                program, makelevel, starting_directory);
-      else
-        printf (_("%s[%u]: Leaving directory `%s'\n"),
-                program, makelevel, starting_directory);
-
-  /* Flush stdout to be sure this comes before any stderr output.  */
-  fflush (stdout);
-}
diff --git a/make.1 b/make.1
index c76ce25..94536fe 100644 (file)
--- a/make.1
+++ b/make.1
@@ -1,49 +1,35 @@
-.TH MAKE 1 "22 August 1989" "GNU" "LOCAL USER COMMANDS"
+.TH MAKE 1 "03 March 2012" "GNU" "User Commands"
 .SH NAME
 make \- GNU make utility to maintain groups of programs
 .SH SYNOPSIS
-.B "make "
-[
-.B \-f
-.I makefile
-] [ options ] ... [ targets ] ...
-.SH WARNING
-This man page is an extract of the documentation of GNU
-.IR make .
-It is updated only occasionally, because the GNU project does not use nroff.
-For complete, current documentation, refer to the Info file
-.B make.info
-which is made from the Texinfo source file
-.BR make.texi .
+.B make
+[\fIOPTION\fR]... [\fITARGET\fR]...
 .SH DESCRIPTION
 .LP
-The purpose of the
-.I make
-utility is to determine automatically which
-pieces of a large program need to be recompiled, and issue the commands to
-recompile them.
-The manual describes the GNU implementation of
-.IR make ,
-which was written by Richard Stallman and Roland McGrath, and is
-currently maintained by Paul Smith.
-Our examples show C programs, since they are most common, but you can use
+The
 .I make
-with any programming language whose compiler can be run with a
-shell command.
+utility will determine automatically which pieces of a large program need to
+be recompiled, and issue the commands to recompile them.  The manual describes
+the GNU implementation of
+.BR make ,
+which was written by Richard Stallman and Roland McGrath, and is currently
+maintained by Paul Smith.  Our examples show C programs, since they are very
+common, but you can use
+.B make
+with any programming language whose compiler can be run with a shell command.
 In fact,
-.I make
-is not limited to programs.
-You can use it to describe any task where some files must be
-updated automatically from others whenever the others change.
+.B make
+is not limited to programs.  You can use it to describe any task where some
+files must be updated automatically from others whenever the others change.
 .LP
 To prepare to use
-.IR make ,
+.BR make ,
 you must write a file called the
 .I makefile
-that describes the relationships among files in your program, and the
-states the commands for updating each file.
-In a program, typically the executable file is updated from object
-files, which are in turn made by compiling source files.
+that describes the relationships among files in your program, and the states
+the commands for updating each file.  In a program, typically the executable
+file is updated from object files, which are in turn made by compiling source
+files.
 .LP
 Once a suitable makefile exists, each time you change some source files,
 this simple shell command:
@@ -54,16 +40,15 @@ this simple shell command:
 .sp 1
 suffices to perform all necessary recompilations.
 The
-.I 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.
+.B make
+program uses the makefile description 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 makefile.
 .LP
-.I make
+.B make
 executes commands in the
 .I makefile
-to update
-one or more target
+to update one or more target
 .IR names ,
 where
 .I name
@@ -71,7 +56,7 @@ is typically a program.
 If no
 .B \-f
 option is present,
-.I make
+.B make
 will look for the makefiles
 .IR GNUmakefile ,
 .IR makefile ,
@@ -90,27 +75,27 @@ listing, right near other important files such as
 .IR  README .)
 The first name checked,
 .IR GNUmakefile ,
-is not recommended for most makefiles.
-You should use this name if you have a makefile that is specific to GNU
-.IR make ,
+is not recommended for most makefiles.  You should use this name if you have a
+makefile that is specific to GNU
+.BR make ,
 and will not be understood by other versions of
-.IR make .
+.BR make .
 If
 .I makefile
-is `\-', the standard input is read.
+is '\-', the standard input is read.
 .LP
-.I make
+.B make
 updates a target if it depends on prerequisite files
 that have been modified since the target was last modified,
 or if the target does not exist.
 .SH OPTIONS
 .sp 1
 .TP 0.5i
-.BR \-b , " \-m"
+\fB\-b\fR, \fB\-m\fR
 These options are ignored for compatibility with other versions of
-.IR make .
+.BR make .
 .TP 0.5i
-.BR \-B , " \-\-always\-make"
+\fB\-B\fR, \fB\-\-always\-make\fR
 Unconditionally make all targets.
 .TP 0.5i
 \fB\-C\fR \fIdir\fR, \fB\-\-directory\fR=\fIdir\fR
@@ -126,7 +111,7 @@ previous one:
 is equivalent to
 .BR "\-C " /etc.
 This is typically used with recursive invocations of
-.IR make .
+.BR make .
 .TP 0.5i
 .B \-d
 Print debugging information in addition to normal processing.
@@ -134,7 +119,7 @@ The debugging information says which files are being considered for
 remaking, which file-times are being compared and with what results,
 which files actually need to be remade, which implicit rules are
 considered and which are applied---everything interesting about how
-.I make
+.B make
 decides what to do.
 .TP 0.5i
 .BI \-\-debug "[=FLAGS]"
@@ -158,9 +143,11 @@ for showing implicit rules,
 .I j
 for details on invocation of commands, and
 .I m
-for debugging while remaking makefiles.
+for debugging while remaking makefiles.  Use
+.I n
+to disable all previous debugging flags.
 .TP 0.5i
-.BR \-e , " \-\-environment\-overrides"
+\fB\-e\fR, \fB\-\-environment\-overrides\fR
 Give variables taken from the environment precedence
 over variables from makefiles.
 .TP 0.5i
@@ -169,7 +156,7 @@ Use
 .I file
 as a makefile.
 .TP 0.5i
-.BR \-i , " \-\-ignore\-errors"
+\fB\-i\fR, \fB\-\-ignore\-errors\fR
 Ignore all errors in commands executed to remake files.
 .TP 0.5i
 \fB\-I\fR \fIdir\fR, \fB\-\-include\-dir\fR=\fIdir\fR
@@ -181,13 +168,14 @@ If several
 options are used to specify several directories, the directories are
 searched in the order specified.
 Unlike the arguments to other flags of
-.IR make ,
+.BR make ,
 directories given with
 .B \-I
 flags may come directly after the flag:
 .BI \-I dir
 is allowed, as well as
-.BI "\-I " dir.
+.B \-I
+.IR dir .
 This syntax is allowed for compatibility with the C
 preprocessor's
 .B \-I
@@ -203,10 +191,10 @@ option, the last one is effective.
 If the
 .B \-j
 option is given without an argument,
-.IR make
+.BR make
 will not limit the number of jobs that can run simultaneously.
 .TP 0.5i
-.BR \-k , " \-\-keep\-going"
+\fB\-k\fR, \fB\-\-keep\-going\fR
 Continue as much as possible after an error.
 While the target that failed, and those that depend on it, cannot
 be remade, the other dependencies of these targets can be processed
@@ -219,10 +207,10 @@ others jobs running and the load average is at least
 (a floating-point number).
 With no argument, removes a previous load limit.
 .TP 0.5i
-.BR \-L , " \-\-check\-symlink\-times"
+\fB\-L\fR, \fB\-\-check\-symlink\-times\fR
 Use the latest mtime between symlinks and target.
 .TP 0.5i
-.BR \-n , " \-\-just\-print" , " \-\-dry\-run" , " \-\-recon"
+\fB\-n\fR, \fB\-\-just\-print\fR, \fB\-\-dry\-run\fR, \fB\-\-recon\fR
 Print the commands that would be executed, but do not execute them (except in
 certain circumstances).
 .TP 0.5i
@@ -234,7 +222,29 @@ on account of changes in
 .IR file .
 Essentially the file is treated as very old and its rules are ignored.
 .TP 0.5i
-.BR \-p , " \-\-print\-data\-base"
+\fB\-O\fR[\fItype\fR], \fB\-\-output\-sync\fR[=\fItype\fR]
+When running multiple jobs in parallel with \fB-j\fR, ensure the output of
+each job is collected together rather than interspersed with output from
+other jobs.  If
+.I type
+is not specified or is
+.B target
+the output from the entire recipe for each target is grouped together.  If
+.I type
+is
+.B line
+the output from each command line within a recipe is grouped together.
+If
+.I type
+is
+.B recurse
+output from an entire recursive make is grouped together.  If
+.I type
+is
+.B none
+output synchronization is disabled.
+.TP 0.5i
+\fB\-p\fR, \fB\-\-print\-data\-base\fR
 Print the data base (rules and variable values) that results from
 reading the makefiles; then execute as usual or as otherwise
 specified.
@@ -242,59 +252,61 @@ This also prints the version information given by the
 .B \-v
 switch (see below).
 To print the data base without trying to remake any files, use
-.B make
-.B \-p
-.BI \-f /dev/null.
+.IR "make \-p \-f/dev/null" .
 .TP 0.5i
-.BR \-q , " \-\-question"
+\fB\-q\fR, \fB\-\-question\fR
 ``Question mode''.
 Do not run any commands, or print anything; just return an exit status
 that is zero if the specified targets are already up to date, nonzero
 otherwise.
 .TP 0.5i
-.BR \-r , " \-\-no\-builtin\-rules"
+\fB\-r\fR, \fB\-\-no\-builtin\-rules\fR
 Eliminate use of the built\-in implicit rules.
 Also clear out the default list of suffixes for suffix rules.
 .TP 0.5i
-.BR \-R , " \-\-no\-builtin\-variables"
+\fB\-R\fR, \fB\-\-no\-builtin\-variables\fR
 Don't define any built\-in variables.
 .TP 0.5i
-.BR \-s , " \-\-silent" , " \-\-quiet"
+\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
 Silent operation; do not print the commands as they are executed.
 .TP 0.5i
-.BR \-S , " \-\-no\-keep\-going" , " \-\-stop"
+\fB\-S\fR, \fB\-\-no\-keep\-going\fR, \fB\-\-stop\fR
 Cancel the effect of the
 .B \-k
 option.
 This is never necessary except in a recursive
-.I make
+.B make
 where
 .B \-k
 might be inherited from the top-level
-.I make
+.B make
 via MAKEFLAGS or if you set
 .B \-k
 in MAKEFLAGS in your environment.
 .TP 0.5i
-.BR \-t , " \-\-touch"
+\fB\-t\fR, \fB\-\-touch\fR
 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
-.IR make .
+.BR make .
+.TP 0.5i
+.B \-\-trace
+Information about the disposition of each target is printed (why the target is
+being rebuilt and what commands are run to rebuild it).
 .TP 0.5i
-.BR \-v , " \-\-version"
+\fB\-v\fR, \fB\-\-version\fR
 Print the version of the
-.I make
+.B make
 program plus a copyright, a list of authors and a notice that there
 is no warranty.
 .TP 0.5i
-.BR \-w , " \-\-print\-directory"
+\fB\-w\fR, \fB\-\-print\-directory\fR
 Print a message containing the working directory
 before and after other processing.
 This may be useful for tracking down errors from complicated nests of
 recursive
-.I make
+.B make
 commands.
 .TP 0.5i
 .B \-\-no\-print\-directory
@@ -314,36 +326,46 @@ Without
 it is almost the same as running a
 .I touch
 command on the given file before running
-.IR make ,
+.BR make ,
 except that the modification time is changed only in the imagination of
-.IR make .
+.BR make .
 .TP 0.5i
 .B \-\-warn\-undefined\-variables
 Warn when an undefined variable is referenced.
 .SH "EXIT STATUS"
 GNU
-.I make
+.B make
 exits with a status of zero if all makefiles were successfully parsed
 and no targets that were built failed.  A status of one will be returned
 if the
 .B \-q
 flag was used and
-.I make
+.B make
 determines that a target needs to be rebuilt.  A status of two will be
 returned if any errors were encountered.
 .SH "SEE ALSO"
-.I "The GNU Make Manual"
+The full documentation for
+.B make
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B make
+programs are properly installed at your site, the command
+.IP
+.B info make
+.PP
+should give you access to the complete manual.
 .SH BUGS
-See the chapter `Problems and Bugs' in
+See the chapter ``Problems and Bugs'' in
 .IR "The GNU Make Manual" .
 .SH AUTHOR
 This manual page contributed by Dennis Morse of Stanford University.
-It has been reworked by Roland McGrath.  Further updates contributed by
-Mike Frysinger.
+Further updates contributed by Mike Frysinger.  It has been reworked by Roland
+McGrath.  Maintained by Paul Smith.
 .SH "COPYRIGHT"
-Copyright (C) 1992, 1993, 1996, 1999, 2007 Free Software Foundation, Inc.
-This file is part of GNU
-.IR make .
+Copyright \(co 1992-1993, 1996-2013 Free Software Foundation, Inc.
+This file is part of
+.IR "GNU make" .
 .LP
 GNU Make is free software; you can redistribute it and/or modify it under the
 terms of the GNU General Public License as published by the Free Software
index b4080a7..0d983bf 100644 (file)
--- a/make.lnk
+++ b/make.lnk
@@ -1,4 +1,4 @@
-FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"+"hash.o"+"strcache.o"
+FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"+"hash.o"+"strcache.o"+"output.o"
 TO "make.new"
 LIB glob/glob.lib LIB:sc.lib LIB:amiga.lib
 QUIET
index 357dfba..be620ad 100644 (file)
                        <File\r
                                RelativePath=".\getopt1.c">\r
                        </File>\r
+<!--\r
+                       <File\r
+                               RelativePath=".\guile.c">\r
+                       </File>\r
+-->\r
                        <File\r
                                RelativePath=".\hash.c">\r
                        </File>\r
                                RelativePath=".\job.c">\r
                        </File>\r
                        <File\r
+                               RelativePath=".\load.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\output.c">\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\main.c">\r
                        </File>\r
                        <File\r
                                        RelativePath=".\w32\compat\dirent.c">\r
                                </File>\r
                                <File\r
+                                       RelativePath=".\w32\compat\posixfcn.c">\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\w32\subproc\misc.c">\r
                                        <FileConfiguration\r
                                                Name="Debug|Win32">\r
                                RelativePath=".\gettext.h">\r
                        </File>\r
                        <File\r
+                               RelativePath=".\gmk-default.h">\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\hash.h">\r
                        </File>\r
                        <File\r
                                RelativePath=".\job.h">\r
                        </File>\r
                        <File\r
-                               RelativePath=".\make.h">\r
+                               RelativePath=".\output.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\makeint.h">\r
                        </File>\r
                        <File\r
                                RelativePath=".\rule.h">\r
index d2d05d1..6359c47 100644 (file)
@@ -67,8 +67,8 @@ $ then
 $   gosub check_cc_qual
 $ endif
 $ filelist = "alloca ar arscan commands default dir expand file function " + -
-             "hash implicit job main misc read remake remote-stub rule " + -
-            "signame variable version vmsfunctions vmsify vpath " + -
+             "hash implicit job load main misc read remake remote-stub rule " + -
+            "output signame variable version vmsfunctions vmsify vpath " + -
             "[.glob]glob [.glob]fnmatch getopt1 getopt strcache"
 $ copy config.h-vms config.h
 $ n=0
@@ -138,8 +138,7 @@ $ exit
 $ endsubroutine : compileit
 $!
 $!-----------------------------------------------------------------------------
-$!Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-$!2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+$!Copyright (C) 1996-2013 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
index 1e6a88e..e5950b7 100644 (file)
@@ -1,7 +1,6 @@
 # -*-Makefile-*- to build GNU make on VMS
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 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
@@ -21,7 +20,7 @@
 #  Klaus Kämpf (kkaempf@rmi.de)
 # Modified for version 3.78.1 by Hartmut.Becker@compaq.com.
 # Modified for version 3.80 by zinser@decus.de
-# Modified for version 3.81 by Hartmut Becker
+# Modified for versions 3.81, 3.99.90 by Hartmut Becker
 
 CC = cc
 CP = copy
@@ -82,22 +81,26 @@ extras = ,signame.obj,remote-stub.obj,vmsfunctions.obj,vmsify.obj
 # as an alternative:
 glob = ,[.glob]glob.obj,[.glob]fnmatch.obj
 getopt = ,getopt.obj,getopt1.obj
-# Directory to install `make' in.
+# Directory to install 'make' in.
 bindir = []
 # Directory to install the man page in.
 mandir = []
 # Number to put on the man page filename.
 manext = 1
 
-objs = commands.obj,job.obj,dir.obj,file.obj,misc.obj,hash.obj,\
-       main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
+#guile = ,guile.obj
+
+objs = commands.obj,job.obj,output.obj,dir.obj,file.obj,misc.obj,hash.obj,\
+       load.obj,main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
        default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
-       vpath.obj,version.obj$(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)
-srcs = commands.c job.c dir.c file.c misc.c  hash.c \
-       main.c read.c remake.c rule.c implicit.c \
+       vpath.obj,version.obj\
+       $(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob)$(guile)
+
+srcs = commands.c job.c output.c dir.c file.c misc.c guile.c hash.c \
+       load.c main.c read.c remake.c rule.c implicit.c \
        default.c variable.c expand.c function.c strcache.c \
        vpath.c version.c vmsfunctions.c vmsify.c $(ARCHIVES_SRC) $(ALLOCASRC) \
-       commands.h dep.h filedef.h job.h make.h rule.h variable.h
+       commands.h dep.h filedef.h job.h output.h makeint.h rule.h variable.h
 
 
 .PHONY: all doc
@@ -111,39 +114,44 @@ make.exe: $(objs)
 
 .PHONY: clean realclean
 clean:
-       $$ purge [...]
+       -purge [...]
        -$(RM) make.exe;,*.obj;
        -$(RM) [.glob]*.obj;
 
 # Automatically generated dependencies.
-commands.obj: commands.c make.h dep.h commands.h filedef.h variable.h job.h
-job.obj: job.c vmsjobs.c make.h commands.h job.h filedef.h variable.h
-dir.obj: dir.c make.h
-file.obj: file.c make.h commands.h dep.h filedef.h variable.h
-misc.obj: misc.c make.h dep.h
-hash.obj: hash.c make.h hash.h
-strcache.obj: strcache.c make.h hash.h
-main.obj: main.c make.h commands.h dep.h filedef.h variable.h job.h
-read.obj: read.c make.h commands.h dep.h filedef.h variable.h
-remake.obj: remake.c make.h commands.h job.h dep.h filedef.h
-rule.obj: rule.c make.h commands.h dep.h filedef.h variable.h rule.h
-implicit.obj: implicit.c make.h rule.h dep.h filedef.h
-default.obj: default.c make.h rule.h dep.h filedef.h commands.h variable.h
-variable.obj: variable.c make.h commands.h variable.h dep.h filedef.h
-expand.obj: expand.c make.h commands.h filedef.h variable.h
-function.obj: function.c make.h variable.h dep.h commands.h job.h
-vpath.obj: vpath.c make.h filedef.h variable.h
+# makeint.h: config.h gnumake.h gettext.h
+# filedef.h: hash.h
+ar.obj: ar.c makeint.h filedef.h dep.h [.glob]fnmatch.h
+arscan.obj: arscan.c makeint.h
+commands.obj: commands.c makeint.h dep.h commands.h filedef.h variable.h job.h
+default.obj: default.c makeint.h rule.h dep.h job.h filedef.h commands.h variable.h
+dir.obj: dir.c makeint.h hash.h [.glob]glob.h
+expand.obj: expand.c makeint.h commands.h filedef.h job.h rule.h variable.h
+file.obj: file.c makeint.h commands.h dep.h filedef.h variable.h job.h debug.h
+function.obj: function.c makeint.h variable.h dep.h commands.h filedef.h debug.h job.h
+getopt.obj: getopt.c getopt.h config.h gettext.h
+getopt1.obj: getopt1.c getopt.h config.h
+guile.obj: guile.c makeint.h debug.h dep.h gmk-default.h
+hash.obj: hash.c makeint.h hash.h
+implicit.obj: implicit.c makeint.h rule.h dep.h filedef.h debug.h variable.h job.h commands.h
+job.obj: job.c vmsjobs.c makeint.h commands.h job.h filedef.h variable.h debug.h
+output.obj: output.c vmsjobs.c makeint.h output.h filedef.h debug.h
+load.obj: load.c makeint.h debug.h filedef.h variable.h
+main.obj: main.c makeint.h commands.h dep.h filedef.h variable.h job.h rule.h debug.h getopt.h
+misc.obj: misc.c makeint.h dep.h debug.h
+read.obj: read.c makeint.h commands.h dep.h filedef.h variable.h [.glob]glob.h debug.h rule.h job.h
+remake.obj: remake.c makeint.h commands.h job.h dep.h filedef.h variable.h debug.h
+remote-stub.obj: remote-stub.c makeint.h filedef.h job.h commands.h
+rule.obj: rule.c makeint.h commands.h dep.h filedef.h variable.h rule.h job.h
+signame.obj: signame.c makeint.h
+strcache.obj: strcache.c makeint.h hash.h
+variable.obj: variable.c makeint.h commands.h variable.h dep.h filedef.h job.h rule.h
 version.obj: version.c config.h
-arscan.obj: arscan.c
-ar.obj: ar.c make.h filedef.h
-signame.obj: signame.c
-remote-stub.obj: remote-stub.c
-[.glob]glob.obj: [.glob]glob.c
-[.glob]fnmatch.obj: [.glob]fnmatch.c
-getopt.obj: getopt.c
-getopt1.obj: getopt1.c
-vmsfunctions.obj: vmsfunctions.c make.h vmsdir.h
-vmsify.obj: vmsify.c make.h
+vmsfunctions.obj: vmsfunctions.c makeint.h vmsdir.h debug.h job.h
+vmsify.obj: vmsify.c
+vpath.obj: vpath.c makeint.h filedef.h variable.h
+[.glob]fnmatch.obj: [.glob]fnmatch.c [.glob]fnmatch.h config.h
+[.glob]glob.obj: [.glob]glob.c [.glob]glob.h [.glob]fnmatch.h config.h
 
 config.h: config.h-vms
        $(CP) $< $@
similarity index 77%
rename from make.h
rename to makeint.h
index 60ade4c..3e22296 100644 (file)
--- a/make.h
+++ b/makeint.h
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -18,7 +16,7 @@ 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
-   (which it would do because make.h was found in $srcdir).  */
+   (which it would do because makeint.h was found in $srcdir).  */
 #include <config.h>
 #undef  HAVE_CONFIG_H
 #define HAVE_CONFIG_H 1
@@ -43,6 +41,20 @@ char *alloca ();
 # endif
 #endif
 
+/* Disable assert() unless we're a maintainer.
+   Some asserts are compute-intensive.  */
+#ifndef MAKE_MAINTAINER_MODE
+# define NDEBUG 1
+#endif
+
+/* Include the externally-visible content.
+   Be sure to use the local one, and not one installed on the system.
+   Define GMK_BUILDING_MAKE for proper selection of dllexport/dllimport
+   declarations for MS-Windows.  */
+#ifdef WINDOWS32
+# define GMK_BUILDING_MAKE
+#endif
+#include "gnumake.h"
 
 #ifdef  CRAY
 /* This must happen before #include <signal.h> so
@@ -60,13 +72,12 @@ char *alloca ();
 #include <signal.h>
 #include <stdio.h>
 #include <ctype.h>
+
 #ifdef HAVE_SYS_TIMEB_H
-/* SCO 3.2 "devsys 4.2" has a prototype for `ftime' in <time.h> that bombs
-   unless <sys/timeb.h> has been included first.  Does every system have a
-   <sys/timeb.h>?  If any does not, configure should check for it.  */
+/* SCO 3.2 "devsys 4.2" has a prototype for 'ftime' in <time.h> that bombs
+   unless <sys/timeb.h> has been included first.  */
 # include <sys/timeb.h>
 #endif
-
 #if TIME_WITH_SYS_TIME
 # include <sys/time.h>
 # include <time.h>
@@ -91,7 +102,7 @@ extern int errno;
 #ifdef  HAVE_UNISTD_H
 # include <unistd.h>
 /* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get
-   POSIX.1 behavior with `cc -YPOSIX', which predefines POSIX itself!  */
+   POSIX.1 behavior with 'cc -YPOSIX', which predefines POSIX itself!  */
 # if defined (_POSIX_VERSION) && !defined (ultrix) && !defined (VMS)
 #  define POSIX 1
 # endif
@@ -148,8 +159,13 @@ unsigned int get_path_max (void);
 # define CHAR_BIT 8
 #endif
 
-/* Nonzero if the integer type T is signed.  */
-#define INTEGER_TYPE_SIGNED(t) ((t) -1 < 0)
+#ifndef USHRT_MAX
+# define USHRT_MAX 65535
+#endif
+
+/* Nonzero if the integer type T is signed.
+   Use <= to avoid GCC warnings about always-false expressions.  */
+#define INTEGER_TYPE_SIGNED(t) ((t) -1 <= 0)
 
 /* The minimum and maximum values for the integer type T.
    Use ~ (t) 0, not -1, for portability to 1's complement hosts.  */
@@ -157,6 +173,9 @@ unsigned int get_path_max (void);
   (! INTEGER_TYPE_SIGNED (t) ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))
 #define INTEGER_TYPE_MAXIMUM(t) (~ (t) 0 - INTEGER_TYPE_MINIMUM (t))
 
+/* The maximum number of digits needed to represent the largest integer.  */
+#define INTEGER_LENGTH sizeof("18446744073709551616")
+
 #ifndef CHAR_MAX
 # define CHAR_MAX INTEGER_TYPE_MAXIMUM (char)
 #endif
@@ -178,6 +197,7 @@ unsigned int get_path_max (void);
 #endif
 
 #ifdef VMS
+# include <fcntl.h>
 # include <types.h>
 # include <unixlib.h>
 # include <unixio.h>
@@ -191,7 +211,7 @@ unsigned int get_path_max (void);
 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
 #  define __attribute__(x)
 # endif
-/* The __-protected variants of `format' and `printf' attributes
+/* The __-protected variants of 'format' and 'printf' attributes
    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
 #  define __format__ format
@@ -249,6 +269,9 @@ char *strerror (int errnum);
 #if HAVE_INTTYPES_H
 # include <inttypes.h>
 #endif
+#if HAVE_STDINT_H
+# include <stdint.h>
+#endif
 #define FILE_TIMESTAMP uintmax_t
 
 #if !defined(HAVE_STRSIGNAL)
@@ -262,7 +285,7 @@ char *strsignal (int signum);
    - It's typically faster.
    POSIX 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
    only '0' through '9' are digits.  Prefer ISDIGIT to isdigit() unless
-   it's important to use the locale's definition of `digit' even when the
+   it's important to use the locale's definition of 'digit' even when the
    host does not conform to POSIX.  */
 #define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
 
@@ -305,11 +328,15 @@ char *strsignal (int signum);
 #define N_(msgid)           gettext_noop (msgid)
 #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
 
-/* Handle other OSs.  */
-#ifndef PATH_SEPARATOR_CHAR
-# if defined(HAVE_DOS_PATHS)
-#  define PATH_SEPARATOR_CHAR ';'
-# elif defined(VMS)
+/* Handle other OSs.
+   To overcome an issue parsing paths in a DOS/Windows environment when
+   built in a unix based environment, override the PATH_SEPARATOR_CHAR
+   definition unless being built for Cygwin. */
+#if defined(HAVE_DOS_PATHS) && !defined(__CYGWIN__)
+# undef PATH_SEPARATOR_CHAR
+# define PATH_SEPARATOR_CHAR ';'
+#elif !defined(PATH_SEPARATOR_CHAR)
+# if defined (VMS)
 #  define PATH_SEPARATOR_CHAR ','
 # else
 #  define PATH_SEPARATOR_CHAR ':'
@@ -326,10 +353,17 @@ char *strsignal (int signum);
 # include <malloc.h>
 # define pipe(_p)        _pipe((_p), 512, O_BINARY)
 # define kill(_pid,_sig) w32_kill((_pid),(_sig))
+/* MSVC doesn't have ftruncate.  */
+# ifdef _MSC_VER
+#  define ftruncate(_fd,_len) _chsize(_fd,_len)
+# endif
+/* MinGW64 doesn't have _S_ISDIR.  */
+# ifndef _S_ISDIR
+#  define _S_ISDIR(m)  S_ISDIR(m)
+# endif
 
 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 */
@@ -337,54 +371,72 @@ extern int no_default_sh_exe;
 
 /* is default_shell unixy? */
 extern int unixy_shell;
+
+/* We don't have a preferred fixed value for LOCALEDIR.  */
+# ifndef LOCALEDIR
+#  define LOCALEDIR NULL
+# endif
+
+/* Include only the minimal stuff from windows.h.   */
+#define WIN32_LEAN_AND_MEAN
 #endif  /* WINDOWS32 */
 
+#define ANY_SET(_v,_m)  (((_v)&(_m)) != 0)
+#define NONE_SET(_v,_m) (! ANY_SET ((_v),(_m)))
+
+#define MAP_NUL         0x0001
+#define MAP_BLANK       0x0002
+#define MAP_SPACE       0x0004
+#define MAP_COMMENT     0x0008
+#define MAP_SEMI        0x0010
+#define MAP_EQUALS      0x0020
+#define MAP_COLON       0x0040
+#define MAP_PERCENT     0x0080
+#define MAP_PIPE        0x0100
+#define MAP_DOT         0x0200
+#define MAP_COMMA       0x0400
+
+/* These are the valid characters for a user-defined function.  */
+#define MAP_USERFUNC    0x2000
+/* This means not only a '$', but skip the variable reference.  */
+#define MAP_VARIABLE    0x4000
+/* The set of characters which are path separators is OS-specific.  */
+#define MAP_PATHSEP     0x8000
+
+#ifdef VMS
+# define MAP_VMSCOMMA   MAP_COMMA
+#else
+# define MAP_VMSCOMMA   0x0000
+#endif
+
+#define STOP_SET(_v,_m) ANY_SET (stopchar_map[(int)(_v)],(_m))
+
 #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;
+extern struct rlimit stack_limit;
 #endif
 
-struct floc
-  {
-    const char *filenm;
-    unsigned long lineno;
-  };
-#define NILF ((struct floc *)0)
+#define NILF ((gmk_floc *)0)
 
-#define STRING_SIZE_TUPLE(_s) (_s), (sizeof (_s)-1)
+#define CSTRLEN(_s) (sizeof (_s)-1)
+#define STRING_SIZE_TUPLE(_s) (_s), CSTRLEN(_s)
 
 \f
-/* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use
-   variadic versions of these functions.  */
-
-#if HAVE_STDARG_H || HAVE_VARARGS_H
-# if HAVE_VPRINTF || HAVE_DOPRNT
-#  define USE_VARIADIC 1
-# endif
-#endif
-
-#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
 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, ...)
+void error (const gmk_floc *flocp, const char *fmt, ...)
             __attribute__ ((__format__ (__printf__, 2, 3)));
-void fatal (const struct floc *flocp, const char *fmt, ...)
+void fatal (const gmk_floc *flocp, const char *fmt, ...)
                    __attribute__ ((noreturn, __format__ (__printf__, 2, 3)));
-#else
-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 *);
+#define xstrlen(_s) ((_s)==NULL ? 0 : strlen (_s))
 void *xmalloc (unsigned int);
 void *xcalloc (unsigned int);
 void *xrealloc (void *, unsigned int);
@@ -399,7 +451,6 @@ 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
 int ar_name (const char *);
@@ -408,9 +459,9 @@ 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 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);
@@ -427,6 +478,7 @@ const char *dir_name (const char *);
 void hash_init_directories (void);
 
 void define_default_variables (void);
+void undefine_default_variables (void);
 void set_default_suffixes (void);
 void install_default_suffix_rules (void);
 void install_default_implicit_rules (void);
@@ -443,8 +495,6 @@ void user_access (void);
 void make_access (void);
 void child_access (void);
 
-void close_stdout (void);
-
 char *strip_whitespace (const char **begpp, const char **endpp);
 
 /* String caching  */
@@ -452,13 +502,19 @@ 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);
+const char *strcache_add_len (const char *str, unsigned int len);
+int strcache_setbufsize (unsigned int size);
 
-#ifdef  HAVE_VFORK_H
-# include <vfork.h>
+/* Guile support  */
+#ifdef HAVE_GUILE
+int guile_gmake_setup (const gmk_floc *flocp);
 #endif
 
+/* Loadable object support.  Sets to the strcached name of the loaded file.  */
+typedef int (*load_func_t)(const gmk_floc *flocp);
+int load_file (const gmk_floc *flocp, const char **filename, int noerror);
+void unload_file (const char *name);
+
 /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
    because such systems often declare them in header files anyway.  */
 
@@ -502,18 +558,25 @@ int strncasecmp (const char *s1, const char *s2, int n);
 # endif
 #endif
 
-extern const struct floc *reading_file;
-extern const struct floc **expanding_var;
+#define OUTPUT_SYNC_NONE    0
+#define OUTPUT_SYNC_LINE    1
+#define OUTPUT_SYNC_TARGET  2
+#define OUTPUT_SYNC_RECURSE 3
+
+extern const gmk_floc *reading_file;
+extern const gmk_floc **expanding_var;
 
 extern char **environ;
 
+extern unsigned short stopchar_map[];
+
 extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
 extern int print_data_base_flag, question_flag, touch_flag, always_make_flag;
 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;
+extern int warn_undefined_variables_flag, trace_flag, posix_pedantic;
+extern int not_parallel, second_expansion, clock_skew_detected;
+extern int rebuilding_makefiles, one_shell, output_sync, verify_flag;
 
 /* can we run commands via 'sh -c xxx' or must we use batch files? */
 extern int batch_mode_shell;
diff --git a/misc.c b/misc.c
index 7a6f773..bc54ce6 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,42 +14,21 @@ 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 "make.h"
+#include "makeint.h"
+#include "filedef.h"
 #include "dep.h"
 #include "debug.h"
 
-/* Variadic functions.  We go through contortions to allow proper function
-   prototypes for both ANSI and pre-ANSI C compilers, and also for those
-   which support stdarg.h vs. varargs.h, and finally those which have
-   vfprintf(), etc. and those who have _doprnt... or nothing.
-
-   This fancy stuff all came from GNU fileutils, except for the VA_PRINTF and
-   VA_END macros used here since we have multiple print functions.  */
-
-#if USE_VARIADIC
-# if HAVE_STDARG_H
-#  include <stdarg.h>
-#  define VA_START(args, lastarg) va_start(args, lastarg)
-# else
-#  include <varargs.h>
-#  define VA_START(args, lastarg) va_start(args)
-# endif
-# if HAVE_VPRINTF
-#  define VA_PRINTF(fp, lastarg, args) vfprintf((fp), (lastarg), (args))
-# else
-#  define VA_PRINTF(fp, lastarg, args) _doprnt((lastarg), (args), (fp))
-# endif
-# define VA_END(args) va_end(args)
+/* GNU make no longer supports pre-ANSI89 environments.  */
+
+#include <stdarg.h>
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
 #else
-/* We can't use any variadic interface! */
-# define va_alist a1, a2, a3, a4, a5, a6, a7, a8
-# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
-# define VA_START(args, lastarg)
-# define VA_PRINTF(fp, lastarg, args) fprintf((fp), (lastarg), va_alist)
-# define VA_END(args)
+# include <sys/file.h>
 #endif
 
-
 /* Compare strings *S1 and *S2.
    Return negative if the first is less, positive if it is greater,
    zero if they are equal.  */
@@ -74,9 +51,7 @@ alpha_compare (const void *v1, const void *v2)
 void
 collapse_continuations (char *line)
 {
-  register char *in, *out, *p;
-  register int backslash;
-  register unsigned int bs_write;
+  char *in, *out, *p;
 
   in = strchr (line, '\n');
   if (in == 0)
@@ -89,62 +64,64 @@ collapse_continuations (char *line)
   while (*in != '\0')
     {
       /* BS_WRITE gets the number of quoted backslashes at
-        the end just before IN, and BACKSLASH gets nonzero
-        if the next character is quoted.  */
-      backslash = 0;
-      bs_write = 0;
+         the end just before IN, and BACKSLASH gets nonzero
+         if the next character is quoted.  */
+      unsigned int backslash = 0;
+      unsigned int bs_write = 0;
       for (p = in - 1; p >= line && *p == '\\'; --p)
-       {
-         if (backslash)
-           ++bs_write;
-         backslash = !backslash;
+        {
+          if (backslash)
+            ++bs_write;
+          backslash = !backslash;
 
-         /* It should be impossible to go back this far without exiting,
-            but if we do, we can't get the right answer.  */
-         if (in == out - 1)
-           abort ();
-       }
+          /* It should be impossible to go back this far without exiting,
+             but if we do, we can't get the right answer.  */
+          if (in == out - 1)
+            abort ();
+        }
 
       /* Output the appropriate number of backslashes.  */
       while (bs_write-- > 0)
-       *out++ = '\\';
+        *out++ = '\\';
 
       /* Skip the newline.  */
       ++in;
 
-      /* 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++ = ' ';
-       }
+        {
+          /* Backslash/newline handling:
+             In traditional GNU make all trailing whitespace, consecutive
+             backslash/newlines, and any leading whitespace on the next line
+             is reduced to a single space.
+             In POSIX, each backslash/newline and is replaced by a space.  */
+          in = next_token (in);
+          if (! posix_pedantic)
+            while (out > line && isblank ((unsigned char)out[-1]))
+              --out;
+          *out++ = ' ';
+        }
       else
-       /* If the newline isn't quoted, put it in the output.  */
-       *out++ = '\n';
+        /* If the newline isn't quoted, put it in the output.  */
+        *out++ = '\n';
 
       /* Now copy the following line to the output.
-        Stop when we find backslashes followed by a newline.  */
+         Stop when we find backslashes followed by a newline.  */
       while (*in != '\0')
-       if (*in == '\\')
-         {
-           p = in + 1;
-           while (*p == '\\')
-             ++p;
-           if (*p == '\n')
-             {
-               in = p;
-               break;
-             }
-           while (in < p)
-             *out++ = *in++;
-         }
-       else
-         *out++ = *in++;
+        if (*in == '\\')
+          {
+            p = in + 1;
+            while (*p == '\\')
+              ++p;
+            if (*p == '\n')
+              {
+                in = p;
+                break;
+              }
+            while (in < p)
+              *out++ = *in++;
+          }
+        else
+          *out++ = *in++;
     }
 
   *out = '\0';
@@ -164,28 +141,19 @@ print_spaces (unsigned int n)
    This string lives in static, re-used memory.  */
 
 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
 {
   static unsigned int rlen = 0;
   static char *result = NULL;
-  int ri = 0;
-
-#if USE_VARIADIC
+  unsigned int ri = 0;
   va_list args;
-#endif
 
-  VA_START (args, num);
+  va_start (args, num);
 
   while (num-- > 0)
     {
       const char *s = va_arg (args, const char *);
-      unsigned int l = s ? strlen (s) : 0;
+      unsigned int l = xstrlen (s);
 
       if (l == 0)
         continue;
@@ -200,7 +168,7 @@ concat (num, va_alist)
       ri += l;
     }
 
-  VA_END (args);
+  va_end (args);
 
   /* Get some more memory if we don't have enough space for the
      terminating '\0'.   */
@@ -215,113 +183,9 @@ concat (num, va_alist)
   return result;
 }
 \f
-/* Print a message on stdout.  */
-
-void
-#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
-message (int prefix, const char *fmt, ...)
-#else
-message (prefix, fmt, va_alist)
-     int prefix;
-     const char *fmt;
-     va_dcl
-#endif
-{
-#if USE_VARIADIC
-  va_list args;
-#endif
-
-  log_working_directory (1);
-
-  if (fmt != 0)
-    {
-      if (prefix)
-       {
-         if (makelevel == 0)
-           printf ("%s: ", program);
-         else
-           printf ("%s[%u]: ", program, makelevel);
-       }
-      VA_START (args, fmt);
-      VA_PRINTF (stdout, fmt, args);
-      VA_END (args);
-      putchar ('\n');
-    }
-
-  fflush (stdout);
-}
-
-/* Print an error message.  */
-
-void
-#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
-error (const struct floc *flocp, const char *fmt, ...)
-#else
-error (flocp, fmt, va_alist)
-     const struct floc *flocp;
-     const char *fmt;
-     va_dcl
-#endif
-{
-#if USE_VARIADIC
-  va_list args;
-#endif
-
-  log_working_directory (1);
-
-  if (flocp && flocp->filenm)
-    fprintf (stderr, "%s:%lu: ", flocp->filenm, flocp->lineno);
-  else if (makelevel == 0)
-    fprintf (stderr, "%s: ", program);
-  else
-    fprintf (stderr, "%s[%u]: ", program, makelevel);
-
-  VA_START(args, fmt);
-  VA_PRINTF (stderr, fmt, args);
-  VA_END (args);
-
-  putc ('\n', stderr);
-  fflush (stderr);
-}
-
-/* Print an error message and exit.  */
-
-void
-#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
-fatal (const struct floc *flocp, const char *fmt, ...)
-#else
-fatal (flocp, fmt, va_alist)
-     const struct floc *flocp;
-     const char *fmt;
-     va_dcl
-#endif
-{
-#if USE_VARIADIC
-  va_list args;
-#endif
-
-  log_working_directory (1);
-
-  if (flocp && flocp->filenm)
-    fprintf (stderr, "%s:%lu: *** ", flocp->filenm, flocp->lineno);
-  else if (makelevel == 0)
-    fprintf (stderr, "%s: *** ", program);
-  else
-    fprintf (stderr, "%s[%u]: *** ", program, makelevel);
-
-  VA_START(args, fmt);
-  VA_PRINTF (stderr, fmt, args);
-  VA_END (args);
-
-  fputs (_(".  Stop.\n"), stderr);
-
-  die (2);
-}
 
 #ifndef HAVE_STRERROR
-
-#undef strerror
-
+#undef  strerror
 char *
 strerror (int errnum)
 {
@@ -338,24 +202,6 @@ strerror (int errnum)
   return buf;
 }
 #endif
-
-/* Print an error message from errno.  */
-
-void
-perror_with_name (const char *str, const char *name)
-{
-  error (NILF, _("%s%s: %s"), str, name, strerror (errno));
-}
-
-/* Print an error message from errno and exit.  */
-
-void
-pfatal_with_name (const char *name)
-{
-  fatal (NILF, _("%s: %s"), name, strerror (errno));
-
-  /* NOTREACHED */
-}
 \f
 /* Like malloc but get fatal error if memory is exhausted.  */
 /* Don't bother if we're using dmalloc; it provides these for us.  */
@@ -468,41 +314,11 @@ lindex (const char *s, const char *limit, int c)
 char *
 end_of_token (const char *s)
 {
-  while (*s != '\0' && !isblank ((unsigned char)*s))
+  while (! STOP_SET (*s, MAP_BLANK|MAP_NUL))
     ++s;
   return (char *)s;
 }
 
-#ifdef WINDOWS32
-/*
- * Same as end_of_token, but take into account a stop character
- */
-char *
-end_of_token_w32 (const char *s, char stopchar)
-{
-  const char *p = s;
-  int backslash = 0;
-
-  while (*p != '\0' && *p != stopchar
-        && (backslash || !isblank ((unsigned char)*p)))
-    {
-      if (*p++ == '\\')
-        {
-          backslash = !backslash;
-          while (*p == '\\')
-            {
-              backslash = !backslash;
-              ++p;
-            }
-        }
-      else
-        backslash = 0;
-    }
-
-  return (char *)p;
-}
-#endif
-
 /* Return the address of the first nonwhitespace or null in the string S.  */
 
 char *
@@ -533,7 +349,7 @@ find_next_token (const char **ptr, unsigned int *lengthptr)
 }
 \f
 
-/* Copy a chain of `struct dep'.  For 2nd expansion deps, dup the name.  */
+/* Copy a chain of 'struct dep'.  For 2nd expansion deps, dup the name.  */
 
 struct dep *
 copy_dep_chain (const struct dep *d)
@@ -551,9 +367,9 @@ copy_dep_chain (const struct dep *d)
 
       c->next = 0;
       if (firstnew == 0)
-       firstnew = lastnew = c;
+        firstnew = lastnew = c;
       else
-       lastnew = lastnew->next = c;
+        lastnew = lastnew->next = c;
 
       d = d->next;
     }
@@ -590,7 +406,6 @@ free_ns_chain (struct nameseq *ns)
 \f
 
 #if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI
-
 /* If we don't have strcasecmp() (from POSIX), or anything that can substitute
    for it, define our own version.  */
 
@@ -616,7 +431,6 @@ strcasecmp (const char *s1, const char *s2)
 #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.  */
 
@@ -643,7 +457,7 @@ strncasecmp (const char *s1, const char *s2, int n)
 }
 #endif
 \f
-#ifdef GETLOADAVG_PRIVILEGED
+#ifdef  GETLOADAVG_PRIVILEGED
 
 #ifdef POSIX
 
@@ -656,7 +470,7 @@ strncasecmp (const char *s1, const char *s2, int n)
 #undef HAVE_SETREUID
 #undef HAVE_SETREGID
 
-#else  /* Not POSIX.  */
+#else   /* Not POSIX.  */
 
 /* Some POSIX.1 systems have the seteuid and setegid functions.  In a
    POSIX-like system, they are the best thing to use.  However, some
@@ -666,30 +480,30 @@ strncasecmp (const char *s1, const char *s2, int n)
 #undef HAVE_SETEUID
 #undef HAVE_SETEGID
 
-#endif /* POSIX.  */
+#endif  /* POSIX.  */
 
-#ifndef        HAVE_UNISTD_H
+#ifndef HAVE_UNISTD_H
 extern int getuid (), getgid (), geteuid (), getegid ();
 extern int setuid (), setgid ();
 #ifdef HAVE_SETEUID
 extern int seteuid ();
 #else
-#ifdef HAVE_SETREUID
+#ifdef  HAVE_SETREUID
 extern int setreuid ();
-#endif /* Have setreuid.  */
-#endif /* Have seteuid.  */
+#endif  /* Have setreuid.  */
+#endif  /* Have seteuid.  */
 #ifdef HAVE_SETEGID
 extern int setegid ();
 #else
-#ifdef HAVE_SETREGID
+#ifdef  HAVE_SETREGID
 extern int setregid ();
-#endif /* Have setregid.  */
-#endif /* Have setegid.  */
-#endif /* No <unistd.h>.  */
+#endif  /* Have setregid.  */
+#endif  /* Have setegid.  */
+#endif  /* No <unistd.h>.  */
 
 /* Keep track of the user and group IDs for user- and make- access.  */
 static int user_uid = -1, user_gid = -1, make_uid = -1, make_gid = -1;
-#define        access_inited   (user_uid != -1)
+#define access_inited   (user_uid != -1)
 static enum { make, user } current_access;
 
 
@@ -706,7 +520,7 @@ log_access (const char *flavor)
      run in a child fork whose stdout is piped.  */
 
   fprintf (stderr, _("%s: user %lu (real %lu), group %lu (real %lu)\n"),
-          flavor, (unsigned long) geteuid (), (unsigned long) getuid (),
+           flavor, (unsigned long) geteuid (), (unsigned long) getuid (),
            (unsigned long) getegid (), (unsigned long) getgid ());
   fflush (stderr);
 }
@@ -732,14 +546,14 @@ init_access (void)
 #endif
 }
 
-#endif /* GETLOADAVG_PRIVILEGED */
+#endif  /* GETLOADAVG_PRIVILEGED */
 
 /* Give the process appropriate permissions for access to
    user data (i.e., to stat files, or to spawn a child process).  */
 void
 user_access (void)
 {
-#ifdef GETLOADAVG_PRIVILEGED
+#ifdef  GETLOADAVG_PRIVILEGED
 
   if (!access_inited)
     init_access ();
@@ -752,7 +566,7 @@ user_access (void)
      We now want to set the effective user and group IDs to the real IDs,
      which are the IDs of the process that exec'd make.  */
 
-#ifdef HAVE_SETEUID
+#ifdef  HAVE_SETEUID
 
   /* Modern systems have the seteuid/setegid calls which set only the
      effective IDs, which is ideal.  */
@@ -760,9 +574,9 @@ user_access (void)
   if (seteuid (user_uid) < 0)
     pfatal_with_name ("user_access: seteuid");
 
-#else  /* Not HAVE_SETEUID.  */
+#else   /* Not HAVE_SETEUID.  */
 
-#ifndef        HAVE_SETREUID
+#ifndef HAVE_SETREUID
 
   /* System V has only the setuid/setgid calls to set user/group IDs.
      There is an effective ID, which can be set by setuid/setgid.
@@ -775,7 +589,7 @@ user_access (void)
   if (setuid (user_uid) < 0)
     pfatal_with_name ("user_access: setuid");
 
-#else  /* HAVE_SETREUID.  */
+#else   /* HAVE_SETREUID.  */
 
   /* In 4BSD, the setreuid/setregid calls set both the real and effective IDs.
      They may be set to themselves or each other.  So you have two alternatives
@@ -787,14 +601,14 @@ user_access (void)
   if (setreuid (make_uid, user_uid) < 0)
     pfatal_with_name ("user_access: setreuid");
 
-#endif /* Not HAVE_SETREUID.  */
-#endif /* HAVE_SETEUID.  */
+#endif  /* Not HAVE_SETREUID.  */
+#endif  /* HAVE_SETEUID.  */
 
-#ifdef HAVE_SETEGID
+#ifdef  HAVE_SETEGID
   if (setegid (user_gid) < 0)
     pfatal_with_name ("user_access: setegid");
 #else
-#ifndef        HAVE_SETREGID
+#ifndef HAVE_SETREGID
   if (setgid (user_gid) < 0)
     pfatal_with_name ("user_access: setgid");
 #else
@@ -807,7 +621,7 @@ user_access (void)
 
   log_access (_("User access"));
 
-#endif /* GETLOADAVG_PRIVILEGED */
+#endif  /* GETLOADAVG_PRIVILEGED */
 }
 
 /* Give the process appropriate permissions for access to
@@ -815,7 +629,7 @@ user_access (void)
 void
 make_access (void)
 {
-#ifdef GETLOADAVG_PRIVILEGED
+#ifdef  GETLOADAVG_PRIVILEGED
 
   if (!access_inited)
     init_access ();
@@ -825,11 +639,11 @@ make_access (void)
 
   /* See comments in user_access, above.  */
 
-#ifdef HAVE_SETEUID
+#ifdef  HAVE_SETEUID
   if (seteuid (make_uid) < 0)
     pfatal_with_name ("make_access: seteuid");
 #else
-#ifndef        HAVE_SETREUID
+#ifndef HAVE_SETREUID
   if (setuid (make_uid) < 0)
     pfatal_with_name ("make_access: setuid");
 #else
@@ -838,11 +652,11 @@ make_access (void)
 #endif
 #endif
 
-#ifdef HAVE_SETEGID
+#ifdef  HAVE_SETEGID
   if (setegid (make_gid) < 0)
     pfatal_with_name ("make_access: setegid");
 #else
-#ifndef        HAVE_SETREGID
+#ifndef HAVE_SETREGID
   if (setgid (make_gid) < 0)
     pfatal_with_name ("make_access: setgid");
 #else
@@ -855,7 +669,7 @@ make_access (void)
 
   log_access (_("Make access"));
 
-#endif /* GETLOADAVG_PRIVILEGED */
+#endif  /* GETLOADAVG_PRIVILEGED */
 }
 
 /* Give the process appropriate permissions for a child process.
@@ -863,7 +677,7 @@ make_access (void)
 void
 child_access (void)
 {
-#ifdef GETLOADAVG_PRIVILEGED
+#ifdef  GETLOADAVG_PRIVILEGED
 
   if (!access_inited)
     abort ();
@@ -871,7 +685,7 @@ child_access (void)
   /* Set both the real and effective UID and GID to the user's.
      They cannot be changed back to make's.  */
 
-#ifndef        HAVE_SETREUID
+#ifndef HAVE_SETREUID
   if (setuid (user_uid) < 0)
     pfatal_with_name ("child_access: setuid");
 #else
@@ -879,7 +693,7 @@ child_access (void)
     pfatal_with_name ("child_access: setreuid");
 #endif
 
-#ifndef        HAVE_SETREGID
+#ifndef HAVE_SETREGID
   if (setgid (user_gid) < 0)
     pfatal_with_name ("child_access: setgid");
 #else
@@ -889,9 +703,9 @@ child_access (void)
 
   log_access (_("Child access"));
 
-#endif /* GETLOADAVG_PRIVILEGED */
+#endif  /* GETLOADAVG_PRIVILEGED */
 }
-\f
+
 #ifdef NEED_GET_PATH_MAX
 unsigned int
 get_path_max (void)
@@ -902,58 +716,11 @@ get_path_max (void)
     {
       long int x = pathconf ("/", _PC_PATH_MAX);
       if (x > 0)
-       value = x;
+        value = x;
       else
-       return MAXPATHLEN;
+        return MAXPATHLEN;
     }
 
   return value;
 }
 #endif
-\f
-
-/* This code is stolen from gnulib.
-   If/when we abandon the requirement to work with K&R compilers, we can
-   remove this (and perhaps other parts of GNU make!) and migrate to using
-   gnulib directly.
-
-   This is called only through atexit(), which means die() has already been
-   invoked.  So, call exit() here directly.  Apparently that works...?
-*/
-
-/* Close standard output, exiting with status 'exit_failure' on failure.
-   If a program writes *anything* to stdout, that program should close
-   stdout and make sure that it succeeds before exiting.  Otherwise,
-   suppose that you go to the extreme of checking the return status
-   of every function that does an explicit write to stdout.  The last
-   printf can succeed in writing to the internal stream buffer, and yet
-   the fclose(stdout) could still fail (due e.g., to a disk full error)
-   when it tries to write out that buffered data.  Thus, you would be
-   left with an incomplete output file and the offending program would
-   exit successfully.  Even calling fflush is not always sufficient,
-   since some file systems (NFS and CODA) buffer written/flushed data
-   until an actual close call.
-
-   Besides, it's wasteful to check the return value from every call
-   that writes to stdout -- just let the internal stream state record
-   the failure.  That's what the ferror test is checking below.
-
-   It's important to detect such failures and exit nonzero because many
-   tools (most notably `make' and other build-management systems) depend
-   on being able to detect failure in other tools via their exit status.  */
-
-void
-close_stdout (void)
-{
-  int prev_fail = ferror (stdout);
-  int fclose_fail = fclose (stdout);
-
-  if (prev_fail || fclose_fail)
-    {
-      if (fclose_fail)
-        error (NILF, _("write error: %s"), strerror (errno));
-      else
-        error (NILF, _("write error"));
-      exit (EXIT_FAILURE);
-    }
-}
diff --git a/output.c b/output.c
new file mode 100644 (file)
index 0000000..fa757b0
--- /dev/null
+++ b/output.c
@@ -0,0 +1,762 @@
+/* Output to stdout / stderr for GNU make
+Copyright (C) 2013 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 "makeint.h"
+#include "job.h"
+
+/* GNU make no longer supports pre-ANSI89 environments.  */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#else
+# include <sys/file.h>
+#endif
+
+#ifdef WINDOWS32
+# include <windows.h>
+# include <io.h>
+# include "sub_proc.h"
+#endif /* WINDOWS32 */
+
+struct output *output_context = NULL;
+unsigned int stdio_traced = 0;
+
+#define OUTPUT_NONE (-1)
+
+#define OUTPUT_ISSET(_out) ((_out)->out >= 0 || (_out)->err >= 0)
+
+#ifdef HAVE_FCNTL
+# define STREAM_OK(_s)    ((fcntl (fileno (_s), F_GETFD) != -1) || (errno != EBADF))
+#else
+# define STREAM_OK(_s)    1
+#endif
+
+/* I really want to move to gnulib.  However, this is a big undertaking
+   especially for non-UNIX platforms: how to get bootstrapping to work, etc.
+   I don't want to take the time to do it right now.  Use a hack to get a
+   useful version of vsnprintf() for Windows.  */
+#ifdef __VMS
+# define va_copy(_d, _s) ((_d) = (_s))
+#endif
+#ifdef _MSC_VER
+# define va_copy(_d, _s) ((_d) = (_s))
+# define snprintf msc_vsnprintf
+static int
+msc_vsnprintf (char *str, size_t size, const char *format, va_list ap)
+{
+  int len = -1;
+
+  if (size > 0)
+    len = _vsnprintf_s (str, size, _TRUNCATE, format, ap);
+  if (len == -1)
+    len = _vscprintf (format, ap);
+
+  return len;
+}
+#endif
+
+/* Write a string to the current STDOUT or STDERR.  */
+static void
+_outputs (struct output *out, int is_err, const char *msg)
+{
+  if (! out || ! out->syncout)
+    {
+      FILE *f = is_err ? stderr : stdout;
+      fputs (msg, f);
+      fflush (f);
+    }
+  else
+    {
+      int fd = is_err ? out->err : out->out;
+      int len = strlen (msg);
+      int r;
+
+      EINTRLOOP (r, lseek (fd, 0, SEEK_END));
+      while (1)
+        {
+          EINTRLOOP (r, write (fd, msg, len));
+          if (r == len || r <= 0)
+            break;
+          len -= r;
+          msg += r;
+        }
+    }
+}
+\f
+/* Write a message indicating that we've just entered or
+   left (according to ENTERING) the current directory.  */
+
+static int
+log_working_directory (int entering)
+{
+  static char *buf = NULL;
+  static unsigned int len = 0;
+  unsigned int need;
+  const char *fmt;
+  char *p;
+
+  /* Get enough space for the longest possible output.  */
+  need = strlen (program) + INTEGER_LENGTH + 2 + 1;
+  if (starting_directory)
+    need += strlen (starting_directory);
+
+  /* Use entire sentences to give the translators a fighting chance.  */
+  if (makelevel == 0)
+    if (starting_directory == 0)
+      if (entering)
+        fmt = _("%s: Entering an unknown directory\n");
+      else
+        fmt = _("%s: Leaving an unknown directory\n");
+    else
+      if (entering)
+        fmt = _("%s: Entering directory '%s'\n");
+      else
+        fmt = _("%s: Leaving directory '%s'\n");
+  else
+    if (starting_directory == 0)
+      if (entering)
+        fmt = _("%s[%u]: Entering an unknown directory\n");
+      else
+        fmt = _("%s[%u]: Leaving an unknown directory\n");
+    else
+      if (entering)
+        fmt = _("%s[%u]: Entering directory '%s'\n");
+      else
+        fmt = _("%s[%u]: Leaving directory '%s'\n");
+
+  need += strlen (fmt);
+
+  if (need > len)
+    {
+      buf = xrealloc (buf, need);
+      len = need;
+    }
+
+  p = buf;
+  if (print_data_base_flag)
+    {
+      *(p++) = '#';
+      *(p++) = ' ';
+    }
+
+  if (makelevel == 0)
+    if (starting_directory == 0)
+      sprintf (p, fmt , program);
+    else
+      sprintf (p, fmt, program, starting_directory);
+  else if (starting_directory == 0)
+    sprintf (p, fmt, program, makelevel);
+  else
+    sprintf (p, fmt, program, makelevel, starting_directory);
+
+  _outputs (NULL, 0, buf);
+
+  return 1;
+}
+
+/* Set a file descriptor to be in O_APPEND mode.
+   If it fails, just ignore it.  */
+
+static void
+set_append_mode (int fd)
+{
+#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND)
+  int flags = fcntl (fd, F_GETFL, 0);
+  if (flags >= 0)
+    fcntl (fd, F_SETFL, flags | O_APPEND);
+#endif
+}
+\f
+
+#ifndef NO_OUTPUT_SYNC
+
+/* Semaphore for use in -j mode with output_sync. */
+static sync_handle_t sync_handle = -1;
+
+#define FD_NOT_EMPTY(_f) ((_f) != OUTPUT_NONE && lseek ((_f), 0, SEEK_END) > 0)
+
+/* Set up the sync handle.  Disables output_sync on error.  */
+static int
+sync_init ()
+{
+  int combined_output = 0;
+
+#ifdef WINDOWS32
+  if ((!STREAM_OK (stdout) && !STREAM_OK (stderr))
+      || (sync_handle = create_mutex ()) == -1)
+    {
+      perror_with_name ("output-sync suppressed: ", "stderr");
+      output_sync = 0;
+    }
+  else
+    {
+      combined_output = same_stream (stdout, stderr);
+      prepare_mutex_handle_string (sync_handle);
+    }
+
+#else
+  if (STREAM_OK (stdout))
+    {
+      struct stat stbuf_o, stbuf_e;
+
+      sync_handle = fileno (stdout);
+      combined_output = (fstat (fileno (stdout), &stbuf_o) == 0
+                         && fstat (fileno (stderr), &stbuf_e) == 0
+                         && stbuf_o.st_dev == stbuf_e.st_dev
+                         && stbuf_o.st_ino == stbuf_e.st_ino);
+    }
+  else if (STREAM_OK (stderr))
+    sync_handle = fileno (stderr);
+  else
+    {
+      perror_with_name ("output-sync suppressed: ", "stderr");
+      output_sync = 0;
+    }
+#endif
+
+  return combined_output;
+}
+
+/* Support routine for output_sync() */
+static void
+pump_from_tmp (int from, FILE *to)
+{
+  static char buffer[8192];
+
+#ifdef WINDOWS32
+  int prev_mode;
+
+  /* "from" is opened by open_tmpfd, which does it in binary mode, so
+     we need the mode of "to" to match that.  */
+  prev_mode = _setmode (fileno (to), _O_BINARY);
+#endif
+
+  if (lseek (from, 0, SEEK_SET) == -1)
+    perror ("lseek()");
+
+  while (1)
+    {
+      int len;
+      EINTRLOOP (len, read (from, buffer, sizeof (buffer)));
+      if (len < 0)
+        perror ("read()");
+      if (len <= 0)
+        break;
+      if (fwrite (buffer, len, 1, to) < 1)
+        perror ("fwrite()");
+    }
+
+#ifdef WINDOWS32
+  /* Switch "to" back to its original mode, so that log messages by
+     Make have the same EOL format as without --output-sync.  */
+  _setmode (fileno (to), prev_mode);
+#endif
+}
+
+/* Obtain the lock for writing output.  */
+static void *
+acquire_semaphore (void)
+{
+  static struct flock fl;
+
+  fl.l_type = F_WRLCK;
+  fl.l_whence = SEEK_SET;
+  fl.l_start = 0;
+  fl.l_len = 1;
+  if (fcntl (sync_handle, F_SETLKW, &fl) != -1)
+    return &fl;
+  perror ("fcntl()");
+  return NULL;
+}
+
+/* Release the lock for writing output.  */
+static void
+release_semaphore (void *sem)
+{
+  struct flock *flp = (struct flock *)sem;
+  flp->l_type = F_UNLCK;
+  if (fcntl (sync_handle, F_SETLKW, flp) == -1)
+    perror ("fcntl()");
+}
+
+/* Returns a file descriptor to a temporary file.  The file is automatically
+   closed/deleted on exit.  Don't use a FILE* stream.  */
+int
+output_tmpfd ()
+{
+  int fd = -1;
+  FILE *tfile = tmpfile ();
+
+  if (! tfile)
+    pfatal_with_name ("tmpfile");
+
+  /* Create a duplicate so we can close the stream.  */
+  fd = dup (fileno (tfile));
+  if (fd < 0)
+    pfatal_with_name ("dup");
+
+  fclose (tfile);
+
+  set_append_mode (fd);
+
+  return fd;
+}
+
+/* Adds file descriptors to the child structure to support output_sync; one
+   for stdout and one for stderr as long as they are open.  If stdout and
+   stderr share a device they can share a temp file too.
+   Will reset output_sync on error.  */
+static void
+setup_tmpfile (struct output *out)
+{
+  /* Is make's stdout going to the same place as stderr?  */
+  static int combined_output = -1;
+
+  if (combined_output < 0)
+    combined_output = sync_init ();
+
+  if (STREAM_OK (stdout))
+    {
+      int fd = output_tmpfd ();
+      if (fd < 0)
+        goto error;
+      CLOSE_ON_EXEC (fd);
+      out->out = fd;
+    }
+
+  if (STREAM_OK (stderr))
+    {
+      if (out->out != OUTPUT_NONE && combined_output)
+        out->err = out->out;
+      else
+        {
+          int fd = output_tmpfd ();
+          if (fd < 0)
+            goto error;
+          CLOSE_ON_EXEC (fd);
+          out->err = fd;
+        }
+    }
+
+  return;
+
+  /* If we failed to create a temp file, disable output sync going forward.  */
+ error:
+  output_close (out);
+  output_sync = 0;
+}
+
+/* Synchronize the output of jobs in -j mode to keep the results of
+   each job together. This is done by holding the results in temp files,
+   one for stdout and potentially another for stderr, and only releasing
+   them to "real" stdout/stderr when a semaphore can be obtained. */
+
+void
+output_dump (struct output *out)
+{
+  int outfd_not_empty = FD_NOT_EMPTY (out->out);
+  int errfd_not_empty = FD_NOT_EMPTY (out->err);
+
+  if (outfd_not_empty || errfd_not_empty)
+    {
+      int traced = 0;
+
+      /* Try to acquire the semaphore.  If it fails, dump the output
+         unsynchronized; still better than silently discarding it.
+         We want to keep this lock for as little time as possible.  */
+      void *sem = acquire_semaphore ();
+
+      /* Log the working directory for this dump.  */
+      if (print_directory_flag && output_sync != OUTPUT_SYNC_RECURSE)
+        traced = log_working_directory (1);
+
+      if (outfd_not_empty)
+        pump_from_tmp (out->out, stdout);
+      if (errfd_not_empty && out->err != out->out)
+        pump_from_tmp (out->err, stderr);
+
+      if (traced)
+        log_working_directory (0);
+
+      /* Exit the critical section.  */
+      if (sem)
+        release_semaphore (sem);
+
+      /* Truncate and reset the output, in case we use it again.  */
+      if (out->out != OUTPUT_NONE)
+        {
+          int e;
+          lseek (out->out, 0, SEEK_SET);
+          EINTRLOOP (e, ftruncate (out->out, 0));
+        }
+      if (out->err != OUTPUT_NONE && out->err != out->out)
+        {
+          int e;
+          lseek (out->err, 0, SEEK_SET);
+          EINTRLOOP (e, ftruncate (out->err, 0));
+        }
+    }
+}
+#endif /* NO_OUTPUT_SYNC */
+\f
+
+/* Provide support for temporary files.  */
+
+#ifndef HAVE_STDLIB_H
+# ifdef HAVE_MKSTEMP
+int mkstemp (char *template);
+# else
+char *mktemp (char *template);
+# endif
+#endif
+
+FILE *
+output_tmpfile (char **name, const char *template)
+{
+#ifdef HAVE_FDOPEN
+  int fd;
+#endif
+
+#if defined HAVE_MKSTEMP || defined HAVE_MKTEMP
+# define TEMPLATE_LEN   strlen (template)
+#else
+# define TEMPLATE_LEN   L_tmpnam
+#endif
+  *name = xmalloc (TEMPLATE_LEN + 1);
+  strcpy (*name, template);
+
+#if defined HAVE_MKSTEMP && defined HAVE_FDOPEN
+  /* It's safest to use mkstemp(), if we can.  */
+  fd = mkstemp (*name);
+  if (fd == -1)
+    return 0;
+  return fdopen (fd, "w");
+#else
+# ifdef HAVE_MKTEMP
+  (void) mktemp (*name);
+# else
+  (void) tmpnam (*name);
+# endif
+
+# ifdef HAVE_FDOPEN
+  /* Can't use mkstemp(), but guard against a race condition.  */
+  fd = open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600);
+  if (fd == -1)
+    return 0;
+  return fdopen (fd, "w");
+# else
+  /* Not secure, but what can we do?  */
+  return fopen (*name, "w");
+# endif
+#endif
+}
+\f
+
+/* This code is stolen from gnulib.
+   If/when we abandon the requirement to work with K&R compilers, we can
+   remove this (and perhaps other parts of GNU make!) and migrate to using
+   gnulib directly.
+
+   This is called only through atexit(), which means die() has already been
+   invoked.  So, call exit() here directly.  Apparently that works...?
+*/
+
+/* Close standard output, exiting with status 'exit_failure' on failure.
+   If a program writes *anything* to stdout, that program should close
+   stdout and make sure that it succeeds before exiting.  Otherwise,
+   suppose that you go to the extreme of checking the return status
+   of every function that does an explicit write to stdout.  The last
+   printf can succeed in writing to the internal stream buffer, and yet
+   the fclose(stdout) could still fail (due e.g., to a disk full error)
+   when it tries to write out that buffered data.  Thus, you would be
+   left with an incomplete output file and the offending program would
+   exit successfully.  Even calling fflush is not always sufficient,
+   since some file systems (NFS and CODA) buffer written/flushed data
+   until an actual close call.
+
+   Besides, it's wasteful to check the return value from every call
+   that writes to stdout -- just let the internal stream state record
+   the failure.  That's what the ferror test is checking below.
+
+   It's important to detect such failures and exit nonzero because many
+   tools (most notably 'make' and other build-management systems) depend
+   on being able to detect failure in other tools via their exit status.  */
+
+static void
+close_stdout (void)
+{
+  int prev_fail = ferror (stdout);
+  int fclose_fail = fclose (stdout);
+
+  if (prev_fail || fclose_fail)
+    {
+      if (fclose_fail)
+        error (NILF, _("write error: %s"), strerror (errno));
+      else
+        error (NILF, _("write error"));
+      exit (EXIT_FAILURE);
+    }
+}
+\f
+
+void
+output_init (struct output *out)
+{
+  if (out)
+    {
+      out->out = out->err = OUTPUT_NONE;
+      out->syncout = !!output_sync;
+      return;
+    }
+
+  /* Configure this instance of make.  Be sure stdout is line-buffered.  */
+
+#ifdef HAVE_SETVBUF
+# ifdef SETVBUF_REVERSED
+  setvbuf (stdout, _IOLBF, xmalloc (BUFSIZ), BUFSIZ);
+# else  /* setvbuf not reversed.  */
+  /* Some buggy systems lose if we pass 0 instead of allocating ourselves.  */
+  setvbuf (stdout, 0, _IOLBF, BUFSIZ);
+# endif /* setvbuf reversed.  */
+#elif HAVE_SETLINEBUF
+  setlinebuf (stdout);
+#endif  /* setlinebuf missing.  */
+
+  /* Force stdout/stderr into append mode.  This ensures parallel jobs won't
+     lose output due to overlapping writes.  */
+  set_append_mode (fileno (stdout));
+  set_append_mode (fileno (stderr));
+
+#ifdef HAVE_ATEXIT
+  if (STREAM_OK (stdout))
+    atexit (close_stdout);
+#endif
+}
+
+void
+output_close (struct output *out)
+{
+  if (! out)
+    {
+      if (stdio_traced)
+        log_working_directory (0);
+      return;
+    }
+
+#ifndef NO_OUTPUT_SYNC
+  output_dump (out);
+#endif
+
+  if (out->out >= 0)
+    close (out->out);
+  if (out->err >= 0 && out->err != out->out)
+    close (out->err);
+
+  output_init (out);
+}
+
+/* We're about to generate output: be sure it's set up.  */
+void
+output_start ()
+{
+#ifndef NO_OUTPUT_SYNC
+  /* If we're syncing output make sure the temporary file is set up.  */
+  if (output_context && output_context->syncout)
+    if (! OUTPUT_ISSET(output_context))
+      setup_tmpfile (output_context);
+#endif
+
+  /* If we're not syncing this output per-line or per-target, make sure we emit
+     the "Entering..." message where appropriate.  */
+  if (output_sync == OUTPUT_SYNC_NONE || output_sync == OUTPUT_SYNC_RECURSE)
+    if (! stdio_traced && print_directory_flag)
+      stdio_traced = log_working_directory (1);
+}
+
+void
+outputs (int is_err, const char *msg)
+{
+  if (! msg || *msg == '\0')
+    return;
+
+  output_start ();
+
+  _outputs (output_context, is_err, msg);
+}
+\f
+
+/* Return formatted string buffers.
+   If we move to gnulib we can use vasnprintf() etc. to make this simpler.
+   Note these functions use a static buffer, so each call overwrites the
+   results of the previous call.  */
+
+static struct fmtstring
+  {
+    char *buffer;
+    unsigned int size;
+    unsigned int len;
+  } fmtbuf = { NULL, 0, 0 };
+
+/* Concatenate a formatted string onto the format buffer.  */
+static const char *
+vfmtconcat (const char *fmt, va_list args)
+{
+  va_list vcopy;
+  int tot;
+  int unused = fmtbuf.size - fmtbuf.len;
+
+  va_copy (vcopy, args);
+
+  tot = vsnprintf (&fmtbuf.buffer[fmtbuf.len], unused, fmt, args);
+  assert (tot >= 0);
+
+  if (tot >= unused)
+    {
+      fmtbuf.size += tot * 2;
+      fmtbuf.buffer = xrealloc (fmtbuf.buffer, fmtbuf.size);
+
+      unused = fmtbuf.size - fmtbuf.len;
+      tot = vsnprintf (&fmtbuf.buffer[fmtbuf.len], unused, fmt, vcopy);
+    }
+
+  va_end (vcopy);
+
+  fmtbuf.len += tot;
+
+  return fmtbuf.buffer;
+}
+
+static const char *
+fmtconcat (const char *fmt, ...)
+{
+  const char *p;
+  va_list args;
+
+  va_start (args, fmt);
+  p = vfmtconcat (fmt, args);
+  va_end (args);
+
+  return p;
+}
+\f
+/* Print a message on stdout.  */
+
+void
+message (int prefix, const char *fmt, ...)
+{
+  va_list args;
+
+  assert (fmt != NULL);
+
+  fmtbuf.len = 0;
+
+  if (prefix)
+    {
+      if (makelevel == 0)
+        fmtconcat ("%s: ", program);
+      else
+        fmtconcat ("%s[%u]: ", program, makelevel);
+    }
+
+  va_start (args, fmt);
+  vfmtconcat (fmt, args);
+  va_end (args);
+
+  fmtconcat ("\n");
+
+  outputs (0, fmtbuf.buffer);
+}
+
+/* Print an error message.  */
+
+void
+error (const gmk_floc *flocp, const char *fmt, ...)
+{
+  va_list args;
+
+  assert (fmt != NULL);
+
+  fmtbuf.len = 0;
+
+  if (flocp && flocp->filenm)
+    fmtconcat ("%s:%lu: ", flocp->filenm, flocp->lineno);
+  else if (makelevel == 0)
+    fmtconcat ("%s: ", program);
+  else
+    fmtconcat ("%s[%u]: ", program, makelevel);
+
+  va_start (args, fmt);
+  vfmtconcat (fmt, args);
+  va_end (args);
+
+  fmtconcat ("\n");
+
+  outputs (1, fmtbuf.buffer);
+}
+
+/* Print an error message and exit.  */
+
+void
+fatal (const gmk_floc *flocp, const char *fmt, ...)
+{
+  va_list args;
+
+  assert (fmt != NULL);
+
+  fmtbuf.len = 0;
+
+  if (flocp && flocp->filenm)
+    fmtconcat ("%s:%lu: *** ", flocp->filenm, flocp->lineno);
+  else if (makelevel == 0)
+    fmtconcat ("%s: *** ", program);
+  else
+    fmtconcat ("%s[%u]: *** ", program, makelevel);
+
+  va_start (args, fmt);
+  vfmtconcat (fmt, args);
+  va_end (args);
+
+  fmtconcat (_(".  Stop.\n"));
+  outputs (1, fmtbuf.buffer);
+
+  die (2);
+}
+
+/* Print an error message from errno.  */
+
+void
+perror_with_name (const char *str, const char *name)
+{
+  error (NILF, _("%s%s: %s"), str, name, strerror (errno));
+}
+
+/* Print an error message from errno and exit.  */
+
+void
+pfatal_with_name (const char *name)
+{
+  fatal (NILF, _("%s: %s"), name, strerror (errno));
+
+  /* NOTREACHED */
+}
diff --git a/output.h b/output.h
new file mode 100644 (file)
index 0000000..e0d5daa
--- /dev/null
+++ b/output.h
@@ -0,0 +1,51 @@
+/* Output to stdout / stderr for GNU make
+Copyright (C) 2013 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/>.  */
+
+struct output
+  {
+    int out;
+    int err;
+    unsigned int syncout:1;     /* True if we want to synchronize output.  */
+ };
+
+extern struct output *output_context;
+extern unsigned int stdio_traced;
+
+#define OUTPUT_SET(_new)    do{ output_context = (_new)->syncout ? (_new) : NULL; }while(0)
+#define OUTPUT_UNSET()      do{ output_context = NULL; }while(0)
+
+#define OUTPUT_TRACED()     do{ stdio_traced = 1; }while(0)
+#define OUTPUT_IS_TRACED()  (!!stdio_traced)
+
+FILE *output_tmpfile (char **, const char *);
+
+/* Initialize and close a child output structure: if NULL do this program's
+   output (this should only be done once).  */
+void output_init (struct output *out);
+void output_close (struct output *out);
+
+/* In situations where output may be about to be displayed but we're not
+   sure if we've set it up yet, call this.  */
+void output_start (void);
+
+/* Show a message on stdout or stderr.  Will start the output if needed.  */
+void outputs (int is_err, const char *msg);
+
+#ifndef NO_OUTPUT_SYNC
+int output_tmpfd (void);
+/* Dump any child output content to stdout, and reset it.  */
+void output_dump (struct output *out);
+#endif
index dbc21b4..cd7de0c 100644 (file)
@@ -1,3 +1,15 @@
+2013-01-06  Paul Smith  <psmith@gnu.org>
+
+       * POTFILES.in: Add new load.c file.
+
+2012-01-12  Paul Smith  <psmith@gnu.org>
+
+       * POTFILES.in: Add new guile.c file.
+
+2011-09-26  Paul Smith  <psmith@gnu.org>
+
+       * LINGUAS: Added new translation file for Czech (cs).
+
 2009-09-16  Paul Smith  <psmith@gnu.org>
 
        * LINGUAS: Added new translation for Italian (it).
@@ -65,8 +77,7 @@
 
        * POTFILES.in, LINGUAS, Makevars: Created.
 \f
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
-Foundation, Inc.
+Copyright (C) 2002-2013 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
index 6774713..d9ba7f4 100644 (file)
@@ -1,5 +1,5 @@
-# Set of available languages: 24 languages
+# Set of available languages: 25 languages
 
-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
+be cs 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 53efc5e..83d8838 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
 #
 # This file can be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU General Public
@@ -8,10 +8,12 @@
 # Please note that the actual code of GNU gettext is covered by the GNU
 # General Public License and is *not* in the public domain.
 #
-# Origin: gettext-0.14
+# Origin: gettext-0.18
+GETTEXT_MACRO_VERSION = 0.18
 
 PACKAGE = @PACKAGE@
 VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 
 SHELL = /bin/sh
 @SET_MAKE@
@@ -22,18 +24,38 @@ VPATH = @srcdir@
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
 datadir = @datadir@
-localedir = $(datadir)/locale
+localedir = @localedir@
 gettextsrcdir = $(datadir)/gettext/po
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
 
-GMSGFMT = @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = @XGETTEXT@
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
 MSGMERGE = msgmerge
 MSGMERGE_UPDATE = @MSGMERGE@ --update
 MSGINIT = msginit
@@ -46,7 +68,7 @@ UPDATEPOFILES = @UPDATEPOFILES@
 DUMMYPOFILES = @DUMMYPOFILES@
 DISTFILES.common = Makefile.in.in remove-potcdate.sin \
 $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
 $(POFILES) $(GMOFILES) \
 $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
 
@@ -66,19 +88,32 @@ CATALOGS = @CATALOGS@
 .po.gmo:
        @lang=`echo $* | sed -e 's,.*/,,'`; \
        test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
-       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
 
 .sin.sed:
        sed -e '/^#/d' $< > t-$@
        mv t-$@ $@
 
 
-all: all-@USE_NLS@
+all: check-macro-version all-@USE_NLS@
 
 all-yes: stamp-po
 all-no:
 
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+         || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+              exit 1; \
+            }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
 # stamp-po is a timestamp denoting the last time at which the CATALOGS have
 # been loosely updated. Its purpose is that when a developer or translator
 # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
@@ -88,10 +123,13 @@ all-no:
 # $(POFILES) has been designed to not touch files that don't need to be
 # changed.
 stamp-po: $(srcdir)/$(DOMAIN).pot
-       test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
-       @echo "touch stamp-po"
-       @echo timestamp > stamp-poT
-       @mv stamp-poT stamp-po
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
 
 # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
 # otherwise packages like GCC can not be built if only parts of the source
@@ -100,11 +138,34 @@ stamp-po: $(srcdir)/$(DOMAIN).pot
 # This target rebuilds $(DOMAIN).pot; it is an expensive operation.
 # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
 $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
-       $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-         --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
-         --files-from=$(srcdir)/POTFILES.in \
-         --copyright-holder='$(COPYRIGHT_HOLDER)' \
-         --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
+       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+         package_gnu='GNU '; \
+       else \
+         package_gnu=''; \
+       fi; \
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+         *) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --package-name="$${package_gnu}@PACKAGE@" \
+             --package-version='@VERSION@' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+       esac
        test ! -f $(DOMAIN).po || { \
          if test -f $(srcdir)/$(DOMAIN).pot; then \
            sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
@@ -132,8 +193,15 @@ $(POFILES): $(srcdir)/$(DOMAIN).pot
        @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
        if test -f "$(srcdir)/$${lang}.po"; then \
          test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-         echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
-         cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) \
+           && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+                  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+                  *) \
+                    $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+                esac; \
+              }; \
        else \
          $(MAKE) $${lang}.po-create; \
        fi
@@ -143,7 +211,7 @@ install: install-exec install-data
 install-exec:
 install-data: install-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
          for file in $(DISTFILES.common) Makevars.template; do \
            $(INSTALL_DATA) $(srcdir)/$$file \
                            $(DESTDIR)$(gettextsrcdir)/$$file; \
@@ -156,13 +224,12 @@ install-data: install-data-@USE_NLS@
        fi
 install-data-no: all
 install-data-yes: all
-       $(mkinstalldirs) $(DESTDIR)$(datadir)
        @catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkinstalldirs) $(DESTDIR)$$dir; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
          if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
          $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
          echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
@@ -202,19 +269,18 @@ installdirs: installdirs-exec installdirs-data
 installdirs-exec:
 installdirs-data: installdirs-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
        else \
          : ; \
        fi
 installdirs-data-no:
 installdirs-data-yes:
-       $(mkinstalldirs) $(DESTDIR)$(datadir)
        @catalogs='$(CATALOGS)'; \
        for cat in $$catalogs; do \
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkinstalldirs) $(DESTDIR)$$dir; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
          for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
            if test -n "$$lc"; then \
              if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
@@ -289,11 +355,14 @@ dist distdir:
        $(MAKE) update-po
        @$(MAKE) dist2
 # This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
+dist2: stamp-po $(DISTFILES)
        dists="$(DISTFILES)"; \
        if test "$(PACKAGE)" = "gettext-tools"; then \
          dists="$$dists Makevars.template"; \
        fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
        if test -f $(srcdir)/ChangeLog; then \
          dists="$$dists ChangeLog"; \
        fi; \
@@ -305,9 +374,9 @@ dist2: $(DISTFILES)
        if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
        for file in $$dists; do \
          if test -f $$file; then \
-           cp -p $$file $(distdir); \
+           cp -p $$file $(distdir) || exit 1; \
          else \
-           cp -p $(srcdir)/$$file $(distdir); \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
          fi; \
        done
 
@@ -331,9 +400,15 @@ update-po: Makefile
        tmpdir=`pwd`; \
        echo "$$lang:"; \
        test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
        cd $(srcdir); \
-       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+       if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+              '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+                $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+              *) \
+                $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+            esac; \
+          }; then \
          if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
            rm -f $$tmpdir/$$lang.new.po; \
          else \
@@ -354,10 +429,13 @@ $(DUMMYPOFILES):
 update-gmo: Makefile $(GMOFILES)
        @:
 
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
        cd $(top_builddir) \
-         && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
-              $(SHELL) ./config.status
+         && @SHELL@ ./config.status $(subdir)/$@.in po-directories
 
 force:
 
index 2103ce8..900e794 100644 (file)
@@ -1,6 +1,5 @@
 # This is a -*-Makefile-*-
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-# Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
index 05208bb..ba156ee 100644 (file)
@@ -1,6 +1,5 @@
 # List of source files containing translatable strings.
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-# 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2013 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
@@ -24,11 +23,15 @@ expand.c
 file.c
 function.c
 getopt.c
+guile.c
 hash.c
 implicit.c
 job.c
+job.h
+load.c
 main.c
 misc.c
+output.c
 read.c
 remake.c
 remote-cstms.c
index 9c2a995..af52487 100644 (file)
@@ -20,7 +20,7 @@ en@boldquot.po-update: en@boldquot.po-update-en
        ll=`echo $$lang | sed -e 's/@.*//'`; \
        LC_ALL=C; export LC_ALL; \
        cd $(srcdir); \
-       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
          if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
            rm -f $$tmpdir/$$lang.new.po; \
          else \
index f5a4512..93a72bc 100644 (file)
Binary files a/po/be.gmo and b/po/be.gmo differ
index 3b94b02..c296783 100644 (file)
--- a/po/be.po
+++ b/po/be.po
@@ -6,117 +6,123 @@ msgid ""
 msgstr ""
 "Project-Id-Version: make 3.80\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: be\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"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "спроба выкарыстаць непадтрымліваемую мажлівасьць: \"%s\""
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "дакрананьне да ўдзельніку архіва недаступна на VMS"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: архіў \"%s\" ня йснуе"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: \"%s\" - гэта не рэчаісны архіў"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: удзельнік \"%s\" ня йснуе ў \"%s\""
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr ""
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr ""
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (назва мусіла быць абрэзана)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Дата %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, рэжым = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Выдаляецца файл \"%s\""
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Выдаляецца файл \"%s\""
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  загады для выкананьня"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (убудаваны):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (з\"%s\", радок %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,221 +130,221 @@ msgstr ""
 "\n"
 "# Тэчкі\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr ""
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Не"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " файлаў, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "не"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr ""
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " так далёка."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr ""
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr ""
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr ""
 
-#: file.c:267
-#, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr ""
-
-#: file.c:272
+#: file.c:269
 #, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr ""
 
-#: file.c:275
+#: file.c:274
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr ""
 
-#: file.c:278
+#: file.c:277
 #, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr ""
 
-#: file.c:298
+#: file.c:280
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr ""
 
-#: file.c:303
+#: file.c:300
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
 
-#: file.c:392
+#: file.c:305
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
 
 #: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Выдаляецца файл \"%s\""
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Выдаляюцца прамежкавыя файлы...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: адбітак часу па-за дапушчальнымі межамі, падстаўляецца %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Бягучы час"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Ня мэта:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr ""
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr ""
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "загадны радок"
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr ""
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr ""
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr ""
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr ""
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr ""
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Так сама робяцца:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Час зьмяненьня ніколі не правяраўся."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Файл ня йснуе."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Файл вельмі стары."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Апошняе зьмяненьне %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Файл быў абноўлены."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Файл ня быў абноўлены."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Пасьпяхова абноўлены."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr ""
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr ""
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
 msgstr ""
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr ""
-
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -346,124 +352,178 @@ msgstr ""
 "\n"
 "# Файлы"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
 msgstr ""
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
 msgstr ""
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
 msgstr ""
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr ""
 
-#: function.c:1458
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr ""
+
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
 
-#: function.c:1474
+#: function.c:1490
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "памылка ў CreatePipe() (e=%d)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr ""
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "Ня зроблена для гэтае плятформы: функцыя \"%s\""
 
-#: function.c:2212
+#: function.c:2354
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr ""
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+msgid "Invalid function name: %s\n"
 msgstr ""
 
-#: getopt.c:661
+#: function.c:2550
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: выбар \"%s\" - неадназначы.\n"
+msgid "Function name too long: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2552
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: выбар \"--%s\" не дазваляе довад.\n"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr ""
 
-#: getopt.c:690
+#: function.c:2555
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr ""
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: выбар \"%s\" - неадназначы.\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: выбар \"--%s\" не дазваляе довад.\n"
+
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: выбар \"%c%s\" не дазваляе довад.\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: выбар \"%s\" патрабуе довад.\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: нераспазнаны выбар \"--%s\".\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: нераспазнаны выбар \"%c%s\".\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: недапушчальны выбар -- %c.\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: нерэчаісны выбар -- %c.\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: выбар патрабуе довад -- %c.\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: выбар \"-W %s\" - неадназначын.\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: выбар \"-W %s\" не дазваляе довад.\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -484,348 +544,431 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr ""
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr ""
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
 msgstr ""
 
-#: implicit.c:674
+#: implicit.c:491
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr ""
 
-#: implicit.c:675
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:688
+#: implicit.c:698
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:689
+#: implicit.c:711
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:728
+#: implicit.c:712
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:742
+#: implicit.c:751
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr ""
 
-#: job.c:335
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Выдаляюцца прамежкавыя файлы...\n"
+
+#: job.c:361
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (часовы файл)"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
+#: job.c:482
+msgid " (core dumped)"
 msgstr ""
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Памылка 0x%x"
+#: job.c:487
+msgid " (ignored)"
+msgstr ""
+
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (убудаваны):"
 
-#: job.c:454
+#: job.c:501
 #, c-format
-msgid "[%s] Error %d (ignored)"
+msgid "%s: recipe for target '%s' failed"
 msgstr ""
 
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Памылка 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Памылка %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr ""
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Чакаюцца незавершаныя працы...."
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr ""
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr ""
 
-#: job.c:861
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr ""
+
+#: job.c:949
 #, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr ""
 
-#: job.c:920
-msgid "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
 msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr ""
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ""
 
-#: job.c:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: архіў \"%s\" ня йснуе"
 
-#: job.c:1802
-#, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr ""
+#: job.c:2005
+#, fuzzy, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr ""
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: загад не адшуканы"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr ""
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Выбары:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 "  -h, --help                  Друкуе гэтае паведамленьне й выходзіць.\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base        Друкуе нутраную базу даньняў make.\n"
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet        Не адлюстроўваць загады.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -833,52 +976,67 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                               Выключае -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+"  -h, --help                  Друкуе гэтае паведамленьне й выходзіць.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory        Друкуе бягучую тэчку.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "пусты радок нерэчаісны ў якасьці назвы файла"
 
-#: main.c:650
+#: main.c:734
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr ""
+
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
+msgid "unknown output-sync type '%s'"
 msgstr ""
 
-#: main.c:690
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr ""
+
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -888,158 +1046,179 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:834
+#: main.c:1008
 #, c-format
 msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s спынена на 30 сэкундаў..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr ""
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile са стандартнага ўводу зададзены двойчы."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (часовы файл)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (часовы файл)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме."
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr ""
 
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
 msgstr ""
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
 msgstr ""
 
-#: main.c:1727
+#: main.c:1551
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr ""
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile са стандартнага ўводу зададзены двойчы."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (часовы файл)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (часовы файл)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr ""
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "ствараецца трубаправод прац"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Абнаўляюцца make-файлы....\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
+msgid "Failed to remake makefile '%s'."
 msgstr ""
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
-msgstr ""
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Makefile \"%s\" ня знойдзен"
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Makefile \"%s\" ня знойдзен"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr ""
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr ""
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (часовы файл): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr ""
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Няма мэт"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1048,7 +1227,7 @@ msgstr ""
 "\n"
 "Гэта праграма пабудавана для %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1057,36 +1236,36 @@ msgstr ""
 "\n"
 "Гэта праграма падубавана для %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Паведамляйце пра памылкі на <bug-make@gnu.org>.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "Гэта праграма пабудавана для %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "Гэта праграма падубавана для %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1095,121 +1274,121 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Невядомая памылка %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "віртуальная памяць вычарпана"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: карыстальнік %lu (насамрэч %lu), група %lu (насамрэч %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr ""
+
+#: misc.c:622
+msgid "User access"
+msgstr ""
+
+#: misc.c:670
+msgid "Make access"
+msgstr ""
+
+#: misc.c:704
+msgid "Child access"
+msgstr ""
+
+#: output.c:128
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: уваход у невядомую тэчку"
 
-#: main.c:3239
+#: output.c:130
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: выхад зь невядомае тэчкі"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: уваход у тэчку \"%s\"\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: выхад з тэчкі \"%s\"\n"
 
-#: main.c:3250
+#: output.c:139
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: уваход у невядомую тэчку"
 
-#: main.c:3253
+#: output.c:141
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: выхад зь невядомае тэчкі"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: уваход у тэчку \"%s\"\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: выхад з тэчкі \"%s\"\n"
 
-#: misc.c:316
-msgid ".  Stop.\n"
+#: output.c:515
+#, c-format
+msgid "write error: %s"
 msgstr ""
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Невядомая памылка %d"
+#: output.c:517
+#, fuzzy
+msgid "write error"
+msgstr "Памылка шыны"
+
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ""
 
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "віртуальная памяць вычарпана"
-
-#: 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: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 ""
-
-#: misc.c:956
-#, fuzzy
-msgid "write error"
-msgstr "Памылка шыны"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Чытаюцца make-файлы...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Чытаецца make-файл \"%s\""
 
 #: read.c:335
@@ -1232,572 +1411,606 @@ msgstr ""
 msgid " (no ~ expansion)"
 msgstr ""
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr ""
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr ""
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "прапушчана правіла перад загадамі"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "прапушчан падзяляльнік %s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (вы маеце на ўвазе TAB замест 8 прагалаў?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr ""
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr ""
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
+msgid "target pattern contains no '%%'"
 msgstr ""
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "прапушчаны \"endif\""
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr ""
 
-#: read.c:1367
-msgid "extraneous text after `define' directive"
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
 msgstr ""
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "прапушчаны \"endef\", незавершаны \"define\""
 
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
 msgstr ""
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
+msgid "extraneous text after '%s' directive"
 msgstr ""
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "зьнешні \"%s\""
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+msgid "only one 'else' per conditional"
 msgstr ""
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
+msgid "target '%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
+msgid "target file '%s' has both : and :: entries"
 msgstr ""
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
+msgid "target '%s' given more than once in the same rule"
 msgstr ""
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr ""
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr ""
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Нічога ня было зроблена для \"%s\"."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "\"%s\" - састарэл(а)."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
-msgstr ""
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Усё яшэ абнаўляецца файл \"%s\".\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
+msgid "Considering target file '%s'.\n"
 msgstr ""
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr ""
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Файл \"%s\" ужо быў разгледжаны.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Усё яшэ абнаўляецца файл \"%s\".\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Скончана абнаўленьне файла \"%s\".\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Файл \"%s\" ня йснуе.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
+msgid "Found an implicit rule for '%s'.\n"
 msgstr ""
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
+msgid "No implicit rule found for '%s'.\n"
 msgstr ""
 
 #: remake.c:502
-#, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Нічога ня было зроблена для \"%s\"."
-
-#: remake.c:535 remake.c:1057
 #, c-format
-msgid "Circular %s <- %s dependency dropped."
+msgid "Using default recipe for '%s'.\n"
 msgstr ""
 
-#: remake.c:651
+#: remake.c:535 remake.c:1067
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr ""
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Скончана абнаўленьне файла \"%s\".\n"
 
-#: remake.c:670
+#: remake.c:661
 #, c-format
-msgid "Giving up on target file `%s'.\n"
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr ""
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr ""
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Скончана абнаўленьне файла \"%s\".\n"
 
-#: remake.c:727
+#: remake.c:679
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgid "Target '%s' not remade because of errors."
 msgstr ""
 
-#: remake.c:732
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr ""
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr ""
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Файл \"%s\" ня йснуе.\n"
 
-#: remake.c:740
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr ""
 
-#: remake.c:758
+#: remake.c:744
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:762
 #, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:770
+#: remake.c:769
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:778
+#: remake.c:774
 #, c-format
-msgid "No need to remake target `%s'"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
-msgstr ""
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
+msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s"
 
-#: remake.c:800
+#: remake.c:784
 #, c-format
-msgid "Must remake target `%s'.\n"
+msgid "; using VPATH name '%s'"
 msgstr ""
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr ""
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s"
 
-#: remake.c:815
+#: remake.c:810
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr ""
 
-#: remake.c:822
+#: remake.c:819
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr ""
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr ""
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "%sНяма правіла каб зрабіць мэту \"%s\"%s"
 
-#: remake.c:828
+#: remake.c:829
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+msgid "Successfully remade target file '%s'.\n"
 msgstr ""
 
-#: remake.c:1024
+#: remake.c:832
 #, c-format
-msgid "Using default commands for `%s'.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr ""
 
-#: remake.c:1357
-#, c-format
-msgid "Warning: File `%s' has modification time in the future"
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Невядомы ўбудаваны загад \"%s\".\n"
+
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "Увага! Файл \"%s\" мае час зьмяненьня, які шчэ не надышоў."
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "Увага! Файл \"%s\" мае час зьмяненьня %.2g с, які шчэ не надышоў."
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ""
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " тэрмінал."
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "невядомы сыгнал"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr ""
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr ""
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Недапушчальная інструкцыя"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr ""
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr ""
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr ""
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Забіты"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Памылка шыны"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr ""
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Дрэнны сыстэмны выклік"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Зламаны трубаправод"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr ""
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Завершаны"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr ""
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr ""
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr ""
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr ""
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Спынен"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Спынен (tty увод)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Спынен (вывад на tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Спынена (сыгнал)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr ""
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr ""
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Акно зьменена"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr ""
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "магчым У/В"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr ""
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr ""
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr ""
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Сыгнал пагрозы"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Запыт аб зьвестках"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: strcache.c:235
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+
+#: strcache.c:266
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "аўтаматычна"
+
+#: variable.c:1610
 msgid "default"
 msgstr "дапомны"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "асяродзьдзе"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "make-файл"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "загадны радок"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "дырэктыва \"override\""
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "аўтаматычна"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (з \"%s\", радок %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1805,137 +2018,138 @@ msgstr ""
 "\n"
 "# Пераменныя\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "Увага! Нявызначаная пераменная \"%.*s\""
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr ""
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
+msgid "internal error: '%s' command_state"
 msgstr ""
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Невядомы ўбудаваны загад \"%s\".\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Памылка! Парожні загад.\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Перанакіраваны ўвод з %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr ""
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Перанакіраваны вывад у %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Перанакіраваны вывад у %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr ""
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr ""
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr ""
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr " (пошук шляху)"
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644 (file)
index 0000000..babe63b
Binary files /dev/null and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..c679df9
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,2301 @@
+# Czech translation of make.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Petr Pisar <petr.pisar@atlas.cz>, 2011, 2013.
+#
+# directive → klíčové slovo (nepřekládat jako příkaz kvůli záměně)
+# hash → haš (zapisovat česky)
+# chain → řetězec
+# jobserver → správce úloh
+# make (verb) → vyrobit
+# make (substantivum) → (program) make (skloňovat, nelze-li jinak)
+# makefile → makefile (nepřekládat, ale skloňovat)
+# (archive) member → prvek
+# (C structure) member → člen
+# pattern → vzor (nikoliv vzorek)
+# prerequisite → prerekvizita (předpoklad se nehodí jako duální slovo
+#   k target)
+# reap (child) → uklidit potomka
+# recipe → návod
+# target → cíl
+# token → token (nepřekládat)
+#
+# SECONDARY, INTERMEDIATE, PRECIOUS apod. nepřekládat, i když jsou použity
+# jako přívlastek. Jedná se o identifikátory jazyka make.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 3.99.93\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 05:55+0200\n"
+"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ar.c:46
+#, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "pokus použít nepodporovanou vlastnost: „%s“"
+
+#: ar.c:123
+msgid "touch archive member is not available on VMS"
+msgstr "nastavení času změny prvku archivu není na VMS dostupné"
+
+#: ar.c:147
+#, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Archiv „%s“ neexistuje"
+
+#: ar.c:150
+#, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: „%s“ není platným archivem"
+
+#: ar.c:157
+#, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Prvek „%s“ v „%s“ neexistuje"
+
+#: ar.c:164
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: Chybný návratový kód z funkce ar_member_touch volané nad „%s“"
+
+#: arscan.c:67
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr ""
+"funkce lbr$set_module() nedokázala vytáhnout údaje o modulu, status = %d"
+
+#: arscan.c:173
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "funkce lbr$ini_control() selhala se stavem = %d"
+
+#: arscan.c:185
+#, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "není možné otevřít knihovnu „%s“ potřebnou k najití prvku „%s“"
+
+# TODO: Pluralize
+#: arscan.c:847
+#, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Prvek „%s“%s: %'ld bajtů at %ld (%ld).\n"
+
+#: arscan.c:848
+msgid " (name might be truncated)"
+msgstr " (název může být zkrácen)"
+
+#: arscan.c:850
+#, c-format
+msgid "  Date %s"
+msgstr "  Datum %s"
+
+#: arscan.c:851
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr "  UID = %d, GID = %d, práva = 0%o\n"
+
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Návod má příliš mnoho řádků (%ud)"
+
+#: commands.c:507
+msgid "*** Break.\n"
+msgstr "*** Přerušeno.\n"
+
+#: commands.c:630
+#, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Prvek archivu „%s“ je možná chybný, nesmazáno"
+
+#: commands.c:633
+#, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Prvek archivu „%s“ ne možná chybný, nesmazáno"
+
+#: commands.c:646
+#, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Maže se soubor „%s“"
+
+#: commands.c:648
+#, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** Maže se soubor „%s“"
+
+#: commands.c:684
+msgid "#  recipe to execute"
+msgstr "#  spustitelný návod"
+
+#: commands.c:687
+msgid " (built-in):"
+msgstr " (vestavěný):"
+
+#: commands.c:689
+#, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (z „%s“, řádek %lu):\n"
+
+#: dir.c:989
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Adresáře\n"
+
+#: dir.c:1001
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: nebylo možné nad ním zavolat stat().\n"
+
+#: dir.c:1005
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (klíč %s, čas změny obsahu %d): nebylo možné otevřít.\n"
+
+#: dir.c:1009
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): nebylo možné otevřít.\n"
+
+#: dir.c:1014
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (zařízení %ld, iuzel %ld): nebylo možné otevřít.\n"
+
+#: dir.c:1041
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (klíč %s, čas změny obsahu %d): "
+
+#: dir.c:1045
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): "
+
+#: dir.c:1050
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (zařízení %ld, iuzel %ld): "
+
+#: dir.c:1056 dir.c:1077
+msgid "No"
+msgstr "Žádný"
+
+# TODO: Pluralize
+#: dir.c:1059 dir.c:1080
+msgid " files, "
+msgstr " souborů, "
+
+#: dir.c:1061 dir.c:1082
+msgid "no"
+msgstr "žádný "
+
+# TODO: Pluralize
+#: dir.c:1064
+msgid " impossibilities"
+msgstr " nemožností "
+
+#: dir.c:1068
+msgid " so far."
+msgstr " zatím."
+
+# TODO: Pluralize
+#: dir.c:1085
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " nemožností v %lu adresářích.\n"
+
+#: expand.c:125
+#, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Rekurzivní proměnná „%s“ odkazuje na sebe (nakonec)"
+
+#: expand.c:269
+msgid "unterminated variable reference"
+msgstr "neukončený odkaz na proměnnou"
+
+#: file.c:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Návod byl určen pro soubor „%s“ v %s:%lu,"
+
+#: file.c:274
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Návod pro soubor „%s“ byl nalezen hledáním implicitních pravidel,"
+
+#: file.c:277
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "ale „%s“ se nyní považuje za soubor totožný s „%s“."
+
+#: file.c:280
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Návod pro „%s“ bude ignorován ve prospěch návodu pro „%s“."
+
+#: file.c:300
+#, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr ""
+"„%s“ s jednoduchou dvojtečkou nelze přejmenovat na „%s“ s dvojitou dvojtečkou"
+
+#: file.c:305
+#, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr ""
+"„%s“ s dvojitou dvojtečkou nelze přejmenovat na „%s“ s jednoduchou dvojtečkou"
+
+#: file.c:396
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "Maže se mezilehlý soubor „%s“ "
+
+#: file.c:400
+msgid "Removing intermediate files...\n"
+msgstr "Odstraňují se mezilehlé soubory…\n"
+
+#: file.c:808
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Časový údaj mimo rozsah, nahrazuje se %s"
+
+#: file.c:809
+msgid "Current time"
+msgstr "Aktuální čas"
+
+#: file.c:949
+msgid "# Not a target:"
+msgstr "# Není cílem:"
+
+#: file.c:954
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
+msgstr "#  Cenný soubor (prerekvizita k .PRECIOUS)."
+
+#: file.c:956
+msgid "#  Phony target (prerequisite of .PHONY)."
+msgstr "#  Falešný cíl (prerekvizita k .PHONY)."
+
+#: file.c:958
+msgid "#  Command line target."
+msgstr "#  Cíl příkazové řádky."
+
+#: file.c:960
+msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "#  Default, MAKEFILES nebo -include/sinclude makefile."
+
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Vestavěné pravidlo"
+
+#: file.c:964
+msgid "#  Implicit rule search has been done."
+msgstr "#  Hledalo se za pomoci implicitních pravidel."
+
+#: file.c:965
+msgid "#  Implicit rule search has not been done."
+msgstr "#  Nehledalo se za pomoci implicitních pravidel."
+
+#: file.c:967
+#, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Kořen implicitního/statického vzoru: „%s“\n"
+
+#: file.c:969
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  Soubor je mezilehlá prerekvizita."
+
+#: file.c:973
+msgid "#  Also makes:"
+msgstr "#  Rovněž vyrábí:"
+
+#: file.c:979
+msgid "#  Modification time never checked."
+msgstr "#  Čas změny obsahu se nikdy nekontroluje."
+
+#: file.c:981
+msgid "#  File does not exist."
+msgstr "#  Soubor neexistuje."
+
+#: file.c:983
+msgid "#  File is very old."
+msgstr "#  Soubor je velmi starý."
+
+#: file.c:988
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  Obsah naposledy změněn v %s\n"
+
+#: file.c:991
+msgid "#  File has been updated."
+msgstr "#  Soubor byl aktualizován."
+
+#: file.c:991
+msgid "#  File has not been updated."
+msgstr "#  Soubor nebyl aktualizován."
+
+#: file.c:995
+msgid "#  Recipe currently running (THIS IS A BUG)."
+msgstr "#  Návod se právě vykonává (TOTO JE CHYBA)."
+
+#: file.c:998
+msgid "#  Dependencies recipe running (THIS IS A BUG)."
+msgstr "#  Návod pro závislosti se právě vykonává (TOTO JE CHYBA)."
+
+#: file.c:1007
+msgid "#  Successfully updated."
+msgstr "#  Úspěšně aktualizováno."
+
+#: file.c:1011
+msgid "#  Needs to be updated (-q is set)."
+msgstr "#  Je třeba aktualizovat (-q je nastaveno)."
+
+#: file.c:1014
+msgid "#  Failed to be updated."
+msgstr "#  Aktualizace selhala."
+
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Neplatná hodnota v členu „command_state“!"
+
+#: file.c:1038
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Soubory"
+
+#: file.c:1042
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# Statistika hašovací tabulky souborů:\n"
+"# "
+
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Položka „%s“ není v keši: %s"
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "nečíselný první argument funkce „word“"
+
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "první argument funkce „word“ musí být vetší než 0"
+
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "nečíselný první argument funkce „wordlist“"
+
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "nečíselný druhý argument funkce „wordlist“"
+
+#: function.c:1460
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(vstup) selhalo (chyba=%ld)\n"
+
+#: function.c:1483
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+"windows32_openpipe: DuplicateHandle(chybový výstup) selhalo (chyba=%ld)\n"
+
+#: function.c:1490
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() selhalo (chyba=%ld)\n"
+
+#: function.c:1498
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() selhalo\n"
+
+#: function.c:1792
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Dočasný dávkový soubor %s se uklízí\n"
+
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "otevření: %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "zápis: %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Neplatná operace na souboru: %s"
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "nedostatečný počet argumentů (%d) funkce „%s“"
+
+#: function.c:2291
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "na této platformě neimplementováno: funkce „%s“"
+
+#: function.c:2354
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "neukončené volání funkce „%s“: chybí „%c“"
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Neplatná operace na souboru: %s"
+
+#: function.c:2550
+#, c-format
+msgid "Function name too long: %s\n"
+msgstr "Název funkce je příliš dlouhý: %s\n"
+
+#: function.c:2552
+#, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Neplatný minimální počet argumentů (%d) funkce %s\n"
+
+#: function.c:2555
+#, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Neplatný maximální počet argumentů (%d) funkce %s\n"
+
+#: getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: přepínač „%s“ není jednoznačný\n"
+
+#: getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: přepínače „--%s“ nepřipouští argument\n"
+
+#: getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: přepínač „%c%s“ nepřipouští argument\n"
+
+#: getopt.c:705 getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: přepínač „%s“ vyžaduje argument\n"
+
+#: getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: nerozpoznaný přepínač „--%s“\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: nerozpoznaný přepínač „%c%s“\n"
+
+#: getopt.c:764
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: zakázaný přepínač – %c\n"
+
+#: getopt.c:767
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neplatný přepínač – %c\n"
+
+#: getopt.c:797 getopt.c:927
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: přepínač vyžaduje argument – %c\n"
+
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: přepínač „-W %s“ není jednoznačný\n"
+
+#: getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: přepínač „-W %s“ nepřipouští argument\n"
+
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Expanduje se „%s“\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Vyhodnocuje se „%s“\n"
+
+# TODO: Pluralize
+#: hash.c:49
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "nelze alokovat %lu bajtů na hašovací tabulku: paměť vyčerpána"
+
+#: hash.c:280
+#, c-format
+msgid "Load=%ld/%ld=%.0f%%, "
+msgstr "Zátěž = %ld/%ld = %.0f %%, "
+
+#: hash.c:282
+#, c-format
+msgid "Rehash=%d, "
+msgstr "Přehašováno = %d, "
+
+#: hash.c:283
+#, c-format
+msgid "Collisions=%ld/%ld=%.0f%%"
+msgstr "Kolizí = %ld/%ld = %.0f %%"
+
+#: implicit.c:38
+#, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Hledá se implicitní pravidlo pro „%s“.\n"
+
+#: implicit.c:54
+#, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Hledá se implicitní pravidlo prvku archivu pro „%s“.\n"
+
+#: implicit.c:310
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Zabraňuje se rekurzi implicitního pravidla.\n"
+
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Kořen je příliš dlouhý „%.*s“.\n"
+
+#: implicit.c:491
+#, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Zkouší se pravidlo vzoru s kořenem „%.*s“.\n"
+
+#: implicit.c:697
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Zamítá se nemožná prerekvizita pravidla „%s“.\n"
+
+#: implicit.c:698
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Zamítá se nemožná implicitní prerekvizita „%s“.\n"
+
+#: implicit.c:711
+#, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Zkouší se prerekvizita pravidla „%s“.\n"
+
+#: implicit.c:712
+#, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Zkouší se implicitní prerekvizita „%s“.\n"
+
+#: implicit.c:751
+#, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“\n"
+
+#: implicit.c:765
+#, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Hledá se pravidlo s mezilehlým souborem „%s“.\n"
+
+#: job.c:361
+msgid "Cannot create a temporary file\n"
+msgstr "Dočasný soubor nelze vytvořit\n"
+
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (obraz paměti uložen)"
+
+#: job.c:487
+msgid " (ignored)"
+msgstr " (ignorováno)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<vestavěný>"
+
+#: job.c:501
+#, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: návod pro cíl „%s“ selhal"
+
+#: job.c:510
+#, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Chyba 0x%x%s"
+
+#: job.c:513
+#, c-format
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Chyba %d%s"
+
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
+
+#: job.c:609
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Čeká se na nedokončené úlohy…"
+
+#: job.c:639
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Živý potomek %p (%s) PID %s %s\n"
+
+# Continuation of Live child
+#: job.c:641 job.c:831 job.c:950 job.c:1687
+msgid " (remote)"
+msgstr " (vzdálený)"
+
+#: job.c:829
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Uklízí se prohrávající potomek %p PID %s %s\n"
+
+#: job.c:830
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Uklízí se vyhrávající potomek %p PID %s %s\n"
+
+#: job.c:837
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Uklízí se dočasný dávkový soubor %s\n"
+
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Úklid dočasného dávkového souboru %s selhal (%d)\n"
+
+#: job.c:949
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Z řetězce se odstraňuje potomek %p PID %s%s.\n"
+
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "uvolnění semaforu správce úloh: (Chyba %ld: %s)"
+
+#: job.c:1011 job.c:1025
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "Uvolněn token pro potomka %p (%s).\n"
+
+#: job.c:1023
+msgid "write jobserver"
+msgstr "zápis správce úloh"
+
+#: job.c:1612 job.c:2332
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() nedokázala spustit proces (chyba=%ld)\n"
+
+# FIXME: Pluralize
+#: job.c:1616 job.c:2336
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Napočítáno %d argumentů v selhaném spuštění\n"
+
+#: job.c:1685
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Do řetězce se přidává potomek %p (%s) PID %s%s.\n"
+
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "čekání na semafor nebo potomka: (Chyba %ld: %s)"
+
+#: job.c:1967
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Získán token pro potomka %p (%s).\n"
+
+#: job.c:1977
+msgid "read jobs pipe"
+msgstr "čtení z roury úloh"
+
+#: job.c:2003
+#, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "%s: cíl „%s“ neexistuje"
+
+#: job.c:2005
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: aktualizovat cíl „%s“ potřebný pro %s"
+
+#: job.c:2118
+msgid "cannot enforce load limits on this operating system"
+msgstr "na tomto operačním systému nelze vynutit omezení zátěže"
+
+#: job.c:2120
+msgid "cannot enforce load limit: "
+msgstr "omezení zátěže nelze vynutit: "
+
+#: job.c:2199
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat\n"
+
+#: job.c:2210
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat\n"
+
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat\n"
+
+#: job.c:2238
+msgid "Could not restore stdin\n"
+msgstr "Standardní vstup nelze obnovit\n"
+
+#: job.c:2246
+msgid "Could not restore stdout\n"
+msgstr "Standardní výstup nelze obnovit\n"
+
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Chybový výstup nelze obnovit\n"
+
+#: job.c:2365
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make uklidil potomka s PID %s, stále se čeká na PID %s\n"
+
+#: job.c:2403
+#, c-format
+msgid "%s: Command not found"
+msgstr "%s: Příkaz nenalezen"
+
+#: job.c:2463
+#, c-format
+msgid "%s: Shell program not found"
+msgstr "%s: Program shellu nenalezen"
+
+#: job.c:2472
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: možná byl vyčerpán prostor pro prostředí"
+
+#: job.c:2709
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "Proměnná $SHELL se změnila (byla „%s“, nyní je „%s“)\n"
+
+#: job.c:3140 job.c:3325
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Vytváří se dočasný dávkový soubor %s\n"
+
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Obsah dávkového souboru:\n"
+"\t@echo off\n"
+
+#: job.c:3337
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Obsah dávkového souboru:%s\n"
+"\t%s\n"
+
+#: job.c:3444
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n"
+
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"Přepínač -O[DRUH] (--output-sync[=DRUH]) není v tomto sestavení zahrnut."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Nepodařilo se otevřít tabulku globálních symbolů: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Zavedený objekt %s není veden jako slučitelný s GPL"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Symbol %s z %s se nepodařilo zavést: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Pokus zavést prázdný název symbolu: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Zavádí se symbol %s z %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Na této platformě není operace zavedení (load) podporována."
+
+#: main.c:312
+msgid "Options:\n"
+msgstr "Přepínače:\n"
+
+#: main.c:313
+msgid "  -b, -m                      Ignored for compatibility.\n"
+msgstr "  -b, -m                      Ignoruje se kvůli kompatibilitě.\n"
+
+#: main.c:315
+msgid "  -B, --always-make           Unconditionally make all targets.\n"
+msgstr "  -B, --always-make           Bezpodmínečně vyrobí všechny cíle.\n"
+
+#: main.c:317
+msgid ""
+"  -C DIRECTORY, --directory=DIRECTORY\n"
+"                              Change to DIRECTORY before doing anything.\n"
+msgstr ""
+"  -C ADRESÁŘ, --directory=ADRESÁŘ\n"
+"                              Před děláním čehokoliv se přepne do ADRESÁŘE.\n"
+
+#: main.c:320
+msgid "  -d                          Print lots of debugging information.\n"
+msgstr "  -d                          Vypisuje mnoho ladicích údajů.\n"
+
+#: main.c:322
+msgid ""
+"  --debug[=FLAGS]             Print various types of debugging information.\n"
+msgstr ""
+"  --debug[=PŘÍZNAKY]          Vypisuje ladicí údaje rozličných druhů.\n"
+
+#: main.c:324
+msgid ""
+"  -e, --environment-overrides\n"
+"                              Environment variables override makefiles.\n"
+msgstr ""
+"  -e, --environment-overrides\n"
+"                              Proměnné prostředí přebijí ty z makefilu.\n"
+
+#: main.c:327
+msgid ""
+"  --eval=STRING               Evaluate STRING as a makefile statement.\n"
+msgstr "  --eval=ŘETĚZEC              Vyhodnotí ŘETĚZEC jako kód makefilu.\n"
+
+#: main.c:329
+msgid ""
+"  -f FILE, --file=FILE, --makefile=FILE\n"
+"                              Read FILE as a makefile.\n"
+msgstr ""
+"  -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n"
+"                              Načte SOUBOR coby makefile.\n"
+
+#: main.c:332
+msgid "  -h, --help                  Print this message and exit.\n"
+msgstr "  -h, --help                  Vypíše tuto zprávu a skončí.\n"
+
+#: main.c:334
+msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
+msgstr "  -i, --ignore-errors         Ignoruje chyby z návodů.\n"
+
+#: main.c:336
+msgid ""
+"  -I DIRECTORY, --include-dir=DIRECTORY\n"
+"                              Search DIRECTORY for included makefiles.\n"
+msgstr ""
+"  -I ADRESÁŘ, --include-dir=ADRESÁŘ\n"
+"                              Vložené makefily hledá v ADRESÁŘI.\n"
+
+#: main.c:339
+msgid ""
+"  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+"  -j [N], --jobs[=N]          Dovolí nejvíce N úloh najednou;\n"
+"                              nekonečno úloh bez argumentu.\n"
+
+#: main.c:341
+msgid ""
+"  -k, --keep-going            Keep going when some targets can't be made.\n"
+msgstr ""
+"  -k, --keep-going            Pokračuje, když některé cíle nelze vyrobit.\n"
+
+#: main.c:343
+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"
+"                              Nespouští souběžné úlohy, dokud zátěž\n"
+"                              neklesne pod N.\n"
+
+#: main.c:346
+msgid ""
+"  -L, --check-symlink-times   Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+"  -L, --check-symlink-times   Použije nejnovější čas změny obsahu z časů\n"
+"                              symbolických odkazů a cíle.\n"
+
+#: main.c:348
+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"
+"                              Ve skutečnosti nevykoná žádný návod, pouze\n"
+"                              jej vypíše.\n"
+
+#: main.c:351
+msgid ""
+"  -o FILE, --old-file=FILE, --assume-old=FILE\n"
+"                              Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+"  -o SOUBOR, --old-file=SOUBOR, --assume-old=SOUBOR\n"
+"                              Považuje SOUBOR za velmi starý a znovu jej\n"
+"                              nevyrobí.\n"
+
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[DRUH], --output-sync[=DRUH]\n"
+"                              Synchronizuje výstup souběžných úloh podle "
+"DRUHU.\n"
+
+#: main.c:357
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "  -p, --print-data-base       Vypíše vnitřní databázi programu make.\n"
+
+#: main.c:359
+msgid ""
+"  -q, --question              Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+"  -q, --question              Nespustí žádný návod. Návratový kód řekne,\n"
+"                              jestli je aktuální.\n"
+
+#: main.c:361
+msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
+msgstr "  -r, --no-builtin-rules      Vypne vestavěná implicitní pravidla.\n"
+
+#: main.c:363
+msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
+msgstr "  -R, --no-builtin-variables  Vypne vestavěné nastavení proměnných.\n"
+
+#: main.c:365
+msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
+msgstr "  -s, --silent, --quiet       Neopisuje návod.\n"
+
+#: main.c:367
+msgid ""
+"  -S, --no-keep-going, --stop\n"
+"                              Turns off -k.\n"
+msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Vypne -k.\n"
+
+#: main.c:370
+msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
+msgstr "  -t, --touch                 Namísto výroby cílů jim změní čas.\n"
+
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Vypisuje trasovací údaje.\n"
+
+#: main.c:374
+msgid ""
+"  -v, --version               Print the version number of make and exit.\n"
+msgstr ""
+"  -v, --version               Vypíše číslo verze programu make a skončí.\n"
+
+#: main.c:376
+msgid "  -w, --print-directory       Print the current directory.\n"
+msgstr "  -w, --print-directory       Vypisuje aktuální adresář.\n"
+
+#: main.c:378
+msgid ""
+"  --no-print-directory        Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+"  --no-print-directory        Vypne -w, i kdyby byl zapnut implicitně.\n"
+
+#: main.c:380
+msgid ""
+"  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+"                              Consider FILE to be infinitely new.\n"
+msgstr ""
+"  -W SOUBOR, --what-if=SOUBOR, --new-file=SOUBOR, --assume-new=SOUBOR\n"
+"                              Považuje SOUBOR za nekonečně nový.\n"
+
+#: main.c:383
+msgid ""
+"  --warn-undefined-variables  Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+"  --warn-undefined-variables  Upozorní, kdykoliv je odkazováno na\n"
+"                              nedefinovanou proměnnou.\n"
+
+#: main.c:647
+msgid "empty string invalid as file name"
+msgstr "prázdný řetězec není platný název souboru"
+
+#: main.c:734
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "zadána neznámá úroveň ladění „%s“"
+
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "neznámý druh synchronizace výstupu „%s“"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "vnitřní chyba: více přepínačů --sync-mutex"
+
+#: main.c:848
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Zachyceno přerušení/výjimka (kód = 0x%lx, adresa = 0x%p)\n"
+
+#: main.c:855
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"Filtr neošetřených výjimek zavolán z programu %s\n"
+"Kód výjimky = %lx\n"
+"Příznaky výjimky = %lx\n"
+"Adresa výjimky = 0x%p\n"
+
+#: main.c:863
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Porušení přístupu: operace zápisu na adrese 0x%p\n"
+
+#: main.c:864
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Porušení přístupu: operace čtení na adrese 0x%p\n"
+
+#: main.c:940 main.c:955
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() nastavuje default_shell = %s\n"
+
+#: main.c:1008
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+"find_and_set_shell() při prohledávání cesty nastavila default_shell = %s\n"
+
+#: main.c:1447
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s se uspí na 30 sekund…"
+
+#: main.c:1449
+#, c-format
+msgid "done sleep(30). Continuing.\n"
+msgstr "sleep(30) dokončeno. Pokračuje se.\n"
+
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "vnitřní chyba: více přepínačů --jobserver-fds"
+
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"vnitřní chyba: nelze otevřít semafor správce úloh „%s“: (Chyba %ld: %s)"
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Klient správce úloh (semafor %s)\n"
+
+#: main.c:1551
+#, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "vnitřní chyba: neplatný řetězec --jobserver-fds „%s“"
+
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Klient správce úloh (deskriptory %d,%d)\n"
+
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "pozor: -jN vnuceno podřízenému maku: režim správce úloh se vypíná."
+
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "služba dup() nad správcem úloh"
+
+#: main.c:1586
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+"pozor: správce úloh není dostupný: použije se -j1. Do nadřízeného pravidla "
+"maku přidejte „+“."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile na standardním vstupu uveden dvakrát."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (dočasný soubor)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (dočasný soubor)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Na této platformě nejsou paralelní úlohy (-j) podporovány."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Návrat k jednoúlohovému režimu (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Místa ve správci úloh jsou omezena na %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "vytváření semaforu správce úloh: (Chyba %ld: %s)"
+
+#: main.c:2019
+msgid "creating jobs pipe"
+msgstr "vytváření roury úloh"
+
+#: main.c:2039
+msgid "init jobserver pipe"
+msgstr "inicializace roury správce úloh"
+
+#: main.c:2064
+msgid "Symbolic links not supported: disabling -L."
+msgstr "Symbolické odkazy nejsou podporovány: vypíná se -L."
+
+#: main.c:2149
+msgid "Updating makefiles....\n"
+msgstr "Soubory makefile se aktualizují…\n"
+
+#: main.c:2174
+#, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Makefile „%s“ může cyklit, nebude znovu vyroben.\n"
+
+#: main.c:2253
+#, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Výroba nového makefilu „%s“ selhala."
+
+#: main.c:2270
+#, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Vložený makefile „%s“ nebyl nalezen."
+
+#: main.c:2275
+#, c-format
+msgid "Makefile '%s' was not found"
+msgstr "Makefile „%s“ nebyl nalezen"
+
+#: main.c:2341
+msgid "Couldn't change back to original directory."
+msgstr "Nebylo možné se vrátit do původního adresáře."
+
+#: main.c:2354
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Znovu se spouští [%u]:"
+
+#: main.c:2463
+msgid "unlink (temporary file): "
+msgstr "unlink (dočasný soubor): "
+
+#: main.c:2495
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ".DEFAULT_GOAL obsahuje více než jeden cíl"
+
+#: main.c:2518
+msgid "No targets specified and no makefile found"
+msgstr "Nezadány žádné cíle a žádné makefily nenalezeny"
+
+#: main.c:2520
+msgid "No targets"
+msgstr "Žádné cíle"
+
+#: main.c:2525
+msgid "Updating goal targets....\n"
+msgstr "Aktualizují se cíle…\n"
+
+#: main.c:2550
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr "pozor: Zjištěn posun hodin. Vaše sestavení možná nebude úplné."
+
+#: main.c:2718
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Použití: %s [PŘEPÍNAČE] [CÍLE]…\n"
+
+#: main.c:2724
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Tento program byl sestaven pro %s\n"
+
+#: main.c:2726
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Tento program byl sestaven pro %s (%s)\n"
+
+#: main.c:2729
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr ""
+"Chyby v programu hlaste anglicky na <bug-make@gnu.org>. Nedostatky\n"
+"v překladu hlaste česky na <translation-team-cs@lists.sourceforge.net>.\n"
+
+#: main.c:2810
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "přepínače „%s%s“ vyžaduje neprázdný řetězcový argument"
+
+#: main.c:2864
+#, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "přepínač „-%c“ vyžaduje kladný celočíselný argument"
+
+#: main.c:3253
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%sSestaveno pro %s\n"
+
+#: main.c:3255
+#, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%s Sestaveno pro %s (%s)\n"
+
+#: main.c:3266
+#, 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 ""
+"%sLicence GPLv3+: GNU GPL verze 3 nebo novější <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sToto je svobodné programové vybavení: máte právo jej měnit a dále šířit.\n"
+"%sNesposkytuje se ŽÁDNÁ ZÁRUKA, jak jen zákon dovoluje.\n"
+
+# FIXME: i18n %s (time)
+#: main.c:3287
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Databáze maku vypsána v %s"
+
+# FIXME: i18n %s (time)
+#: main.c:3297
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Konec databáze maku v %s\n"
+
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Neznámá chyba %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "virtuální paměť vyčerpána"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: uživatel %lu (reálný %lu), skupina %lu (reálná %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Přístup zahájen"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Přístup uživatelem"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Přístup makem"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Přístup potomkem"
+
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Vstupuje se do neznámého adresáře\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s Opouští se neznámý adresář\n"
+
+#: output.c:133
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Vstupuje se do adresáře „%s“\n"
+
+#: output.c:135
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Opouští se adresář „%s“\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Vstupuje se do neznámého adresáře\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Opouští se neznámý adresář\n"
+
+#: output.c:144
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Vstupuje se do adresáře „%s“\n"
+
+#: output.c:146
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Opouští se adresář „%s“\n"
+
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "chyba zápisu: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "chyba zápisu"
+
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ". Konec.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
+msgid "Reading makefiles...\n"
+msgstr "Čtou se makefily…\n"
+
+#: read.c:333
+#, c-format
+msgid "Reading makefile '%s'"
+msgstr "Čte se makefile „%s“"
+
+#: read.c:335
+#, c-format
+msgid " (no default goal)"
+msgstr " (žádný výchozí cíl)"
+
+#: read.c:337
+#, c-format
+msgid " (search path)"
+msgstr " (vyhledávací cesta)"
+
+#: read.c:339
+#, c-format
+msgid " (don't care)"
+msgstr " (nestarat se)"
+
+#: read.c:341
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (žádný expanze ~)"
+
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Přeskakuje se UTF-8 BOM v makefilu „%s“\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Přeskakuje se UTF-8 BOM v paměti makefilu\n"
+
+#: read.c:786
+msgid "invalid syntax in conditional"
+msgstr "neplatná syntaxe podmínky"
+
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: zavedení selhalo"
+
+#: read.c:987
+msgid "recipe commences before first target"
+msgstr "návod zahájen před prvním cílem"
+
+#: read.c:1036
+msgid "missing rule before recipe"
+msgstr "před návodem chybí pravidlo"
+
+#: read.c:1123
+#, c-format
+msgid "missing separator%s"
+msgstr "chybí oddělovač%s"
+
+#: read.c:1125
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr " (mysleli jste tabulátor místo 8 mezer?)"
+
+#: read.c:1263
+msgid "missing target pattern"
+msgstr "chybí vzor cíle"
+
+#: read.c:1265
+msgid "multiple target patterns"
+msgstr "více vzorů cíle"
+
+#: read.c:1269
+#, c-format
+msgid "target pattern contains no '%%'"
+msgstr "vzor cíle neobsahuje „%%“"
+
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "chybí „endif“"
+
+#: read.c:1430 read.c:1475 variable.c:1554
+msgid "empty variable name"
+msgstr "prázdný název proměnné"
+
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
+msgstr "nadbytečný text po klíčovém slovu „define“"
+
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "chybí „endef“, neukončený „define“"
+
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "nadbytečný text po klíčovém slovu „endef“"
+
+#: read.c:1589
+#, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "nadbytečný text po klíčovém slovu „%s“"
+
+#: read.c:1598 read.c:1612
+#, c-format
+msgid "extraneous '%s'"
+msgstr "nadbytečný „%s“"
+
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "pouze jeden „else“ na podmínku"
+
+#: read.c:1892
+msgid "Malformed target-specific variable definition"
+msgstr "Chybě utvořená definice proměnné specifické pro cíl"
+
+#: read.c:1951
+msgid "prerequisites cannot be defined in recipes"
+msgstr "prerekvizitu nelze definovat v návodu"
+
+#: read.c:2009
+msgid "mixed implicit and static pattern rules"
+msgstr "smíšené implicitní a statická pravidla vzorů"
+
+#: read.c:2032 read.c:2220
+msgid "mixed implicit and normal rules"
+msgstr "smíšené implicitní a normální pravidla"
+
+#: read.c:2084
+#, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "cíl „%s“ neodpovídá vzoru cíle"
+
+#: read.c:2099 read.c:2144
+#, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "cílový soubor „%s“ obsahuje jak :, tak i ::"
+
+#: read.c:2105
+#, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "cíl „%s“ zadán více než jednou ve stejném pravidle"
+
+#: read.c:2114
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "pozor: návod pro cíl „%s“ bude přebit"
+
+#: read.c:2117
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "pozor: starý návod pro cíl „%s“ bude ignorován"
+
+#: read.c:2530
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "pozor: zaznamenán znak NUL, zbytek řádku bude ignorován"
+
+#: remake.c:232
+#, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Pro „%s“ nebude nic uděláno."
+
+#: remake.c:233
+#, c-format
+msgid "'%s' is up to date."
+msgstr "„%s“ je aktuální."
+
+#: remake.c:305
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Uklízí se soubor „%s“.\n"
+
+#: remake.c:377
+#, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“%s"
+
+#: remake.c:379
+#, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“ potřebný pro „%s“%s"
+
+#: remake.c:413
+#, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Zvažuje se cílový soubor „%s“.\n"
+
+#: remake.c:420
+#, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Nedávná aktualizace souboru „%s“ selhala.\n"
+
+#: remake.c:432
+#, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Soubor „%s“ již byl uvážen.\n"
+
+#: remake.c:442
+#, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Stále se aktualizuje soubor „%s“.\n"
+
+#: remake.c:445
+#, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Aktualizace soubor „%s“ dokončena.\n"
+
+#: remake.c:474
+#, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "Soubor „%s“ neexistuje.\n"
+
+#: remake.c:481
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
+msgstr ""
+"*** Pozor: Soubor .LOW_RESOLUTION_TIME „%s“ má časový údaj ve vysokém "
+"rozlišení"
+
+#: remake.c:494 remake.c:1019
+#, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Nalezeno implicitní pravidlo pro „%s“.\n"
+
+#: remake.c:496 remake.c:1021
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n"
+
+#: remake.c:502
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Pro „%s“ se použije výchozí návod.\n"
+
+#: remake.c:535 remake.c:1067
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Kruhová závislost „%s ← %s zahozena."
+
+#: remake.c:655
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Prerekvizity cílového souboru „%s“ dokončeny.\n"
+
+#: remake.c:661
+#, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Prerekvizity „%s“ se vyrábějí.\n"
+
+#: remake.c:674
+#, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Výroba cílového souboru „%s“ vzdána.\n"
+
+#: remake.c:679
+#, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Cíl „%s“ nebyl kvůli chybám znovu vyroben."
+
+#: remake.c:731
+#, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Prerekvizita „%s“ pro cíl „%s“ je jen o pořadí.\n"
+
+#: remake.c:736
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Prerekvizita „%s“ cíle „%s“ neexistuje.\n"
+
+#: remake.c:741
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Prerekvizita „%s“ je novější než cíl „%s“.\n"
+
+#: remake.c:744
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Prerekvizita „%s“ je starší než cíl „%s“.\n"
+
+#: remake.c:762
+#, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Cíl „%s“ je dvojdvoutečkový a nemá žádnou prerekvizitu.\n"
+
+#: remake.c:769
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Pro „%s“ neexistuje návod a žádná prerekvizita se vskutku nezměnila.\n"
+
+# Always-make flag is make option -B
+#: remake.c:774
+#, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Vyrábí se „%s“ kvůli přepínači --always-make.\n"
+
+#: remake.c:782
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "Cíl „%s“ není třeba znovu vyrábět"
+
+#: remake.c:784
+#, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; použije se název „%s“ z VPATH"
+
+#: remake.c:804
+#, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Cíl „%s“ je třeba znovu vyrobit.\n"
+
+#: remake.c:810
+#, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Ignoruje se název „%s“ z VPATH.\n"
+
+#: remake.c:819
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Právě se vykonává návod pro „%s“.\n"
+
+#: remake.c:826
+#, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Cílový soubor „%s“ nebylo možné znovu vyrobit.\n"
+
+#: remake.c:829
+#, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Cílový soubor „%s“ byl úspěšně znovu vyroben.\n"
+
+#: remake.c:832
+#, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Cílový soubor „%s“ je třeba znovu vyrobit za použití -q.\n"
+
+#: remake.c:1027
+#, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Pro „%s„ se použijí se výchozí příkazy.\n"
+
+#: remake.c:1372
+#, c-format
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Pozor: Soubor „%s“ má čas změny obsahu v budoucnu"
+
+#: remake.c:1385
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Pozor: Soubor „%s“ má čas změny obsahu %s s směrem do budoucnosti"
+
+#: remake.c:1583
+#, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Prvek .LIBPATTERNS „%s“ není vzorem"
+
+# `Customs' is literal (a library name). See README.customs.
+#: remote-cstms.c:122
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Customs nebude exportovat: %s\n"
+
+#: rule.c:496
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Implicitní pravidla"
+
+#: rule.c:511
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Žádná implicitní pravidla."
+
+# FIXME: Pluralize by first %u
+#: rule.c:514
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u"
+msgstr ""
+"\n"
+"# Implicitních pravidel: %u, %u"
+
+#: rule.c:523
+msgid " terminal."
+msgstr " terminál."
+
+#: rule.c:531
+#, c-format
+msgid "BUG: num_pattern_rules is wrong!  %u != %u"
+msgstr "CHYBA: num_pattern_rules je chybný! %u != %u"
+
+#: signame.c:84
+msgid "unknown signal"
+msgstr "neznámý signál"
+
+# Keep signal names in sync with GNU libc translations.
+#: signame.c:92
+msgid "Hangup"
+msgstr "Odpojen terminál (SIGHUP)"
+
+#: signame.c:95
+msgid "Interrupt"
+msgstr "Přerušení (SIGINT)"
+
+#: signame.c:98
+msgid "Quit"
+msgstr "Konec (SIGQUIT)"
+
+#: signame.c:101
+msgid "Illegal Instruction"
+msgstr "Nedovolená instrukce (SIGILL)"
+
+#: signame.c:104
+msgid "Trace/breakpoint trap"
+msgstr "Trasovací/ladící past (SIGTRAP)"
+
+#: signame.c:109
+msgid "Aborted"
+msgstr "Neúspěšně ukončen (SIGABRT)"
+
+#: signame.c:112
+msgid "IOT trap"
+msgstr "IOT past (SIGIOT)"
+
+#: signame.c:115
+msgid "EMT trap"
+msgstr "EMT past (SIGEMT)"
+
+#: signame.c:118
+msgid "Floating point exception"
+msgstr "Výjimka práce s pohyblivou řádovou čárkou (SIGFPE)"
+
+#: signame.c:121
+msgid "Killed"
+msgstr "Zabit (SIGKILL)"
+
+#: signame.c:124
+msgid "Bus error"
+msgstr "Chyba na sběrnici (neplatná adresa) (SIGBUS)"
+
+#: signame.c:127
+msgid "Segmentation fault"
+msgstr "Neoprávněný přístup do paměti (SIGSEGV)"
+
+#: signame.c:130
+msgid "Bad system call"
+msgstr "Chybné volání systému (SIGSYS)"
+
+#: signame.c:133
+msgid "Broken pipe"
+msgstr "Roura přerušena (SIGPIPE)"
+
+#: signame.c:136
+msgid "Alarm clock"
+msgstr "Budík (SIGALRM)"
+
+#: signame.c:139
+msgid "Terminated"
+msgstr "Ukončen (SIGTERM)"
+
+#: signame.c:142
+msgid "User defined signal 1"
+msgstr "Uživatelem definovaný signál 1 (SIGUSR1)"
+
+#: signame.c:145
+msgid "User defined signal 2"
+msgstr "Uživatelem definovaný signál 2 (SIGUSR2)"
+
+#: signame.c:150 signame.c:153
+msgid "Child exited"
+msgstr "Potomek skončil (SIGCHLD)"
+
+#: signame.c:156
+msgid "Power failure"
+msgstr "Výpadek napájení (SIGPWR)"
+
+#: signame.c:159
+msgid "Stopped"
+msgstr "Pozastaven (SIGTSTP)"
+
+#: signame.c:162
+msgid "Stopped (tty input)"
+msgstr "Pozastaven (vstup TTY) (SIGTTIN)"
+
+#: signame.c:165
+msgid "Stopped (tty output)"
+msgstr "Pozastaven (výstup TTY) (SIGTTOU)"
+
+#: signame.c:168
+msgid "Stopped (signal)"
+msgstr "Pozastaven (SIGSTOP)"
+
+#: signame.c:171
+msgid "CPU time limit exceeded"
+msgstr "Překročen časový limit pro procesor (SIGXCPU)"
+
+#: signame.c:174
+msgid "File size limit exceeded"
+msgstr "Překročen limit délky souboru (SIGXFS2)"
+
+#: signame.c:177
+msgid "Virtual timer expired"
+msgstr "Virtuální časovač vypršel (SIGVTALRM)"
+
+#: signame.c:180
+msgid "Profiling timer expired"
+msgstr "Profilovací časovač vypršel (SIGPROF)"
+
+#: signame.c:186
+msgid "Window changed"
+msgstr "Okno se změnilo (SIGWINCH)"
+
+#: signame.c:189
+msgid "Continued"
+msgstr "Je pokračováno (SIGCONT)"
+
+#: signame.c:192
+msgid "Urgent I/O condition"
+msgstr "Naléhavá I/O situace (SIGURG)"
+
+#: signame.c:199 signame.c:208
+msgid "I/O possible"
+msgstr "Vstup/Výstup možný (SIGIO)"
+
+# SIGWIND exists on Darwin
+#: signame.c:202
+msgid "SIGWIND"
+msgstr "Okno se změnilo (SIGWIND)"
+
+# SIGPHONE exists on Unix PC (3B1)
+#: signame.c:205
+msgid "SIGPHONE"
+msgstr "Změna stavu linky (SIGPHONE)"
+
+#: signame.c:211
+msgid "Resource lost"
+msgstr "Prostředek byl ztracen (SIGLOST)"
+
+# SIGDANGER exists on AIX
+#: signame.c:214
+msgid "Danger signal"
+msgstr "Nebezpečí nedostatku paměti (SIGDANGER)"
+
+#: signame.c:217
+msgid "Information request"
+msgstr "Žádost o informaci (SIGINFO)"
+
+#: signame.c:220
+msgid "Floating point co-processor not available"
+msgstr "Koprocesor pro práci s pohyblivou řádkou není dostupný (SIGNOFP)"
+
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s Žádná keš řetězců\n"
+
+#: strcache.c:266
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s užito z keše řetězců: %lu (%lu) / řetězců = %lu / úložiště = %lu B / "
+"prům.  = %lu B\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
+"%s současná keš: velikost = %hu B / užito = %hu B / počet = %hu / prům. = "
+"%hu B\n"
+
+#: strcache.c:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s užito dalších: celkem = %lu B / počet = %lu / prům. = %lu B\n"
+
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s volno dalších: celkem = %lu B / max. = %lu B / min. = %lu B / prům.  = "
+"%hu B\n"
+
+#: strcache.c:287
+#, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s vytížení keše řetězců: dotazů = %lu / poměr nálezů = %lu %%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# Statistika hašovací tabulky:\n"
+"# "
+
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatická"
+
+#: variable.c:1610
+msgid "default"
+msgstr "výchozí"
+
+#: variable.c:1613
+msgid "environment"
+msgstr "prostředí"
+
+#: variable.c:1616
+msgid "makefile"
+msgstr "makefile"
+
+#: variable.c:1619
+msgid "environment under -e"
+msgstr "prostředí z přepínače -e"
+
+#: variable.c:1622
+msgid "command line"
+msgstr "příkazový řádek"
+
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "klíčové slovo „override“"
+
+#: variable.c:1636
+#, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (z „%s“, řádek %lu)"
+
+#: variable.c:1699
+msgid "# variable set hash-table stats:\n"
+msgstr "# statistika hašovací tabulky pro množinu proměnných:\n"
+
+#: variable.c:1710
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Proměnné\n"
+
+#: variable.c:1714
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Hodnoty proměnných specifických pro vzor"
+
+#: variable.c:1728
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Žádné hodnoty proměnných specifických pro vzor."
+
+# FIXME: Pluralize
+#: variable.c:1730
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# Hodnot proměnných specifických pro vzor: %u"
+
+#: variable.h:224
+#, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "pozor: nedefinovaná proměnná „%.*s“"
+
+#: vmsfunctions.c:91
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "volání sys$search() selhalo s %d\n"
+
+#: vmsjobs.c:70
+#, c-format
+msgid "Warning: Empty redirection\n"
+msgstr "Pozor: Prázdné přesměrování\n"
+
+#: vmsjobs.c:178
+#, c-format
+msgid "internal error: '%s' command_state"
+msgstr "vnitřní chyba: command_state pro „%s“"
+
+#: vmsjobs.c:286
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-pozor, možná byste měli znovu povolit obsluhu CTRL-Y z DCL.\n"
+
+#: vmsjobs.c:417
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "VESTAVĚNÝ [%s][%s]\n"
+
+#: vmsjobs.c:428
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "VESTAVĚNÝ CD %s\n"
+
+#: vmsjobs.c:446
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "VESTAVĚNÝ RM %s\n"
+
+#: vmsjobs.c:467
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "Neznámý vestavěný příkaz „%s“\n"
+
+#: vmsjobs.c:489
+#, c-format
+msgid "Error, empty command\n"
+msgstr "Chyba, prázdný příkaz\n"
+
+#: vmsjobs.c:502
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "Vstup přesměrován z %s\n"
+
+#: vmsjobs.c:509
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "Chyby přesměrovány do %s\n"
+
+#: vmsjobs.c:518
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Výstup připojen k %s\n"
+
+#: vmsjobs.c:524
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "Výstup přesměrován do %s\n"
+
+#: vmsjobs.c:593
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Připojit %.*s a uklidit\n"
+
+#: vmsjobs.c:600
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "Místo toho se spustí %s\n"
+
+#: vmsjobs.c:706
+#, c-format
+msgid "Error spawning, %d\n"
+msgstr "Chyba oddělení podprocesu, %d\n"
+
+#: vpath.c:583
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# Vyhledávací cesty VPATH\n"
+
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Žádné vyhledávací cesty „vpath“."
+
+# FIXME: Pluralize
+#: vpath.c:602
+#, c-format
+msgid ""
+"\n"
+"# %u 'vpath' search paths.\n"
+msgstr ""
+"\n"
+"$ Vyhledávacích cest „vpath“: %u\n"
+
+#: vpath.c:605
+msgid ""
+"\n"
+"# No general ('VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Žádná obecná vyhledávací cesta (proměnná „VPATH“)."
+
+#: vpath.c:611
+msgid ""
+"\n"
+"# General ('VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Obecná vyhledávací cesta (proměnná „VPATH“):\n"
+"# "
+
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Neplatná hodnota v členu „update_status“!"
+
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "neznámý režim trasování „%s“"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Chyba 0x%x (ignorováno)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Za účelem aktualizace cíle „%3$s“ se volá se návod z %1$s:%2$lu.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Za účelem aktualizace cíle „%s“ se volá vestavěný návod.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr ""
+#~ "%s počet vyrovnávacích pamětí keše řetězců: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# statistika hašovací tabulky keše řetězců:\n"
+#~ "# "
index 7a5badb..3c6d27e 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index de34eb7..94d673d 100644 (file)
--- a/po/da.po
+++ b/po/da.po
 # Danish messages for make
 # Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+#
 # Byrial Ole Jensen <byrial@image.dk>, 2001
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2011-01-05 02:26+0100\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\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 "forsøg på at bruge en ikke understøttet facilitet: '%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "forsøg på at bruge en ikke understøttet facilitet: '%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "'berør arkivmedlem' er ikke tilgængelig på VMS"
-
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "berør: Arkivet '%s' findes ikke"
+msgstr "'berør arkivmedlem' er ikke tilgængelig på VMS"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "berør: '%s' er ikke et gyldigt arkiv"
-
-#: 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:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Arkivet '%s' findes ikke"
 
-#: 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'"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: '%s' er ikke et gyldigt arkiv"
 
-#: arscan.c:69
+#: ar.c:157
 #, 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"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Medlemmet '%s' findes ikke i '%s'"
 
-#: arscan.c:175
+#: ar.c:164
 #, fuzzy, c-format
-msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control fejlede med status = %d"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: Forkert returkode fra ar_member_touch på '%s'"
 
-#: arscan.c:187
+#: arscan.c:67
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "kan ikke åbne biblioteket '%s' for at søge medlemmet '%s'"
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_module() kunne ikke udtrække modulinformation, status = %d"
 
-#: arscan.c:850
+#: arscan.c:173
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() fejlede med status = %d"
+
+#: arscan.c:185
+#, fuzzy, 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:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Medlem '%s'%s: %ld byte ved %ld (/%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
-msgstr " (navnet kan være forkortet)"
+msgstr " (navnet kan være forkortet)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Tidsstempel %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modus = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Afbrydelse.\n"
 
-#: 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:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Arkivmedlemmet '%s' er måske falsk; ikke slettet"
 
-#: 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:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Arkivmedlemmet '%s' er måske falsk; ikke slettet"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Sletter filen '%s'"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Sletter filen '%s'"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  kommandoer at udføre"
+msgstr "#  kommandoer der skal køres"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (indbyggede):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (fra '%s', linje %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,222 +131,222 @@ msgstr ""
 "\n"
 "# Filkataloger\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: kunne ikke undersøges med stat.\n"
+msgstr "# %s: kunne ikke undersøges med stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (nøgle %s, mtime %d): kunne ikke åbnes.\n"
+msgstr "# %s (nøgle %s, mtime %d): kunne ikke åbnes.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (enhed %d, inode [%d,%d,%d]): kunne ikke åbnes.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (enhed %ld, inode %ld): kunne ikke åbnes.\n"
+msgstr "# %s (enhed %ld, inode %ld): kunne ikke åbnes.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (nøgle %s, mtime %d): "
+msgstr "# %s (nøgle %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (enhed %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (enhed %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Ingen"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " filer, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "ingen"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " umuligheder"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " indtil videre."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " umuligheder i %lu kataloger.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Rekursiv variabel '%s' refererer (i sidste ende) til sig selv"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "uafsluttet variabelreference"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr "Kommandoer var angivet for fil '%s' i %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Kommandoer blev angivet for filen '%s' i %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, 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,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Kommandoer for filen '%s' blev fundet ved implicit regelsøgning,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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:278
+#: file.c:280
 #, 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'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Kommandoer for '%s' vil blive ignoreret til fordel for de for '%s'."
 
-#: 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:300
+#, fuzzy, 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: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:305
+#, fuzzy, 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:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Sletter mellemfil '%s'"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Sletter mellemfiler ...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Tidsstempel i forkert område; bruger %s"
+msgstr "%s: Tidsstempel i forkert område; bruger %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Aktuel tid"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# Ikke et mål:"
+msgstr "# Ikke et mål:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  Værdifuld fil (forudsætning for .PRECIOUS)."
+msgstr "#  Værdifuld fil (forudsætning for .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  Falsk mål (forudsætning for .PHONY)."
+msgstr "#  Falsk mål (forudsætning for .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Kommandolinjemål."
+msgstr "#  Kommandolinjemål."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  En uangivet makefil, evt. en fra MAKEFILES."
+msgstr "#  Et forvalg, MAKEFILES, eller -include/sinclude makefile."
+
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Ingen implicitte regler."
 
-#: file.c:937
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  Der er udført implicit regelsøgning."
+msgstr "#  Der er udført implicit regelsøgning."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Der er ikke udført implicit regelsøgning."
+msgstr "#  Der er ikke udført implicit regelsøgning."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Implicit/statisk mønsterstamme: '%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Implicit/statisk mønsterstamme: '%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Filen er en mellemfil."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Skaber også:"
+msgstr "#  Skaber også:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "#  Ændringstid ikke tjekket."
+msgstr "#  Ændringstid ikke tjekket."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Filen findes ikke."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Filen er meget gammel."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  Sidst ændret %s\n"
+msgstr "#  Sidst ændret %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Filen er blevet opdateret."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Filen er ikke blevet opdateret."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Kommandoer udføres nu (DETTE ER EN FEJL)."
+msgstr "#  Der køres kommandoer nu (DETTE ER EN FEJL)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Kommandoer for afhængigheder udføres nu (DETTE ER EN FEJL)."
+msgstr "#  Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Opdateret med godt resultat."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Behøver opdatering (-q er sat)."
+msgstr "#  Behøver opdatering (-q er sat)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Opdatering mislykkedes."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Ugyldig værdi i 'update_status'-felt!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Ugyldig værdi i 'command_state'-felt!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Ugyldig værdi i 'command_state'-felt!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -346,7 +354,7 @@ msgstr ""
 "\n"
 "# Filer"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -356,121 +364,178 @@ msgstr ""
 "# Statistik for fil-hash-spande:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "ikke-numerisk første argument til 'word'-funktionen"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
+msgstr "ikke-numerisk første argument til 'word'-funktionen"
 
-#: 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:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "ikke-numerisk første argument til 'wordlist'-funktionen"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "ikke-numerisk første argument til 'wordlist'-funktionen"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "ikke-numerisk andet argument til 'wordlist'-funktionen"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) mislykkedes (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) mislykkedes (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Err) mislykkedes (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): DuplicateHandle(Err) mislykkedes (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() mislykkedes (e=%d)\n"
+msgstr "CreatePipe() mislykkedes (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Afrydder midlertidig batchfil %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "skrivefejl: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "Uimplementeret på denne platform: funktion '%s'"
+msgid "unimplemented on this platform: function '%s'"
+msgstr "ikke implementeret på denne platform: funktion '%s'"
+
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "uafsluttet kald til funktionen '%s'; manglende '%c'"
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
 
-#: function.c:2212
+#: function.c:2548
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "Uafsluttet kald til funktionen '%s'; manglende '%c'"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:661
+#: function.c:2550
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: tilvalg '%s' er flertydigt\n"
 
-#: getopt.c:685
-#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: tilvalg '--%s' tillader ikke et argument\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, 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: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:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s tilvalg '%s' kræver et argument\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: ikke genkendt tilvalg '--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: ikke genkendt tilvalg '%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ulovligt tilvalg -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ugyldigt tilvalg -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: tilvalg kræver et argument -- %c\n"
+msgstr "%s: tilvalg kræver et argument -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: tilvalg '-W %s' er flertydigt\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: tilvalg '-W %s' tillader ikke et argument\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
-#, fuzzy, c-format
+#, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "kan ikke tildele %ld byte til hash-spande: hukommelsen opbrugt"
+msgstr "kan ikke tildele %lu byte til hashtabel: hukommelsen opbrugt"
 
 #: hash.c:280
 #, c-format
@@ -485,302 +550,386 @@ msgstr "Omgrupperinger=%d, "
 #: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Sammenstød=%ld/%ld=%.0f%%"
+msgstr "Sammenstød=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Kigger efter en implicit regel for '%s'.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "Kigger efter en implicit arkivmedlemsregel for '%s'.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Undgår rekursion i implicitte regler.\n"
+msgstr "Undgår rekursion i implicitte regler.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Prøver mønsterregel med stammen '%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Afviser umulig regelforudsætning '%s'.\n"
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Prøver mønsterregel med stammen '%.*s'.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Afviser umulig implicit forudsætning '%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Afviser umulig regelforudsætning '%s'.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Prøver regelforudsætning '%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Afviser umulig implicit forudsætning '%s'.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Prøver implicit forudsætning '%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Prøver regelforudsæ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:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Prøver implicit forudsætning '%s'.\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Fandt forudsætning '%s' som VPATH '%s'\n"
+
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Kigger efter en regel med mellemfil '%s'.\n"
 
-#: job.c:335
-#, fuzzy
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (midlertidig fil)"
-
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Fejl 0x%x (ignoreret)"
+msgstr "Kan ikke oprette midlertidig fil\n"
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Fejl 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (core-fil efterladt)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Fejl %d (ignoreret)"
 
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (indbyggede):"
+
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "advarsel: tilsidesætter kommandoer for mål '%s'"
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Fejl 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Fejl %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core-fil efterladt)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Venter på uafsluttede job...."
+msgstr "*** Venter på uafsluttede job...."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Levende barn 0x%08lx (%s), PID %ld %s\n"
+msgstr "Levende underproces %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (eksternt)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Høster taberbarn 0x%08lx, PID %ld %s\n"
+msgstr "Høster tabende underproces %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Høster vinderbarn 0x%08lx, PID %ld %s\n"
+msgstr "Høster vindende underproces %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Afrydder midlertidig jobfil %s\n"
 
-#: job.c:861
+#: job.c:843
 #, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Afrydder midlertidig jobfil %s\n"
+
+#: job.c:949
+#, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Fjerner barn 0x%08lx, PID %ld%s fra kæde.\n"
+msgstr "Fjerner underproces %p PID %s%s fra kæde.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Frigav symbol for barn 0x%08lx (%s).\n"
+msgstr "Frigav symbol for underproces %p (%s).\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+#: job.c:1023
+msgid "write jobserver"
+msgstr "write jobserver"
+
+#: job.c:1612 job.c:2332
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() fejlede ved igangsætning af proces (e=%d)\n"
+msgstr "process_easy() fejlede ved igangsætning af proces (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Talte %d argumenter i fejlet igangsætning\n"
+"Talte %d argumenter i fejlet igangsætning\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Sætter underproces %p (%s) PID %s%s på kæden.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Fik symbol for barn 0x%08lx (%s).\n"
+msgstr "Fik symbol for underproces %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "read jobs pipe"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Arkivet '%s' findes ikke"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Ingen grund til at genskabe målet '%s'"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%sIngen regel til at skabe mål '%s' som behøves af '%s'%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
-msgstr "kan ikke gennemtvinge belastningsgrænser på dette styrestystem"
+msgstr "kan ikke gennemtvinge belastningsgrænser på dette styrestystem"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "kan ikke gennemtvinge belastningsgrænse: "
+msgstr "kan ikke gennemtvinge belastningsgrænse: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdout\n"
+
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin\n"
 
-#: job.c:2015
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Kunne ikke gendanne stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Kunne ikke gendanne stdout\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Kunne ikke gendanne stdin\n"
+
+#: job.c:2365
+#, c-format
 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"
+msgstr "make høstede underproces med pid %s, venter endnu på pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommando ikke fundet"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s; Skalprogram ikke fundet"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: miljøplads er måske opbrugt"
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ændret (var '%s', nu '%s')"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL ændret (var '%s', nu '%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Opretter midlertidig jobfil %s\n"
 
-#: job.c:2963
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Indhold af batchfil:%s\n"
+"\t%s\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Indhold af batchfil:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Parallelle job (-j) er ikke understøttet på denne platform."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Tilvalg:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignoreret af hensyn til kompabilitet.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr "  -B, --always-make           Skab alle mål betingelsesløst.\n"
+msgstr "  -B, --always-make           Skab alle mål betingelsesløst.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C KATALOG, --directory=KATALOG\n"
-"                              Skift allerførst til KATALOG.\n"
+"                              Skift allerførst til KATALOG.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          Udskriv en masse fejlsøgningsinformation.\n"
+"  -d                          Udskriv en masse fejlsøgningsinformation.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAG]              Udskriv forskellige slags "
-"fejlsøgningsinformation.\n"
+"fejlsøgningsinformation.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Miljøvariable har forrang for makefiler.\n"
+"                              Miljøvariable har forrang for makefiler.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"  --eval=STRENG               Evaluér STRENG som en makefil-erklæring.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 "  -f FIL, --file=FIL, --makefile=FIL\n"
-"                              Læs FIL som en makefil.\n"
+"                              Læs FIL som en makefil.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Udskriv denne besked og afslut.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Ignorér fejl fra kommandoer.\n"
+msgstr "  -i, --ignore-errors         Ignorér fejl fra kommandoer.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I KATALOG, --include-dir=KATALOG\n"
-"                              Søg i KATALOG efter inkluderede makefiler.\n"
+"                              Søg i KATALOG efter inkluderede makefiler.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -788,13 +937,13 @@ msgstr ""
 "  -j [N], --jobs[=N]          Tillad N samtidige job; uendelig mange job "
 "uden argument.\n"
 
-#: main.c:332
+#: main.c:341
 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"
+"  -k, --keep-going            Fortsæt selvom nogen mål ikke kan skabes.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -804,121 +953,143 @@ msgstr ""
 "                              Start ikke flere job medmindre belastningen er "
 "under N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Brug sidste mtime mellem symbolske lænker og "
+"mål.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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"
-"                              Udfør ikke nogen kommandoer; udskriv dem "
+"                              Udfør ikke nogen kommandoer; udskriv dem "
 "bare.\n"
 
-#: main.c:342
+#: main.c:351
 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"
-"                              Anse FIL som værende meget gammel og genskab "
+"                              Anse FIL som værende meget gammel og genskab "
 "den ikke.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Udskriv makes interne database.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -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"
+"  -q, --question              Udfør ingen kommandoer; afslutningskoden "
+"angiver\n"
+"                                om målet er tidssvarende.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
-"  -r, --no-builtin-rules      Slå de indbyggede implicitte regler fra.\n"
+"  -r, --no-builtin-rules      Slå de indbyggede implicitte regler fra.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
-msgstr "  -R, --no-builtin-variables  Slå de indbyggede variabelværdier fra.\n"
+msgstr "  -R, --no-builtin-variables  Slå de indbyggede variabelværdier fra.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       Udskriv ikke kommander.\n"
+msgstr "  -s, --silent, --quiet       Udskriv ikke kommandoer.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              Slår -k fra.\n"
+"                              Slår -k fra.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Berør mål i stedet for at genskabe dem.\n"
+"  -t, --touch                 Berør mål i stedet for at genskabe dem.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+"  -d                          Udskriv en masse fejlsøgningsinformation.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               Udskriv makes versionnummer og afslut.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Udskriv det aktuelle katalog.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        Slå -w fra, selv hvis det var slået til "
+"  --no-print-directory        Slå -w fra, selv hvis det var slået til "
 "automatisk.\n"
 
-#: main.c:366
+#: main.c:380
 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"
-"                              Anse FIL som værende nyskabt.\n"
+"                              Anse FIL som værende nyskabt.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  Advar når en udefineret variabel bruges.\n"
+"  --warn-undefined-variables  Advar når en udefineret variabel bruges.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "en tom streng er ugyldig som filnavn"
 
-#: main.c:650
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "ukendt fejlsøgningsniveau-specifikation '%s'"
+
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "ukendt fejlsøgningsniveau-specifikation '%s'"
+msgid "unknown output-sync type '%s'"
+msgstr ""
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "intern fejl: flere '--jobserver-fds'-tilvalg"
+
+#: main.c:848
+#, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr "%s: Interrupt/undtagelse fanget (kode = 0x%x, addr = 0x%x)\n"
+msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -927,165 +1098,190 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Uhåndteret undtagelsesfilter kaldt fra program %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"Uhåndteret undtagelsesfilter kaldt fra program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Adgangskrænkelse: skriveoperation på adresse %x\n"
+msgstr "Adgangskrænkelse: skriveoperation på adresse 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Adgangskrænkelse: læseoperation på adresse %x\n"
+msgstr "Adgangskrænkelse: læseoperation på adresse 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell sætter default_shell = %s\n"
+msgstr "find_and_set_shell() sætter default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "find_and_set_shell()-stisøgning sætter default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s er standset i 30 sekunder..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "udført sleep(30). Fortsætter.\n"
+msgstr "udført sleep(30). Fortsætter.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefil fra standard-ind er angivet to gange."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (midlertidig fil)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (midlertidig fil)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Sætter tilbage til enkelt job-tilstand (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "intern fejl: flere '--jobserver-fds'-tilvalg"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+# fd = fildeskriptor
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Jobserverklient (fd'er %d,%d)\n"
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "intern fejl: ugyldig '--jobserver-fds'-streng '%s'"
 
-#: main.c:1730
+# fd = fildeskriptor
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Jobserverklient (fd'er %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra."
+msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
-"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj '+' til "
+"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj '+' til "
 "ophavsmakeregel."
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefil fra standard-ind er angivet to gange."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (midlertidig fil)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (midlertidig fil)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Parallelle job (-j) er ikke understøttet på denne platform."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Sætter tilbage til enkelt job-tilstand (-j1)."
+
+# fd = fildeskriptor
+#: main.c:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Jobserverklient (fd'er %d,%d)\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "oprettelse af jobledning"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "klargøring af jobserver-ledning"
+msgstr "klargøring af jobserver-ledning"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Symbolske lænker understøttes ikke: Deaktiverer -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Opdaterer makefiler....\n"
 
-#: 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:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Genskabelse af makefilen '%s' mislykkedes."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Inkluderet makefil '%s' blev ikke fundet."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Makefil '%s' blev ikke fundet."
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Kunne ikke skifte tilbage til det originale katalog."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Udfører igen:"
+msgstr "Udfører igen[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (midlertidig fil): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL indeholder mere end et mål"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "Ingen angivne mål og ingen makefil fundet"
+msgstr "Ingen angivne mål og ingen makefil fundet"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
-msgstr "Ingen mål"
+msgstr "Ingen mål"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "Opdaterer endemål....\n"
+msgstr "Opdaterer endemål....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
-msgstr "advarsel: Fejl i urets tid opdaget. Din bygning kan være ukomplet."
+msgstr "advarsel: Fejl i urets tid opdaget. Din bygning kan være ukomplet."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Brug: %s [tilvalg] [mål] ...\n"
+msgstr "Brug: %s [tilvalg] [mål] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1094,7 +1290,7 @@ msgstr ""
 "\n"
 "Dette program er bygget til %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1103,36 +1299,32 @@ msgstr ""
 "\n"
 "Dette program er bygget til %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\n"
+msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
-
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "'-%s%s'-tilvalget kræver et strengargument, der ikke er tomt"
 
-#: main.c:3054
+#: main.c:2864
 #, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
+
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"Dette program er bygget til %s\n"
+msgstr "%sBygget til %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"Dette program er bygget til %s (%s)\n"
+msgstr "%sBygget til %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1140,9 +1332,12 @@ msgid ""
 "%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 ""
+"%sLicens GPLv3+: GNU GPL v3 eller nyere <http://gnu.org/licenses/gpl.html>\n"
+"%sDette er frit programmel: Du kan frit ændre og videredistribuere det.\n"
+"%sDer gives INGEN GARANTI i den grad, som dette tillades af loven.\n"
 
-# %s giver dato og klokkeslæt
-#: main.c:3086
+# %s giver dato og klokkeslæt
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1151,8 +1346,8 @@ msgstr ""
 "\n"
 "# Makedatabase, udskrevet %s"
 
-# %s giver dato og klokkeslæt
-#: main.c:3096
+# %s giver dato og klokkeslæt
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1161,454 +1356,468 @@ msgstr ""
 "\n"
 "# Afsluttet makedatabase %s\n"
 
-#: main.c:3237
-#, fuzzy, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Går til et ukendt katalog"
-
-#: main.c:3239
-#, fuzzy, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Forlader et ukendt katalog"
-
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Går til katalog '%s'\n"
-
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Forlader katalog '%s'\n"
-
-#: 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:3253
-#, fuzzy, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Forlader et ukendt katalog"
-
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Går til katalog '%s'\n"
-
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Forlader katalog '%s'\n"
-
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ". Stop.\n"
-
-#: misc.c:337
+#: misc.c:201
 #, c-format
 msgid "Unknown error %d"
 msgstr "Ukendt fejl %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
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "virtuel hukommelse opbrugt"
 
-#: misc.c:708
+#: misc.c:522
 #, 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:729
+#: misc.c:543
 msgid "Initialized access"
 msgstr "Indledende adgang"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "Brugeradgang"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
 msgstr "Make-adgang"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "Barneadgang"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Går til et ukendt katalog\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Forlader et ukendt katalog\n"
+
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Går til katalog '%s'\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Forlader katalog '%s'\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Går til et ukendt katalog\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Forlader et ukendt katalog\n"
+
+#: output.c:144
 #, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Går til katalog '%s'\n"
+
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Forlader katalog '%s'\n"
+
+#: output.c:515
+#, c-format
 msgid "write error: %s"
-msgstr "Omdirigeret fejl to %s\n"
+msgstr "skrivefejl: %s"
 
-#: misc.c:956
-#, fuzzy
+#: output.c:517
 msgid "write error"
-msgstr "write jobserver"
+msgstr "skrivefejl"
+
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Stop.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
 
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "Læser makefiler...\n"
+msgstr "Læser makefiler...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
-msgstr "Læser makefil '%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
+msgstr "Læser makefil '%s'"
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (ingen standard-endemål)"
+msgstr " (ingen standard-endemål)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (søgesti)"
+msgstr " (søgesti)"
 
 #: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (ikke nødvendig)"
+msgstr " (ikke nødvendig)"
 
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (ingen ~-udfoldning)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "Ugyldig syntaks i betingelse"
+msgstr "ugyldig syntaks i betingelse"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "kommandoer begynder før det første mål"
+msgstr "kommandoer begynder før første mål"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "manglende regel før kommandoer"
+msgstr "manglende regel før kommandoer"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "manglende adskiller%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (mente du TAB i stedet for 8 mellemrum?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "manglende målmønster"
+msgstr "manglende målmønster"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "flere målmønstre"
+msgstr "flere målmønstre"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
-msgstr "målmønster indeholder ingen '%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
+msgstr "målmønster indeholder ingen '%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "manglende 'endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "tomt variabelnavn"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "Fremmed tekst efter 'endef'-direktiv"
+msgid "extraneous text after 'define' directive"
+msgstr "overskydende tekst efter 'define'-direktiv"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "manglende 'endef', uafsluttet 'define'"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Fremmed tekst efter 'endef'-direktiv"
+msgid "extraneous text after 'endef' directive"
+msgstr "overskydende tekst efter 'endef'-direktiv"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Fremmed tekst efter '%s'-direktiv"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "Overskydende tekst efter '%s'-direktiv"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "fremmed '%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "kun én 'else' per betingelse"
-
-#: read.c:1797
+#: read.c:1617
 #, fuzzy
+msgid "only one 'else' per conditional"
+msgstr "kun én 'else' per betingelse"
+
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Misdannet per-mål variabeldefinition"
+msgstr "Misdannet målspecifik variabeldefinition"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr ""
+msgstr "der kan ikke defineres forudsætninger i kommandoer"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "blandede implicitte og statiske mønsterregler"
+msgstr "blandede implicitte og statiske mønsterregler"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "blandede implicitte og normale regler"
 
-#: 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:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "mål '%s' passer ikke til målmønstret"
 
-#: 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:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "målfil '%s' har både :- og ::-angivelser"
 
-#: 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:2105
+#, fuzzy, 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:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "advarsel: tilsidesætter kommandoer for mål '%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "advarsel: tilsidesætter kommandoer for mål '%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "advarsel: ignorerer gamle kommadoer for mål '%s'"
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "advarsel: ignorerer gamle kommandoer for mål '%s'"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Ingenting at gøre for '%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Ingenting at gøre for '%s'."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "'%s' er tidssvarende."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Beskærer fil '%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Beskærer fil '%s'.\n"
 
-#: 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:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sIngen regel til at skabe mål '%s'%s"
 
-#: 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:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Overvejer målfil '%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Overvejer målfil '%s'.\n"
 
 #: 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"
+#, fuzzy, 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:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Fil '%s' er allerede overvejet.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Opdaterer stadig fil '%s'.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Opdatering af fil '%s' afsluttet.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Filen '%s' findes ikke.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** Advarsel: .LOW_RESOLUTION_TIME-fil '%s' har et tidsstempel med høj "
-"opløsning"
+"*** Advarsel: .LOW_RESOLUTION_TIME-fil '%s' har et tidsstempel med høj "
+"opløsning"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Fandt en implicit regel for '%s'.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Ingen implicit regel for '%s' fundet.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Bruger standardkommandoer for '%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Cirkulær %s <- %s afhængighed opgivet."
+msgstr "Cirkulær %s <- %s afhængighed opgivet."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Afsluttet forudsætningerne for målfil '%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Afsluttet forudsætningerne for målfil '%s'.\n"
 
-#: 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:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Forudsætningerne for '%s' er ved at blive skabt.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Opgiver målfil '%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Opgiver målfil '%s'.\n"
 
-#: 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:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Målet '%s' ikke genskabt på grund af fejl."
 
-#: 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:731
+#, fuzzy, 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: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:736
+#, fuzzy, 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: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:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Forudsætningen '%s' er nyere end målet '%s'.\n"
 
-#: 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:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Forudsætningen '%s' er ældre end målet '%s'.\n"
 
-#: 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:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, 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"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Ingen kommandoer til '%s', og ingen forudsætninger har ændret sig.\n"
 
-#: remake.c:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Skaber '%s' pga. \"always-make\"-flag.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
-msgstr "Ingen grund til at genskabe målet '%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
+msgstr "Ingen grund til at genskabe målet '%s'"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; bruger VPATH-navnet '%s'"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Skal genskabe målet '%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Skal genskabe målet '%s'.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr " Ignorerer VPATH-navnet '%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "Kommandoer til '%s' er ved at blive udført.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Kommandoerne for '%s' er ved at blive kørt.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Genskabelse af målfil '%s' mislykkedes.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Genskabelse af målfil '%s' mislykkedes.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Målfil '%s' genskabt.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Målfil '%s' genskabt.\n"
 
-#: 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:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Med -q trænger målfilen '%s' til at blive genskabt.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Advarsel: Ændringstiden for filen '%s' er i fremtiden"
 
-#: remake.c:1370
+#: remake.c:1385
 #, 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"
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Advarsel: Filen '%s' har ændringstidspunkt %s s i fremtiden"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr ".LIBPATTERNS-element '%s' er ikke et mønster"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr ".LIBPATTERNS-element '%s' er ikke et mønster"
 
 # "remote job exportation interface to the Customs daemon": jeg aner ikke
-# hvad der er tale om. I øvrigt ser remote-cstms.c forældet/ubrugt ud, og
-# koden er ikke understøttet af GNU...
-#: remote-cstms.c:125
+# hvad der er tale om. I øvrigt ser remote-cstms.c forældet/ubrugt ud, og
+# koden er ikke understøttet af GNU...
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customs kan ikke eksporteres: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1616,7 +1825,7 @@ msgstr ""
 "\n"
 "# Implicitte regler."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1624,7 +1833,7 @@ msgstr ""
 "\n"
 "# Ingen implicitte regler."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1633,244 +1842,265 @@ msgstr ""
 "\n"
 "# %u implicitte regler, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminale."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "FEJL: num_pattern_rules forkert! %u != %u"
+msgstr "FEJL: forkert num_pattern_rules!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 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:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "Læg på"
+msgstr "Læg på"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Afbrudt"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Afslut"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Ulovlig instruktion"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Sporings-/stoppunkts-fælde"
+msgstr "Sporings-/stoppunkts-fælde"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Afbrudt"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
-msgstr "IOT_fælde"
+msgstr "IOT_fælde"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "Emulatorfælde"
+msgstr "Emulatorfælde"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Undtagelsestilfælde ved flydendetals-operation"
+msgstr "Undtagelsestilfælde ved flydendetals-operation"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
-msgstr "Dræbt"
+msgstr "Dræbt"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Busfejl"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Lagersegmentfejl"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Ugyldigt systemkald"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
-msgstr "Røret blev brudt"
+msgstr "Røret blev brudt"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarmen gik"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Termineret"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Brugerdefineret signal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Brugerdefineret signal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Barnet afsluttet"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Strømmen gik"
+msgstr "Strømmen gik"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Stoppet"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Stoppet (ville læse fra tty)"
+msgstr "Stoppet (ville læse fra tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Stoppet (ville skrive til tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Stoppet (signal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "Begrænsning af CPU-tid overskredet"
+msgstr "Begrænsning af CPU-tid overskredet"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Grænse for filstørrelse overskredet"
+msgstr "Grænse for filstørrelse overskredet"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Virtuel tidsgrænse overskredet"
+msgstr "Virtuel tidsgrænse overskredet"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Profileringstiden udløb"
+msgstr "Profileringstiden udløb"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "Vinduet blev ændret"
+msgstr "Vinduet blev ændret"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
-msgstr "Fortsættes"
+msgstr "Fortsættes"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Kritisk I/O-tilstand"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O mulig"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Resurse tabt"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Faresignal"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
-msgstr "Informationsforespørgsel"
+msgstr "Informationsforespørgsel"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Flydendetalshjælpeprocessor ikke tilgængelig"
+msgstr "Flydendetalshjælpeprocessor ikke tilgængelig"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
-#, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
+"%s strcache brugt: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
-#, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
+"%s strcache brugt: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr "%s strcache fri: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
+
+#: strcache.c:287
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s # strenge i strcache: %d / opslag = %lu / fundne = %lu\n"
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# Statistik for fil-hash-spande:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatisk"
+
+#: variable.c:1610
 msgid "default"
 msgstr "forvalgt"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
-msgstr "miljø"
+msgstr "miljø"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefil"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "miljø med -e"
+msgstr "miljø med -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "kommandolinje"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "'override'-direktiv"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatisk"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (fra '%s', linje %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# Statistik for variabelsæt-hash-spande:\n"
+msgstr "# Statistik for variabelsæt-hash-spande:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1878,171 +2108,197 @@ msgstr ""
 "\n"
 "# Variabler\n"
 
-#: variable.c:1627
-#, fuzzy
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Mønsterspecifikke variabelværdier"
+"# Mønsterspecifikke variabelværdier"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Ingen mønsterspecifikke variabelværdier."
+"# Ingen mønsterspecifikke variabelværdier."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u mønsterspecifikke variabelværdier"
+"# %u mønsterspecifikke variabelværdier"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "advarsel: udefineret vaiabel '%.*s'"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search mislykkedes med %d\n"
+msgstr "sys$search() mislykkedes med %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Advarsel: Tom omdirigering\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "intern fejl: '%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+"-advarsel, du kan blive nødt til at genetablere CTRL-Y-behandling fra DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Ukendt indbygget kommando '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fejl, tom kommando\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Omdirigeret inddata from %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Omdirigeret fejl to %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Omdirigeret uddata til %s\n"
+msgstr "Tilføj uddata til slutningen af %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Omdirigeret uddata til %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Tilføj %.*s og ryd op\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "Udfører i stedet %s\n"
+msgstr "Udfører i stedet %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fejl ved spawn, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# VPATH-søgestier\n"
+"# VPATH-søgestier\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Ingen 'vpath'-søgestier"
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr "# Ingen 'vpath'-søgestier."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u 'vpath'-søgestier.\n"
+"# %u 'vpath'-søgestier.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Ingen generel ('VPATH'-variabel) søgesti."
+"# Ingen generel ('VPATH'-variabel) søgesti."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Generel ('VPATH'-variabel) søgesti:\n"
+"# Generel ('VPATH'-variabel) søgesti:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Ugyldig værdi i 'update_status'-felt!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Fejl 0x%x (ignoreret)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Kører kommandoer fra %s:%lu for at opdatere målet '%s'.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Kører indbyggede kommandoer for at opdatere målet '%s'.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # strcache-buffere: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# statistik for strcache-hashtabeller:\n"
+#~ "# "
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "Syntaksfejl, stadig inden i '\"'\n"
 
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Fik et SIGCHLD; %u uhøstede børn.\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."
+#~ 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."
+#~ msgstr "Sætter make tilbage til enkelt job-tilstand."
 
 #~ msgid ""
 #~ "%sThis is free software; see the source for copying conditions.\n"
@@ -2051,7 +2307,7 @@ msgstr ""
 #~ 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"
+#~ "%sBESTEMT FORMÅL.\n"
 
 #~ msgid "extraneous `endef'"
 #~ msgstr "fremmed 'endef'"
@@ -2066,7 +2322,7 @@ msgstr ""
 #~ msgstr "intet filnavn for '%sinclude'"
 
 #~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "mål '%s' efterlader forudsætningsmønstret tomt"
+#~ msgstr "mål '%s' efterlader forudsætningsmønstret tomt"
 
 #~ msgid ""
 #~ "\n"
@@ -2086,7 +2342,7 @@ msgstr ""
 #~ msgstr "# %.3f filer per spand i gennemsnit, maks. %u filer i en spand.\n"
 
 #~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Stands proces for at tillade et fejlsøgningsprogram at hænge sig på"
+#~ msgstr "Stands proces for at tillade et fejlsøgningsprogram at hænge sig på"
 
 #~ msgid "# No variables."
 #~ msgstr "# Ingen variabler."
index ef209cf..e6455d1 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 4e9c506..29e285a 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -14,124 +14,130 @@ msgid ""
 msgstr ""
 "Project-Id-Version: make 3.81-b3\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: »%s«"
 
-#: ar.c:125
+#: ar.c:123
 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:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: Archiv »%s« existiert nicht"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: »%s« ist kein gültiges Archiv"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: Eintrag »%s« existiert nicht in »%s«"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
 "touch: Ungünstiger Rückgabewert beim Zugriff \n"
 "von ar_member_touch auf »%s«"
 
-#: arscan.c:69
+#: arscan.c:67
 #, 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:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "»lbr$ini_control« schlug mit Status = %d fehl"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, 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:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (der Name ist möglicherweise gekürzt)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  Nutzer-ID = %d, Gruppen-ID = %d, Modus = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Abbruch.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] Archiveintrag »%s« ist wohl falsch; nicht gelöscht"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** Archiveintrag »%s« ist wohl falsch; nicht gelöscht"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Datei »%s« wird gelöscht"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Datei »%s« wird gelöscht"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  Auszuführende Kommandos"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (eingebaut):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (aus »%s«, Zeile %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -139,241 +145,245 @@ msgstr ""
 "\n"
 "# Verzeichnisse\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: Konnte den Status nicht feststellen.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (Schlüssel (key) %s,  letzte Änderung (mtime) %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (Gerät %d, I-Knoten (inode) [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (Gerät %ld, I-Knoten (inode) %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Keine"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " Dateien, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "keine"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " Unmöglichkeiten"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " bisher."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Rekursive Variable »%s« referenziert sich (schließlich) selbst"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "Nicht abgeschlossene Variablenreferenz"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+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:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+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:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, 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:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, 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:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Löschen der Zwischendatei »%s«"
 
-#: file.c:396
+#: file.c:400
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** Löschen der Zwischendatei »%s«"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Zeitstempel außerhalb der Reihenfolge; %s wird ersetzt"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Aktuelle Zeit"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Dies ist kein Ziel:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Wertvolle Datei (Voraussetzung von .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Vorgetäuschtes Ziel (Voraussetzung von .PHONY)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Kommandozeilen-Ziel (target)."
 
-#: file.c:935
+#: file.c:960
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Ein Standardwert oder MAKEFILES »make«-Steuerdatei."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Keine impliziten Regeln vorhanden."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Suche nach impliziten Regeln wurde durchgeführt."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Suche nach impliziten Regeln wurde nicht durchgeführt."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Ersetzung für implizites/statisches Muster: »%s«\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Datei ist ein Zwischenschritt in den Abhängigkeiten."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Erzeugt außerdem:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Zeit der letzten Änderung wurde nicht überprüft."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Die Datei existiert nicht."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Datei ist sehr alt."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Zuletzt geändert %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Datei wurde aktualisiert."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Datei wurde nicht aktualisiert."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Derzeit laufende Befehle (DAS IST EIN BUG)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Derzeit laufende Befehle für Abhängigkeiten (DAS IST EIN BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Erfolgreich aktualisiert."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Eine Aktualisierung ist notwendig (-q ist angegeben)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Aktualisierung fehlgeschlagen."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Ungültiger Wert in »update_status«-Eintrag!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Ungültiger Wert im »command_state«-Eintrag!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -381,124 +391,182 @@ msgstr ""
 "\n"
 "# Dateien"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "Nicht-numerisches erstes Argument zur  »word«-Funktion"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "Nicht-numerisches erstes Argument für die »wordlist«-Funktion"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "Nicht-numerisches zweites Argument zur »wordlist«-Funktion"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): 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:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "»create_child_process«: »DuplicateHandle(Err)« schlug fehl (e=%d)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "»CreatePipe()« schlug fehl (e=%d)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() schlug fehl\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Lösche temporäre Stapelverarbeitungsdatei %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr ""
+
+#: function.c:2158
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "write: %s: %s"
+msgstr "Schreibfehler: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "Zuwenig Argumente (%d) für die Funktion »%s«"
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion »%s«"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "Nicht beendeter Aufruf der Funktion »%s«: »%c« fehlt"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: Option »%s« ist mehrdeutig\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Zuwenig Argumente (%d) für die Funktion »%s«"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Zuwenig Argumente (%d) für die Funktion »%s«"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: Option »%s« ist mehrdeutig\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: Option »--%s« erlaubt kein Argument\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: Option »%c%s« erlaubt kein Argument\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: Option »%s« erfordert ein Argument\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: unerkannte Option »--%s«\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: unerkannte Option »%c%s«\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: unerlaubte Option -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ungültige Option -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: Option erfordert ein Argument -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: Option »-W %s« ist mehrdeutig\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: Option »-W %s« erlaubt kein Argument\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -519,131 +587,156 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Suche nach einer impliziten Regel für »%s«.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Vermeide Rekursion in den impliziten Regeln.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Versuche Muster-Regel mit Ersetzung »%.*s«.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Unmögliche Voraussetzung »%s« abgelehnt.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Unmögliche implizite Voraussetzung »%s« abgelehnt.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Versuche Voraussetzung »%s«.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Fand die Voraussetzung »%s« als VPATH »%s«\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Suche nach einer Regel mit der Zwischendatei »%s«.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "temporäre Datei kann nicht erzeugt werden\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Fehler 0x%x (ignoriert)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Fehler 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (Speicherauszug erstellt)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Fehler %d (ignoriert)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (eingebaut):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Fehler 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Fehler %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (Speicherauszug erstellt)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr ""
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Warte auf noch nicht beendete Prozesse..."
 
-#: job.c:579
+#: job.c:639
 #, fuzzy, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Aktiver Kindprozess 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (entfernt)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Sammle erfolglosen Kindprozess 0x%08lx PID %ld %s\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Sammle erfolgreichen Kindprozess 0x%08lx PID %ld %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Lösche temporäre Stapelverarbeitungsdatei »%s«\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Lösche temporäre Stapelverarbeitungsdatei »%s«\n"
+
+#: job.c:949
 #, fuzzy, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Entferne Kindprozess 0x%08lx PID %ld %s aus der Kette.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "Schreibe Job-Server"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "Marke des Kindprozesses 0x%08lx PID (%s) freigegeben.\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "Schreibe Job-Server"
+
+#: job.c:1612 job.c:2332
 #, 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:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -652,112 +745,169 @@ msgstr ""
 "\n"
 "%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Marke für den Kindprozess 0x%08lx (%s) erhalten.\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "Lese Pipe für die Jobs"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Archiv »%s« existiert nicht"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Es ist nicht notwendig, das Target »%s« neu zu erzeugen"
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%sKeine Regel vorhanden, um das Target »%s«, \n"
+"  benötigt von »%s«, zu erstellen%s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "Lasteinschränkung kann nicht erzwungen werden: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, fuzzy, c-format
 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:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommando nicht gefunden"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell-Programm wurde nicht gefunden"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL gewechselt (war »%s«, ist »%s«)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Erstelle temporäre Stapelverarbeitungsdatei %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr ""
+"Parallele Abarbeitung (-j) \n"
+"wird auf dieser Plattform nicht unterstützt."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Optionen:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Aus Kompatibilitätsgründen ignoriert\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Alle Ziele ohne Bedingungen erstellen\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -766,18 +916,18 @@ msgstr ""
 "                              In VERZEICHNIS wechseln, bevor etwas getan "
 "wird\n"
 
-#: main.c:311
+#: main.c:320
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "Viele Informationen zur Fehlersuche ausgeben"
 
-#: main.c:313
+#: main.c:322
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "Verschiedene Arten von Debug-Information ausgeben"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -786,12 +936,12 @@ msgstr ""
 "                              Umgebungsvariablen überschreiben »make«-"
 "Steuerdateien\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -799,16 +949,16 @@ msgstr ""
 "  -f DATEI, --file=DATEI, --makefile=DATEI\n"
 "                              DATEI als »make«-Steuerdatei lesen\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Diese Meldung ausgeben und beenden\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "Fehler in den Befehlen irgnorieren"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -817,7 +967,7 @@ msgstr ""
 "                              VERZEICHNIS nach inkludierten\n"
 "                              »make«-Steuerdateien durchsuchen\n"
 
-#: main.c:330
+#: main.c:339
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
@@ -826,45 +976,51 @@ msgstr ""
 "N Jobs gleichzeitig erlauben; unbegrenzte Anzahl \n"
 "von Jobs ohne Argument"
 
-#: main.c:332
+#: main.c:341
 #, 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:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "Die interne Datenbank von »make« ausgeben"
 
-#: main.c:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -873,22 +1029,22 @@ msgstr ""
 "Keine Befehle ausführen; der Exit-Status gibt an, ob die Dateien\n"
 "aktuell sind"
 
-#: main.c:349
+#: main.c:361
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "Die eingebauten impliziten Regeln deaktivieren"
 
-#: main.c:351
+#: main.c:363
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "Die eingebauten Variablenbelegungen deaktivieren"
 
-#: main.c:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Befehle nicht ausgeben.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -896,38 +1052,43 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              -k abschalten.\n"
 
-#: main.c:358
+#: main.c:370
 #, 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:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "Viele Informationen zur Fehlersuche ausgeben"
+
+#: main.c:374
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "Die Versionsnummer von »make« ausgeben und beenden"
 
-#: main.c:362
+#: main.c:376
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "Das aktuelle Verzeichnis ausgeben"
 
-#: main.c:364
+#: main.c:378
 #, 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:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
@@ -935,22 +1096,32 @@ msgid ""
 msgstr ""
 "Eine Warnung ausgeben, wenn eine undefinierte Variable referenziert wird"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "Eine leere Zeichenkette ist als Dateiname ungültig"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "Unbekanntes Debug-Level angegeben »%s«"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "Interner Fehler: mehrfache --jobserver-fds Optionen"
+
+#: main.c:848
 #, fuzzy, c-format
 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:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -966,207 +1137,229 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Zugriffsverletzung: Schreiboperation an Adresse %x\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Zugriffsverletzung: Leseoperation an Adresse %x\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s setzt für 30 Sekunden aus..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "»sleep(30)« ist abgeschlossen. Es geht weiter.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (temporäre Datei)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (temporäre Datei)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "Interner Fehler: mehrfache --jobserver-fds Optionen"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "Interner Fehler: Falsche --jobserver-fds Angabe »%s«"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "Warnung: -jN in »make«-Verarbeitungszweig erzwungen: \n"
 "Jobserver-Modus nicht verfügbar."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "Jobserver verdoppelt"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (temporäre Datei)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (temporäre Datei)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr ""
+"Parallele Abarbeitung (-j) \n"
+"wird auf dieser Plattform nicht unterstützt."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "Öffnen der Pipe für die Jobs"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "Initialisierung der Pipe für den jobserver"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Symbolische Links sind nicht unterstützt: -L wird abgeschaltet."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Aktualisiere »make«-Steuerdateien...\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Konnte die »make«-Steuerdatei »%s« nicht neu erstellen."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Die eingebundene »make«-Steuerdatei »%s« wurde nicht gefunden."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Die »make«-Steuerdatei »%s« wurde nicht gefunden"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln."
 
-#: main.c:2102
+#: main.c:2354
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Erneute Ausführung:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (temporäre Datei): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Keine Targets angegeben und keine »make«-Steuerdatei gefunden"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Keine Targets"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Aktualisieren der Ziele...\n"
 
-#: main.c:2306
+#: main.c:2550
 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:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Syntax: %s [Optionen] [Target] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Fehlermeldungen (auf Englisch) an <bug-make@gnu.org> senden.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' 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:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "Die Option »-%c« verlangt eine positive ganze Zahl als Argument"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1175,7 +1368,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1184,7 +1377,7 @@ msgstr ""
 "\n"
 "# »Make«-Datenbank; erstellt am: %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1193,110 +1386,110 @@ msgstr ""
 "\n"
 "# »Make«-Datenbank; beendet am: %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Unbekannter Fehler %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "Der virtuelle Speicher ist verbraucht"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Initialisierter Zugriff"
+
+#: misc.c:622
+msgid "User access"
+msgstr ""
+
+#: misc.c:670
+msgid "Make access"
+msgstr ""
+
+#: misc.c:704
+msgid "Child access"
+msgstr ""
+
+#: output.c:128
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
-#: main.c:3239
+#: output.c:130
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3242
+#: output.c:133
 #, fuzzy, c-format
-msgid "%s: Entering directory `%s'\n"
+msgid "%s: Entering directory '%s'\n"
 msgstr "»%s«\n"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3245
+#: output.c:135
 #, fuzzy, c-format
-msgid "%s: Leaving directory `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
 msgstr "»%s«\n"
 
-#: main.c:3250
+#: output.c:139
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
-#: main.c:3253
+#: output.c:141
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "ein unbekanntes Verzeichnis"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3257
+#: output.c:144
 #, fuzzy, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "»%s«\n"
 
 # !!! Attention: concatenated with the previous messages!!!
-#: main.c:3260
+#: output.c:146
 #, fuzzy, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "»%s«\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "Schreibfehler: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "Schreibfehler"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Schluss.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Unbekannter Fehler %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:355
+#: output.c:759
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: 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: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:729
-msgid "Initialized access"
-msgstr "Initialisierter Zugriff"
-
-#: 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 "Schreibfehler: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "Schreibfehler"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "»make«-Steuerdateien werden gelesen...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "»make«-Steuerdatei »%s« wird gelesen"
 
 #: read.c:335
@@ -1319,337 +1512,355 @@ msgstr " (macht nichts)"
 msgid " (no ~ expansion)"
 msgstr " (keine ~-Auflösung)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "Ungültige Syntax in der Bedingung"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "Befehle beginnen vor dem ersten Ziel"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "Es fehlt eine Regel vor den Befehlen"
 
 # Untranslatable because of weird %s usage -ke-
-#: read.c:1027
+#: read.c:1123
 #, fuzzy, c-format
 msgid "missing separator%s"
 msgstr "Fehlendes Trennzeichen%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (Meinten Sie TAB anstelle von 8 Leerzeichen?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "Es fehlt ein Target-Muster"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "Mehrfache Target-Muster"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "Target-Muster enthält kein »%%«"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "Fehlendes »endif«"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "Leerer Variablenname"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "Überflüssiger Text nach einer »endef«-Anweisung"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "Fehlendes »endef«, nicht abgeschlossenes »define«"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+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"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Überflüssiger Text nach einer »%s«-Anweisung"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "Überflüssiges »%s«"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "Es ist nur ein »else« je Verzweigung erlaubt"
 
-#: read.c:1797
+#: read.c:1892
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Falsche Ziel-bezogene Variablendefinition"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "Implizite und statische Muster-Regel vermischt"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "Implizite und normale Regel vermischt"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "Target »%s« passt nicht zum Target-Muster"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "Das Ziel »%s« enthält sowohl »:«- als auch »::«-Einträge"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "Das Ziel »%s« steht mehrfach in derselben Regel."
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "Warnung: Die Befehle für das Ziel »%s« werden überschrieben"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "Warnung: Alte Befehle für das Ziel »%s« werden ignoriert"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Warnung: NUL-Zeichen gelesen; der Rest der Zeile wird ignoriert"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Für das Ziel »%s« ist nichts zu tun."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "»%s« ist bereits aktualisiert."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Die Datei »%s« wird \"gestutzt\" (der Abhängigkeitsgraph).\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sKeine Regel, um »%s« zu erstellen%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Betrachte Target-Datei »%s«.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, 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:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Die Datei »%s« wurde bereits betrachtet.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Die Datei »%s« wird immer noch aktualisiert.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Aktualisierung der Datei »%s« beendet.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Die Datei »%s« existiert nicht.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Eine implizite Regel für »%s« gefunden.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Keine implizite Regel für »%s« gefunden.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Verwende die Standard-Kommandos für »%s«.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Zirkuläre Datei %s <- %s Abhängigkeit wird nicht verwendet."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Fertig mit den Voraussetzungen für die Ziel-Datei »%s«.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "Die Voraussetzungen von »%s« werden fertiggestellt.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Die Arbeit an der Target-Datei »%s« wurde aufgegeben.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Das Target »%s« wurde wegen Fehlern nicht aktualisiert."
 
-#: remake.c:727
+#: remake.c:731
 #, fuzzy, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+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:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, 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:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, 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:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, 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:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+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:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Es ist nicht notwendig, das Target »%s« neu zu erzeugen"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; benutze VPATH-Name »%s«"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Das Target »%s« muss neu erzeugt werden.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  Ignoriere VPATH-Name »%s«.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "Die Kommandos von »%s« werden gerade ausgeführt.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Fehler beim Aktualisieren der Target-Datei »%s«.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Die Target-Datei »%s« wurde erfolgreich aktualisiert.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "Target »%s« muss bei -q aktualisiert werden.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
 msgstr "Verwende die Standard-Kommandos für »%s«.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "*** Warnung: Datei »%s« hat zukünftige Änderungszeit (%s > %s)!"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s 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:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS Element »%s« ist kein Muster"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customs wird nicht exportieren: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 #, fuzzy
 msgid ""
 "\n"
@@ -1658,7 +1869,7 @@ msgstr ""
 "\n"
 "# Keine impliziten Regeln vorhanden."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1666,7 +1877,7 @@ msgstr ""
 "\n"
 "# Keine impliziten Regeln vorhanden."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1675,240 +1886,257 @@ msgstr ""
 "\n"
 "# %u implizite Regeln, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " Terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: »num_pattern_rules« falsch!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "Unbekanntes Signal"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Aufgelegt"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Abgebrochen (Interrupt)"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Quit"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Illegaler Befehl"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Abgebrochen (Aborted)"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT abfangen (IOT trap)"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT abfangen (EMT trap)"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Gleitkommafehler"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Abgebrochen (Killed)"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Bus-Fehler"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Adressierungsdefekt"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Falscher Systemaufruf"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Zerstörte Pipe"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Wecksignal"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Abgebrochen (Terminated)"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Nutzersignal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Nutzersignal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Kindprozess beendet"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Stromausfall"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Angehalten"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Angehalten (tty input)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Angehalten (tty output)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Angehalten (signal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU-Zeitschranke überschritten"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Dateigrößenschranke überschritten"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Virtueller Timer erloschen"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Profiling Timer erloschen"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Fenster hat sich verändert"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Fortgesetzt"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Dringende I/O-Bedingung"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O möglich"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Ressource verloren gegangen"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Gefahrensignal"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Informationsanforderung"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Es ist kein Koprozessor für Fließkommaoperationen vorhanden"
 
-#: strcache.c:235
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+
+#: strcache.c:266
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr "# %u Variablen für %u hash-Werte.\n"
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatisch"
+
+#: variable.c:1610
 msgid "default"
 msgstr "Standard"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "Umgebung"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "Makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "Umgebung per -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "Kommandozeile"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "»override«-Anweisung"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatisch"
-
-#: variable.c:1570
+#: variable.c:1636
 #, fuzzy, c-format
-msgid " (from `%s', line %lu)"
+msgid " (from '%s', line %lu)"
 msgstr " (aus »%s«, Zeile %lu):\n"
 
-#: variable.c:1612
+#: variable.c:1699
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %u Variablen für %u hash-Werte.\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1916,7 +2144,7 @@ msgstr ""
 "\n"
 "# Variablen\n"
 
-#: variable.c:1627
+#: variable.c:1714
 #, fuzzy
 msgid ""
 "\n"
@@ -1925,7 +2153,7 @@ msgstr ""
 "\n"
 "# Musterspezifische Variablenwerte"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1933,7 +2161,7 @@ msgstr ""
 "\n"
 "# Keine musterspezifischen Variablenwerte."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1942,92 +2170,92 @@ msgstr ""
 "\n"
 "# %u musterspezifische Variablenwerte"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "Warnung: undefinierte Variable »%.*s«"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "»sys$search« schlug mit %d fehl\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Warnung: Umleitung ins Leere!\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "Interner Fehler: »%s« command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Unbekanntes eingebautes Kommando »%s«\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fehler: Leere Anweisung\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Datei %s auf Standardeingabe umgeleitet\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Fehlerausgabe nach %s umgeleitet\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Ausgabe nach %s umgeleitet\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Ausgabe nach %s umgeleitet\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s wird stattdessen ausgeführt\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fehler beim Starten eines Kindprozesses, %d.\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2035,37 +2263,46 @@ msgstr ""
 "\n"
 "# VPATH-Suchpfade\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# Keine »vpath«-Suchpfade."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u »vpath«-Suchpfade.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Kein allgemeiner Suchpfad (Variable »VPATH«)."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Allgemeiner Suchpfad (Variable »VPATH«):\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Ungültiger Wert in »update_status«-Eintrag!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Fehler 0x%x (ignoriert)"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr ""
 #~ "Wenn »sh.exe« nicht vorhanden ist, \n"
index 5afbd6e..83cbb57 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index b8dcf08..18a1ee2 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,22 +1,24 @@
 # Mensajes en español para GNU make.
-# Copyright (C) 1996, 2001 Free Software Foundation, Inc.
-# Max de Mendizábal <max@upn.mx>, 1996, 2001.
+# Copyright (C) 1996, 2001, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Max de Mendizábal <max.de.mendizabal@gmail.com>, 1996, 2011.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU make 3.81-b3\n"
+"Project-Id-Version: GNU make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2011-02-16 14:50-0600\n"
+"Last-Translator: Max de Mendizábal <max.de.mendizabal@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "Se intentó utilizar una característica no implementada: `%s'"
 
 # Sugerencia: touch -> `touch'. sv
@@ -31,111 +33,115 @@ 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:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "El programa para hacer un `touch' no está disponible en VMS"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: El archivo `%s' no existe"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: `%s' no es un archivo válido"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: El miembro `%s' no existe en `%s'"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, 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
-#, fuzzy, c-format
+#: arscan.c:67
+#, 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"
+"fallo en lbr$set_module() para extraer la información del módulo, estado = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "fallo en lbr$ini_control con estado = %d"
+msgstr "fallo en lbr$ini_control() con estado = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Miembro `%s'%s: %ld bytes en %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (el nombre puede estar truncado)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Fecha %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Break.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, 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:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr ""
 "*** Miembro del archivo `%s' podría estar incorrecto; aunque no se elimina"
 
 # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
 # Ok. mm
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, 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:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Se borra el archivo `%s'"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  comandos para ejecutar"
+msgstr "#  las instrucciones para ejecutar"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (interconstruido):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (de `%s', linea %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -143,7 +149,7 @@ msgstr ""
 "\n"
 "# Directorios\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: podría no estar establecido.\n"
@@ -151,14 +157,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:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
@@ -167,49 +173,49 @@ msgstr ""
 # ¿No sobraría el "posiblemente"?
 # Propongo dejarlo en " no se pudo abrir ". sv
 # Ok. Es consistente con otras traducciones. mm
-#: dir.c:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (llave %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, nodo-i %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "No"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " archivos, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "no"
 
-#: dir.c:1071
+#: dir.c:1064
 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:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " hasta ahora."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " imposibilidades en %lu directorios.\n"
@@ -223,46 +229,46 @@ 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:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 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:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "la referencia a la variable está sin terminar"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+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:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+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:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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'."
 
 # Lo repetiré una y mil veces... :-)
 # "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:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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'."
@@ -270,46 +276,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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, 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:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, 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:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, 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:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "*** Se borran los archivos temporales...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Hora actual"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# No es un objetivo:"
 
 # Pondría: es una dependencia de em+
 # Si, tienes razón. mm
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Archivo valioso (es una dependencia de .PRECIOUS)."
 
@@ -321,7 +327,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:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  objetivo falso (dependencia de .PHONY)."
 
@@ -332,10 +338,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:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Objetivo de línea de instrucciones."
+msgstr "#  Objetivo en línea de instrucciones."
 
 # Habría que entender esto
 # Creo que esto es lo que significa. El fuente no es demasiado claro. mm
@@ -345,15 +350,22 @@ 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:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Por omisión, MAKEFILES, o -include/sinclude makefile."
 
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# No hay reglas implícitas."
+
 # Propongo efectuada en lugar de terminada. sv
 # 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:937
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  La búsqueda de reglas implícitas ha sido efectuada."
 
@@ -361,22 +373,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:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  La búsqueda de reglas implícitas ha sido efectuada."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  rama del patrón implícita/estática: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 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:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  También hace:"
 
@@ -384,71 +396,62 @@ 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:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  La fecha de modificación no se comprobó."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  El archivo no existe."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  El archivo es muy viejo."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Última modificación %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  El archivo ha sido actualizado."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  El archivo ha sido actualizado."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Las instrucciones siguen ejecutándose (ESTO ES UN BUG)."
+msgstr "#  Las instrucciones continúan en ejecución (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:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
-"#  Las instrucciones de las dependencias siguen ejecutándose (ESTO ES UN "
+"#  Las instrucciones de las dependencias continúan en ejecución (ESTO ES UN "
 "BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Actualizado con éxito."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Necesita ser actualizado (la opción -q está activa)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Fallo al ser actualizado."
 
-# ## Le he añadido un "¡" con tu permiso.
-# 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:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  ¡Valor inválido en el miembro `update_status'!"
-
 # ## Lo mismo.
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  ¡Valor inválido en el miembro `command_state'!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -456,7 +459,7 @@ msgstr ""
 "\n"
 "# Archivos"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -466,127 +469,193 @@ msgstr ""
 "# estadísticas de la tabla de hash de los archivos:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "el primer argumento de la función `word' no es numérico"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "el primer argumento de la función `wordlist' no es numérico"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "el primer argumento de la función `wordlist' no es numérico"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: fallo en DuplicateHandle(In), (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): fallo en DuplicateHandle(In), (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: fallo en DuplicateHandle(Err), (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): fallo en DuplicateHandle(Err), (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "Fallo en CreatePipe(), (e=%d)\n"
+msgstr "Fallo en CreatePipe(), (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): fallo en process_init_fd()\n"
+msgstr "windows32_openpipe(): fallo en process_init_fd()\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Limpiando el archivo temporal %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering"
+# concuerde bien con esta frase y con la anterior simultáneamente. sv
+# No. Ya revisé el fuente y transcribo el trozo pertinente:
+#  char *message = entering ? "Entering" : "Leaving";
+#  if (makelevel == 0)
+#    printf ("%s: %s ", program, message);
+#  else
+#    printf ("%s[%u]: %s ", program, makelevel, message);
+# Como notarás lo del directorio va en otro lado.
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "error al escribir: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "Número de argumentos (%d) insuficientes para la función `%s'"
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "No implementado en esta plataforma: función `%s'"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "la llamada a la función `%s' no concluyó: falta `%c'"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, c-format
+msgid "Invalid function name: %s\n"
+msgstr ""
+
+#: function.c:2550
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Número de argumentos (%d) insuficientes para la función `%s'"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Número de argumentos (%d) insuficientes para la función `%s'"
+
+#: getopt.c:659
+#, fuzzy, 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:685
-#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+#: getopt.c:683
+#, fuzzy, 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:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, 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:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opción no reconocida `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opción no reconocida `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción inválida -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción inválida -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un argumento -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, 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:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, 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"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
-#, fuzzy, c-format
+#, 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"
+msgstr "no se pueden reservar %lu bytes para la tabla de hash: memoria agotada"
 
 #: hash.c:280
 #, c-format
@@ -607,17 +676,17 @@ 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:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Buscando una regla implícita para `%s'.\n"
 
 # Lo mismo.
 # Buscando una regla implítita para el miembro del archivo  `%s' em+
 # Se me resbaló. mm
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, 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"
 
 # Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a
@@ -627,10 +696,15 @@ 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando la recursión en la regla implícita.\n"
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
 # FUZZY
 # Esto me suena fatal. Se a que se refiere, porque lo
 # he visto, pero en cristiano no se si podría entenderlo.
@@ -640,8 +714,8 @@ msgstr "Evitando la recursi
 # pondría a toda costa gerundio ( intentando ) em+
 # Ok con el gerundio. Pero también tengo que meditarlo. mm
 #: implicit.c:491
-#, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Intentando una regla de patrón con la ramificación `%.*s'.\n"
 
 # ## Corrijo la palabra "dependencia". sv
@@ -651,9 +725,9 @@ msgstr "Intentando una regla de patr
 # aparecer tal y como está ahora (Se rechaza la dependencia imposible
 #  `%s' `%s )'em+
 # Ok. mm
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Se rechaza la regla de dependencia imposible `%s'.\n"
 
 # ## Corrijo la palabra "dependencia". sv
@@ -663,9 +737,9 @@ msgstr "Se rechaza la regla de dependencia imposible `%s'.\n"
 # aparecer tal y como está ahora (Se rechaza la dependencia imposible
 #  `%s' `%s )'em+
 # Ok. mm
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Se rechaza la dependencia imposible `%s'.\n"
 
 # FUZZY
@@ -676,9 +750,9 @@ msgstr "Se rechaza la dependencia imposible `%s'.\n"
 # 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:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Intentando la regla de dependencia `%s'.\n"
 
 # Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a
@@ -688,118 +762,143 @@ msgstr "Intentando la regla de dependencia `%s'.\n"
 # 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"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Se encontró la dependencia `%s' como la VPATH `%s'.\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, 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:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "No se puede crear un archivo temporal\n"
 
-# Lo mismo. sv
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Error 0x%x (no tiene efecto)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Error 0x%x"
-
-# Lo mismo. sv
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Error %d (no tiene efecto)"
-
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Error %d"
-
 # Sugerencia: " (volcado de `core')". sv
 # 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:460
+#: job.c:482
 msgid " (core dumped)"
 msgstr " (core dumped) [Núcleo vaciado a un archivo]"
 
+# Preferiría mil veces "sin efecto" o algo parecido. sv
+# Ok. Habíamos quedado en `no tiene efecto'. mm
+#: job.c:487
+msgid " (ignored)"
+msgstr " (no tiene efecto)"
+
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (interconstruido):"
+
+# No me gusta esta traducción de override. Mira a ver
+# si encaja mejor alguna de las dos que se proponen arriba
+# em+
+# Aunque no me acaba de convencer, que te parece ésto? mm
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "atención: se imponen las instrucciones para el objetivo `%s'"
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Error 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
+msgstr "*** [%s] Error %d"
+
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
+
 # ¿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:549
+#: job.c:609
 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:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Hijo activo 0x%08lx (%s) PID %ld %s\n"
+msgstr "Hijo activo %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (remoto)"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Se pierde al proceso hijo descarriado 0x%08lx PID %ld %s\n"
+msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n"
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Se gana al proceso hijo descarriado 0x%08lx PID %ld %s\n"
+msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n"
 
 # Give up no es enfocar, es abandonar, o desistir em+
 # Si, metí la pata. mm
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Se limpia el archivo temporal %s\n"
 
+# Give up no es enfocar, es abandonar, o desistir em+
+# Si, metí la pata. mm
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Se limpia el archivo temporal %s\n"
+
 # Proceso hijo em+
 # Ok.
-#: job.c:861
-#, fuzzy, c-format
+#: job.c:949
+#, 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"
+msgstr "Se elimina al proceso hijo %p PID %s%s de la cadena.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "escribir en el servidor de tareas"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Se libera el token para el proceso hijo 0x%08lx (%s).\n"
+msgstr "Se libera el token para el proceso hijo %p (%s).\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+#: job.c:1023
+msgid "write jobserver"
+msgstr "escribir en el servidor de tareas"
+
+#: job.c:1612 job.c:2332
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "fallo en process_easy() al lanzar el proceso (e=%d)\n"
+msgstr "fallo en process_easy() para lanzar al proceso (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -810,62 +909,78 @@ msgstr ""
 
 # Proceso hijo em+
 # Ok.
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Se pone al proceso hijo %p (%s) PID %s%s en la cadena.\n"
+
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
 
 # Lo mismo, pon Proceso hijo, y quita lo que hay
 # entre paréntesis em+
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Se obtiene el token para el proceso hijo 0x%08lx (%s).\n"
+msgstr "Se obtiene el token para el proceso hijo %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "tubería de trabajos leídos"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: El archivo `%s' no existe"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "No es necesario reconstruir el objetivo `%s'."
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%sNo hay ninguna regla para construir el objetivo `%s', necesario para `%s'%s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "no se puede forzar la carga límite: "
 
-#: job.c:1985
+#: job.c:2199
 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:1987
+#: job.c:2210
 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:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "No se puede restaurar stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "No se puede restaurar stdout\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "No se puede restaurar stdin\n"
+
+#: job.c:2365
+#, c-format
 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"
+msgstr "hacer un hijo descarriado %s, aún se espera por el pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: No se encontró el programa"
@@ -876,55 +991,101 @@ 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:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: No se ha encontrado el `shell'"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: el espacio ambiental podría estar agotado"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL ha cambiado (era `%s' y ahora es `%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Se crea el archivo temporal %s\n"
 
-#: job.c:2963
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Contenido del archivo de lotes:%s\n"
+"\t%s\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Contenido del archivo de lotes:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr ""
+"Los trabajos en paralelo (-j) no están implementados en esta plataforma."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opciones:\n"
 
 # Lo mismo de arriba con "ignorar". sv
 # Ok. mm.
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 "  -b, -m                      No se tendrá en cuenta por compatibilidad.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Hace incondicionalmente todos los objetivos.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -935,7 +1096,7 @@ msgstr ""
 # ¿"depurado" o "depuración"? sv
 # Puse de depurado para evitar la cacofonía información depuración.
 # Sugerencias bienvenidas. mm
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d          Se imprimirán grandes cantidades de información de depurado.\n"
@@ -943,14 +1104,14 @@ msgstr ""
 # ¿"depurado" o "depuración"? sv
 # Puse de depurado para evitar la cacofonía información depuración.
 # Sugerencias bienvenidas. mm
-#: main.c:313
+#: main.c:322
 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:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -959,12 +1120,14 @@ msgstr ""
 "                Las variables ambientales se imponen a las de los "
 "makefiles.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"   --eval=CADENA               Evalúla la CADENA como una instrucción de un "
+"makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -972,7 +1135,7 @@ msgstr ""
 "  -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n"
 "                                   Lee al ARCHIVO como un makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Muestra este mensaje y finaliza.\n"
 
@@ -982,14 +1145,13 @@ 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:325
-#, fuzzy
+#: main.c:334
 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:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -1000,7 +1162,7 @@ msgstr ""
 # Yo traduciría "infinite" por "infinitos", no por "una infinidad", que
 # parece que son muchos menos... sv
 # Ok. mm
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -1011,14 +1173,14 @@ msgstr ""
 
 # No entiendo por qué aquí empleas subjuntivo: "pudieron". sv
 # Es incorrecto. Es una de las opciones `k' que dice... mm
-#: main.c:332
+#: main.c:341
 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:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -1028,7 +1190,7 @@ msgstr ""
 "      No inicia con trabajos múltiples a menos que la carga esté por debajo "
 "de N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -1036,8 +1198,7 @@ msgstr ""
 "  -L, --check-symlink-times   Utiliza el último mtime entre los enlaces "
 "simbólicos y los objetivos.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
@@ -1047,7 +1208,7 @@ msgstr ""
 "                              No ejecuta ninguna instrucción; sólo las "
 "muestra.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -1057,30 +1218,35 @@ msgstr ""
 "                           Supone que ARCHIVO es muy viejo y no lo "
 "reconstruye.\n"
 
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
 # de 'make' em+
 # ok. mm
-#: main.c:345
+#: main.c:357
 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:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 "  -q, --question                     No se ejecutan las instrucciones; el "
 "estado de salida\n"
-"indicará si están actualizados.\n"
+"                                     indicará si están actualizados.\n"
 
 # ¿desabilitan o deshabilitan? sv
 # Error de dedo. mm
 # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ?
 # Pon almacenadas internamente, que es exactamente lo que son :) em+
 # Bueno, bajo protesta. mm
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Se deshabilitan las reglas implícitas "
@@ -1091,18 +1257,17 @@ 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:351
+#: main.c:363
 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:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       No muestra las intrucciones.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -1115,22 +1280,31 @@ msgstr ""
 #
 # Pues entonces cámbialo arriba tambien em+
 # En donde? mm
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Se tocan los objetivos en vez de "
 "reconstruirlos.\n"
 
+# ¿"depurado" o "depuración"? sv
+# Puse de depurado para evitar la cacofonía información depuración.
+# Sugerencias bienvenidas. mm
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+"  -d          Se imprimirán grandes cantidades de información de depurado.\n"
+
 # Me comería el "Se" inicial. "Muestra la versión..." sv
 # Ok. mm
-#: main.c:360
+#: main.c:374
 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:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Muestra el directorio actual.\n"
 
@@ -1139,7 +1313,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:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -1147,7 +1321,7 @@ msgstr ""
 "  --no-print-directory        Desactiva -w, aún cuando haya sido activado "
 "implícitamente.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -1158,7 +1332,7 @@ msgstr ""
 
 # Lo mismo. sv
 # Todas estas parecen descripciones de opciones.
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -1166,23 +1340,33 @@ msgstr ""
 "  --warn-undefined-variables  Advierte cuando se hace una referencia a una "
 "variable no definida.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "no se permite que una cadena vacía sea el nombre de un archivo"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "se especificó un nivel de depuración desconocido `%s'"
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "error interno: hay varias opciones --jobserver-fds"
+
+#: main.c:848
+#, c-format
 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"
+"%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -1192,109 +1376,132 @@ msgid ""
 msgstr ""
 "\n"
 "Se ha llamado un filtro de excepción no manejado desde el programa %s\n"
-"Código de excepción %x\n"
-"Banderas de excepción %x\n"
-"Dirección de la excepción %x\n"
+"Código de la excepción = %lx\n"
+"Banderas de la excepción = %lx\n"
+"Dirección de la excepción = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 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"
+msgstr "Violación de acceso: operación de escritura en la dirección 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 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"
+msgstr "Violación de acceso: operación de lectura en la dirección 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, 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"
+msgstr "la función find_and_set_shell() pone el valor del default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+"la función find_and_set_shell() pone el valor de la ruta de búsceda "
+"default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspendida por 30 segundos..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "se hizo un sleep(30). Continuando.\n"
 
-#: 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:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (archivo temporal)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (archivo temporal)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Reajustando al modo monotarea (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "error interno: hay varias opciones --jobserver-fds"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Cliente del servidor de tareas (fds %d,%d)\n"
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "error interno: cadena --jobserver-fds inválida `%s'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Cliente del servidor de tareas (fds %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 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:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "servidor de tareas duplicado"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr ""
+"El archivo Makefile ha sido especificado dos veces desde la entrada estándard"
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (archivo temporal)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (archivo temporal)"
+
+#: main.c:1984
+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:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Reajustando al modo monotarea (-j1)."
+
+#: main.c:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Cliente del servidor de tareas (fds %d,%d)\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "creando una tubería de trabajos"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "se inicializa la tubería al servidor de tareas"
 
-#: main.c:1812
+#: main.c:2064
 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:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Actualizando archivos makefiles....\n"
 
@@ -1304,61 +1511,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:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Fallo al reconstruir el makefile `%s'."
 
 # Lo mismo. sv
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "No se encontró el makefile incluído `%s'."
 
 # Lo mismo. sv
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "No se encontró el Makefile `%s'"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "No se pudo regresar al directorio original."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-ejecutando[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (archivo temporal)"
 
-#: main.c:2247
+#: main.c:2495
 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:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "No se especificó ningún objetivo y no se encontró ningún makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "No hay objetivos"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Actualizando los objetivos finales....\n"
 
-#: main.c:2306
+#: main.c:2550
 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 "
@@ -1369,12 +1576,12 @@ msgstr ""
 # "target" es "objetivo", no "objetivos". Fíjate que lleva puntos
 # suspensivos, permitiendo así varios objetivos. sv
 # Ok. mm
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1383,7 +1590,7 @@ msgstr ""
 "\n"
 "Este programa fue construido para %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1392,40 +1599,36 @@ msgstr ""
 "\n"
 "Este programa construido para %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, 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:2562
+#: main.c:2810
 #, 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"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "la opción `%s%s' requiere un argumento no-vacío de tipo cadena"
 
 # Me comería el "de" de "requiere de" sv
 # Ok. mm
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "la opción `-%c' requiere un argumento positivo y entero"
 
-#: main.c:3054
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-" %sEste programa fue construido para %s\n"
+msgstr "%sEste programa fue construido para %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"%sEste programa fue construido para %s (%s)\n"
+msgstr "%sEste programa fue construido para %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1433,8 +1636,14 @@ msgid ""
 "%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 ""
+"%sLicencia GPLv3+: GNU GPL versión 3 o posterior <http://gnu.org/licenses/"
+"gpl.html>\n"
+"%sEste es software libre: cualquiera es libre para redistribuirlo y "
+"modificarlo.\n"
+"%sNo existe GARANTÍA ALGUNA, hasta los límites permitidos por las leyes "
+"aplicables.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1443,26 +1652,59 @@ msgstr ""
 "\n"
 "# Base de datos del Make, mostrada en %s"
 
-# make -> Make. sv
-# Ok. mm
-# Porqué 'del', o pones 'del programa' Make o pones
-# 'de Make' em+
-# Ok. mm
-#: main.c:3096
-#, c-format
-msgid ""
-"\n"
-"# Finished Make data base on %s\n"
-msgstr ""
-"\n"
-"# Se termina la base de datos de Make en %s\n"
+# make -> Make. sv
+# Ok. mm
+# Porqué 'del', o pones 'del programa' Make o pones
+# 'de Make' em+
+# Ok. mm
+#: main.c:3297
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Se termina la base de datos de Make en %s\n"
+
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Error desconocido %d"
+
+# 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:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "memoria virtual agotada"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Acceso inicializado"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Acceso del usuario"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Acceso del Make"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Acceso del hijo"
 
-#: main.c:3237
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: se ingresa a un directorio desconocido\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: se sale del directorio desconocido\n"
@@ -1476,9 +1718,9 @@ 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:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: se ingresa al directorio `%s'\n"
 
 # Probablemente sea aquí donde haya que ponerle el "el" para que "Entering"
@@ -1490,17 +1732,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:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: se sale del directorio `%s'\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: se ingresa a un directorio desconocido\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: se sale del directorio desconocido\n"
@@ -1514,9 +1756,9 @@ 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:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: se ingresa al directorio `%s'\n"
 
 # Probablemente sea aquí donde haya que ponerle el "el" para que "Entering"
@@ -1528,61 +1770,11 @@ 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:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 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:316
-msgid ".  Stop.\n"
-msgstr ".  Alto.\n"
-
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Error desconocido %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"
-
-# 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: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: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:729
-msgid "Initialized access"
-msgstr "Acceso inicializado"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Acceso del usuario"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Acceso del Make"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Acceso del hijo"
-
 # Probablemente sea aquí donde haya que ponerle el "el" para que "Entering"
 # concuerde bien con esta frase y con la anterior simultáneamente. sv
 # No. Ya revisé el fuente y transcribo el trozo pertinente:
@@ -1592,24 +1784,41 @@ msgstr "Acceso del hijo"
 #  else
 #    printf ("%s[%u]: %s ", program, makelevel, message);
 # Como notarás lo del directorio va en otro lado.
-#: misc.c:954
+#: output.c:515
 #, c-format
 msgid "write error: %s"
 msgstr "error al escribir: %s"
 
-#: misc.c:956
+#: output.c:517
 msgid "write error"
 msgstr "error al escribir"
 
+# 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
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Alto.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
 # Sugerencia: eliminar la palabra "archivo". sv
 # Ok. Mejora. mm
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Leyendo makefiles...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Leyendo makefile `%s'"
 
 #: read.c:335
@@ -1632,14 +1841,28 @@ msgstr " (no importa)"
 msgid " (no ~ expansion)"
 msgstr " (no hay expansión del ~)"
 
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
 # ## Sintaxis no llevaba tilde.
 # Ok. mm
-#: read.c:759
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "sintaxis no válida en condicional"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr "las instrucciones comenzaron antes del primer objetivo"
 
@@ -1648,152 +1871,154 @@ 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:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
 msgstr "falta una regla antes de las instrucciones"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "falta un separador%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (¿Quiere decir TAB en vez de 8 espacios?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "falta un patrón de objetivos"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "hay varios patrones de objetivos"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "el patrón de objetivo no contiene `%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "falta un `endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "nombre de variable vacío"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr ""
-"Hay un texto irrelevante o mal colocado después de la instrucción `endef'"
+"Hay un texto irrelevante o mal colocado después de la instrucción `define'"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "falta un `endef', no se terminó un `define'"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+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"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Texto irrelevante o mal colocado después de la instrucción `%s'"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "irrelevante o mal colocado `%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "sólo se admite un `else' por condicional"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr ""
 "La definición de las variables específicas al blanco está mal construida"
 
-#: read.c:1855
-#, fuzzy
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr "los prerequisitos no pueden ser definidos por guiones de instrucciones"
+msgstr ""
+"los prerequisitos no pueden ser definidos por los guiones de instrucciones"
 
-#: read.c:1908
+#: read.c:2009
 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:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "las reglas implícitas y las normales están mezcladas"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, 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:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, 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:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, 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."
 
 # No me gusta esta traducción de override. Mira a ver
 # 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:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "atención: se imponen comandos para el objetivo `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "atención: se imponen las instrucciones para el objetivo `%s'"
 
 # Ojo con ignora. sv
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "atención: se ignoran las instrucciones viejas para el objetivo `%s'"
 
-#: read.c:2392
+#: read.c:2530
 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:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "No se hace nada para `%s'."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "`%s' está actualizado."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, 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:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sNo hay ninguna regla para construir el objetivo `%s'%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr ""
 "%sNo hay ninguna regla para construir el objetivo `%s', necesario para `%s'%s"
 
@@ -1804,8 +2029,8 @@ msgstr ""
 # se refiere a lo que dice Santiago, es decir, 'archivo objetivo'  em+
 # Ok creo que tienen razón. mm
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Se considera el archivo objetivo `%s'.\n"
 
 # Un compañero mío dice que una buena regla es poner siempre que se pueda
@@ -1815,58 +2040,58 @@ msgstr "Se considera el archivo objetivo `%s'.\n"
 # ¿Qué te parece? sv
 # Bien y tiene razón. mm
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "Se intentó, sin éxito, actualizar el archivo `%s'.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "El archivo `%s' ya fue considerado.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Se continúa actualizando el archivo `%s'.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Se terminó de actualizar el archivo `%s'.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "El archivo `%s' no existe.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** Atención: el archivo .LOW_RESOLUTION_TIME `%s' tiene una resolución "
 "demasiado alta"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, 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:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, 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:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Se utilizan las instrucciones por defecto para `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "Se utilizan las instrucciones por omisión para `%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Se elimina la dependencia circular %s <- %s."
@@ -1874,142 +2099,142 @@ 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:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Se terminaron las dependencias del archivo objetivo `%s'.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, 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:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Se abandona el archivo objetivo `%s'.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Debido a los errores, el objetivo `%s' no se reconstruyó."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "El prerequisito `%s' es posterior al objetivo `%s'.\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "La dependencia `%s' del blanco `%s' no existe.\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, 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:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "La dependencia `%s' es posterior al objetivo `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "La dependencia `%s' es anterior 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:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, 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"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "No hay instrucciones para `%s' y ningún prerrequisito ha cambiado.\n"
 
-#: remake.c:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Haciendo `%s' debido a la bandera always-make.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "No es necesario reconstruir el objetivo `%s'."
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 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:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Se debe reconstruir el objetivo `%s'.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  Se ignora el nombre del VPATH `%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+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:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, 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:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, 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:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be 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"
+#: remake.c:1027
+#, fuzzy, 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:1357
-#, c-format
-msgid "Warning: File `%s' has modification time in the future"
+#: remake.c:1372
+#, fuzzy, 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:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+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"
+"Atención: El archivo `%s' tiene una hora de modificación %s s en el futuro"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr "El elemento .LIBPATTERNS `%s' no es un patrón"
 
 # ¿Las aduanas? sv
@@ -2024,12 +2249,12 @@ msgstr "El elemento .LIBPATTERNS `%s' no es un patr
 # no se exportarán em+
 # Muchísimo más claro (es más me gusta más en español que en inglés con tu
 # arreglo) mm
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Los valores definidos por el usuario no se exportarán: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -2037,7 +2262,7 @@ msgstr ""
 "\n"
 "# Reglas implícitas."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -2045,7 +2270,7 @@ msgstr ""
 "\n"
 "# No hay reglas implícitas."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -2054,7 +2279,7 @@ msgstr ""
 "\n"
 "# %u reglas implícitas, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
@@ -2062,16 +2287,16 @@ msgstr " terminal."
 # Gracias. mm
 # ¿ qué tal erróneo ? em+
 # Si, suena mejor. mm
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: ¡num_pattern_rules erróneo!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "señal desconocida"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Colgado"
 
@@ -2079,25 +2304,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:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interrumpir"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Finalizar"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Instrucción no válida"
 
 # Los trap los hemos dejado como traps, simplemente. em+
 # Ok. mm
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Trace/breakpoint trap"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Abortado"
 
@@ -2105,13 +2330,13 @@ msgstr "Abortado"
 # Enrique tiene esta misma frase en glibc. sv
 # Eso es :) IOT trap em+
 # Ok. mm
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT trap"
 
 # Otra em+
 # Ok. mm
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT trap"
 
@@ -2120,7 +2345,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:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Excepción de coma flotante"
 
@@ -2129,23 +2354,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:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Terminado (killed)"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Error en el bus"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Fallo de segmentación"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Llamada al sistema errónea"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Tubería rota"
 
@@ -2156,36 +2381,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:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarma del reloj"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Finalizado"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Señal 1 definida por el usuario"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Señal 2 definida por el usuario"
 
 # Proceso hijo terminado em+
 # Ok. mm
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Proceso hijo terminado"
 
 # Fallo. sv
 # Alimentación eléctrico em+
 # Ok. mm
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Falla de alimentación eléctrica"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Detenido"
 
@@ -2196,30 +2421,30 @@ msgstr "Detenido"
 # Requiere 'de';) , como te vea Santiago que le metes
 # otro 'de' otra vez ... em+
 # Ok. mm
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Detenido (se requiere entrada de terminal)"
 
 # lo mismo, se requiere entrada de terminal ,  em+
 # Ok. mm
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Detenido (se requiere salida de terminal)"
 
 # idem em+
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Detenido (se requiere una señal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Se agotó el tiempo de CPU permitido"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Se excedió el tamaño máximo de archivo permitido"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "El contador de tiempo virtual ha expirado"
 
@@ -2231,125 +2456,149 @@ 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:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "El contador de tiempo para la generación del perfil ha expirado"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "La ventana ha cambiado"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Continuado"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Condición urgente de I/O"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "Posible I/O"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Señal de peligro"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Petición de información"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Coprocesador de punto flotante no disponible"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
-#, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
+"%s strcache utilizado: total = %d (%d) / máx = %d / mín = %d / promedio = "
+"%d\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
-#, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
+"%s strcache utilizado: total = %d (%d) / máx = %d / mín = %d / promedio = "
+"%d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s strcache libre: total = %d (%d) / máx = %d / mín = %d / promedio = %d\n"
+
+#: strcache.c:287
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s # de cadenas en strcache: %d / búsquedas = %lu / coincidencias = %lu\n"
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# estadísticas de la tabla de hash de los archivos:\n"
 "# "
 
-#: variable.c:1541
+# Lo he cmabiado em+
+# Ok. Deberíamos platicarlo con Ulrich. mm
+#: variable.c:1607
+msgid "automatic"
+msgstr "automática/o"
+
+#: variable.c:1610
 msgid "default"
 msgstr "por defecto"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "entorno"
 
 # Sugerencia: No poner archivo. sv
 # Ok. mm
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
 # 'bajo -e' = 'con -e activo' em+
 # Ok. Esta inversión en los idiomas sajones se pega. mm
-#: variable.c:1550
+#: variable.c:1619
 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:1553
+#: variable.c:1622
 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:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "directiva de sobreposición `override'"
 
-# Lo he cmabiado em+
-# Ok. Deberíamos platicarlo con Ulrich. mm
-#: variable.c:1559
-msgid "automatic"
-msgstr "automática/o"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (de `%s', línea %lu):"
 
 # Bueno. Aquí un punto de discusión. Traduzco buckets por cubetas o
@@ -2357,11 +2606,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:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# estadísticas del conjunto de variables de la tabla de hash:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -2369,7 +2618,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -2377,7 +2626,7 @@ msgstr ""
 "\n"
 "# Valores de variables específicas al patrón"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -2385,7 +2634,7 @@ msgstr ""
 "\n"
 "# No hay valores de variables específicas al patrón."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -2396,59 +2645,59 @@ 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:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "atención: la variable `%.*s' no ha sido definida"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "fallo en sys$search con %d\n"
+msgstr "fallo en sys$search() con %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Atención: redirección vacía\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "error interno: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INTERCONSTRUIDO [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD INTERCONSTRUIDO %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM INTERCONSTRUIDO %s\n"
 
 # Por defecto, como haces arriba em+
 # en efecto, mm
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Instrucción interconstruida desconocida `%s'.\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Error, comando vacío\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada redirigida desde %s\n"
@@ -2462,41 +2711,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:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Se redirecciona el error a %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
 msgstr "Salida redirigida a %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Salida redirigida a %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Agregada a %.*s y limpieza\n"
 
 # "en sustituto" me suena muy raro. Propongo: "en su lugar" en su lugar :-) sv
 # Ok. mm
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "En su lugar, se ejecuta %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, 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:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2506,39 +2755,78 @@ msgstr ""
 
 # Rutas creo que queda mejor. sv
 # Ok. Es más común. mm
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+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:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u rutas de búsqueda `vpath'.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# No hay ruta de búsqueda general (variable `VPATH')."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Ruta de búsqueda general (variable `VPATH'):\n"
 "# "
 
+# ## Le he añadido un "¡" con tu permiso.
+# 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.
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  ¡Valor inválido en el miembro `update_status'!"
+
+# Lo mismo. sv
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Error 0x%x (no tiene efecto)"
+
+# Lo mismo. sv
+#~ msgid "[%s] Error %d (ignored)"
+#~ msgstr "[%s] Error %d (no tiene efecto)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr ""
+#~ "Se invocan la instrucciones desde %s:%lu para actualizar el objetivo `"
+#~ "%s'.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr ""
+#~ "Se utilizan las instrucciones internas para actualizar al objetivo `%s'.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # de búfers strcache: %d (* %d B/búfer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# estadísticas de la tabla de hash:\n"
+#~ "# "
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "No especifique -j o --jobs si sh.exe no está disponible."
 
@@ -2760,11 +3048,6 @@ msgstr ""
 #~ msgid "intermediate"
 #~ msgstr "intermedia"
 
-# Preferiría mil veces "sin efecto" o algo parecido. sv
-# Ok. Habíamos quedado en `no tiene efecto'. mm
-#~ msgid " (ignored)"
-#~ msgstr " (no tiene efecto)"
-
 # Protestar al autor. No hay forma de poner trabajo(s) desconocido(s)
 # con coherencia. sv
 # Si, si no tienen identificado a su padre. Ni modo. mm
index cc9ea0c..f950a1c 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index b85fbc4..efd8db2 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,116 +7,122 @@ msgid ""
 msgstr ""
 "Project-Id-Version: make 3.81-b3\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: fi\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'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "yritettiin käyttää ominaisuutta, jolle ei ole tukea: \"%s\""
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: Arkistoa \"%s\" ei ole olemassa"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: \"%s\" ei ole kelvollinen arkisto"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: Arkistossa \"%1$s\" ei ole jäsentä \"%2$s\""
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, 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
+#: arscan.c:67
 #, 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:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control epäonnistui, tila = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "kirjastoa \"%s\" ei voi avata jäsenen \"%s\" etsimiseksi"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, 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:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (nimi voi olla typistynyt)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Päiväys %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, oikeudet = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Katkaisu.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] Arkistojäsen \"%s\" voi olla viallinen - ei poisteta"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** Arkistojäsen \"%s\" voi olla viallinen - ei poisteta"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Poistetaan tiedosto \"%s\""
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Poistetaan tiedosto \"%s\""
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  käynnisetttävät komennot"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (sisäänrakennettu):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (tiedostosta \"%s\", rivi %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,224 +130,228 @@ msgstr ""
 "\n"
 "# Hakemistot\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: tilaa ei voitu lukea.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (avain %s, maika %d: "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (laite %ld, i-solmu %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Ei"
 
 # Juuri näin, muodostetaan käännöslause yksittäisistä sanoista...
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " tiedostoa, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "ei"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " mahdottomuutta"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " tähän mennessä."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " mahdottomuutta %lu hakemistossa.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Rekursiivinen muuttuja \"%s\" viittaa (lopulta) itseensä"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "päättämätön muuttujaviittaus"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "Tiedostolle \"%s\" määriteltiin komentoja paikassa %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr "Tiedostolle \"%s\" löytyi komentoja oletussääntöhaussa,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Poistetaan aputiedosto \"%s\""
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Poistetaan aputiedostot...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Tämänhetkinen aika"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Ei kohde:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Valekohde (ennakkoehto .PHONY:lle)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Komentorivikohde."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Ei oletussääntöjä."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Oletussääntöhaku on suoritettu."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Oletussääntöhakua ei ole suoritettu."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr ""
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Tiedosto on välitason ennakkoehto."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Tuotetaan myös:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Muutosaikaa ei koskaan tarkastettu."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Tiedosto ei ole olemassa."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Tiedosto on hyvin vanha."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Viimeksi muutettu %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Tiedosto on päivitetty."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Tiedostoa ei ole päivitetty."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Päivitetty onnistuneesti."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Vaatii päivitystä (-q on asetettu)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Päivitys epäonnistui."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Virheellinen arvo \"update_status\"-jäsenessä!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Virheellinen arvo \"command_state\"-jäsenessä!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -349,7 +359,7 @@ msgstr ""
 "\n"
 "# Tiedostot"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -359,117 +369,175 @@ msgstr ""
 "# tilasto tiedostojen hajautustaulusta:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "ei-numeerinen ensimmäinen argumentti \"word\"-funktiolle"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "\"word\"-funktion ensimmäisen argumentin on oltava suurempi kuin 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "ei-numeerinen ensimmäinen argumentti \"wordlist\"-funktiolle"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "ei-numeerinen toinen argumentti \"wordlist\"-funktiolle"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): 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:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) epäonnistui (v=%d)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() epäonnistui (v=%d)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() epäonnistui\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
 
-#: function.c:2150
+#: function.c:2151
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "kirjoitusvirhe: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "Liian vähän (%d) argumenttejeja funktiolle \"%s\""
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "Ei toteutettu tällä alustalla: funktio \"%s\""
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "päättämätön kutsu funktioon \"%s\": puuttuva \"%c\""
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: valitsin \"%s\" on moniselitteinen\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Liian vähän (%d) argumenttejeja funktiolle \"%s\""
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Liian vähän (%d) argumenttejeja funktiolle \"%s\""
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: valitsin \"%s\" on moniselitteinen\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: valitsin \"--%s\" ei salli argumenttia\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: valitsin \"%c%s\" ei salli argumenttia\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: valitsin \"%s\" vaatii argumentin\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: tunnistamaton valitsin \"--%s\"\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: tunnistamaton valitsin \"%c%s\"\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: virheellinen valitsin -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: virheellinen valitsin -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: valitsin vaatii argumentin -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: valitsin \"-W %s\" on moniselitteinen\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, fuzzy, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -490,131 +558,156 @@ msgstr "Uudelleenhajautus=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Törmäykset=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Etsitään oletussääntöä kohteelle \"%s\".\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle \"%s\".\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Vältetään oletussääntörekursio.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Kokeillaan hahmosääntöä rungolla \"%.*s\".\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Hylätään mahdoton säännön ennakkoehto \"%s\".\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Hylätään mahdoton oletusennakkoehto \"%s\".\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Yritetään käyttää säännön ennakkoehtoa \"%s\".\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Löydettiin ennakkoehto \"%s\", joka on VPATH \"%s\"\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Etsitään sääntöä aputiedostolla \"%s\".\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Väliaikaistiedoston luominen ei onnistu\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Virhe 0x%x (ei huomioida)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Virhe 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (muisti vedostettu)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Virhe %d (ei huomioida)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (sisäänrakennettu):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Virhe 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Virhe %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (muisti vedostettu)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Odotetaan keskeneräisiä töitä...."
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (etä)"
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
+
+#: job.c:949
 #, 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:920
-msgid "write jobserver"
-msgstr "työpalvelimen kirjoitus"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "työpalvelimen kirjoitus"
+
+#: job.c:1612 job.c:2332
 #, 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:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -623,111 +716,169 @@ msgstr ""
 "\n"
 "Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "työputken luku"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Arkistoa \"%s\" ei ole olemassa"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Ei tarvetta uudelleentuottaa kohdetta \"%s\""
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%1$s\"%3$s\"-kohteen tarvitseman kohteen \"%2$s\" tuottamiseen ei ole sääntöä"
+"%4$s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "kuormarajaa ei voi ottaa käyttöön: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 "tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 "tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Vakiosyötettä ei voitu palauttaa\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Vakiotulostetta ei voitu palauttaa\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Vakiosyötettä ei voitu palauttaa\n"
+
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Komentoa ei löytynyt"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Kuoriohjelmaa ei löytynyt"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: ympäristötila saattaa olla lopussa"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL muuttunut (oli \"%s\", nyt \"%s\")\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Luodaan väliaikainen komentotiedosto %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Valitsimet:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 "  -b, -m                      Yhteensopivuuden vuoksi jätetään huomiotta.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Tuota kaikki kohteet ehdoitta.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -735,16 +886,16 @@ msgstr ""
 "  -C HAKEMISTO, --directory=HAKEMISTO\n"
 "                              Siirry HAKEMISTOon ennen jatkamista.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Näytä runsaasti vianetsintätietoja.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "  --debug[=LIPUT]             Näytä monenlaisia vianetsintätietoja.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -753,12 +904,12 @@ msgstr ""
 "                              Ympäristömuuttujat kumoavat makefile-"
 "tiedostot.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -766,18 +917,18 @@ msgstr ""
 "  -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n"
 "                              Käytä TIEDOSTOa makefile-tiedostona.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Näytä tämä viesti ja poistu.\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Älä huomioi suoritettujen komentojen "
 "virheitä.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -786,7 +937,7 @@ msgstr ""
 "                              Etsi sisällytettäviä makefile:ja "
 "HAKEMISTOsta.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -794,14 +945,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Salli N yhtäaikaista työtä; ilman N:ää "
 "ääretön.\n"
 
-#: main.c:332
+#: main.c:341
 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:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -811,7 +962,7 @@ msgstr ""
 "                              Älä aloita useita töitä ellei kuormitus alle "
 "N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -819,7 +970,7 @@ msgstr ""
 "  -L, --check-symlink-times   Käytä uusinta mtime-aikaa symlinkkien ja\n"
 "                                kohteen välillä.\n"
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -830,7 +981,7 @@ msgstr ""
 "                              Näytä ajettavat komennot, älä käynnistä "
 "niitä.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -839,11 +990,17 @@ msgstr ""
 "  -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n"
 "                              Käsittele TIEDOSTO vanhana, älä tuota sitä.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 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:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -852,22 +1009,22 @@ msgstr ""
 "  -q, --question              Älä aja komentoja; paluuarvo kertoo ajan-\n"
 "                                tasaisuuden.\n"
 
-#: main.c:349
+#: main.c:361
 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:351
+#: main.c:363
 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:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Älä kaiuta komentoja.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -875,20 +1032,25 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Kumoaa valitsimen -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "  -t, --touch                 Kosketa kohteita tuottamisen sijaan.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -d                          Näytä runsaasti vianetsintätietoja.\n"
+
+#: main.c:374
 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:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Näytä nykyinen hakemisto.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -896,7 +1058,7 @@ msgstr ""
 "  --no-print-directory        Kumoa -w, vaikka se olisi käytössä "
 "oletuksena.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -905,7 +1067,7 @@ msgstr ""
 "new=TIEDOSTO\n"
 "                              Käsittele TIEDOSTO aina uutena.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -913,21 +1075,31 @@ msgstr ""
 "  --warn-undefined-variables  Varoita viittauksista määrittelemättömiin\n"
 "                                muuttujiin.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "tuntematon vianetsintätason määritys \"%s\""
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "sisäinen virhe: useitan --jobserver-fds -valitsimia"
+
+#: main.c:848
 #, fuzzy, c-format
 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:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -942,164 +1114,186 @@ msgstr ""
 "Poikkeusliput = %x\n"
 "Poikkeusosoite = %x\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen %x\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Suojausvirhe: lukuoperaatio osoitteeseen %x\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s keskeytyy 30 sekunniksi..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) valmis. Jatketaan.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (väliaikaistiedosto)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (väliaikaistiedosto)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Palataan yhden työn (-j1) tilaan."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "sisäinen virhe: useitan --jobserver-fds -valitsimia"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono \"%s\""
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "kaksinkertainen työpalvelin"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (väliaikaistiedosto)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (väliaikaistiedosto)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Palataan yhden työn (-j1) tilaan."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "luodaan työputki"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "alustetaan työpalvelimen putki"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Päivitetään makefile-tiedostoja....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Makefile-tiedoston \"%s\" uudelleentuottaminen epäonnistui."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Sisällytettyä makefile-tiedostoa \"%s\" ei löytynyt."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Makefile-tiedostoa \"%s\" ei löytynyt"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Uudelleenkäynnistetään[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (väliaikaistiedosto): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Ei kohteita"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2306
+#: main.c:2550
 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:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Käyttö: %s [valitsimet] [kohde] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1108,7 +1302,7 @@ msgstr ""
 "\n"
 "Tämä ohjelma on käännetty järjestelmälle %s.\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1117,37 +1311,37 @@ msgstr ""
 "\n"
 "Tämä ohjelma on käännetty järjestelmälle %s (%s).\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "Ilmoita ohjelmistovioista (englanniksi) osoitteeseen <bug-make@gnu.org>.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "valitsin \"-%c\" vaatii ei-tyhjän merkkijonoargumentin"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "valitsin \"-%c\" vaatii positiivisen kokonaislukuargumentin"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%sTämä ohjelma on käännetty järjestelmälle %s.\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%sTämä ohjelma on käännetty järjestelmälle %s (%s).\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1156,7 +1350,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1165,7 +1359,7 @@ msgstr ""
 "\n"
 "# Make-tietokanta, tulostettu %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1174,106 +1368,106 @@ msgstr ""
 "\n"
 "# Make-tietokanta saatu valmiiksi %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Tuntematon virhe %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "virtuaalimuisti lopussa"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Alkuperäiset käyttöoikeudet"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Käyttäjän käyttöoikeudet"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make-prosessin käyttöoikeudet"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Lapsiprosessin käyttöoikeudet"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: Siirrytään hakemistoon \"%s\"\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: Poistutaan hakemistosta \"%s\"\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Siirrytään tuntemattomaan hakemistoon\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: Siirrytään hakemistoon \"%s\"\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: Poistutaan hakemistosta \"%s\"\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "kirjoitusvirhe: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "kirjoitusvirhe"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ". Seis.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Tuntematon virhe %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "virtuaalimuisti lopussa"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "Alkuperäiset käyttöoikeudet"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Käyttäjän käyttöoikeudet"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Make-prosessin käyttöoikeudet"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Lapsiprosessin käyttöoikeudet"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "kirjoitusvirhe: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "kirjoitusvirhe"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Luetaan makefile-tiedostoja...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Luetaan makefile-tiedosto \"%s\""
 
 #: read.c:335
@@ -1296,331 +1490,349 @@ msgstr " (ei välitetä)"
 msgid " (no ~ expansion)"
 msgstr " (ei ~-laajennusta)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "virheellinen syntaksi ehtolauseessa"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "komennot alkavat ennen ensimmäistä kohdetta"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "puuttuva sääntö ennen komentoja"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "puuttuva erotin%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (ehkä tarkoitit sarkainta eikä kahdeksaa välilyöntiä?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "puuttuva kohdehahmo"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "useita kohdehahmoja"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "kohdehahmo ei sisällä %%-merkkiä"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "puuttuva \"endif\""
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "tyhjä muuttujan nimi"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "Ylimääräistä tekstiä \"endef\"-toimintaohjeen jälkeen"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "puuttuva \"endef\", päättämätön \"define\""
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+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"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Ylimääräistä tekstiä \"%s\"-toimintaohjeen jälkeen"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "ylimääräinen \"%s\""
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "vain yksi \"else\" ehtolausetta kohden"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Väärin muotoiltu kohdekohtainen muuttujamäärittely"
 
 # skripti?
-#: read.c:1855
+#: read.c:1951
 #, fuzzy
 msgid "prerequisites cannot be defined in recipes"
 msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "kohde \"%s\" ei täsmää kohdehahmon kanssa"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "kohdetiedostolla \"%s\" on sekä :- että ::-merkinnät"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, 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:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "varoitus: syrjäytetään kohteen \"%s\" komennot"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle \"%s\""
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Kohteelle \"%s\" ei tarvitse tehdä mitään."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "\"%s\" on ajan tasalla."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Karsitaan tiedosto \"%s\".\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sKohteen \"%s\" tuottamiseen ei ole sääntöä%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Tarkastellaan tiedostoa \"%s\".\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "Tiedoston \"%s\" päivitysyritys epäonnistui äskettäin.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Tiedostoa \"%s\" on jo tarkasteltu.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Päivitetään edelleen tiedostoa \"%s\".\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Tiedosto \"%s\" päivitetty.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Tiedosto \"%s\" ei ole olemassa.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla \"%s\" on "
 "korkearesoluutioinen aikaleima"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Kohteelle \"%s\" löytyi oletussääntö.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Kohteelle \"%s\" ei löytynyt oletussääntöä.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Käytetään oletuskomentoja kohteelle \"%s\".\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Kehäriippuvuus %s <- %s hylätty."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Kohdetiedoston \"%s\" ennakkoehdot täytetty.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "Kohteen \"%s\" ennakkoehtoja täytetään.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Luovutaan kohdetiedostosta \"%s\".\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Kohdetta \"%s\" ei tuotettu uudelleen virheiden vuoksi."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr ""
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Ennakkoehto \"%s\" on vanhempi kuin kohde \"%s\".\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, 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:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "Ennakkoehto \"%s\" on uudempi kuin kohde \"%s\".\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "Ennakkoehto \"%s\" on vanhempi kuin kohde \"%s\".\n"
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+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"
+#: remake.c:774
+#, fuzzy, 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:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Ei tarvetta uudelleentuottaa kohdetta \"%s\""
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; käytetään VPATH-nimeä \"%s\""
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Kohde \"%s\" on tuotettava uudelleen.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  Ei huomioida VPATH-nimeä \"%s\".\n"
 
-#: remake.c:815
+#: remake.c:819
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr ""
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Kohdetiedoston \"%s\" uudelleentuottaminen epäonnistui.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Kohdetiedosto \"%s\" uudelleentuotettiin onnistuneesti.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr ""
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "Varoitus: Tiedoston \"%s\" muutosaika on tulevaisuudessa"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "Varoitus: Tiedoston \"%s\" muutosaika on %.2g sekuntia tulevaisuudessa"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS-elementti \"%s\" ei ole hahmo"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1628,7 +1840,7 @@ msgstr ""
 "\n"
 "# Oletussäännöt"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1636,7 +1848,7 @@ msgstr ""
 "\n"
 "# Ei oletussääntöjä."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1645,242 +1857,259 @@ msgstr ""
 "\n"
 "# %u oletussääntöä, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr ""
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "VIKA: num_pattern_rules väärä! %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "tuntematon signaali"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Linjankatkaisu"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Keskeytys"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Lopetettu"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Virheellinen käsky"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Jäljitys/katkaisupisteansa"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Keskeytetty"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT-ansa"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT-ansa"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Liukulukupoikkeus"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Tapettu"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Väylävirhe"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Muistialueen ylitys"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Virheellinen järjestelmäkutsu"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Katkennut putki"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Herätyskello"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Päätetty"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Käyttäjän määrittelemä signaali 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Käyttäjän määrittelemä signaali 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Lapsi lopetti"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Sähkökatko"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Pysäytetty"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Pysäytetty (päätteen syöte)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Pysäytetty (päätteen tuloste)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Pysäytetty (signaali)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Suoritinaikaraja ylittynyt"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Tiedoston kokoraja ylitetty"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Virtuaaliajastin vanhentunut"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Profilointiajastin vanhentunut"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Ikkuna vaihtunut"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Jatkettu"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Kiireellinen I/O-tilanne"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O mahdollista"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Resurssi menetetty"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Vaarasignaali"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Tietopyyntö"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Käytettävissä ei ole liukulukusuoritinta"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:280
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# tilasto tiedostojen hajautustaulusta:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automaattinen"
+
+#: variable.c:1610
 msgid "default"
 msgstr "oletus"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "ympäristö"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "-e:n alainen ympäristö"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "komentorivi"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "\"override\"-toimintaohje"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automaattinen"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (tiedostosta \"%s\", rivi %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# muuttujajoukon hajautustaulutilastot:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1888,7 +2117,7 @@ msgstr ""
 "\n"
 "# Muuttujat\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1896,7 +2125,7 @@ msgstr ""
 "\n"
 "# Hahmokohtaisia muuttujien arvoja"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1904,7 +2133,7 @@ msgstr ""
 "\n"
 "# Ei hahmokohtaisia muuttuja-arvoja."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1913,93 +2142,93 @@ msgstr ""
 "\n"
 "# %u hahmokohtaista muuttuja-arvoa"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "varoitus: määrittelemätön muuttuja \"%.*s\""
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search epäonnistui, arvo %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Varoitus: Tyhjä uudelleenohjaus\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "sisäinen virhe: \"%s\" command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "SISÄÄNRAKENNETTU [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "SISÄÄNRAKENNETTU CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "SISÄÄNRAKENNETTU RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Tuntematon sisäänrakennettu komento \"%s\"\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Virhe, tyhjä komento\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Syöte uudelleenohjattu kohteesta %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Virhetuloste uudelleenohjattu kohteeseen %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Käynnistetään sen sijaan %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Virhe käynnistyksessä, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2007,37 +2236,46 @@ msgstr ""
 "\n"
 "# VPATH-hakupolut\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# Ei \"vpath\"-hakupolkuja."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u \"vpath\"-hakupolkua.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Ei yleistä (\"VPATH\"-muuttuja) hakupolkua."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Yleinen (\"VPATH\"-muuttuja) hakupolku:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Virheellinen arvo \"update_status\"-jäsenessä!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Virhe 0x%x (ei huomioida)"
+
 #~ msgid "Do not specify -j or --jobs if sh.exe is not available."
 #~ msgstr "Älä anna -j tai --jobs -valitsinta jos sh.exe ei ole käytettävissä."
 
index 85109c0..89271db 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index 4b38b22..a652fcc 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
 # 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
+# Kevin Raymond <shaiton@fedoraproject.org>, 2012
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU make 3.81.91\n"
+"Project-Id-Version: GNU make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2012-02-27 23:05+0100\n"
+"Last-Translator: Kevin Raymond <shaiton@fedoraproject.org>\n"
 "Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\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:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "tentative d'utiliser une caractéristique non prise en charge : « %s »"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "tentative d'utiliser une caractéristique non prise en charge : « %s »"
 
-#: ar.c:125
+#: ar.c:123
 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:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch : l'archive « %s » n'existe pas"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch : l'archive « %s » n'existe pas"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch : « %s » n'est pas une archive valide"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch : « %s » n'est pas une archive valide"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch : le membre « %s » n'existe pas dans « %s »"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch : le membre « %s » n'existe pas dans « %s »"
 
-#: 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 »"
+#: ar.c:164
+#, fuzzy, 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 »"
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 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:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control() a échoué avec un code = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "impossible d'ouvrir la bibliothèque %s pour récupérer le membre « %s »"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "impossible d'ouvrir la bibliothèque %s pour récupérer le membre « %s »"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (le nom peut être tronqué)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Date %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Break.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr ""
-"*** [%s] le membre d'archive « %s » peut avoir un problème ; il n'a pas été "
+"*** [%s] le membre d'archive « %s » peut avoir un problème ; il n'a pas été "
 "supprimé"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr ""
-"*** Le membre d'archive « %s » peut avoir un problème; il n'a pas été supprimé"
+"*** Le membre d'archive « %s » peut avoir un problème; il n'a pas été "
+"supprimé"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Suppression du fichier « %s »"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Suppression du fichier « %s »"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Suppression du fichier « %s »"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** Suppression du fichier « %s »"
 
-#: commands.c:676
+#: commands.c:684
 msgid "#  recipe to execute"
 msgstr "#  recette à exécuter"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
-msgstr " (commande interne):"
+msgstr " (commande interne) :"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (de « %s », ligne %lu) :\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (de « %s », ligne %lu) : \n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -131,226 +139,230 @@ msgstr ""
 "\n"
 "# Répertoires\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s : « stat » impossible.\n"
+msgstr "# %s: « stat » impossible.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (clé %s, mtime %d) : ouverture impossible.\n"
+msgstr "# %s (clé %s, mtime %d) : ouverture impossible.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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]) : ouverture impossible.\n"
+msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n"
+msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, 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:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : "
+msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (périphérique %ld, inode %ld) : "
+msgstr "# %s (périphérique %ld, inode %ld) : "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Aucun"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " fichier(s), "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "aucune"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " impossibilité(s)"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " jusqu'ici."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilités dans %lu répertoires.\n"
 
-#: 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:125
+#, fuzzy, 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:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "référence incomplète à une variable"
 
-#: file.c:267
-#, c-format
-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:269
+#, fuzzy, c-format
+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:272
-#, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+#: file.c:274
+#, fuzzy, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr ""
-"La recette pour le fichier « %s » a été trouvée par une recherche de règle "
+"La recette pour le fichier « %s » a été trouvée par une recherche de règle "
 "implicite,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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 »."
+"mais « %s » est maintenant considéré comme étant le même fichier que « %s »."
 
-#: file.c:278
-#, c-format
-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:280
+#, fuzzy, c-format
+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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
-"impossible de renommer le deux-points simple « %s » en deux-points double « %s "
-"»"
+"impossible de renommer le deux-points simple « %s » en deux-points double "
+"« %s »"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
-"impossible de renommer le deux-points double « %s » en deux-points simple « %s "
-"»"
-
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Suppression du fichier intermédiaire « %s »"
+"impossible de renommer le deux-points double « %s » en deux-points simple "
+"« %s »"
 
 #: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Suppression du fichier intermédiaire « %s »"
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Suppression des fichiers intermédiaires...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s : horodatage hors limite ; remplacement par %s"
+msgstr "%s: horodatage hors limite ; remplacement par %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Heure actuelle"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# Pas une cible :"
+msgstr "# Pas une cible :"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Fichier précieux (dépendance de .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Cible factice (dépendance de .PHONY)."
 
-#: file.c:933
+#: file.c:958
 msgid "#  Command line target."
 msgstr "#  Cible de la ligne de commande."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Une valeur par défaut, MAKEFILES ou -include/sinclude makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Pas de règle implicite."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  La recherche de règle implicite a été effectuée."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  La recherche de règle implicite n'a pas été effectuée."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Préfixe de motif implicite ou statique : « %s »\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Préfixe de motif implicite ou statique : « %s »\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Le fichier est une dépendance intermédiaire."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Fabrique également :"
+msgstr "#  Fabrique également :"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Heure de modification jamais vérifiée."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "# Le fichier n'existe pas."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Le fichier est très ancien."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Dernière modification %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Le fichier a été mis à jour."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Le fichier n'a pas été mis à jour."
 
-#: file.c:968
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Recette en cours d'exécution (CECI EST UNE ANOMALIE)."
 
-#: file.c:971
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 "#  Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Mise à jour réussie."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  A besoin d'être mis à jour (l'option -q est activée)."
+msgstr "#  À besoin d'être mis à jour (l'option -q est activée)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  N'a pas pu être mis à jour."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Valeur non valable dans le membre « update_status » !"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Valeur non valable dans le membre « command_state » !"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Valeur non valable dans le membre « command_state » !"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -358,131 +370,189 @@ msgstr ""
 "\n"
 "# Fichiers"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# stats des tables de hachage des fichiers :\n"
+"# stats des tables de hachage des fichiers :\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "le premier argument de la fonction « word » doit être numérique"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
+msgstr "le premier argument de la fonction « word » doit être numérique"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
-msgstr "le premier argument de la fonction « word » doit être plus grand que 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "le premier argument de la fonction « word » doit être plus grand que 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "le premier argument de la fonction « wordlist » doit être numérique"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "le premier argument de la fonction « wordlist » doit être numérique"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "le deuxième argument de la fonction « wordlist » doit être numérique"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "le deuxième argument de la fonction « wordlist » doit être numérique"
 
-#: function.c:1458
-#, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+#: function.c:1460
+#, fuzzy, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "windows32_openpipe(): DuplicateHandle(In) a échoué (e=%ld)\n"
 
-#: function.c:1469
-#, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+#: function.c:1483
+#, fuzzy, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "windows32_open_pipe(): DuplicateHandle(Err) a échoué (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() a échoué (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe(): process_init_fd() a échoué\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Nettoyage du fichier de commandes temporaire %s\n"
 
-#: function.c:2150
-#, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
 
-#: function.c:2162
-#, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "non implémenté sur cette plateforme: fonction « %s »"
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "erreur d'écriture : %s"
 
-#: function.c:2212
+#: function.c:2164
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "appel à la fonction « %s » non terminé : « %c » manquant"
+msgid "Invalid file operation: %s"
+msgstr ""
 
-#: getopt.c:661
-#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s : l'option « %s » est ambiguë\n"
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
 
-#: 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"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "non implémenté sur cette plateforme: fonction « %s »"
 
-#: 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"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "appel à la fonction « %s » non terminé : « %c » manquant"
 
-#: 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"
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
 
-#: getopt.c:736
+#: function.c:2548
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s : option non reconnue « --%s »\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:740
+#: function.c:2550
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s : option non reconnue « %c%s »\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: l'option « %s » est ambiguë\n"
+
+#: getopt.c:683
+#, fuzzy, 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:688
+#, fuzzy, 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:766
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: l'option « %s » nécessite un argument\n"
+
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: option non reconnue « --%s »\n"
+
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: option non reconnue « %c%s »\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s : option non admise -- %c\n"
+msgstr "%s: option non admise -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s : option incorrecte -- %c\n"
+msgstr "%s: option incorrecte -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s : l'option nécessite un argument -- %c\n"
+msgstr "%s: l'option nécessite un argument -- %c\n"
 
-#: getopt.c:846
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: l'option « -W %s » est ambiguë\n"
+
+#: getopt.c:862
+#, fuzzy, 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"
+
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s : l'option « -W %s » est ambiguë\n"
+msgid "guile: Expanding '%s'\n"
+msgstr ""
 
-#: getopt.c:864
+#: guile.c:71
 #, 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"
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
 
 #: hash.c:49
 #, c-format
 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"
+"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée"
 
 #: hash.c:280
 #, c-format
@@ -499,131 +569,155 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Collisions=%ld/%ld=%.0f%%"
 
-#: 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:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Recherche d'une règle implicite pour « %s ».\n"
 
-#: 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:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Évitement de récursion dans une régle implicite.\n"
-
-#: implicit.c:491
-#, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Essai du motif avec « %.*s » comme radical.\n"
+msgstr "Évitement de récursion dans une règle implicite.\n"
 
-#: implicit.c:674
+#: implicit.c:486
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Rejet d'une dépendance de règle impossible « %s ».\n"
-
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rejet d'une dépendance implicite impossible « %s ».\n"
-
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Essai de la dépendance de règle « %s ».\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Essai de la dépendance implicite « %s ».\n"
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Essai du motif avec « %.*s » comme radical.\n"
+
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Rejet d'une dépendance de règle impossible « %s ».\n"
+
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Rejet d'une dépendance implicite impossible « %s ».\n"
+
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Essai de la dépendance de règle « %s ».\n"
+
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Essai de la dépendance implicite « %s ».\n"
+
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n"
+
+#: implicit.c:765
+#, fuzzy, 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:361
+msgid "Cannot create a temporary file\n"
+msgstr "Impossible de créer un fichier temporaire\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (core dump créé)"
 
-#: 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:487
+msgid " (ignored)"
+msgstr " (ignorée)"
 
-#: job.c:335
-msgid "Cannot create a temporary file\n"
-msgstr "Impossible de créer un fichier temporaire\n"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (commande interne) :"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Erreur 0x%x (ignorée)"
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "AVERTISSEMENT : surchargement de la recette pour la cible « %s »"
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
 msgstr "*** [%s] Erreur 0x%x"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Erreur %d (ignorée)"
-
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Erreur %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core dump créé)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Attente des tâches non terminées...."
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Processus fils actif %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (distant)"
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Récolte du processus fils perdant %p PID %s %s\n"
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Récolte du processus fils gagnant %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Nettoyage du fichier de commande temporaire %s\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Nettoyage du fichier de commande temporaire %s\n"
+
+#: job.c:949
 #, c-format
 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:920
-msgid "write jobserver"
-msgstr "écriture vers le serveur de tâches"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "Jeton relâché pour le processus fils %p (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "écriture vers le serveur de tâches"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -632,118 +726,179 @@ msgstr ""
 "\n"
 "%d arguments comptés lors du lancement échoué\n"
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Jeton obtenu pour le processus fils %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 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:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch : l'archive « %s » n'existe pas"
 
-#: job.c:1802
-#, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
+#: job.c:2005
+#, fuzzy, c-format
+msgid "%s: update target '%s' due to: %s"
 msgstr ""
-"Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n"
+"%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "impossible d'imposer des limites de charge : "
+msgstr "impossible d'imposer des limites de charge : "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
-"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
+"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
-"plus d'identificateur de fichier disponible : impossible de dupliquer "
+"plus d'identificateur de fichier disponible : impossible de dupliquer "
 "stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Impossible de restaurer stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Impossible de restaurer stdout\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Impossible de restaurer stdin\n"
+
+#: job.c:2365
 #, 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:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s : commande introuvable"
+msgstr "%s: commande introuvable"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s : programme Shell introuvable"
+msgstr "%s: programme Shell introuvable"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: l'espace d'environnement est peut-être épuisé"
+msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL a été modifié (valait « %s », maintenant vaut « %s »)\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL a été modifié (valait « %s », vaut maintenant « %s »)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Création d'un fichier de commande temporaire %s\n"
 
-#: job.c:2963
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Contenu du fichier Batch :%s\n"
+"\t%s\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
-"Contenu du fichier Batch :%s\n"
+"Contenu du fichier Batch :%s\n"
 "\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 "%s (ligne %d) Mauvais contexte du shell (!unixy && !batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr ""
+"Les tâches en parallèle (-j) ne sont pas prises en charge sur cette "
+"plateforme."
+
+#: main.c:312
 msgid "Options:\n"
-msgstr "Options :\n"
+msgstr "Options :\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignoré pour compatibilité.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Fabriquer toutes les cibles sans condition.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -752,19 +907,19 @@ msgstr ""
 "                              Se placer dans le RÉPERTOIRE avant toute "
 "action.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d                          Afficher beaucoup d'informations de débogage.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=FLAGS]           Afficher divers types d'informations de "
+"  --debug[=FLAGS]             Afficher divers types d'informations de "
 "débogage.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -773,14 +928,14 @@ msgstr ""
 "                              Les variables d'environment sont prioritaires "
 "sur les makefiles.\n"
 
-#: main.c:318
+#: main.c:327
 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
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -788,16 +943,16 @@ msgstr ""
 "  -f FICHIER, --file=FICHIER, --makefile=FICHIER\n"
 "                              Lire le FICHIER comme un makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Afficher ce message et quitter.\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Ignorer les erreurs venant des recettes.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -806,7 +961,7 @@ msgstr ""
 "                              Chercher dans le RÉPERTOIRE les makefiles "
 "traités par inclusion.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -814,14 +969,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Autoriser N tâches simultanées ; nombre infini "
 "si utilisé sans argument.\n"
 
-#: main.c:332
+#: main.c:341
 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"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -831,15 +986,15 @@ msgstr ""
 "                              Ne pas lancer de tâches multiples à moins que "
 "la charge soit inférieure à N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times   Utiliser le « mtime » le plus récent entre les "
+"  -L, --check-symlink-times   Utiliser le « mtime » le plus récent entre les "
 "liens symboliques et la cible.\n"
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
@@ -849,7 +1004,7 @@ msgstr ""
 "                              N'exécuter aucune recette ; seulement les "
 "afficher.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -859,12 +1014,18 @@ msgstr ""
 "                              Considérer le FICHIER comme étant très ancien "
 "et ne pas le refabriquer.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 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"
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
@@ -872,22 +1033,22 @@ msgstr ""
 "  -q, --question              Ne pas exécuter de recette ; le code de sortie "
 "indique si la cible est à jour.\n"
 
-#: main.c:349
+#: main.c:361
 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"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Désactiver les réglages des variables "
 "internes.\n"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Ne pas répéter les recettes.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -895,24 +1056,30 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Désactiver -k.\n"
 
-#: main.c:358
+#: main.c:370
 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"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+"  -d                          Afficher beaucoup d'informations de débogage.\n"
+
+#: main.c:374
 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"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Afficher le répertoire courant.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -920,7 +1087,7 @@ msgstr ""
 "  --no-print-directory        Désactiver l'option -w, même si elle a été "
 "activée implicitement.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -929,7 +1096,7 @@ msgstr ""
 "                              Considérer le FICHIER comme étant toujours "
 "nouveau.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -937,22 +1104,32 @@ msgstr ""
 "  --warn-undefined-variables  Prévenir lorsqu'une variable non définie est "
 "référencée.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "une chaîne vide n'est pas un nom de fichier valable"
 
-#: main.c:650
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "niveau de débogage inconnu « %s »"
+
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "niveau de débogage inconnu « %s »"
+msgid "unknown output-sync type '%s'"
+msgstr ""
 
-#: main.c:690
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "erreur interne : options --jobserver-fds multiples"
+
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
-"%s : interception de l'Interruption/Exception (code = 0x%lx, addr = 0x%p)\n"
+"%s: interception de l'interruption/exception (code = 0x%lx, addr = 0x%p)\n"
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -967,211 +1144,233 @@ msgstr ""
 "ExceptionFlags = %lx\n"
 "ExceptionAddress = 0x%p\n"
 
-#: main.c:705
+#: main.c:863
 #, 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"
+msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n"
 
-#: main.c:706
+#: main.c:864
 #, 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"
+msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell() définit default_shell = %s\n"
 
-#: main.c:834
+#: main.c:1008
 #, c-format
 msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 "La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s s'arrête pendant 30 secondes..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) terminé. On continue.\n"
 
-#: main.c:1501
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "erreur interne : options --jobserver-fds multiples"
+
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "client Jobserver (fds %d,%d)\n"
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "erreur interne : chaîne --jobserver-fds incorrecte « %s » "
+
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "client Jobserver (fds %d,%d)\n"
+
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr ""
+"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de "
+"tâches."
+
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "duplication du serveur de tâches"
+
+#: main.c:1586
+#, fuzzy
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+"AVERTISSEMENT : le serveur de tâches n'est pas disponible : utilisation de -"
+"j1. Ajouter « + » à la règle parent du make."
+
+#: main.c:1752
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile depuis l'entrée standard spécifié deux fois."
 
-#: main.c:1539 vmsjobs.c:500
+#: main.c:1790 vmsjobs.c:496
 msgid "fopen (temporary file)"
 msgstr "fopen (fichier temporaire)"
 
-#: main.c:1545
+#: main.c:1796
 msgid "fwrite (temporary file)"
 msgstr "fwrite (fichier temporaire)"
 
-#: main.c:1703
+#: main.c:1984
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 "Les tâches en parallèle (-j) ne sont pas prises en charge sur cette "
 "plateforme."
 
-#: main.c:1704
+#: main.c:1985
 msgid "Resetting to single job (-j1) mode."
 msgstr "On revient en mode monotâche (-j1)."
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr "erreur interne : options --jobserver-fds multiples"
-
-#: main.c:1727
-#, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "erreur interne : chaîne --jobserver-fds incorrecte « %s » "
-
-#: main.c:1730
-#, c-format
-msgid "Jobserver client (fds %d,%d)\n"
+#: main.c:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %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 un submake : désactivation du mode serveur de "
-"tâches."
-
-#: main.c:1750
-msgid "dup jobserver"
-msgstr "duplication du serveur de tâches"
-
-#: main.c:1753
-msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 msgstr ""
-"AVERTISSEMENT : le serveur de tâches n'est pas disponible: utilisation de -"
-"j1. Ajouter « + » à la règle parent du make."
 
-#: main.c:1777
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "création d'un tube pour les tâches"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "initialisation du tube du serveur de tâches"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
-"Les liens symboliques ne sont pas pris en charge : désactivation de -L."
+"Les liens symboliques ne sont pas pris en charge : désactivation de -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Mise à jour des makefiles....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Le makefile « %s » peut boucler ; on ne refabrique pas.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Le makefile « %s » peut boucler ; on ne refabrique pas.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Échec de refabrication du makefile « %s »."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Échec de refabrication du makefile « %s »."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Le makefile inclus « %s » est introuvable."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Le makefile inclus « %s » est introuvable."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Le makefile « %s » est introuvable"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
+msgstr "Le makefile « %s » est introuvable"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Impossible de revenir dans le répertoire d'origine."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
-msgstr "Ré-exécution[%u] :"
+msgstr "Ré-exécution[%u] :"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (fichier temporaire):"
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL contient plus d'une cible"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Pas de cible"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Mise à jour des objectifs cibles....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être "
+"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être "
 "incomplète."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Utilisation : %s [options] [cible] ...\n"
+msgstr "Utilisation : %s [options] [cible] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Ce programme a construit pour %s\n"
+"Ce programme est construit pour %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Ce programme a construit pour %s (%s)\n"
+"Ce programme est construit pour %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Signaler les anomalies à  <bug-make@gnu.org>.\n"
+msgstr "Signaler les anomalies à <bug-make@gnu.org>.\n"
 
-#: main.c:2562
-#, c-format
-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:2810
+#, fuzzy, c-format
+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:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "l'option « -%c » prend en argument un entier positif"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "l'option « -%c » prend en argument un entier positif"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr "%sConstruit pour %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr "%sConstruit pour %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1179,13 +1378,13 @@ msgid ""
 "%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 ""
-"%sLicence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/"
+"%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 "
+"%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:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1194,7 +1393,7 @@ msgstr ""
 "\n"
 "# Base de données de Make, imprimée le %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1203,107 +1402,107 @@ msgstr ""
 "\n"
 "# Base de données de Make terminée le %s\n"
 
-#: main.c:3237
-#, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s : on entre dans un répertoire inconnu\n"
-
-#: main.c:3239
-#, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s : on quitte un répertoire inconnu\n"
-
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s : on entre dans le répertoire « %s »\n"
-
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: on quitte le répertoire « %s »\n"
-
-#: main.c:3250
-#, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u] : on entre dans un répertoire inconnu\n"
-
-#: main.c:3253
-#, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u] : on quitte un répertoire inconnu\n"
-
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u] : on entre dans le répertoire « %s »\n"
-
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u] : on quitte le répertoire « %s »\n"
-
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ". Arrêt.\n"
-
-#: misc.c:337
+#: misc.c:201
 #, c-format
 msgid "Unknown error %d"
 msgstr "Erreur inconnue %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
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "mémoire virtuelle épuisée"
 
-#: misc.c:708
+#: misc.c:522
 #, 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:729
+#: misc.c:543
 msgid "Initialized access"
 msgstr "Accès initialisé"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "Accès utilisateur"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
 msgstr "Accès de Make"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "Accès des fils"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: on entre dans un répertoire inconnu\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: on quitte un répertoire inconnu\n"
+
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: on entre dans le répertoire « %s »\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: on quitte le répertoire « %s »\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: on entre dans un répertoire inconnu\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: on quitte un répertoire inconnu\n"
+
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: on entre dans le répertoire « %s »\n"
+
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: on quitte le répertoire « %s »\n"
+
+#: output.c:515
 #, c-format
 msgid "write error: %s"
-msgstr "erreur d'écriture : %s"
+msgstr "erreur d'écriture : %s"
 
-#: misc.c:956
+#: output.c:517
 msgid "write error"
 msgstr "erreur d'écriture"
 
-#: read.c:179
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ". Arrêt.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Lecture des makefiles...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
-msgstr "Lecture du makefile « %s »"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
+msgstr "Lecture du makefile « %s »"
 
 #: read.c:335
 #, c-format
@@ -1325,335 +1524,356 @@ msgstr " (peu importe)"
 msgid " (no ~ expansion)"
 msgstr " (pas de remplacement du ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "syntaxe incorrecte dans la condition"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr "La recette commence avant la première cible"
 
-#: read.c:940
+#: read.c:1036
 msgid "missing rule before recipe"
 msgstr "règle manquante avant la recette"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "séparateur manquant %s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (vouliez-vous dire TAB au lieu des 8 espaces ?)"
+msgstr " (vouliez-vous dire TAB au lieu des 8 espaces ?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "motif de cible manquant"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "motifs de cible multiples"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
-msgstr "le motif de cible ne contient pas « %% »"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
+msgstr "le motif de cible ne contient pas « %% »"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "« endif » manquant"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
+msgstr "« endif » manquant"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 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:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "« endef » manquant, « define » non terminé"
-
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
-msgstr "Texte superflu après la directive « endef »"
+#: read.c:1465
+#, fuzzy
+msgid "extraneous text after 'define' directive"
+msgstr "Texte superflu après la directive « define »"
 
 #: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Texte superflu après la directive « %s »"
-
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
-msgstr "« %s » superflu"
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
+msgstr "« endef » manquant, « define » non terminé"
 
 #: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "un seul « else » par condition"
-
-#: read.c:1797
+#, fuzzy
+msgid "extraneous text after 'endef' directive"
+msgstr "Texte superflu après la directive « endef »"
+
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "Texte superflu après la directive « %s »"
+
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
+msgstr "« %s » superflu"
+
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
+msgstr "un seul « else » par condition"
+
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Définition malformée de variable spécifique à une cible"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr "les prérequis ne peuvent être définis dans des recettes"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "mélange de règles implicites et statiques pour le motif"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "mélange de règles implicites et normales"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "la cible « %s » ne correspond pas au motif de cible"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "la cible « %s » ne correspond pas au motif de cible"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "le fichier cible « %s » possède à la fois des entrées : et ::"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "le fichier cible « %s » possède à la fois des entrées : et ::"
 
-#: 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:2105
+#, fuzzy, 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:2006
-#, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "AVERTISSEMENT : surchargement de la recette pour la cible « %s »"
+#: read.c:2114
+#, fuzzy, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "AVERTISSEMENT : surchargement de la recette pour la cible « %s »"
 
-#: read.c:2009
-#, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "AVERTISSEMENT : ancienne recette ignorée pour la cible « %s »"
+#: read.c:2117
+#, fuzzy, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "AVERTISSEMENT : ancienne recette ignorée pour la cible « %s »"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
-"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré"
+"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Rien à faire pour « %s »."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "rien à faire pour « %s »."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
-msgstr "« %s » est à jour."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
+msgstr "« %s » est à jour."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Élagage du fichier « %s ».\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Élagage du fichier « %s ».\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sAucune règle pour fabriquer la cible « %s »%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sAucune règle pour fabriquer la cible « %s »%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr ""
+"%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Étude du fichier cible « %s ».\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Étude du fichier cible « %s ».\n"
 
 #: 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"
+#, fuzzy, 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:432
-#, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Le fichier « %s » a déjà été étudié.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Le fichier « %s » a déjà été étudié.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Mise à jour du fichier « %s » en cours.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Mise à jour du fichier « %s » en cours.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Fin de la mise à jour du fichier « %s ».\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Fin de la mise à jour du fichier « %s ».\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Le fichier « %s » n'existe pas.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "Le fichier « %s » n'existe pas.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** AVERTISSEMENT : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à "
+"*** AVERTISSEMENT : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à "
 "haute résolution"
 
-#: 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:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Règle implicite trouvée pour « %s ».\n"
 
-#: 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:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Pas de règle implicite trouvée pour « %s ».\n"
 
 #: remake.c:502
-#, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Utilisation de la recette par défaut pour « %s ».\n"
+#, fuzzy, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Utilisation de la recette par défaut pour « %s ».\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Dépendance circulaire %s <- %s abandonnée."
 
-#: 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:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Les dépendances de « %s » sont en cours de fabrication.\n"
-
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Abandon sur le fichier cible « %s ».\n"
-
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs."
-
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Le prérequis « %s » est seulement d'ordre pour la cible « %s ».\n"
-
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n"
-
-#: 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 cible « %s ».\n"
-
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n"
-
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "La cible « %s » a un double deux-points et n'a pas de dépendance.\n"
-
-#: remake.c:765
-#, c-format
-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:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n"
-
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
-msgstr "Inutile de refabriquer la cible « %s »."
-
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; utilisation du nom VPATH « %s »"
-
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Il faut refabriquer la cible « %s ».\n"
-
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr " On ignore le nom VPATH « %s ».\n"
-
-#: remake.c:815
-#, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "La recette de « %s » est en cours d'exécution.\n"
-
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Échec de refabrication du fichier cible « %s ».\n"
-
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Refabrication réussie du fichier cible « %s ».\n"
-
-#: 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: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 : le fichier « %s » a une date de modification dans le futur"
-
-#: remake.c:1370
-#, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
-msgstr ""
-"AVERTISSEMENT : le fichier « %s » a une date de modification %s s dans le "
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Fin des dépendances du fichier cible « %s ».\n"
+
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Les dépendances de « %s » sont en cours de fabrication.\n"
+
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Abandon sur le fichier cible « %s ».\n"
+
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs."
+
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Le prérequis « %s » est seulement d'ordre pour la cible « %s ».\n"
+
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n"
+
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n"
+
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n"
+
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "La cible « %s » a un double deux-points et n'a pas de dépendance.\n"
+
+#: remake.c:769
+#, fuzzy, c-format
+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:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n"
+
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
+msgstr "Inutile de refabriquer la cible « %s »."
+
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; utilisation du nom VPATH « %s »"
+
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Il faut refabriquer la cible « %s ».\n"
+
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  On ignore le nom VPATH « %s ».\n"
+
+#: remake.c:819
+#, fuzzy, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "La recette de « %s » est en cours d'exécution.\n"
+
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Échec de refabrication du fichier cible « %s ».\n"
+
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Refabrication réussie du fichier cible « %s ».\n"
+
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Le fichier cible « %s » a besoin d'être refabriqué avec l'option -q.\n"
+
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Utilisation des commandes par défaut pour « %s ».\n"
+
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
+msgstr ""
+"AVERTISSEMENT : le fichier « %s » a une date de modification dans le futur"
+
+#: remake.c:1385
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr ""
+"AVERTISSEMENT : le fichier « %s » a une date de modification %s s dans le "
 "futur"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "« customs » n'exportera pas : %s\n"
+msgstr "« customs » n'exportera pas : %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Règles Implicites"
+"# Règles implicites"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1661,7 +1881,7 @@ msgstr ""
 "\n"
 "# Pas de règle implicite."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1670,244 +1890,263 @@ msgstr ""
 "\n"
 "# %u règles implicites, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminales."
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "ANOMALIE : num_pattern_rules est faux !  %u != %u"
+msgstr "ANOMALIE : num_pattern_rules est faux !  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "signal inconnu"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Raccroche"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interrompt"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Quitte"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Instruction non admise"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Point de trace/arrêt"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Annulé"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Appel IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Appel EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Exception en virgule flottante"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Tué"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Erreur de bus"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Erreur de segmentation"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Mauvais appel système"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Tube cassé"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarme"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Terminé"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Signal utilisateur 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Signal utilisateur 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Processus fils terminé"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Coupure d'alimentation"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Arrêté"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Arrêté (entrée tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Arrêté (sortie tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Arrêté (signal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Limite du temps CPU dépassée"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Limite de taille de fichier dépassée"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Compteur virtuel expiré"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Compteur de profiling expiré"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Fenêtre modifiée"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Reprise"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Condition d'E/S urgente"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "E/S possible"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Ressource perdue"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Signal de danger"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Demande d'informations"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Coprocesseur en virgule flottante non disponible"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
+
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
 "\n"
-"%s nombre de chaines dans strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"%s strcache utilisé : total = %d (%d) / max = %d / min = %d / moy = %d\n"
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-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"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
 
-#: strcache.c:239
-#, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
-"%s strcache utilisé : total = %d (%d) / max = %d / min = %d / moy = %d\n"
+"%s strcache utilisé : total = %d (%d) / max = %d / min = %d / moy = %d\n"
 
-#: strcache.c:241
-#, c-format
-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:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr "%s strcache libre : total = %d (%d) / max = %d / min = %d / moy = %d\n"
 
-#: strcache.c:244
+#: strcache.c:287
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s nombre de chaines dans strcache: %d / lookups = %lu / hits = %lu\n"
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# stats des tables de hachage strcache :\n"
+"# stats des tables de hachage des fichiers :\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatique"
+
+#: variable.c:1610
 msgid "default"
 msgstr "défaut"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "environnement"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "environnement avec l'option -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "ligne de commande"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "directive « override »"
-
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatique"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
+msgstr "directive « override »"
 
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (depuis « %s », ligne %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (depuis « %s », ligne %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# stats des tables de hachage de la variable « set » :\n"
+msgstr "# stats des tables de hachage de la variable « set » :\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1915,7 +2154,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1923,7 +2162,7 @@ msgstr ""
 "\n"
 "# Valeurs de variable spécifiques au motif"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1931,7 +2170,7 @@ msgstr ""
 "\n"
 "# pas de valeurs de variable spécifiques au motif"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1940,94 +2179,94 @@ msgstr ""
 "\n"
 "# %u valeurs de variable spécifiques au motif"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "AVERTISSEMENT : variable indéfinie « %.*s »"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "AVERTISSEMENT : variable indéfinie « %.*s »"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search() a échoué avec %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "AVERTISSEMENT : redirection vide\n"
+msgstr "AVERTISSEMENT : redirection vide\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
-msgstr "erreur interne : « %s » command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
+msgstr "erreur interne : « %s » command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-warning, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y "
 "par DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "COMMANDE INTERNE [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "COMMANDE CD INTERNE %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "COMMANDE RM INTERNE %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Commande interne inconnue « %s »\n"
+msgstr "Commande interne inconnue « %s »\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Erreur, commande vide\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrée redirigée depuis %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erreur redirigée vers %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
 msgstr "Sortie ajoutée à %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Sortie redirigée vers %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr "Ajoute %.*s et nettoie\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Exécution de %s à la place\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erreur de lancement, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2035,37 +2274,69 @@ msgstr ""
 "\n"
 "# Chemins de Recherche VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Aucun chemin de recherche « vpath »."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr "# Aucun chemin de recherche « vpath »."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u chemins de recherche « vpath ».\n"
+"# %u chemins de recherche « vpath ».\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Aucun chemin de recherche général (variable « VPATH »)."
+"# Aucun chemin de recherche général (variable « VPATH »)."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Chemin de recherche général (variable « VPATH ») :\n"
+"# Chemin de recherche général (variable « VPATH ») :\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Valeur non valable dans le membre « update_status » !"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Erreur 0x%x (ignorée)"
+
+#~ msgid "[%s] Error %d (ignored)"
+#~ msgstr "[%s] Erreur %d (ignorée)"
+
+#~ 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"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr ""
+#~ "Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n"
+
+#~ 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"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# stats des tables de hachage strcache :\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"
 
@@ -2080,13 +2351,13 @@ msgstr ""
 #~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n"
 
 #~ msgid "extraneous `endef'"
-#~ msgstr "« endef » superflu"
+#~ msgstr "« endef » superflu"
 
 #~ msgid "empty `override' directive"
-#~ msgstr "directive « override » vide"
+#~ msgstr "directive « override » vide"
 
 #~ msgid "invalid `override' directive"
-#~ msgstr "directive « override » incorrecte"
+#~ 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"
@@ -2098,7 +2369,7 @@ msgstr ""
 #~ msgstr "Réinitialisation de make en mode de traitement simple des tâches."
 
 #~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n"
+#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n"
 
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
 #~ msgstr ""
@@ -2106,10 +2377,10 @@ msgstr ""
 #~ "sortie n'a pas été récupé.\n"
 
 #~ msgid "no file name for `%sinclude'"
-#~ msgstr "pas de nom de fichier pour « %sinclude »"
+#~ msgstr "pas de nom de fichier pour « %sinclude »"
 
 #~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide"
+#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide"
 
 #~ msgid ""
 #~ "\n"
@@ -2238,9 +2509,6 @@ msgstr ""
 #~ msgid "intermediate"
 #~ msgstr "intermédiaire"
 
-#~ msgid " (ignored)"
-#~ msgstr " (ignorée)"
-
 #~ msgid "Unknown%s job %d"
 #~ msgstr "Tâche%s inconnue %d"
 
index 94495a8..aaf3e74 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index 281f8f9..ef86f28 100644 (file)
--- a/po/ga.po
+++ b/po/ga.po
@@ -7,120 +7,126 @@ 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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
 "PO-Revision-Date: 2006-04-22 16:02-0500\n"
 "Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "ní féidir ball cartlainne a `touch'áil ar VMS"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: Níl an chartlann `%s' ann"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: Níl `%s' ina cartlann bhailí"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, 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:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, 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
+#: arscan.c:67
 #, 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"
+"níorbh fhéidir le lbr$set_module an t-eolas modúil a bhaint amach, stádas = "
+"%d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "theip ar lbr$ini_control le stádas = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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'"
+"ní féidir leabharlann `%s' a oscailt chun cuardach a dhéanamh ar an mball `"
+"%s'"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Ball `%s'%s: %ld beart ag %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (is féidir go bhfuil an t-ainm teasctha)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Dáta %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mód = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Briseadh.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, 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:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** Is féidir gur ball bréige é `%s'; ní scriosadh"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Comhad `%s' á scriosadh"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Comhad `%s' á scriosadh"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  orduithe le rith"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (insuite):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (ó `%s', líne %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -128,225 +134,229 @@ msgstr ""
 "\n"
 "# Comhadlanna\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: níorbh fhéidir é a stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (eochair %s, am-m %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (gléas %ld, i-nód %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Ná Déan"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " comhad, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "níl"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " rudaí neamhfhéideartha"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " go dtí seo."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, 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:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "tagairt athróige gan chríochnú"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "Sonraíodh orduithe le haghaidh comhaid `%s' ag %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+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:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, 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:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, 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:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Comhad idirmheánach `%s' á scriosadh"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Comhaid idirmheánacha á mbaint...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "An t-am anois"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Ní sprioc é:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Comhad luachmhar (réamhriachtanas de .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Sprioc bhréige (réamhriachtanas de .PHONY)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Sprioc líne na n-orduithe."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Níl aon riail intuigthe."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Rinneadh cuardach ar rialacha intuigthe."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Ní dhearna cuardach ar rialacha intuigthe."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Stoc patrúin intuigthe/statach: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Tá an comhad ina réamhriachtanas idirmheánach."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Déantar fosta:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Níor seiceáladh an t-am mionathraithe riamh."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Níl a leithéid de chomhad ann."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Is cianaosta an comhad seo."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Athraithe %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Nuashonraíodh an comhad."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Níor nuashonraíodh an comhad."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Tá orduithe ann atá ag rith faoi láthair (IS FABHT É SEO)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Tá orduithe spleáchais ag rith (IS FABHT É SEO)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  D'éirigh leis an nuashonrú."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Tá gá le nuashonrú (-q ceaptha)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Theip ar nuashonrú."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Luach neamhbhailí sa bhall `update_status'!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Luach neamhbhailí sa bhall `command_state'!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -354,7 +364,7 @@ msgstr ""
 "\n"
 "# Comhaid"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -364,117 +374,175 @@ msgstr ""
 "# comhaid hais-tábla stait:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "tá an chéad argóint neamhuimhriúil leis an fheidhm `word'"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "is neamhuimhriúil í an chéad argóint leis an fheidhm `wordlist'"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "is neamhuimhriúil í an dara hargóint leis an fheidhm `wordlist'"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: theip ar DuplicateHandle(In) (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: theip ar DuplicateHandle(Earr) (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "Theip ar CreatePipe() (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): theip ar process_init_fd()\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "earráid sa scríobh: %s"
+
+#: function.c:2164
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "easpa argóintí (%d) d'fheidhm `%s'"
 
-#: function.c:2162
-#, c-format
-msgid "unimplemented on this platform: function `%s'"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
 msgstr "níl an fheidhm `%s' ar fáil ar an chóras seo"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "glao ar fheidhm `%s' gan chríochnú: `%c' ar iarraidh"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: Tá an rogha `%s' débhríoch\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "easpa argóintí (%d) d'fheidhm `%s'"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "easpa argóintí (%d) d'fheidhm `%s'"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: Tá an rogha `%s' débhríoch\n"
+
+#: getopt.c:683
+#, fuzzy, 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:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, 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:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: rogha anaithnid `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: rogha anaithnid `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: rogha neamhcheadaithe -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: rogha neamhbhailí -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, 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"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, fuzzy, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -495,132 +563,157 @@ msgstr "Ath-haise
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, 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:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Ag baint triail as riail phatrúin le stoc `%.*s'.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Réamhriachtanas neamhfhéideartha rialach `%s' á dhiúltú.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Réamhriachtanas intuigthe neamhfhéideartha `%s' á dhiúltú.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Ag baint triail as an réamhriachtanas rialach `%s'.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Aimsíodh réamhriachtanas `%s' mar VPATH `%s'\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, 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:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Ní féidir comhad sealadach a chruthú\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Earráid 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (córdhumpa)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Earráid %d (rinneadh neamhshuim)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (insuite):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Earráid 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Earráid %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (córdhumpa)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..."
 
-#: job.c:579
+#: job.c:639
 #, fuzzy, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Mac beo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (cianda)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Mac caillteach á bhaint: 0x%08lx PID %ld %s\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Mac buaiteach á bhaint: 0x%08lx PID %ld %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+
+#: job.c:949
 #, 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:920
-msgid "write jobserver"
-msgstr "scríobh jabfhreastalaí"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "Saoradh ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "scríobh jabfhreastalaí"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -629,109 +722,166 @@ msgstr ""
 "\n"
 "%d argóint sa tosú theipthe\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Fuarthas ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "léadh píopa na jabanna"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Níl an chartlann `%s' ann"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Níl gá leis an sprioc `%s' a athdhéanamh"
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%sNíl aon riail chun an sprioc `%s' a dhéanamh, riachtanach le haghaidh `"
+"%s'%s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "ní féidir srian lóid a chur i bhfeidhm: "
 
-#: job.c:1985
+#: job.c:2199
 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:1987
+#: job.c:2210
 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:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Níorbh fhéidir stdin a athchóiriú\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Níorbh fhéidir stdout a athchóiriú\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Níorbh fhéidir stdin a athchóiriú\n"
+
+#: job.c:2365
 #, fuzzy, c-format
 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:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Ní bhfuarthas an t-ordú"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Ní bhfuarthas an clár blaoisce"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: is féidir gur ídithe í cuimhne na timpeallachta"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "Athraíodh $SHELL (ba `%s' é, agus is `%s' é anois)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Baisc-chomhad sealadach %s á chruthú\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Roghanna:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Déan neamhshuim (comhoiriúnacht)\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Déan gach sprioc, gan choinníollacha.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -739,18 +889,18 @@ msgstr ""
 "  -C COMHADLANN, --directory=COMHADLANN\n"
 "                              Téigh go COMHADLANN roimh dhéanamh aon rud.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Taispeáin go leor eolas dífhabhtaithe.\n"
 
-#: main.c:313
+#: main.c:322
 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:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -758,12 +908,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              Sáraíonn athróga timpeallachta makefileanna.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -771,17 +921,17 @@ msgstr ""
 "  -f COMHAD, --file=COMHAD, --makefile=COMHAD\n"
 "                              Léigh COMHAD mar makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Taispeáin an chabhair seo agus scoir.\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Déan neamhshuim ar earráidí ó orduithe.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -790,7 +940,7 @@ msgstr ""
 "                              Cuardaigh i gCOMHADLANN ar makefileanna "
 "breise.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -798,14 +948,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          Ceadaigh N jab le chéile; éigríoch mura "
 "gceaptar arg.\n"
 
-#: main.c:332
+#: main.c:341
 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:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -815,7 +965,7 @@ msgstr ""
 "                              Ná tosaigh jabanna iomadúla mura bhfuil an lód "
 "níos lú ná N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -824,7 +974,7 @@ msgstr ""
 "nasc\n"
 "                                 siombalach nó ar an sprioc.\n"
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -835,7 +985,7 @@ msgstr ""
 "                              Ná rith aon ordú; taispeáin torthaí mar dhea "
 "amháin.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -845,12 +995,18 @@ msgstr ""
 "                              Caith le COMHAD mar cheann cianaosta; ná "
 "hathdhéan é.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 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:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -859,21 +1015,21 @@ msgstr ""
 "  -q, --question              Ná rith aon ordú; stádas scortha = 0 mura gá "
 "le nuashonrú.\n"
 
-#: main.c:349
+#: main.c:361
 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:351
+#: main.c:363
 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:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Ná déan macalla ar orduithe.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -881,23 +1037,28 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Múch -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Teagmhaigh spriocanna in ionad iad a "
 "athdhéanamh.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -d                          Taispeáin go leor eolas dífhabhtaithe.\n"
+
+#: main.c:374
 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:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Taispeáin an chomhadlann reatha.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -905,7 +1066,7 @@ msgstr ""
 "  --no-print-directory        Múch -w, fiú má tá sé i bhfeidhm go "
 "hintuigthe.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -914,7 +1075,7 @@ msgstr ""
 "                              Caith le COMHAD mar cheann úrnua (go "
 "héigríoch).\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -922,21 +1083,31 @@ msgstr ""
 "  --warn-undefined-variables  Tabhair rabhadh má dhéantar tagairt d'athróg "
 "gan sainmhíniú.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "sonrú anaithnid `%s' ar an leibhéal dífhabhtaithe"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
+
+#: main.c:848
 #, fuzzy, c-format
 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:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -951,160 +1122,182 @@ msgstr ""
 "BratachaEisceachta = %lx\n"
 "SeoladhEisceachta = %lx\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Sárú rochtana: oibríocht scríofa ag seoladh %lx\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Sárú rochtana: oibríocht léimh ag seoladh %lx\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) críochnaithe. Ag gabháil ar aghaidh.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (comhad sealadach)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (comhad sealadach)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-fds `%s'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 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:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "jabfhreastalaí dup"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (comhad sealadach)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (comhad sealadach)"
+
+#: main.c:1984
+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:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "píopa na jabanna á chruthú"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "píopa an jabfhreastalaí á thúsú"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Makefileanna á nuashonrú....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Theip ar athdhéanamh an makefile `%s'."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Níor aimsíodh an makefile `%s' san áireamh."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Níor aimsíodh an makefile `%s'"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Níorbh fhéidir an chomhadlann oibre a athrú ar ais."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Á rith arís[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (comhad sealadach): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Níl aon sprioc ann"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Cinn sprice á nuashonrú....\n"
 
-#: main.c:2306
+#: main.c:2550
 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:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Úsáid: %s [roghanna] [sprioc] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1113,7 +1306,7 @@ msgstr ""
 "\n"
 "Tógadh an clár seo le haghaidh %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1122,36 +1315,36 @@ msgstr ""
 "\n"
 "Tógadh an clár seo le haghaidh %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+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:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le `-%c'"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%sTógadh an clár seo le haghaidh %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%sTógadh an clár seo le haghaidh %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1160,7 +1353,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1169,7 +1362,7 @@ msgstr ""
 "\n"
 "# Bunachar sonraí Make, priontáilte ar %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1178,106 +1371,106 @@ msgstr ""
 "\n"
 "# Críochnaíodh an bunachar sonraí Make seo ar %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Earráid anaithnid %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "cuimhne fhíorúil ídithe"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Rochtain túsaithe"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Rochtain úsáideora"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Rochtain make"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Rochtain mic"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Ag dul amach as comhadlann anaithnid\n"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: Ag dul isteach sa chomhadlann `%s'\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: Ag dul amach as an gcomhadlann `%s'\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: Ag dul isteach sa chomhadlann `%s'\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: Ag dul amach as an gcomhadlann `%s'\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "earráid sa scríobh: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "earráid sa scríobh"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Stop.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Earráid anaithnid %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "cuimhne fhíorúil ídithe"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "Rochtain túsaithe"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Rochtain úsáideora"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Rochtain make"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Rochtain mic"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "earráid sa scríobh: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "earráid sa scríobh"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Makefileanna á léamh...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Makefile `%s' á léamh"
 
 #: read.c:335
@@ -1300,336 +1493,354 @@ msgstr " (is cuma)"
 msgid " (no ~ expansion)"
 msgstr " (ná fairsing ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "comhréir neamhbhailí i gcoinníollach"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "tá orduithe ann roimh an chéad sprioc"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "riail ar iarraidh roimh orduithe"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "deighilteoir%s ar iarraidh"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (Ar mhian leat TÁB in ionad ocht spás?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "patrún sprice ar iarraidh"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "patrúin iomadúla sprice"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "níl aon `%%' sa phatrún sprice"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "`endif' ar iarraidh"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "ainm folamh athróige"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "`endef' ar iarraidh, `define' gan chríochnú"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+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"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Téacs gan mhaith i ndiaidh treorach `%s'"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "`%s' breise"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "ní cheadaítear ach aon `else' amháin le gach coinníollach"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)"
 
-#: read.c:1855
+#: read.c:1951
 #, fuzzy
 msgid "prerequisites cannot be defined in recipes"
 msgstr "ní féidir réamhriachtanais a shonrú i scripteanna ordaithe"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, 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:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "tá iontrálacha : agus :: araon ann don chomhad sprice `%s'"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, 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:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "rabhadh: ag sárú na n-orduithe le haghaidh na sprice `%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr ""
 "rabhadh: ag déanamh neamhshuim ar sheanorduithe le haghaidh sprice `%s'"
 
-#: read.c:2392
+#: read.c:2530
 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:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Níl faic le déanamh i gcomhair `%s'."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "Níl gá le `%s' a nuashonrú."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Comhad `%s' á bhearradh.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, 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:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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"
+"%sNíl aon riail chun an sprioc `%s' a dhéanamh, riachtanach le haghaidh `"
+"%s'%s"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Comhad sprice `%s' idir lámha.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, 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:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Rinneadh scrúdú ar an chomhad `%s' cheana.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Comhad `%s' á nuashonrú fós.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Nuashonraíodh an comhad `%s'.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Níl a leithéid de chomhad `%s' ann.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Aimsíodh riail intuigthe le haghaidh `%s'.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Níor aimsíodh aon riail intuigthe le haghaidh `%s'.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Tréigeadh an spleáchas ciorclach %s <- %s."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "Réamhriachtanais de `%s' á ndéanamh anois.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Ag tréigean an chomhaid sprice `%s'.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, 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:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, 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:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, 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:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, 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:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, 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:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+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:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "`%s' á dhéanamh de bharr bratach --always-make.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Níl gá leis an sprioc `%s' a athdhéanamh"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; ag baint úsáid as ainm VPATH `%s'"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Caithfidh an sprioc `%s' a athdhéanamh.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  Ag déanamh neamhshuim ar ainm VPATH `%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "Orduithe de `%s' á rith.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Theip ar athdhéanamh an sprioc-chomhaid `%s'.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "D'éirigh le hathdhéanamh an sprioc-chomhaid `%s'.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "Tá gá leis an chomhad sprice `%s' a athdhéanamh leis an rogha -q.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, 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:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+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:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr "Níl eilimint .LIBPATTERNS `%s' ina patrún"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Ní easpórtálfar Customs: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1637,7 +1848,7 @@ msgstr ""
 "\n"
 "# Rialacha Intuigthe"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1645,7 +1856,7 @@ msgstr ""
 "\n"
 "# Níl aon riail intuigthe."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1654,244 +1865,259 @@ msgstr ""
 "\n"
 "# %u riail intuigthe, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " teirminéal."
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "FABHT: num_pattern_rules mícheart!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "comhartha anaithnid"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Croch suas"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Idirbhriseadh"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Scoir"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Treoir Neamhcheadaithe"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Rianaigh/brisphointe"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Tobscortha"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Gaiste IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Gaiste EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Eisceacht snámhphointe"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Maraithe"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Busearráid"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Fabht deighilte"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Drochghlao ar an gcóras"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Píopa briste"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Clog aláraim"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Scortha"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Comhartha saincheaptha 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Comhartha saincheaptha 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Scoir an mhacphróiseas"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Cliseadh cumhachta"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Stoptha"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Stoptha (ionchur tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Stoptha (aschur tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Stoptha (comhartha)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Teorainn ama LAP sáraithe"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Uasmhéid na gcomhad sáraithe"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Am fíorúil caite"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Am próifíle caite"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Athraíodh an fhuinneog"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Leanta"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Staid phráinneach A/I"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "A/I indéanta"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Acmhainn caillte"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Comhartha guaise"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Iarratas ar eolas"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Níl comhphróiseálaí snámhphointe ar fáil"
 
-#: strcache.c:235
+#: strcache.c:236
 #, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
-msgstr ""
-"\n"
-"%s líon na dteaghrán i strcache: %d\n"
+"%s No strcache buffers\n"
+msgstr "%s líon na maolán strcache: %d\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, 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"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr "%s strcache saor: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr "%s méid strcache: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr "%s strcache saor: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# comhaid hais-tábla stait:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "uathoibríoch"
+
+#: variable.c:1610
 msgid "default"
 msgstr "réamhshocraithe"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "timpeallacht"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "timpeallacht le -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "líne na n-orduithe"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "treoir `override'"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "uathoibríoch"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (ó `%s', líne %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# athróg tacar hais-tábla stait:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1899,7 +2125,7 @@ msgstr ""
 "\n"
 "# Athróga\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1907,7 +2133,7 @@ msgstr ""
 "\n"
 "# Luachanna Athróige sainiúil don phatrún"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1915,7 +2141,7 @@ msgstr ""
 "\n"
 "# Níl aon luach athróige atá sainiúil don phatrún."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1924,93 +2150,93 @@ msgstr ""
 "\n"
 "# %u luach athróige atá sainiúil don phatrún"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "rabhadh: athróg gan sainmhíniú: `%.*s'"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "Theip ar sys$cuardach le %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Rabhadh: Atreorú folamh\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "earráid inmheánach: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INSUITE [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD INSUITE %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM INSUITE %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Ordú anaithnid insuite '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Earráid, ordú folamh\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Atreoraíodh ionchur ó %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Atreoraíodh earráidí go %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Atreoraíodh aschur go %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Atreoraíodh aschur go %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s á rith ina áit\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Earráid le linn sceitheadh, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2018,37 +2244,46 @@ msgstr ""
 "\n"
 "# VPATH Conairí Cuardaigh\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# Níl aon chonair chuardaigh `vpath'."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u conair chuardaigh `vpath'.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Níl aon chonair ghinearálta cuardaigh (athróg `VPATH')."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Conair ghinearálta cuardaigh (athróg `VPATH'):\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Luach neamhbhailí sa bhall `update_status'!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
+
 #~ 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"
 
@@ -2071,5 +2306,12 @@ msgstr ""
 #~ msgid "invalid `override' directive"
 #~ msgstr "treoir neamhbhailí `override'"
 
+#~ msgid ""
+#~ "\n"
+#~ "%s # of strings in strcache: %d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s líon na dteaghrán i strcache: %d\n"
+
 #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
 #~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n"
index c3ec093..793358c 100644 (file)
Binary files a/po/gl.gmo and b/po/gl.gmo differ
index a4cabbc..335dd64 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
 # Galician translation of GNU make.
+# This file is distributed under the same license as the make package.
 # Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2012 Leandro Regueiro.
+#
 # Jacobo Tarrio <jtarrio@trasno.net>, 2000, 2002.
+# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
+#
+# Proxecto Trasno - Adaptación do software libre á lingua galega:  Se desexas
+# colaborar connosco, podes atopar máis información en http://www.trasno.net
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2012-11-12 16:40+0100\n"
+"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"Language: gl\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "tentouse usar unha característica non soportada: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "tentouse usar unha característica non admitida: «%s»"
 
-#: ar.c:125
+#: ar.c:123
 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:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: O arquivo `%s' non existe"
+msgstr "a operación de tocar un membro do arquivo non está dispoñíbel en VMS"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch: `%s' non é un arquivo válido"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: O arquivo «%s» non existe"
 
-#: 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:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: «%s» non é un arquivo válido"
 
-#: 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'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: O membro «%s» non existe en «%s»"
 
-#: arscan.c:69
+#: ar.c:164
 #, fuzzy, 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:67
+#, 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"
+"a chamada a lbr$set_module() fallou ao extraer a información do módulo, "
+"estado = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "a chamada a lbr$ini_control fallou con status = %d"
+msgstr "a chamada a lbr$ini_control() fallou con estado = %d"
 
-#: 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:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "non é posíbel abrir a biblioteca «%s» para buscar o membro «%s»"
 
-#: 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:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Membro «%s»%s: %ld bytes en %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (o nome pode quedar truncado)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Interrompido.\n"
 
-#: 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:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] O membro do arquivo «%s» pode non ser correcto; non eliminado"
 
-#: 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:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** O membro do arquivo «%s» pode non ser correcto; non eliminado"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Borrando o ficheiro `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Eliminando o ficheiro «%s»"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Borrando o ficheiro `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** Eliminando o ficheiro «%s»"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  comandos para executar"
+msgstr ""
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
-msgstr " (incluidas):"
+msgstr " (incorporadas):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (de `%s', liña %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (desde «%s», liña %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,223 +138,222 @@ msgstr ""
 "\n"
 "# Directorios\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: non se puido face-la operación de stat.\n"
+msgstr "# %s: non foi posíbel facer a operación de stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (clave %s, mtime %d): non se puido abrir.\n"
+msgstr "# %s (clave %s, mtime %d): non foi posíbel abrir.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): non foi posíbel abrir.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (dispositivo %ld, inode %ld): non se puido abrir.\n"
+msgstr "# %s (dispositivo %ld, inodo %ld): non foi posíbel abrir.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (clave %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
+msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (dispositivo %ld, inode %ld): "
+msgstr "# %s (dispositivo %ld, inodo %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Non"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " ficheiros, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "non"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " imposibles"
+msgstr " imposíbeis"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
-msgstr " ata aquí."
+msgstr " ata aquí."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " imposibles en %lu directorios.\n"
+msgstr " imposíbeis en %lu directorios.\n"
 
-#: 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:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "A variábel recursiva «%s» fai referencia a si mesma (ao final)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "referencia a variable non rematada"
-
-#: 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,"
+msgstr "referencia a variábel non rematada"
 
-#: file.c:272
-#, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+#: file.c:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr ""
-"Atopáronse os comandos do ficheiro `%s' por busca de regras implícitas,"
 
-#: file.c:275
+#: file.c:274
 #, 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'."
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr ""
 
-#: file.c:278
+#: file.c:277
 #, 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'."
+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:298
+#: file.c:280
 #, 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"
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr ""
 
-#: 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:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "non é posíbel renomear «%s» con dous puntos a «%s» con catro puntos"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Borrando o ficheiro intermedio `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "non é posíbel renomear «%s» con catro puntos a «%s» con dous puntos"
 
 #: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Eliminando o ficheiro intermedio «%s»"
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "Borrando os ficheiros intermedios...\n"
+msgstr "Retirando os ficheiros intermedios...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Marca de tempo fóra de rango; substituíndo %s"
+msgstr "%s: Marca de tempo fóra de rango; substituíndo %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Hora actual"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# Non é un obxectivo:"
+msgstr "# Non é un obxectivo:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Ficheiro precioso (prerrequisito de .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Obxectivo falso (prerrequisito de .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Obxectivo da liña de comando."
+msgstr "#  Obxectivo da liña de ordes."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Un ficheiro de make por defecto ou de MAKEFILES."
+msgstr "#  Un ficheiro de make por defecto, MAKEFILES, ou -include/sinclude."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Non hai regras implícitas."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  Fíxose a busca de regras implícitas."
+msgstr "#  Fíxose a busca de regras implícitas."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Non se fixo a busca de regras implícitas."
+msgstr "#  Non se fixo a busca de regras implícitas."
 
-#: 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:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Raíz do patrón implícito/estático: «%s»\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  O ficheiro é un prerrequisito intermedio."
+msgstr "#  O ficheiro é un prerrequisito intermedio."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Tamén se fai:"
+msgstr "#  Tamén se fai:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "#  Nunca se comprobou o tempo de modificación."
+msgstr "#  Nunca se comprobou o tempo de modificación."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  O ficheiro non existe."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
-msgstr "#  O ficheiro é moi antigo."
+msgstr "#  O ficheiro é moi antigo."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  Última modificación: %s\n"
+msgstr "#  Última modificación: %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  O ficheiro foi actualizado."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  O ficheiro non foi actualizado."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Comandos que se están a executar agora (ISTO É UN ERRO)."
+msgstr ""
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Comandos de dependencias que se están a executar (ISTO É UN ERRO)."
+msgstr ""
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "#  Actualizado con éxito."
+msgstr "#  Actualizado con éxito."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Ten que ser actualizado (-q está estabrecido)."
+msgstr "#  Ten que ser actualizado (-q está definido)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
-msgstr "#  Non se puido actualizar."
+msgstr "#  Produciuse un erro ao actualizar."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  ¡Valor non válido no membro `update_status'!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  ¡Valor non válido no membro `command_state'!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Valor non válido no membro «command_state»!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -349,131 +361,189 @@ msgstr ""
 "\n"
 "# Ficheiros"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# estatísticas da táboa hash de ficheiros:\n"
+"# estatísticas da táboa hash de ficheiros:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "primeiro argumento da función `word' non numérico"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
+msgstr "primeiro argumento da función «word» non numérico"
 
-#: 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:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "primeiro argumento da función `wordlist' non numérico"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "primeiro argumento da función «wordlist» non numérico"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "segundo argumento da función `wordlist' non numérico"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "segundo argumento da función «wordlist» non numérico"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "process_easy: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): a chamada a DuplicateHandle(In) fallou (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "process_easy: a chamada a DuplicateHandle(Err) fallou (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+"windows32_open_pipe(): a chamada a DuplicateHandle(Err) fallou (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "A chamada a CreatePipe() fallou (e=%d)\n"
+msgstr "A chamada a CreatePipe() fallou (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): a chamada a process_init_fd() fallou\n"
+msgstr "windows32_openpipe(): a chamada a process_init_fd() fallou\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Limpando o ficheiro de lotes temporal %s\n"
 
-#: function.c:2150
+#: function.c:2151
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Número de argumentos insuficiente (%d) na chamada á función `%s'"
+msgid "open: %s: %s"
+msgstr "%s: %s"
 
-#: function.c:2162
+#: function.c:2158
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "Non implementada nesta plataforma: función `%s'"
+msgid "write: %s: %s"
+msgstr "erro de escritura: %s"
 
-#: function.c:2212
+#: function.c:2164
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "chamada á función `%s' non rematada: falla `%c'"
+msgid "Invalid file operation: %s"
+msgstr ""
 
-#: getopt.c:661
-#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: a opción `%s' é ambigua\n"
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
 
-#: 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"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "non implementada nesta plataforma: función «%s»"
 
-#: 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"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "chamada á función «%s» non rematada: falta «%c»"
 
-#: 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"
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
 
-#: getopt.c:736
+#: function.c:2548
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: opción `--%s' non recoñecida\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:740
+#: function.c:2550
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: opción `%c%s' non recoñecida\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: a opción «%s» é ambigua\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: a opción «--%s» non permite ningún argumento\n"
 
-#: getopt.c:766
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: a opción «%c%s» non permite ningún argumento\n"
+
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: a opción «%s» require un argumento\n"
+
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: opción «--%s» non recoñecida\n"
+
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: opción «%c%s» non recoñecida\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: opción non válida -- %c\n"
+msgstr "%s: opción inaceptábel -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: opción non válida -- %c\n"
+msgstr "%s: opción incorrecta -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: a opción precisa dun argumento -- %c\n"
+msgstr "%s: a opción require un argumento -- %c\n"
+
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: a opción «-W %s» é ambigua\n"
+
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: a opción «-W %s» non permite ningún argumento\n"
 
-#: getopt.c:846
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: a opción `-W %s' é ambigua\n"
+msgid "guile: Expanding '%s'\n"
+msgstr ""
 
-#: getopt.c:864
+#: guile.c:71
 #, 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"
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
 
 #: hash.c:49
-#, fuzzy, c-format
+#, 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"
+msgstr "non se poden reservar %lu bytes para a táboa hash: memoria esgotada"
 
 #: hash.c:280
 #, c-format
@@ -488,248 +558,324 @@ msgstr "Rehash=%d, "
 #: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Colisións=%ld/%ld=%.0f%%"
+msgstr "Colisións=%ld/%ld=%.0f%%"
 
-#: 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:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Buscando unha regra implícita para «%s».\n"
 
-#: 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:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Evitando a recursión de regras implícitas.\n"
+msgstr "Evitando a recursión de regras implícitas.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Probando a regra de patrón con raiz `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Rexeitando o prerrequisito imposible `%s'.\n"
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Probando a regra de patrón con raíz «%.*s».\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rexeitando o prerrequisito implícito imposible `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Rexeitando o prerrequisito imposíbel «%s».\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Probando o prerrequisito `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Probando o prerrequisito implícito `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Probando o prerrequisito «%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:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Probando o prerrequisito implícito «%s».\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Buscando unha regra co ficheiro intermedio `%s'.\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Atopouse a o prerrequisito «%s» como VPATH «%s»\n"
 
-#: job.c:335
-#, fuzzy
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Buscando unha regra co ficheiro intermedio «%s».\n"
+
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (ficheiro temporal)"
+msgstr "Non foi posíbel crear un ficheiro temporal\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Erro 0x%x (ignorado)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (memoria envorcada)"
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Erro 0x%x"
+#: job.c:487
+msgid " (ignored)"
+msgstr " (ignorado)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Erro %d (ignorado)"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (incorporadas):"
 
-#: job.c:455
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Erro 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Erro %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (memoria envorcada)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Agardando por traballos non rematados...."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Proceso fillo vivo 0x%08lx (%s) PID %ld %s\n"
+msgstr "Proceso fillo vivo %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (remoto)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Colleitando o proceso fillo perdedor 0x%08lx PID %ld %s\n"
+msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Colleitando o proceso fillo gañador 0x%08lx PID %ld %s\n"
+msgstr "Colleitando o proceso fillo gañador %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Limpando o ficheiro de lotes temporal %s\n"
 
-#: job.c:861
+#: job.c:843
 #, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Limpando o ficheiro de lotes temporal %s\n"
+
+#: job.c:949
+#, 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"
+msgstr "Retirando o proceso fillo %p PID %s%s da cadea.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Liberouse un elemento para o proceso fillo 0x%08lx (%s).\n"
+msgstr "Liberouse un elemento para o proceso fillo %p (%s).\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+#: job.c:1023
+msgid "write jobserver"
+msgstr ""
+
+#: job.c:1612 job.c:2332
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() non puido lanza-lo proceso (e=%d)\n"
+msgstr "produciuse un erro ao iniciar process_easy() o proceso (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Contáronse %d argumentos no lanzamento que fallou\n"
+"Contáronse %d argumentos no inicio que fallou\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Poñendo o proceso fillo %p (%s) PID %s%s na cadea.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Obtívose un elemento para o proceso fillo 0x%08lx (%s).\n"
+msgstr "Obtívose un elemento para o proceso fillo %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "lectura do cano de traballos"
+msgstr "lectura da canalización de traballos"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: O arquivo «%s» non existe"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Non é preciso reface-lo obxectivo `%s'"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
-msgstr "non se poden impoñer límites de carga neste sistema operativo"
+msgstr "non é posíbel impoñer límites de carga neste sistema operativo"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "non se pode impoñer un límite de carga: "
+msgstr "non é posíbel impoñer un límite de carga: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
+#, c-format
 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"
+"make colleitou un proceso fillo de pid %s, aínda se agarda polo pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s: Comando non atopado"
+msgstr "%s: Orde non atopada"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s: Intérprete de comandos non atopado"
+msgstr "%s: Programa para o intérprete de ordes non atopado"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "O valor de $SHELL cambiou (antes era `%s', agora `%s')"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "O valor de $SHELL cambiou (antes era «%s», agora é «%s»)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Creando un ficheiro por lotes temporal %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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 && !"
+"%s (liña %d) Contexto do intérprete de ordes incorrecto (!unixy && !"
 "batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma."
+
+#: main.c:312
 msgid "Options:\n"
-msgstr "Opcións:\n"
+msgstr "Opcións:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignorado por compatibilidade.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
-"  -B, --always-make           Facer tódolos obxectivos incondicionalmente.\n"
+"  -B, --always-make           Facer todos os obxectivos incondicionalmente.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -737,75 +883,73 @@ msgstr ""
 "  -C DIRECTORIO, --directory=DIRECTORIO\n"
 "                              Cambiar ao DIRECTORIO antes de facer nada.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          Amosar moita información de depuración.\n"
+"  -d                          Mostrar moita información de depuración.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=MODIFICADORES]     Amosar varios tipos de información de "
-"depuración.\n"
+"  --debug[=MODIFICADORES]     Mostrar varios tipos de información de "
+"depuración.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              As variables de ambiente substitúen aos "
-"ficheiros\n"
-"                                 de make.\n"
+"                              As variábei de ambiente substitúen aos "
+"makefiles.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 "  -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n"
-"                              Le-lo FICHEIRO coma ficheiro de make.\n"
+"                              Ler o FICHEIRO como makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "  -h, --help                  Amosar esta mensaxe e saír.\n"
+msgstr "  -h, --help                  Mostrar esta mensaxe e saír.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Ignora-los erros dos comandos.\n"
+msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I DIRECTORIO, --include-dir=DIRECTORIO\n"
-"                              Busca-los ficheiros de make incluídos\n"
-"                                 no directorio.\n"
+"                              Buscar os makefiles incluídos\n"
+"                                 no DIRECTORIO.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          Admitir N traballos á vez; infinitos sen\n"
+"  -j [N], --jobs[=N]          Permitir N traballos á vez; infinitos sen\n"
 "                                 un argumento.\n"
 
-#: main.c:332
+#: main.c:341
 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"
+"                                 algúns obxectivos.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -815,13 +959,13 @@ msgstr ""
 "                              Non iniciar varios traballos con carga\n"
 "                                superior a N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -829,49 +973,51 @@ msgid ""
 "them.\n"
 msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
-"                              Non executar ningún comando; só amosalos.\n"
+"                              Non executar ningún comando; só amosalos.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
 "  -o FICHEIRO, --old-file=FICHEIRO, --assume-old=FICHEIRO\n"
-"                              Trata-lo FICHEIRO coma moi antigo e non "
+"                              Tratar o FICHEIRO como moi antigo e non "
 "refacelo.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 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"
+"  -p, --print-data-base       Mostrar a base de datos interna de make.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -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:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
-"  -r, --no-builtin-rules      Desactiva-las regras implícitas incluidas.\n"
+"  -r, --no-builtin-rules      Desactivar as regras implícitas incorporadas.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Desactiva-los valores das variables "
-"incluidos.\n"
+"  -R, --no-builtin-variables  Desactivar os valores das variábeis "
+"incorporadas.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet             Non amosa-los comandos.\n"
+msgstr ""
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -879,22 +1025,28 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Desactiva -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Toca-los obxectivos no canto de os refacer.\n"
+"  -t, --touch                 Tocaos obxectivos no canto de os refacer.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+"  -d                          Mostrar moita información de depuración.\n"
+
+#: main.c:374
 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"
+"  -v, --version               Mostrar o número de versión de make e saír.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       Amosa-lo directorio actual.\n"
+msgstr "  -w, --print-directory       Mostrar o directorio actual.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -902,40 +1054,50 @@ msgstr ""
 "  --no-print-directory        Desactivar -w, incluso se se activou\n"
 "                                 implicitamente.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 "  -W FICHEIRO, --what-if=FICHEIRO, --new-file=FICHEIRO, --assume-"
 "new=FICHEIRO\n"
-"                              Trata-lo FICHEIRO coma infinitamente novo.\n"
+"                              Tratar o FICHEIRO como infinitamente novo.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 "  --warn-undefined-variables  Avisar cando se faga referencia a\n"
-"                                 unha variable non definida.\n"
+"                                 unha variábel non definida.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "a cadea baleira non é válida coma nome de ficheiro"
+msgstr "a cadea baleira non é válida como nome de ficheiro"
+
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "especificación de nivel de depuración descoñecido «%s»"
 
-#: main.c:650
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "especificación de nivel de depuración descoñecido `%s'"
+msgid "unknown output-sync type '%s'"
+msgstr ""
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "erro interno: opcións --jobserver-fds múltiples"
+
+#: main.c:848
+#, c-format
 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"
+"%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -944,168 +1106,190 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Filtro de excepcións non manexadas chamado dende o programa %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"Filtro de excepcións non manexadas chamado desde o programa %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Violación de acceso: operación de escritura no enderezo %x\n"
+msgstr "Violación de acceso: operación de escritura no enderezo 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Violación de acceso: operación de lectura no enderezo %x\n"
+msgstr "Violación de acceso: operación de lectura no enderezo 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell estabrecendo default_shell = %s\n"
+msgstr "find_and_set_shell() definindo default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "A busca de rutas de find_and_set_shell() define default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr "%s está suspendido durante 30 segundos..."
+msgstr "%s está suspendido durante 30 segundos..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "rematouse sleep(30). Continuando.\n"
 
-#: 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:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (ficheiro temporal)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (ficheiro temporal)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Reiniciando para entrar no modo de un traballo (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
-msgstr "erro interno: opcións --jobserver-fds múltiples"
+msgstr "erro interno: opcións --jobserver-fds múltiples"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "erro interno: cadea --jobserver-fds non válida `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
 
-#: main.c:1730
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "erro interno: cadea --jobserver-fds non válida «%s»"
+
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+"aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á "
+"regra do make pai."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "O ficheiro de make da entrada estándar especificouse dúas veces."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (ficheiro temporal)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (ficheiro temporal)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Reiniciando para entrar no modo de traballo único (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 msgstr ""
-"aviso: o servidor de traballos non está dispoñible: usando -j1. Engada `+' á "
-"regra do make pai."
 
-#: main.c:1777
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "creando o cano de traballos"
+msgstr "creando a canalización de traballos"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "inicializa-lo cano do servidor de traballos"
+msgstr "inicializar a canalización do servidor de traballos"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Actualizando os ficheiros de make....\n"
 
-#: 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:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "O ficheiro de make «%s» podería causar un bucle; non se refai.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Non se puido reface-lo ficheiro de make `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Produciuse un erro ao refacer o ficheiro de make «%s»."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Non se atopou o ficheiro de make incluido `%s'."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Non se atopou o ficheiro de make incluído «%s»."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Non se atopou o ficheiro de make `%s'"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
+msgstr "Non se atopou o ficheiro de make «%s»"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "Non se puido voltar ao directorio orixinal."
+msgstr "Non foi posíbel volver ao directorio orixinal."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Re-executando:"
+msgstr "Re-executando[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (ficheiro temporal)"
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Non hai obxectivos"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Actualizando os obxectivos meta....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar "
+"aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar "
 "incompleta."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Uso: %s [opcións] [obxectivo] ...\n"
+msgstr "Uso: %s [opcións] [obxectivo] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1114,7 +1298,7 @@ msgstr ""
 "\n"
 "Este programa compilou para %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1123,38 +1307,34 @@ msgstr ""
 "\n"
 "Este programa compilou para %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, 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"
+"Envíe informes de fallo no programa a <bug-make@gnu.org>.\n"
+"Envíe informes de fallo na tradución a <proxecto@trasno.net>.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "a opción `-%c' precisa dun argumento integral positivo"
-
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "a opción `-%c' precisa dun argumento integral positivo"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "a opción «%s%s» require un argumento de cadea non baleira"
 
-#: main.c:3054
+#: main.c:2864
 #, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "a opción «-%c» require un argumento integral positivo"
+
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"Este programa compilou para %s\n"
+msgstr "%sCompilado para %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"Este programa compilou para %s (%s)\n"
+msgstr "%sCompilado para %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1162,8 +1342,12 @@ msgid ""
 "%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 ""
+"%sLicenza GPLv3+: GNU GPL versión 3 ou posterior <http://gnu.org/licenses/"
+"gpl.html>\n"
+"%sIsto é software libre: pode modificalo e redistribuílo.\n"
+"%sNon hai NINGUNHA GARANTÍA, ata onde o permita a lei.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1172,7 +1356,7 @@ msgstr ""
 "\n"
 "# Base de datos de Make, imprimida en %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1181,118 +1365,117 @@ msgstr ""
 "\n"
 "# Base de datos de Make rematada en %s\n"
 
-#: main.c:3237
-#, fuzzy, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Entrando nun directorio descoñecido"
-
-#: main.c:3239
-#, fuzzy, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Saíndo dun directorio descoñecido"
-
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Entrando no directorio `%s'\n"
-
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Saíndo do directorio `%s'\n"
-
-#: main.c:3250
-#, fuzzy, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Entrando nun directorio descoñecido"
-
-#: 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:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Entrando no directorio `%s'\n"
-
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Saíndo do directorio `%s'\n"
-
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ". Detido.\n"
-
-#: misc.c:337
+#: misc.c:201
 #, c-format
 msgid "Unknown error %d"
-msgstr "Erro %d descoñecido"
-
-#: misc.c:347
-#, c-format
-msgid "%s%s: %s"
-msgstr "%s%s: %s"
-
-#: misc.c:355
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
+msgstr "Erro %d descoñecido"
 
-#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "memoria virtual esgotada"
 
-#: misc.c:708
+#: misc.c:522
 #, 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:729
+#: misc.c:543
 msgid "Initialized access"
 msgstr "Acceso inicializado"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "Acceso de usuario"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
 msgstr "Acceso de make"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "Acceso de fillo"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Entrando nun directorio descoñecido\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Saíndo dun directorio descoñecido\n"
+
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Entrando no directorio «%s»\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Saíndo do directorio «%s»\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Entrando nun directorio descoñecido\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Saíndo dun directorio descoñecido\n"
+
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Entrando no directorio «%s»\n"
+
+#: output.c:146
 #, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Saíndo do directorio «%s»\n"
+
+#: output.c:515
+#, c-format
 msgid "write error: %s"
-msgstr "Erros redirixidos a %s\n"
+msgstr "erro de escritura: %s"
 
-#: misc.c:956
-#, fuzzy
+#: output.c:517
 msgid "write error"
-msgstr "write jobserver"
+msgstr "erro de escritura"
+
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ". Detido.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
 
-#: read.c:179
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Lendo os ficheiros de make...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
-msgstr "Lendo o ficheiro de make `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
+msgstr "Lendo o ficheiro de make «%s»"
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (non hai un obxectivo por defecto)"
+msgstr " (non hai unha meta por defecto)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (camiño de busca)"
+msgstr " (ruta de busca)"
 
 #: read.c:339
 #, c-format
@@ -1302,747 +1485,800 @@ msgstr " (non importa)"
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (non hai expansión de ~)"
+msgstr " (non hai expansión de ~)"
+
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
 
-#: read.c:759
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "sintaxe non válida no condicional"
+msgstr "sintaxe non válida no condicional"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "os comandos comezan antes do primeiro obxectivo"
+msgstr ""
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "falla unha regra antes dos comandos"
+msgstr ""
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "falla un separador%s"
+msgstr "falta un separador%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (¿se cadra unha tabulación no canto de oito espacios?)"
+msgstr " (quixo dicir TAB no canto de 8 espazos?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "falla un patrón obxectivo"
+msgstr "falta un patrón obxectivo"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "patróns de obxectivo múltiples"
+msgstr "patróns de obxectivo múltiples"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
-msgstr "o patrón obxectivo non contén `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
+msgstr "o patrón obxectivo non contén «%%»"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "falla `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
+msgstr "falta «endif»"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
-msgstr "nome de variable baleiro"
+msgstr "nome de variábel baleiro"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "Texto superfluo trala directiva `endef'"
+msgid "extraneous text after 'define' directive"
+msgstr "texto superfluo trala directiva «define»"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "falla `endef', `define' sen rematar"
-
-#: read.c:1420
+#: read.c:1490
 #, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Texto superfluo trala directiva `endef'"
+msgid "missing 'endef', unterminated 'define'"
+msgstr "falta «endef», «define» sen rematar"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Texto superfluo trala directiva `%s'"
+#: read.c:1518
+#, fuzzy
+msgid "extraneous text after 'endef' directive"
+msgstr "Texto superfluo trala directiva «endef»"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
-msgstr "`%s' superfluo"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "Texto superfluo trala directiva «%s»"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "só un `else' por condicional"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
+msgstr "«%s» superfluo"
 
-#: read.c:1797
+#: read.c:1617
 #, fuzzy
+msgid "only one 'else' per conditional"
+msgstr "só un «else» por condicional"
+
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Definición dunha variable por obxectivo mal formada"
+msgstr "Definición dunha variábel por obxectivo mal formada"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "regrás de patrón implícitas e estáticas mesturadas"
+msgstr "regras de patrón implícitas e estáticas mesturadas"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
-msgstr "regras implícitas e normais mesturadas"
-
-#: 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:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "o ficheiro obxectivo `%s' ten entradas : e ::"
-
-#: 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."
+msgstr "regras implícitas e normais mesturadas"
 
-#: read.c:2006
+#: read.c:2084
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "aviso: ignorando os comandos do obxectivo `%s'"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "o obxectivo «%s» non coincide co patrón do obxectivo"
 
-#: read.c:2009
+#: read.c:2099 read.c:2144
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "aviso: ignóranse os comandos antigos do obxectivo `%s'"
+msgid "target file '%s' has both : and :: entries"
+msgstr "o ficheiro obxectivo «%s» ten entradas : e ::"
 
-#: 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"
+#: read.c:2105
+#, fuzzy, 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."
 
-#: remake.c:234
+#: read.c:2114
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Non hai nada que facer para `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr ""
 
-#: remake.c:235
+#: read.c:2117
 #, c-format
-msgid "`%s' is up to date."
-msgstr "`%s' está actualizado."
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr ""
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Podando o ficheiro `%s'.\n"
+#: read.c:2530
+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:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sNon hai unha regra para face-lo obxectivo `%s'%s"
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Non hai nada que facer para «%s»"
 
-#: 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:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
+msgstr "«%s» está actualizado."
+
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Podando o ficheiro «%s».\n"
+
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sNon hai unha regra para facer o obxectivo «%s»%s"
+
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Considerando o ficheiro obxectivo `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Considerando o ficheiro obxectivo «%s».\n"
 
 #: 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"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr ""
+"Hai pouco probouse a actualizar o ficheiro «%s» e non foi posíbel facelo.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "O ficheiro `%s' xa fora considerado.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "O ficheiro «%s» xa fora considerado.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Ainda se está actualizando o ficheiro `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Aínda se está actualizando o ficheiro «%s».\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Rematouse de actualiza-lo ficheiro `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Rematouse de actualizar o ficheiro «%s».\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "O ficheiro `%s' non existe.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "O ficheiro «%s» non existe.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** Aviso: o ficheiro `%s' de .LOW_RESOLUTION_TIME ten unha marca de tempo "
-"de alta resolución"
+"*** Aviso: o ficheiro «%s» de .LOW_RESOLUTION_TIME ten unha marca de tempo "
+"de alta resolución"
 
-#: 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:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Atopouse unha regra implícita de «%s».\n"
 
-#: 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:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Non se atopou unha regra implícita para «%s».\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Usando os comandos por defecto para `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "Usando as ordes por defecto para «%s».\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "A dependencia circular %s <- %s foi eliminada."
 
-#: 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:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Estan a se face-los prerrequisitos de `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo «%s».\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Abandonando no ficheiro obxectivo `%s'.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Están a se facer os prerrequisitos de «%s».\n"
 
-#: 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:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Abandonando no ficheiro obxectivo «%s».\n"
 
-#: 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:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Non se refai o obxectivo «%s» a causa dos erros."
 
-#: 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:731
+#, fuzzy, 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: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:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n"
 
-#: 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:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "O prerrequisito «%s» é máis novo que o obxectivo «%s».\n"
 
-#: 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:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "O prerrequisito «%s» é máis vello que o obxectivo «%s».\n"
 
-#: remake.c:765
+#: remake.c:762
 #, 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"
+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:770
+#: remake.c:769
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Facendo `%s' debido á marca de sempre-facer.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr ""
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
-msgstr "Non é preciso reface-lo obxectivo `%s'"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Facendo «%s» debido á marca de sempre-facer.\n"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; usando o nome de VPATH `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
+msgstr "Non é preciso refacer o obxectivo «%s»"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Debe refacerse o obxectivo `%s'.\n"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; usando o nome de VPATH «%s»"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Ignorando o nome VPATH `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Debe refacerse o obxectivo «%s».\n"
 
-#: remake.c:815
+#: remake.c:810
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "Estanse a executa-los comandos de `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Ignorando o nome VPATH «%s».\n"
 
-#: remake.c:822
+#: remake.c:819
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Non se puido reface-lo ficheiro obxectivo `%s'.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr ""
 
-#: 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:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Produciuse un erro ao refacer o ficheiro obxectivo «%s».\n"
 
-#: 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:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "O ficheiro obxectivo «%s» foi feito de novo con éxito.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Usando os comandos por defecto para `%s'.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "O ficheiro obxectivo «%s» precisa refacerse con -q.\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:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Usando as ordes por defecto para «%s».\n"
 
-#: remake.c:1370
+#: remake.c:1372
 #, 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"
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "O elemento de .LIBPATTERNS `%s' non é un patrón"
+#: remake.c:1385
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación %s seg no futuro"
+
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "O elemento de .LIBPATTERNS «%s» non é un patrón"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "A Aduana non exporta: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Regras Implícitas"
+"# Regras implícitas"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# Non hai regras implícitas."
+"# Non hai regras implícitas."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 "\n"
-"# %u regras implícitas, %u"
+"# %u regras implícitas, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "ERRO: ¡num_pattern_rules é incorrecto! %u != %u"
+msgstr "FALLO: num_pattern_rules é incorrecto! %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
-msgstr "sinal descoñecido"
+msgstr "sinal descoñecido"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Colgar"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interrompido"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
-msgstr "Saír"
+msgstr "Saír"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Instrucción Ilegal"
+msgstr "Instrución inaceptábel"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Trampa de trazado/punto de detención"
+msgstr "Trampa de trazado/punto de detención"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Abortado"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Trampa de IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Trampa EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Excepción de coma flotante"
+msgstr "Excepción de coma flotante"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Matado"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Erro do bus"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Fallo de segmento"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Chamada ao sistema incorrecta"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
-msgstr "Cano rompido"
+msgstr "Canalización rota"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Temporizador"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
-msgstr "Rematado"
+msgstr "Terminado"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Sinal definido polo usuario 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Sinal definido polo usuario 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
-msgstr "O proceso fillo rematou"
+msgstr "O proceso fillo saíu"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Fallo de suministro eléctrico"
+msgstr "Fallo de subministración eléctrica"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Detido"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Detido (entrada de consola)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Detido (saída de consola)"
+msgstr "Detido (saída de consola)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Detido (sinal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "Límite de tempo de CPU superado"
+msgstr "Excedeuse o límite de tempo de CPU"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Límite de tamaño de ficheiros superado"
+msgstr "Excedeuse o límite de tamaño do ficheiro"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Temporizador virtual esgotado"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "O temporizador esgotouse"
+msgstr ""
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "A fiestra cambiou"
+msgstr "A xanela cambiou"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Continuado"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Condición de E/S urxente"
+msgstr "Condición de E/S urxente"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "A E/S é posible"
+msgstr "A E/S é posíbel"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Sinal de perigo"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
-msgstr "Petición de información"
+msgstr "Petición de información"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "O co-procesador de coma flotante non está dispoñible"
+msgstr "O coprocesador de coma flotante non está dispoñíbel"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:280
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# estatísticas da táboa hash de ficheiros:\n"
+"# estatísticas da táboa hash de ficheiros:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automático"
+
+#: variable.c:1610
 msgid "default"
 msgstr "por defecto"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "ambiente"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "ficheiro de make"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "ambiente baixo -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
-msgstr "liña de comandos"
+msgstr "liña de ordes"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "directiva `override'"
-
-#: variable.c:1559
-msgid "automatic"
-msgstr "automático"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
+msgstr "directiva «override»"
 
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (de `%s', liña %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (desde «%s», liña %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# estatísticas da táboa hash de conxunto de variables:\n"
+msgstr "# estatísticas da táboa hash de conxunto de variábeis:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 "\n"
-"# Variables\n"
+"# Variábeis\n"
 
-#: variable.c:1627
-#, fuzzy
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Valores de variables específicos do patrón"
+"# Valores de variábeis específicas do patrón"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Non hai valores específicos do patrón."
+"# Non hai valores específicos do patrón."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u valores de variables específicos do patrón"
-
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "aviso: variable non definida `%.*s'"
+"# %u valores de variábeis específicos do patrón"
 
-#: vmsfunctions.c:92
+#: variable.h:224
 #, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "aviso: variábel non definida «%.*s»"
+
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "a chamada a sys$search fallou con %d\n"
+msgstr "a chamada a sys$search() fallou con %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "Aviso: Redirección baleira\n"
+msgstr "Aviso: Redirección baleira\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
-msgstr "erro interno: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
+msgstr "erro interno: «%s» command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+msgstr "-aviso, pode que teña que reactivar o manexo de CTRL-Y desde o DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Comando incluido descoñecido '%s'\n"
+msgstr "Orde incorporada descoñecida «%s»\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
-msgstr "Erro, comando baleiro\n"
+msgstr "Erro, orde baleira\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Entrada redirixida de %s\n"
+msgstr "Entrada redirixida desde %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erros redirixidos a %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Saída redirixida a %s\n"
+msgstr ""
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Saída redirixida a %s\n"
+msgstr "Saída redirixida a %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Executando %s no canto\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erro ao lanzar, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# Camiños de Busca VPATH\n"
+"# Rutas de busca VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Non hai camiños de busca `vpath'"
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr "# Non hai rutas de busca «vpath»"
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u camiños de busca `vpath'.\n"
+"# %u rutas de busca «vpath».\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Non hai un camiño de busca xeral (variable `VPATH')."
+"# Non hai unha ruta de busca xeral (variábel «VPATH»)."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Camiño de busca xeral (variable `VPATH'):\n"
+"# Ruta de busca xeral (variábel «VPATH»):\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Valor non válido no membro «update_status»!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Erro 0x%x (ignorado)"
+
+#~ msgid "[%s] Error %d (ignored)"
+#~ msgstr "[%s] Erro %d (ignorado)"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# estatísticas da táboa hash strcache:\n"
+#~ "# "
+
 #~ msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
 #~ msgstr ""
 #~ "create_child_process: a chamada a DuplicateHandle(In) fallou (e=%d)\n"
@@ -2058,10 +2294,10 @@ msgstr ""
 #~ 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"
+#~ 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."
+#~ 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."
@@ -2071,8 +2307,8 @@ msgstr ""
 #~ "%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"
+#~ "%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'"
@@ -2082,13 +2318,13 @@ msgstr ""
 #~ msgstr "directiva `override' baleira"
 
 #~ msgid "invalid `override' directive"
-#~ msgstr "directiva `override' non válida"
+#~ msgstr "directiva `override' non válida"
 
 #~ msgid "no file name for `%sinclude'"
 #~ msgstr "non hai un home de ficheiro en `%sinclude'"
 
 #~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "o obxectivo `%s' deixa o patrón prerrequisito baleiro"
+#~ msgstr "o obxectivo `%s' deixa o patrón prerrequisito baleiro"
 
 #~ msgid ""
 #~ "\n"
@@ -2106,7 +2342,7 @@ msgstr ""
 
 #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
 #~ msgstr ""
-#~ "# %.3f ficheiros de media por balde, máximo de %u ficheiros nun balde.\n"
+#~ "# %.3f ficheiros de media por balde, máximo de %u ficheiros nun balde.\n"
 
 #~ msgid "DIRECTORY"
 #~ msgstr "DIRECTORIO"
@@ -2122,7 +2358,7 @@ msgstr ""
 
 #~ msgid "Environment variables override makefiles"
 #~ msgstr ""
-#~ "As variables de ambiente teñen prioridade sobre os ficheiros de make"
+#~ "As variables de ambiente teñen prioridade sobre os ficheiros de make"
 
 #~ msgid "FILE"
 #~ msgstr "FICHEIRO"
@@ -2134,13 +2370,13 @@ msgstr ""
 #~ msgstr "Busca-los ficheiros de make incluidos no DIRECTORIO"
 
 #~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "Non comezar traballos múltiples se a carga non é inferior a N"
+#~ msgstr "Non comezar traballos múltiples se a carga non é inferior a N"
 
 #~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "Non executar ningún comando; só amosalos"
+#~ msgstr "Non executar ningún comando; só amosalos"
 
 #~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "Considerar que o FICHEIRO é moi vello, e non o refacer"
+#~ msgstr "Considerar que o FICHEIRO é moi vello, e non o refacer"
 
 #~ msgid "Don't echo commands"
 #~ msgstr "Non amosa-los comandos"
@@ -2149,7 +2385,7 @@ msgstr ""
 #~ msgstr "Desactiva -k"
 
 #~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Considerar que o FICHEIRO é infinitamente novo"
+#~ msgstr "Considerar que o FICHEIRO é infinitamente novo"
 
 #~ msgid "Entering"
 #~ msgstr "Entrando"
@@ -2161,16 +2397,13 @@ msgstr ""
 #~ msgstr "# Non hai variables."
 
 #~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# %.1f variables de media por balde, máximo de %u nun balde.\n"
+#~ msgstr "# %.1f variables de media por balde, máximo de %u nun balde.\n"
 
 #~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# %d.%d variables de media por balde, máximo de %u nun balde.\n"
+#~ msgstr "# %d.%d variables de media por balde, máximo de %u nun balde.\n"
 
 #~ msgid "the `word' function takes a positive index argument"
-#~ msgstr "a función `word' toma un argumento índice positivo"
-
-#~ msgid " (ignored)"
-#~ msgstr " (ignorado)"
+#~ msgstr "a función `word' toma un argumento índice positivo"
 
 #~ msgid " not"
 #~ msgstr " non"
@@ -2185,10 +2418,10 @@ msgstr ""
 #~ msgstr "%s rematou."
 
 #~ msgid "%s: unknown signal"
-#~ msgstr "%s: sinal descoñecido"
+#~ msgstr "%s: sinal descoñecido"
 
 #~ msgid "%sGNU Make version %s"
-#~ msgstr "%sGNU Make versión %s"
+#~ msgstr "%sGNU Make versión %s"
 
 #~ msgid "1-minute: %f  "
 #~ msgstr "1 minuto: %f  "
@@ -2200,7 +2433,7 @@ msgstr ""
 #~ msgstr "5 minutos: %f  "
 
 #~ msgid "?? getopt returned character code 0%o ??\n"
-#~ msgstr "?? getopt devolveu o código do carácter 0%o ??\n"
+#~ msgstr "?? getopt devolveu o código do carácter 0%o ??\n"
 
 #~ msgid "Child"
 #~ msgstr "Fillo"
@@ -2245,19 +2478,19 @@ msgstr ""
 #~ msgstr "Probando a dependencia %s `%s'.\n"
 
 #~ msgid "Unknown error 12345678901234567890"
-#~ msgstr "Erro 12345678901234567890 descoñecido"
+#~ msgstr "Erro 12345678901234567890 descoñecido"
 
 #~ msgid "Unknown%s job %d"
-#~ msgstr "Traballo%s %d descoñecido"
+#~ msgstr "Traballo%s %d descoñecido"
 
 #~ msgid "User"
 #~ msgstr "Usuario"
 
 #~ msgid "arg with white space or doublequotes: %s\n"
-#~ msgstr "argumento con espacios en branco ou comiñas dobres: %s\n"
+#~ msgstr "argumento con espacios en branco ou comiñas dobres: %s\n"
 
 #~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr "aparecen díxitos en dous elementos de argv distintos.\n"
+#~ msgstr "aparecen díxitos en dous elementos de argv distintos.\n"
 
 #~ msgid "empty string arg: %s\n"
 #~ msgstr "argumento de cadea baleiro: %s\n"
@@ -2290,7 +2523,7 @@ msgstr ""
 #~ msgstr "getwd: %s"
 
 #~ msgid "implicit"
-#~ msgstr "implícita"
+#~ msgstr "implícita"
 
 #~ msgid "intermediate"
 #~ msgstr "intermedia"
@@ -2302,31 +2535,31 @@ msgstr ""
 #~ msgstr "nunca"
 
 #~ msgid "newer"
-#~ msgstr "máis novo"
+#~ msgstr "máis novo"
 
 #~ msgid "non-option ARGV-elements: "
-#~ msgstr "elementos ARGV que non son opcións: "
+#~ msgstr "elementos ARGV que non son opcións: "
 
 #~ msgid "older"
-#~ msgstr "máis vello"
+#~ msgstr "máis vello"
 
 #~ msgid "option %c\n"
-#~ msgstr "opción %c\n"
+#~ msgstr "opción %c\n"
 
 #~ msgid "option %s"
-#~ msgstr "opción %s"
+#~ msgstr "opción %s"
 
 #~ msgid "option a\n"
-#~ msgstr "opción a\n"
+#~ msgstr "opción a\n"
 
 #~ msgid "option b\n"
-#~ msgstr "opción b\n"
+#~ msgstr "opción b\n"
 
 #~ msgid "option c with value `%s'\n"
-#~ msgstr "opción c co valor `%s'\n"
+#~ msgstr "opción c co valor `%s'\n"
 
 #~ msgid "option d with value `%s'\n"
-#~ msgstr "opción d co valor `%s'\n"
+#~ msgstr "opción d co valor `%s'\n"
 
 #~ msgid "original arg: %s\n"
 #~ msgstr "argumento orixinal: %s\n"
@@ -2359,7 +2592,7 @@ msgstr ""
 #~ msgstr "unlink: "
 
 #~ msgid "winning"
-#~ msgstr "que gaña"
+#~ msgstr "que gaña"
 
 #~ msgid "write"
 #~ msgstr "escritura"
index 5e8d924..64f3603 100644 (file)
Binary files a/po/he.gmo and b/po/he.gmo differ
index 7befe70..57116c8 100644 (file)
--- a/po/he.po
+++ b/po/he.po
@@ -6,120 +6,126 @@ msgid ""
 msgstr ""
 "Project-Id-Version: make 3.79.1\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: he\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "úëîúð äððéàù `%s' äðåëúá ùåîéù ïåéñð"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "VMS úëøòîá ïåéëøàá øáà ìù äòù/êéøàú éåðéùá äëéîú ïéà"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "ïé÷ú ïåéëøà õáå÷ åðéà `%s' :touch"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "`%s' øáà ìéëî åðéà `%s' ïåéëøà :touch"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr "`%s' øåáò ïé÷ú-àì ãå÷ äøéæçä ar_member_touch :touch"
 
-#: arscan.c:69
+#: arscan.c:67
 #, fuzzy, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "%d ñåèèñ ,lib$rset_module é\"ò ìåãåî ìò òãéî úôéìùá ïåìùë"
 
-#: arscan.c:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "%d ñåèèñ íò ìùëð lbr$ini_control"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (name might be truncated)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Date %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Break. ***\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] `%s' õáå÷ ÷çåî ***"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 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:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  commands to execute"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (built-in):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (from `%s', line %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -127,224 +133,228 @@ msgstr ""
 "\n"
 "# Directories\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: could not be stat'd.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (key %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "No"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " files, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "no"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " impossibilities"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " so far."
 
-#: dir.c:1092
+#: dir.c:1085
 #, fuzzy, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilities in %u directories.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "(øáã ìù åôåñá) åîöòì äééðôäì íøåâ `%s' éáéñøå÷ø äðúùî"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå"
 
-#: file.c:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr ".`%s' øåáò åìà ìò úåôéãò `%s' øåáò úåãå÷ô"
 
-#: file.c:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
 
-#: file.c:396
+#: file.c:400
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "øúåîä íåçúì õåçî äðéäù ,%s ìù ïîæä úîéúç úà %s-á óéìçî"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "úëøòî ïåòù"
 
 #  See the comment above about translations of text printed under -p.
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Not a target:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Precious file (prerequisite of .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Phony target (prerequisite of .PHONY)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Command-line target."
 
-#: file.c:935
+#: file.c:960
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  A default or MAKEFILES makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# No implicit rules."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Implicit rule search has been done."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Implicit rule search has not been done."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Implicit/static pattern stem: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  File is an intermediate prerequisite."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Also makes:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Modification time never checked."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  File does not exist."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  File is very old."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Last modified %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  File has been updated."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  File has not been updated."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Commands currently running (THIS IS A BUG)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Dependencies commands running (THIS IS A BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Successfully updated."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Needs to be updated (-q is set)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Failed to be updated."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Invalid value in `update_status' member!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Invalid value in `command_state' member!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -352,124 +362,182 @@ msgstr ""
 "\n"
 "# Files"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "øôñî åðéà `word' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "éáåéç úåéäì áééç `word' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): 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:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() failed (e=%d)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() failed\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr ""
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr ""
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -490,134 +558,159 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr ".`%s' íã÷ úùéøã ììë äñðî\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n"
 
-#: job.c:335
+#: job.c:361
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (temporary file)"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] 0x%x äì÷úî éúîìòúä ***"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] 0x%x äì÷ú ***"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] %d äì÷úî éúîìòúä"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (built-in):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] 0x%x äì÷ú ***"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] %d äì÷ú"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr ""
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî"
 
-#: job.c:579
+#: job.c:639
 #, fuzzy, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "äöø 0x%08lx (%s) PID=%ld %s úá-úéðëú\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr "(ú÷çåøî)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "äçéìöäù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
+
+#: job.c:949
 #, fuzzy, c-format
 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:920
-msgid "write jobserver"
-msgstr "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n"
 
-#: job.c:1453 job.c:2094
+#  Here and elsewhere leading strings passed to perror are not translated,
+#  since they will be followed by an error message in English.
+#: job.c:1023
+msgid "write jobserver"
+msgstr "write jobserver"
+
+#: job.c:1612 job.c:2332
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -626,281 +719,354 @@ msgstr ""
 "\n"
 "ìùëðù øåâéùá åðîð íéèðîåâøà %d\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "read jobs pipe"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "cannot enforce load limit: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, fuzzy, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "äôñàð pid %d úá-úéðëú ,pid %d-ì äëçî ïééãò\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "äàöîð àì åæ äãå÷ô :%s"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "äàöîð àì shell úãå÷ô :%s"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "`%s' éðîæ batch õáå÷ øöåé\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "                                             :íéðééôàî\n"
 
-#: main.c:304
+#: main.c:313
 #, fuzzy
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "úåîéàú ïòîì èîùåî"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:311
+#: main.c:320
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä"
 
-#: main.c:313
+#: main.c:322
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:332
 #, fuzzy
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "úéðëúäî àöå äæ äøæò êñî âöä"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:330
+#: main.c:339
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr "äìáâî ïéà èðîåâøà àìì ;úéðîæ-åá úåãåáò N-î øúåé àì"
 
-#: main.c:332
+#: main.c:341
 #, fuzzy
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä"
 
-#: main.c:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "Make ìù éîéðô íéðåúð ñéñá âöä"
 
-#: main.c:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà"
 
-#: main.c:349
+#: main.c:361
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð"
 
-#: main.c:351
+#: main.c:363
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:358
+#: main.c:370
 #, fuzzy
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+
+#: main.c:374
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä"
 
-#: main.c:362
+#: main.c:376
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "úéçëåð äé÷éú íù âöä"
 
-#: main.c:364
+#: main.c:378
 #, fuzzy
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "ùøåôîá ïéåö àåä íà åìéôà -w ìèá"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "íéáåøî --jobserver-fds éðééôàî :úéîéðô äðëú úì÷ú"
+
+#: main.c:848
 #, fuzzy, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n"
 
-#: main.c:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -915,202 +1081,224 @@ msgstr ""
 "ExceptionFlags = %x\n"
 "ExceptionAddress = %x\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, 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:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr " äîééúñð\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile"
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (temporary file)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (temporary file)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
-
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô"
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "íéáåøî --jobserver-fds éðééôàî :úéîéðô äðëú úì÷ú"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "--jobserver-fds ïééôàîá `%s' äéåâù úæåøçî :úéîéðô äðëú úì÷ú"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà"
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
 ".Make ìù áàä ììëì `+' óñåä .-j1-á ùåîéù äùòéé ;ïéîæ åðéà jobserver :äøäæà"
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile"
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (temporary file)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (temporary file)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô"
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "creating jobs pipe"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "init jobserver pipe"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "...makefile éöá÷ ïëãòî\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú"
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr ".àöîð àì `%s' ììëåî makefile"
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "àöîð àì `%s' Makefile"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì"
 
-#: main.c:2102
+#: main.c:2354
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Re-executing:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (temporary file): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "úåøèî ïéà"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "...ãòé úåøèî ïëãòî\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ"
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "%s [íéðééôàî] [äøèî] ...  :ùåîéù ïôåà\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2481
+#: main.c:2729
 #, fuzzy, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "\n"
 ".<bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1119,7 +1307,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1128,7 +1316,7 @@ msgstr ""
 "\n"
 "# Make data base, printed on %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1137,110 +1325,110 @@ msgstr ""
 "\n"
 "# Finished Make data base on %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Unknown error %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "éìàåèøéåä ïåøëæä øîâð"
+
+#: misc.c:522
+#, 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:543
+#, fuzzy
+msgid "Initialized access"
+msgstr "Initialized"
+
+#: misc.c:622
+msgid "User access"
+msgstr ""
+
+#: misc.c:670
+msgid "Make access"
+msgstr ""
+
+#: misc.c:704
+msgid "Child access"
+msgstr ""
+
+#: output.c:128
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3239
+#: output.c:130
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3242
+#: output.c:133
 #, fuzzy, c-format
-msgid "%s: Entering directory `%s'\n"
+msgid "%s: Entering directory '%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3245
+#: output.c:135
 #, fuzzy, c-format
-msgid "%s: Leaving directory `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3250
+#: output.c:139
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3253
+#: output.c:141
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "an unknown directory"
 
-#: main.c:3257
+#: output.c:144
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr ""
+
+#: output.c:146
 #, fuzzy, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "directory `%s'\n"
 
-#: main.c:3260
+#: output.c:515
 #, fuzzy, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "directory `%s'\n"
+msgid "write error: %s"
+msgstr "%s-ì úåàéâù úééðôä\n"
 
-#: misc.c:316
+#  Here and elsewhere leading strings passed to perror are not translated,
+#  since they will be followed by an error message in English.
+#: output.c:517
+#, fuzzy
+msgid "write error"
+msgstr "write jobserver"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Stop.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Unknown error %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:355
+#: output.c:759
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: 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: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:729
-#, fuzzy
-msgid "Initialized access"
-msgstr "Initialized"
-
-#: misc.c:808
-msgid "User access"
-msgstr ""
-
-#: misc.c:856
-msgid "Make access"
-msgstr ""
-
-#: misc.c:890
-msgid "Child access"
-msgstr ""
-
-#: 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:956
-#, fuzzy
-msgid "write error"
-msgstr "write jobserver"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "...makefile éöá÷ àøå÷\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Reading makefile `%s'"
 
 #: read.c:335
@@ -1263,326 +1451,344 @@ msgstr " (don't care)"
 msgid " (no ~ expansion)"
 msgstr " (no ~ expansion)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "éàðú ìù éåâù øéáçú"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "ïäéðôì ììë àìì úåãå÷ô"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "%sãéøôî øñç"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr "(?íéçååø 8 íå÷îá TAB-ì úðååëúä íàä) "
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "äøèî úéðáú ïéà"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "úåáåøî äøèî úåéðáú"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "`%%' àìì äøèî úéðáú"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "øñç `endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "÷éø äðúùî íù"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "`%s' úàøåä éøçà øúåéî èñ÷è"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "øúåéî `%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî"
 
-#: read.c:1797
+#: read.c:1892
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "ãòéä úéðáú úà úîàåú äðéà `%s' äøèî"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî"
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "äçðæð äøåùä úøúé ;NUL åú éúùâô :äøäæà"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr ".`%s øåáò úåùòì äî ïéà"
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr ".éðëãò øáë `%s'"
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr ".`%s' äøèî õáå÷ ïçåá\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr ".`%s' õáå÷ ïëãòî ïééãò\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr ".íéé÷ åðéà `%s' õáå÷\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ".%s <- %s úéìâòî ìåìú èéîùî"
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî"
 
-#: remake.c:727
+#: remake.c:731
 #, fuzzy, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n"
 
-#: remake.c:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr " (`%s' :VPATH õáå÷ íù)"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr ".`%s' äøèî ùãçî úåðáì áééç\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  .`%s' VPATH íùî íìòúî\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr ".`%s' øåáò úåãå÷ô õéøî\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr ".`%s' ùãçî úééðáá äçìöä\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr ".-q íò úåðáéäì êéøö `%s' äøèî õáå÷\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
 msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "%s àöééî åðéà Customs\n"
 
-#: rule.c:499
+#: rule.c:496
 #, fuzzy
 msgid ""
 "\n"
@@ -1591,7 +1797,7 @@ msgstr ""
 "\n"
 "# No implicit rules."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1599,7 +1805,7 @@ msgstr ""
 "\n"
 "# No implicit rules."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1608,241 +1814,258 @@ msgstr ""
 "\n"
 "# %u implicit rules, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, 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:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "unknown signal"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Hangup"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interrupt"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Quit"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Illegal Instruction"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Trace/breakpoint trap"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Aborted"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT trap"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT trap"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Floating point exception"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Killed"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Bus error"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Segmentation fault"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Bad system call"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Broken pipe"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarm clock"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Terminated"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "User defined signal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "User defined signal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Child exited"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Power failure"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Stopped"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Stopped (tty input)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Stopped (tty output)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Stopped (signal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU time limit exceeded"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "File size limit exceeded"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Virtual timer expired"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Profiling timer expired"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Window changed"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Continued"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Urgent I/O condition"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O possible"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Resource lost"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Danger signal"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Information request"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Floating point co-processor not available"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:280
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:244
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatic"
+
 #  These are printed under -p, so they are left in English.
-#: variable.c:1541
+#: variable.c:1610
 msgid "default"
 msgstr "default"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "environment"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "environment under -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "command line"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "`override' directive"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatic"
-
-#: variable.c:1570
+#: variable.c:1636
 #, fuzzy, c-format
-msgid " (from `%s', line %lu)"
+msgid " (from '%s', line %lu)"
 msgstr " (from `%s', line %lu):\n"
 
-#: variable.c:1612
+#: variable.c:1699
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %u variables in %u hash buckets.\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1850,7 +2073,7 @@ msgstr ""
 "\n"
 "# Variables\n"
 
-#: variable.c:1627
+#: variable.c:1714
 #, fuzzy
 msgid ""
 "\n"
@@ -1859,7 +2082,7 @@ msgstr ""
 "\n"
 "# Pattern-specific variable values"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1867,7 +2090,7 @@ msgstr ""
 "\n"
 "# No pattern-specific variable values."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1876,92 +2099,92 @@ msgstr ""
 "\n"
 "# %u pattern-specific variable values"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "%d íò ìùëð sys$search\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "ä÷éø äééðôä :úåøéäæ\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "command_state `%s' :úéîéðô äðëú úì÷ú"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ".DCL-î CTRL-Y-á ìåôéè øåùôéàá êøåö úåéäì ìåìò :úåøéäæ\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "úøëåî äðéà '%s'úéðáåî äãå÷ô\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "ä÷éø äãå÷ô :äì÷ú\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s-î èì÷ úééðôä\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s-ì úåàéâù úééðôä\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "%s-ì èìô úééðôä\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s-ì èìô úééðôä\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s õéøî úàæ íå÷îá\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1969,37 +2192,43 @@ msgstr ""
 "\n"
 "# VPATH Search Paths\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# No `vpath' search paths."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u `vpath' search paths.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# No general (`VPATH' variable) search path."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Invalid value in `update_status' member!"
+
 #~ msgid ""
 #~ "\n"
 #~ "# No files."
@@ -2017,6 +2246,9 @@ msgstr ""
 #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
 #~ msgstr "# average %.3f files per bucket, max %u files in one bucket.\n"
 
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] 0x%x äì÷úî éúîìòúä ***"
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "'\"' êåúá ïééãò ,øéáçú úàéâù\n"
 
index a3d3307..33ffdae 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index 5806881..5ae7169 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
-# Translation of GNU make.
+# Translation of make to Croatian.
 # Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 # Hrvoje Niksic <hniksic@xemacs.org>, 2002.
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2012-10-31 17:32+0100\n"
+"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "poku¹aj kori¹tenja nepodr¾ane moguænosti: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "pokušaj korištenja nepodržane mogućnosti: „%s”"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "touch dijela arhive nije rapolo¾iv na VMS-u"
-
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: Arhiva `%s' ne postoji"
-
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch: `%s' nije valjana arhiva"
+msgstr "touch elementa arhive nije dostupan na VMS-u"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch: èlan `%s' ne postoji u `%s'"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Arhiva „%s” ne postoji"
 
-#: 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'"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: „%s” nije ispravna arhiva"
 
-#: arscan.c:69
+#: ar.c:157
 #, 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"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Element „%s” ne postoji u „%s”"
 
-#: arscan.c:175
+#: ar.c:164
 #, fuzzy, c-format
-msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control nije uspio sa statusom = %d"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: Neispravan povratni kod iz ar_member_touch na „%s”"
 
-#: arscan.c:187
+#: arscan.c:67
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "ne mogu otvoriti biblioteku `%s' da naðem èlan `%s'"
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_module() nije izdvojio informacije o modulu, status = %d"
 
-#: arscan.c:850
+#: arscan.c:173
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "èlan `%s'%s: %ld bajtova na %ld (%ld).\n"
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() nije uspio sa stanjem = %d"
 
-#: arscan.c:851
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "ne mogu otvoriti biblioteku „%s” za traženje elementa „%s”"
+
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "član „%s”%s: %ld bajtova na %ld (%ld).\n"
+
+#: arscan.c:848
 msgid " (name might be truncated)"
-msgstr " (ime je mo¾da odrezano)"
+msgstr " (ime je možda odsječeno)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, 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, mod = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Prekid.\n"
 
-#: 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:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Element arhive „%s” je možda lažan; nije izbrisan"
 
-#: 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:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Element arhive „%s” je možda lažan; nije izbrisan"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Bri¹em spis `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Brišem datoteku „%s”"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Bri¹em spis `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** Brišem datoteku „%s”"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  naredbe za izvr¹avanje"
+msgstr "#  recept za izvršavanje"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
-msgstr " (ugraðeno):"
+msgstr " (ugrađeno):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (iz `%s', redak %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (iz „%s”, redak %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -123,359 +132,417 @@ msgstr ""
 "\n"
 "# Direktoriji\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: ne mo¾e se statati.\n"
+msgstr "# %s: ne može se izvršiti stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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"
+msgstr "# %s (tipka %s, vrijeme uređivanja %d): ne može se otvoriti.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (uređaj %d, indeksni čvor [%d,%d,%d]): ne može se otvoriti.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, 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"
+msgstr "# %s (uređaj %ld, indeksni čvor %ld): ne može se otvoriti.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (tipka %s, mtime %d): "
+msgstr "# %s (tipka %s, vrijeme uređivanja %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (uređaj %d, indeksni čvor [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (device %ld, inode %ld): "
+msgstr "# %s (uređaj %ld, indeksni čvor %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
-msgstr "Nijedan"
+msgstr "Nijedna"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
-msgstr " spis, "
+msgstr " datoteka, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "nijedna"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " nemoguænost"
+msgstr " nemogućnost"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
-msgstr " do sad."
+msgstr " do sada."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " nemoguænosti u %lu direktorija.\n"
+msgstr " nemogućnosti u %lu direktorija.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Rekurzivna varijabla `%s' pokazuje (na kraju) na sebe"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Rekurzivna varijabla „%s” pokazuje (na kraju) na sebe"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "nedovr¹ena referenca na varijablu"
+msgstr "nedovršena referenca na varijablu"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr "Naredbe su naznaèene za spis `%s' na %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Naveden je recept za datoteku „%s” na %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, 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: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'."
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Recept za datoteku „%s” nađen je implicitnim pretraživanjem propisa,"
 
-#: file.c:278
+#: file.c:277
 #, 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'."
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "ali se „%s” sada smatra istom datotekom kao i „%s”."
 
-#: 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:280
+#, fuzzy, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Recept za „%s” će se zanemariti u korist onog za „%s”."
 
-#: 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:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "ne mogu preimenovati „%s” s jednim dvotočjem u „%s” s dva dvotočja"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Bri¹em posredni spis `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "ne mogu preimenovati „%s” s dva dvotočja u „%s” s jednim dvotočjem"
 
 #: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Brišem posrednu datoteku „%s”"
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "Bri¹em posredne spise...\n"
+msgstr "Uklanjam posredne datoteke...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Vremenska oznaka van granica; zamjenjujem s %s"
+msgstr "%s: Vremenska oznaka izvan granica; zamjenjujem s %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Trenutno vrijeme"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Nije meta:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  Vrijedan spis (prerekvizit mete .PRECIOUS)."
+msgstr "#  Vrijedna datoteka (preduvjet mete .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  La¾na meta (prerekvizit mete .PHONY)."
+msgstr "#  Lažna meta (preduvjet mete .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Meta na komandnoj liniji."
+msgstr "#  Meta naredbenog retka."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Podrazumijevani ili MAKEFILES makefile."
+msgstr "#  Zadana, MAKEFILES ili -include/sinclude datoteka izrade."
+
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Nema implicitnih propisa."
 
-#: file.c:937
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#   Implicitna pretraga propisa je izvr¹ena."
+msgstr "#   Implicitna pretraga propisa je izvršena."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Implicitna pretraga propisa nije izvr¹ena."
+msgstr "#  Implicitna pretraga propisa nije izvršena."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Korijen implicitnog/statièkog uzorka: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Korijen implicitnog/statičkog uzorka: „%s”\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  Spis je posredni prerekvizit."
+msgstr "#  Datoteka je posredni preduvjet."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Takoðer proizvodi:"
+msgstr "#  Također napravi:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Vrijeme promjene nikada nije provjereno."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
-msgstr "#  Spis ne postoji."
+msgstr "#  Datoteka ne postoji."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
-msgstr "#  Spis je vrlo star."
+msgstr "#  Datoteka je vrlo stara."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Zadnja promjena %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
-msgstr "#  Spis je a¾uriran."
+msgstr "#  Datoteka je ažurirana."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
-msgstr "#  Spis nije a¾uriran."
+msgstr "#  Datoteka nije ažurirana."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Naredbe koje se trenutno izvr¹avaju (OVO JE BUG)."
+msgstr "#  Recept koji se trenutno izvršava (OVO JE BUG)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Ovisnosti izmeðu naredbi koje se izvr¹avaju (OVO JE BUG)."
+msgstr "#  Recept ovisnosti koji se izvršava (OVO JE BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "#  Uspje¹no a¾uriran."
+msgstr "#  UspjeÅ¡no ažuriran."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Treba ga a¾urirati (-q je postavljen)."
+msgstr "#  Treba ga ažurirati (-q je postavljen)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
-msgstr "#  Nije ga se a¾uriralo."
-
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Neispravna vrijednost u elementu `update_status'!"
+msgstr "#  Nije ažuriran."
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Neispravna vrijednost u elementu `command_state'!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Neispravna vrijednost u elementu „command_state”!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 "\n"
-"# Spisi"
+"# Datoteke"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statistike hash tablice spisa\n"
+"# statistike tablice raspršivanja datoteka:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "prvi argument funkcije `word' nije broj"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
+msgstr "prvi argument funkcije „word” nije broj"
 
-#: 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:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "prvi argument funkcije „word” mora biti veći od 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "drugi argument funkcije `wordllist' nije broj"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "drugi argument funkcije „wordlist” nije broj"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "drugi arument funkcije `wordlist' nije broj"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "drugi argument funkcije „wordlist” nije broj"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) je zakazao (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) nije uspio (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Err) je zakazao (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): DuplicateHandle(Err) nije uspio (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() je zakazao (e=%d)\n"
+msgstr "CreatePipe() nije uspio (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() je zakazao\n"
+msgstr "windows32_openpipe(): process_init_fd() nije uspio\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "Èistim privremeni batch spis %s.\n"
+msgstr "Čistim privremenu skupnu datoteku %s.\n"
 
-#: function.c:2150
+#: function.c:2151
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Nedovoljan broj argumenata (%d) funkciji `%s'"
+msgid "open: %s: %s"
+msgstr "%s: %s"
 
-#: function.c:2162
+#: function.c:2158
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "Neimplementirano na ovoj platformi: funkcija `%s'"
+msgid "write: %s: %s"
+msgstr "greška pisanja: %s"
 
-#: function.c:2212
+#: function.c:2164
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "nedovr¹en poziv funkciji `%s': nedostaje `%c'"
+msgid "Invalid file operation: %s"
+msgstr ""
 
-#: getopt.c:661
-#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: opcija `%s' je vi¹eznaèna\n"
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "nedovoljan broj argumenata (%d) funkciji „%s”"
 
-#: getopt.c:685
-#, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: uz opciju `--%s' ne ide argument\n"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "neimplementirano na ovoj platformi: funkcija „%s”"
 
-#: 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"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "nedovršen poziv funkciji „%s”: nedostaje „%c”"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: opcija `%s' zahtijeva argument\n"
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
 
-#: getopt.c:736
+#: function.c:2548
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: nepoznata opcija `--%s'\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:740
+#: function.c:2550
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: nepoznata opcija `%c%s'\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "nedovoljan broj argumenata (%d) funkciji „%s”"
 
-#: getopt.c:766
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "nedovoljan broj argumenata (%d) funkciji „%s”"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: opcija „%s” je višeznačna\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: opcija „--%s” ne dozvoljava argument\n"
+
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: opcija „%c%s” ne dozvoljava argument\n"
+
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: opcija „%s” zahtijeva argument\n"
+
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: neprepoznata opcija „--%s”\n"
+
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: neprepoznata opcija „%c%s”\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: nedopu¹tena opcija -- %c\n"
+msgstr "%s: nedozvoljena opcija -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: neispravna opcija -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: opcija tra¾i argument -- %c\n"
+msgstr "%s: opcija zahtijeva argument -- %c\n"
+
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: opcija „-W %s” je višeznačna\n"
+
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: opcija „-W %s” ne dozvoljava argument\n"
 
-#: getopt.c:846
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: opcija `-W %s' je vi¹eznaèna\n"
+msgid "guile: Expanding '%s'\n"
+msgstr ""
 
-#: getopt.c:864
+#: guile.c:71
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: opcija `-W %s' ne dopu¹ta argument\n"
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
 
 #: hash.c:49
-#, fuzzy, c-format
+#, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "ne mogu alocirati %ld bajtova za hash tablicu; memorija iscrpljena"
+msgstr ""
+"ne mogu alocirati %lu bajtova za tablicu raspršivanja: memorija iscrpljena"
 
 #: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Optereæenje=%ld/%ld=%.0f%%, "
+msgstr "Opterećenje=%ld/%ld=%.0f%%, "
 
 #: hash.c:282
 #, c-format
@@ -485,445 +552,557 @@ msgstr "Preraspodjela=%d, "
 #: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Kolizije=%ld/%ld=%.0f%%"
+msgstr "Sudari=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Tra¾im implicitni propis za `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Tražim implicitni propis za „%s”.\n"
 
-#: 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:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Izbjegavam rekurziju implicitnog propisa.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Poku¹avam propis uzorka s korijenom `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Odbacujem nemoguæe pravilo prerekvizita `%s'.\n"
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Pokušavam propis uzorka s korijenom „%.*s”.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Odbacujem nemoguæ prerekvizit `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Odbacujem nemoguće pravilo preduvjeta „%s”.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Poku¹avam s propisom prerekvizita `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Odbacujem nemoguć implicitni preduvjet „%s”.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Poku¹avam s implicitnim prerekvizitom `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Pokušavam s propisom preduvjeta „%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:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Pokušavam s implicitnim preduvjetom „%s”.\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Tra¾im propis s posrednim spisom `%s'.\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Našao preduvjet „%s” kao VPATH „%s”\n"
 
-#: job.c:335
-#, fuzzy
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Tražim propis s posrednom datotekom „%s”.\n"
+
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite(privremeni spis)"
+msgstr "Ne mogu napraviti privremenu datoteku\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Gre¹ka 0x%x (ignorirana)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (jezgra izbačena)"
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Gre¹ka 0x%x"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
+msgstr "[%s] Greška %d (zanemarena)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Gre¹ka %d (ignorirana)"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (ugrađeno):"
 
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Gre¹ka %d"
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "upozorenje: poništavam recept za metu „%s”"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (izbaèen core)"
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Greška 0x%x"
 
-#: job.c:549
-msgid "*** Waiting for unfinished jobs...."
-msgstr "*** èekam na nedovr¹ene poslove...."
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
+msgstr "*** [%s] Greška %d"
 
-#: job.c:579
+#: job.c:517
 #, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
+
+#: job.c:609
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Čekam nedovršene poslove...."
+
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "®ivo dijete 0x%08lx (%s) PID %ld %s\n"
+msgstr "Živo dijete %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (udaljen)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "®anjem proma¹eno dijete 0x%08lx PID %ld %s\n"
+msgstr "Skupljam neuspješno dijete %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "®anjem uspje¹no dijete 0x%08lx PID %ld %s\n"
+msgstr "Skupljam uspješno dijete %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "Èistim privremeni batch spis %s\n"
+msgstr "Čistim privremenu skupnu datoteku %s\n"
 
-#: job.c:861
+#: job.c:843
 #, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Čistim privremenu skupnu datoteku %s\n"
+
+#: job.c:949
+#, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Uklanjam dijete 0x%08lx PID %ld%s iz lanca.\n"
+msgstr "Uklanjam dijete %p PID %s%s iz lanca.\n"
 
-# ©to bi ovdje trebalo iæi?
-#: job.c:920
-msgid "write jobserver"
-msgstr "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Otpustio token za dijete 0x%08lx (%s).\n"
+msgstr "Ispušten simbol za dijete %p (%s).\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+# Što bi ovdje trebalo ići?
+#: job.c:1023
+msgid "write jobserver"
+msgstr "poslužitelj poslova pisanja"
+
+#: job.c:1612 job.c:2332
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() nije uspio pokrenuti proces (e=%d)\n"
+msgstr "process_easy() nije uspio pokrenuti proces (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Prebrojao %d argumenata u neuspjelom pokretanju\n"
+"Izbrojeno %d argumenata u neuspjelom pokretanju\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Smještam dijete %p (%s) PID %s%s u lanac.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Preuzeo token za dijete 0x%08lx (%s).\n"
+msgstr "Preuzet simbol za dijete %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "read jobs pipe"
+msgstr "cjevovod poslova čitanja"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Arhiva „%s” ne postoji"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Nema potrebe ponovo izraditi metu `%s'"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%sNema propisa za izradu mete „%s”, koji traži „%s”%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
-"ne mogu silom primijeniti ogranièenje loada na ovom operativnom sustavu"
+"ne mogu silom primijeniti ograničenje opterećenja na ovom operacijskom "
+"sustavu"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "ne mogu silom primijeniti ogranièenje loada: "
+msgstr "ne mogu silom primijeniti ograničenje opterećenja: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
+"nema više upravljača datotekama: ne mogu udvostručiti standardni ulaz\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
+"nema više upravljača datotekama: ne mogu udvostručiti standardni izlaz\n"
 
-#: job.c:2015
-msgid "Could not restore stdin\n"
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
 msgstr ""
+"nema više upravljača datotekama: ne mogu udvostručiti standardni ulaz\n"
+
+#: job.c:2238
+msgid "Could not restore stdin\n"
+msgstr "Ne mogu obnoviti standardni ulaz\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Ne mogu obnoviti standardni izlaz\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Ne mogu obnoviti standardni ulaz\n"
+
+#: job.c:2365
+#, c-format
 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"
+msgstr "make je skupio dijete pid %s, još uvijek čeka pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s: Naredba nije naðena"
+msgstr "%s: Naredba nije pronađena"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s: Ljuskin program nije naðen"
+msgstr "%s: Program ljuske nije pronađen"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: prostor okoline je možda iscrpljen"
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL se promijenio (prije `%s', sad `%s')"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL se promijenio (prije „%s”, sada „%s”)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "Stvaram privremeni batch spis %s\n"
+msgstr "Stvaram privremenu skupnu datoteku %s\n"
+
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Sadržaj skupne datoteke:%s\n"
+"\t%s\n"
 
-#: job.c:2963
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Sadržaj skupne datoteke:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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"
+msgstr ""
+"%s (redak %d) Neispravan kontekst ljuske (!unixy && !batch_mode_shell)\n"
+
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
 
-#: main.c:303
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opcije:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      Ignorira se zbog kompatibilnosti\n"
+msgstr "  -b, -m                      Zanemareno zbog kompatibilnosti.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr "  -B, --always-make           Bezuvjetno proizvedi sve mete.\n"
+msgstr "  -B, --always-make           Bezuvjetno izradi sve mete.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
-"  -C DIRECTORY, --directory=DIRECTORY\n"
-"                              Prijeði u DIREKTORIJ prije no ¹to i¹ta "
-"obavi¹.\n"
+"  -C DIREKTORIJ, --directory=DIREKTORIJ\n"
+"                              Prijeđi u DIREKTORIJ prije početka rada.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "  -d                          Ispi¹i puno podataka za debugiranje.\n"
+msgstr "  -d                          Ispiši puno podataka za debugiranje.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=FLAGOVI]             Ispi¹i razne vrste informacija za "
+"  --debug[=ZASTAVICE]         Ispiši razne vrste informacija za "
 "debugiranje.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Varijable iz okoline imaju veæu va¾nost od\n"
-"                              makefileova.\n"
+"                              Varijable okoline imaju veÄ\87u važnost od\n"
+"                              datoteka izrade.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"  --eval=NIZ                  Postupaj s NIZOM kao naredbom datoteke "
+"izrade.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
-"  -f SPIS, --file=SPIS, --makefile=SPIS\n"
-"                              Proèitaj SPIS kao makefile.\n"
+"  -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n"
+"                              Pročitaj DATOTEKU kao datoteku izrade.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr "  -h, --help                  Ispi¹i ovu poruku i izaði.\n"
+msgstr "  -h, --help                  Ispiši ovu poruku i izađi.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Zanemari gre¹ke od naredbi.\n"
+msgstr "  -i, --ignore-errors         Zanemari greške iz recepata.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I DIREKTORIJ, --include-dir=DIREKTORIJ\n"
-"                              Potra¾i u DIREKTORIJU ukljuèene makefileove.\n"
+"                              Traži u DIREKTORIJU uključene datoteke "
+"izrade.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          Dopusti N istovremenih poslova; bez argumenta\n"
-"                              ih dopusti beskonaèno.\n"
+"  -j [N], --jobs[=N]          Dozvoli N istovremenih poslova; bez argumenta\n"
+"                              ih dozvoli beskonačno.\n"
 
-#: main.c:332
+#: main.c:341
 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:334
+#: main.c:343
 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"
-"                              Ne pokreæi vi¹estruke poslove, osim ako pri\n"
-"                              optereæenju ispod N.\n"
+"                              Ne pokreći višestruke poslove, osim ako je\n"
+"                              opterećenje ispod N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Koristi posljednji mtime između simboličkih "
+"veza i mete.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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"
-"                              Nemoj zapravo pokrenuti nijednu naredbu;\n"
-"                              samo ih ispi¹i.\n"
+"                              Nemoj zapravo pokrenuti nijedan recept,\n"
+"                              samo ih ispiši.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
-"  -o SPIS, --old-file=SPIS, --assume-old=SPIS\n"
-"                              Smatraj da je SPIS vrlo star i nemoj ga\n"
+"  -o DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n"
+"                              Smatraj da je DATOTEKA vrlo stara i nemoj ju\n"
 "                              ponovo napraviti.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "  -p, --print-data-base       Ispi¹i makeovu internu bazu.\n"
+msgstr "  -p, --print-data-base       Ispiši „make” internu bazu podataka.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -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"
+"  -q, --question              Ne pokreći recepte; izlazno stanje označava\n"
+"                              je li sve ažurirano.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "  -r, --no-builtin-rules      Onemoguæi ugraðene implicitne propise.\n"
+msgstr "  -r, --no-builtin-rules      Onemogući ugrađene implicitne propise.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Onemoguæi ugraðene vrijednosti varijabli.\n"
+"  -R, --no-builtin-variables  Onemogući ugrađene vrijednosti varijabli.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       Ne ispisuj naredbe.\n"
+msgstr "  -s, --silent, --quiet       Ne ispisuj recepte.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              Iskljuèuje -k.\n"
+"                              Isključuje -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Dodirni mete umjesto da ih ponovo izraðuje¹.\n"
+"  -t, --touch                 Umjesto ponovne izrade dodirni izgrađene "
+"mete.\n"
+
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -d                          Ispiši puno podataka za debugiranje.\n"
 
-#: main.c:360
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "  -v, --version               Ispi¹i verziju makea i izaði.\n"
+msgstr "  -v, --version               Ispiši „make” broj inačice i izađi.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       Ispi¹i trenutni direktorij.\n"
+msgstr "  -w, --print-directory       Ispiši trenutni direktorij.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        Iskljuèi -w, èak i ako je implicitno "
-"ukljuèen.\n"
+"  --no-print-directory        Isključi -w, čak i ako je implicitno "
+"uključen.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
-"  -W SPIS, --what-if=SPIS, --new-file=SPIS, --assume-new=SPIS\n"
-"                              Smatraj SPIS beskonaèno novim.\n"
+"  -W DATOTEKA, --what-if=DATOTEKA, --new-file=DATOTEKA,\n"
+"  --assume-new=DATOTEKA\n"
+"                              Smatraj DATOTEKU beskonačno novom.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  Upozori kad se referencira nedefinirana "
-"varijabla.\n"
+"  --warn-undefined-variables  Upozori pri referenciranju nedefinirane "
+"varijable.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "prazan string nije valjan naziv spisa"
+msgstr "prazan niz nije ispravan naziv datoteke"
+
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "nepoznata oznaka razine debugiranja „%s”"
 
-#: main.c:650
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "nepoznata naznaka nivoa debuga `%s'"
+msgid "unknown output-sync type '%s'"
+msgstr ""
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "interna greška: višestruko pojavljivanje opcije --jobserver-fds"
+
+#: main.c:848
+#, c-format
 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"
+msgstr "%s: Uhvaćen prekid/iznimka (kod = 0x%lx, adr = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -932,214 +1111,234 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Filter neobraðene iznimke pozvan iz programa %s\n"
-"ExceptionCode = %x\n"
-"ExceptionFlags = %x\n"
-"ExceptionAddress = %x\n"
+"Filtar nekontrolirane iznimke pozvan iz programa %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Pristupni prekr¹aj: operacija pisanja na adresi %x\n"
+msgstr "Pristupni prekršaj: operacija pisanja na adresi 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Pristupni prekr¹aj: operacija èitanja na adresi %x\n"
+msgstr "Pristupni prekršaj: operacija čitanja na adresi 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell postavljam default_shell = %s\n"
+msgstr "find_and_set_shell() postavlja default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "find_and_set_shell() pretraga putanje postavlja default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s se zaustavlja na 30 sekundi..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "gotov sa sleep(30).  Nastavljam.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile sa standardnog ulaza naveden dvaput."
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "interna greška: višestruko pojavljivanje opcije --jobserver-fds"
 
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (privremeni spis)"
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
 
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite(privremeni spis)"
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Klijent poslužitelja poslova (fds %d,%d)\n"
 
-#: 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:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "interna greška: neispravan --jobserver-fds niz „%s”"
 
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Resetiram na mod jednog posla (-j1)."
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Klijent poslužitelja poslova (fds %d,%d)\n"
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr "interna gre¹ja: vi¹estruko pojavljivanje opcije --jobserver-fds"
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr ""
+"upozorenje: pod-make prisilno postavlja -jN: onemogućujem poslužitelj "
+"poslova."
 
-#: main.c:1727
-#, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "interna gre¹ka: neispravan --jobserver-fds string `%s'"
+# Treba li ovo prevesti?
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "dup poslužitelj poslova"
 
-#: main.c:1730
-#, c-format
-msgid "Jobserver client (fds %d,%d)\n"
+#: main.c:1586
+#, fuzzy
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
+"upozorenje: poslužitelj poslova nedostupan: koristim -j1.  Dodaj `+' na "
+"roditeljev propis izrade."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Datoteka izrade sa standardnog ulaza navedena dvaput."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (privremena datoteka)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (privremena datoteka)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi."
 
-#: main.c:1740
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "upozorenje: -jN se forsira u pod-makeu: onemoguæujem jobserver mod."
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Vraćam način rada s jednim poslom (-j1)."
 
-# Treba li ovo prevesti?
-#: main.c:1750
-msgid "dup jobserver"
-msgstr "dup jobserver"
+#: main.c:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Klijent poslužitelja poslova (fds %d,%d)\n"
 
-#: main.c:1753
-msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 msgstr ""
-"upozorenje: jobserver nedostupan: koristim -j1.  Dodaj `+' na roditeljev "
-"make propis."
 
-#: main.c:1777
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "kreiram pipe za posao"
+msgstr "stvaram cjevovod poslova"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "prevesti?"
+msgstr "inicijaliziraj cjevovod poslužitelja poslova"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Simboličke veze nisu podržane: onemogućujem -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
-msgstr "A¾uriram makefileove....\n"
+msgstr "Ažuriram datoteke izrade....\n"
 
-#: 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:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Datoteka izrade „%s” bi mogla ući u petlju; ne izgrađujem ponovo.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Nisam uspio ponovo izgraditi makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Nisam uspio ponovo izgraditi datoteku izrade „%s”."
 
-#: 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:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Uključeni datoteka izrade „%s” nije pronađena."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Makefile `%s' ne mo¾e se naæi"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
+msgstr "Datoteka izrade „%s” nije pronađena"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "Nisam se mogao vratiti u prvotni direktorij."
+msgstr "Ne mogu se vratiti u izvorni direktorij."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Ponovo izvr¹avam:"
+msgstr "Ponovo izvršavam[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
-msgstr "unlink (privremeni spis): "
+msgstr "unlink (privremena datoteka): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL sadrži više od jedne mete"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "Nijedna meta nije navedena, niti je ijedan makefile pronaðen"
+msgstr "Nijedna meta nije navedena, niti je pronađena ijedna datoteka izrade"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Nema meta"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "A¾uriram ciljne mete....\n"
+msgstr "Ažuriram ciljne mete....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"upozorenje: uoèena je nepravilnost sata.  Izgradnja bi mogla biti nedovr¹ena."
+"upozorenje: Uočena je nepravilnost sata.  Izgradnja bi mogla biti nedovršena."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uporaba: %s [opcije] [meta] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Program sastavljen za %s\n"
+"Program izgrađen za %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Program sastavljen za %s (%s)\n"
+"Program izgrađen za %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Uoèene gre¹ke prijavite na adresu <bug-make@gnu.org>.\n"
+msgstr "Prijavite greške na <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "opcija `-%c' tra¾i pozitivan cjelobrojni argument"
-
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "opcija `-%c' tra¾i pozitivan cjelobrojni argument"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "opcija „%s%s” zahtijeva neprazan znakovni niz kao argument"
 
-#: main.c:3054
+#: main.c:2864
 #, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "opcija „-%c” zahtijeva pozitivan cjelobrojni argument"
+
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"Program sastavljen za %s\n"
+msgstr "%sIzgrađen za %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"Program sastavljen za %s (%s)\n"
+msgstr "%sIzgrađen za %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1147,482 +1346,501 @@ msgid ""
 "%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 ""
+"%sLicenca GPLv3+: GNU GPL inačica 3 ili kasnija <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sOvo je slobodan softver: slobodno ga smijete mijenjati i dijeliti.\n"
+"%sNEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# Makeova baza, ispisana na %s"
+"# Make baza podataka, ispisana na %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Kraj Makeove baze na %s\n"
+"# Kraj Make baze podataka na %s\n"
 
-#: main.c:3237
-#, fuzzy, c-format
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Nepoznata greška %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "virtualna memorija iscrpljena"
+
+# Da prevedem ovo?
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: korisnik %lu (stvarno %lu), grupa %lu (stvarno %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Inicijaliziran pristup"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Korisnički pristup"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make pristup"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Pristup djeteta"
+
+#: output.c:128
+#, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Ulazim u nepoznat direktorij"
+msgstr "%s: Ulazim u nepoznat direktorij\n"
 
-#: main.c:3239
-#, fuzzy, c-format
+#: output.c:130
+#, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Izlazim iz nepoznatog direktorija"
+msgstr "%s: Izlazim iz nepoznatog direktorija\n"
 
-#: main.c:3242
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Ulazim u direktorij „%s”\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Izlazim iz direktorija „%s”\n"
+
+#: output.c:139
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Ulazim u direktorij `%s'\n"
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Ulazim u nepoznat direktorij\n"
 
-#: main.c:3245
+#: output.c:141
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Izlazim iz direktorija `%s'\n"
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Izlazim iz nepoznatog direktorija\n"
 
-#: main.c:3250
+#: output.c:144
 #, fuzzy, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Ulazim u nepoznat direktorij"
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Ulazim u direktorij „%s”\n"
 
-#: main.c:3253
+#: output.c:146
 #, fuzzy, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Izlazim iz nepoznatog direktorija"
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Izlazim iz direktorija „%s”\n"
 
-#: main.c:3257
+#: output.c:515
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Ulazim u direktorij `%s'\n"
+msgid "write error: %s"
+msgstr "greška pisanja: %s"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Izlazim iz direktorija `%s'\n"
+# Što bi ovdje trebalo ići?
+#: output.c:517
+msgid "write error"
+msgstr "greška pisanja"
 
-#: misc.c:316
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Zaustavi.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nepoznata gre¹ka %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "prividna memorija potro¹ena"
-
-# Da prevedem ovo?
-#: 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 "Inicijaliziran pristup"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Korisnièki pristup"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Makeov pristup"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Pristup djeteta"
-
-#: 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:956
-#, fuzzy
-msgid "write error"
-msgstr "write jobserver"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "Èitam makefileove...\n"
+msgstr "Čitam datoteke izrade...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
-msgstr "Èitam makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
+msgstr "Čitam datoteku izrade „%s”"
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (nema podrazumijevanog cilja)"
+msgstr " (nema zadane mete)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (staza za pretra¾ivanje)"
+msgstr " (putanja pretraživanja)"
 
 #: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (nije va¾no)"
+msgstr " (nije važno)"
 
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (bez ekspanzije ~)"
+msgstr " (bez proširenja ~)"
+
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
 
-#: read.c:759
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "neispravna sintaksa uvjeta"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "naredbe poèinju prije prve mete"
+msgstr "recept počinje prije prve mete"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "nedostaje propis prije naredbi"
+msgstr "nedostaje propis prije recepta"
 
-# Grr, ¾ivjela engleska mno¾ina!  I ¹to sad da radim s onim %s-om?
-#: read.c:1027
+# Grr, živjela engleska množina!  I što sad da radim s onim %s-om?
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "nedostaju separatori-%s"
+msgstr "nedostaju znakovi razdvajanja (%s)"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (jeste li mislili na TAB umjesto 8 razmaka?)"
+msgstr " (jeste li htjeli TAB umjesto 8 razmaka?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "nedostaje uzorak mete"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "vi¹estruki uzorci meta"
+msgstr "višestruki uzorci meta"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
-msgstr "uzorak mete ne sadr¾i `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
+msgstr "uzorak mete ne sadrži „%%”"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "nedostaje `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
+msgstr "nedostaje „endif”"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "prazno ime varijable"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "Suvi¹an tekst nakon direktive `endef'"
-
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "nedostaje `endef', nedovr¹en `define'"
+msgid "extraneous text after 'define' directive"
+msgstr "suvišan tekst nakon direktive „define”"
 
-#: read.c:1420
+#: read.c:1490
 #, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Suvi¹an tekst nakon direktive `endef'"
+msgid "missing 'endef', unterminated 'define'"
+msgstr "nedostaje „endef”, nedovršen „define”"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Suvi¹an tekst nakon direktive `%s'"
+#: read.c:1518
+#, fuzzy
+msgid "extraneous text after 'endef' directive"
+msgstr "suvišan tekst nakon direktive „endef”"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
-msgstr "suvi¹an `%s'"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "suvišan tekst nakon direktive „%s”"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "samo jedan `else' po uvjetu"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
+msgstr "suvišan „%s”"
 
-#: read.c:1797
+#: read.c:1617
 #, fuzzy
+msgid "only one 'else' per conditional"
+msgstr "samo jedan „else” po uvjetu"
+
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Izoblièena definicija o meti ovisne varijable"
+msgstr "Izobličena definicija o meti ovisne varijable"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr ""
+msgstr "preduvjeti ne mogu biti definirani u receptima"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "pomije¹ani implicitni i statièki propisi uzorka"
+msgstr "pomiješani implicitni i statički propisi uzoraka"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
-msgstr "pomije¹ani implicitni i normalni propisi"
+msgstr "pomiješani implicitni i normalni propisi"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "meta `%s' ne odgovara uzorku mete"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "meta „%s” ne odgovara uzorku mete"
 
-#: 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:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "datoteka mete „%s” ima unose i kod : i kod ::"
 
-#: 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:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "meta „%s” je navedena više nego jednom u istom propisu."
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "upozorenje: poni¹tavam postojeæe naredbe za metu `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "upozorenje: poništavam recept za metu „%s”"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "upozorenje: ignoriram stare naredbe za metu `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "upozorenje: zanemarujem stari recept za metu „%s”"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "upozorenje: NUL znak uoèen; ostatak retka se zanemaruje"
+msgstr "upozorenje: uočen je NUL znak; ostatak retka se zanemaruje"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Ni¹ta za napraviti za `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Ništa za napraviti za „%s”."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
-msgstr "`%s' je a¾uriran."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
+msgstr "â\80\9e%sâ\80\9d je ažuriran."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Èistim spis `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Čistim datoteku „%s”.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sNema propisa za izradu mete `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sNema propisa za izradu mete „%s”%s"
 
-#: 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:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sNema propisa za izradu mete „%s”, koji traži „%s”%s"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Uzimam u razmatranje spis metu `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Razmatram datoteku mete „%s”.\n"
 
 #: 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"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Nedavno bezuspješno pokušao ažurirati datoteku „%s”.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Spis `%s' veæ je bio uzet u razmatranje.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Datoteka „%s” je već razmatrana.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Jo¹ uvijek a¾uriram spis `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Još uvijek ažuriram datoteku „%s”.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Zavr¹io s a¾uriranjem spisa `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Završio s ažuriranjem datoteke „%s”.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Spis `%s' ne postoji.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "Datoteka „%s” ne postoji.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** Upozorenje: .LOW_RESOLUTION_TIME spis `%s' ima vremensku oznaku visoke "
-"rezolucije"
+"*** Upozorenje: .LOW_RESOLUTION_TIME datoteka „%s” ima vremensku oznaku "
+"visoke rezolucije"
 
-#: 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:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Pronađen implicitni propis za „%s”.\n"
 
-#: 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:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Nisam našao nijedan implicitni propis za „%s”.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Koristim podrazumijevane naredbe za `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "Koristim zadani recept za „%s”.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Kru¾na ovisnost %s <- %s ispu¹tena."
+msgstr "Kružna ovisnost %s <- %s ispuštena."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Zavr¹eni prerekviziti spisa mete `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Završeni preduvjeti datoteke mete „%s”.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Prerekviziti `%s' su u izradi.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Preduvjeti „%s” se izrađuju.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Odustajem od spisa mete `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Odustajem od datoteke mete „%s”.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "Meta `%s' nije ponovo izraðen zbog gre¹aka."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Meta „%s” nije ponovo izrađena zbog grešaka."
 
 # Nisam siguran da sam ovo ispravno shvatio.
-#: 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:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Preduvjet „%s” služi samo za redoslijed za metu „%s”.\n"
 
-#: 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:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Preduvjet „%s” mete „%s” ne postoji.\n"
 
-#: 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:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Preduvjet „%s” noviji je od mete „%s”.\n"
 
-#: 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:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Preduvjet „%s” stariji je od mete „%s”.\n"
 
-#: 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:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Meta „%s” je dvotočje, a nema preduvjete.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, 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"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Nema recepta za „%s”, a nijedan preduvjet nije promijenjen.\n"
 
-#: remake.c:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Proizvodim `%s' zbog opcije always-make.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Izrađujem „%s” zbog zastavice always-make.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
-msgstr "Nema potrebe ponovo izraditi metu `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
+msgstr "Ponovna izrada mete „%s” nije potrebna"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; koristim VPATH imena `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; koristim VPATH ime „%s”"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Moram ponovo izgraditi metu `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Moram ponovo izraditi metu „%s”.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Ignoriram VPATH imena `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Zanemarujem VPATH ime „%s”.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "Naredbe od `%s' se izvr¹avaju.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Recept za „%s” se izvršava.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Nije uspjela ponovna izrada spisa mete `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Nisam uspio ponovo izraditi datoteku mete „%s”.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Uspje¹no ponovno izradio spis metu `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Uspješno ponovo izrađena datoteka mete „%s”.\n"
 
-#: 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:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Datoteku mete „%s” treba ponovo izraditi zbog -q.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Koristim podrazumijevane naredbe za `%s'.\n"
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Koristim zadane 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:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Upozorenje: Vrijeme uređivanja datoteke „%s” je u budućnosti"
 
-#: remake.c:1370
+#: remake.c:1385
 #, 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"
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr ""
+"Upozorenje: Vrijeme uređivanja datoteke „%s” je %s sekundi u budućnosti"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "Element .LIBPATTERNS `%s' nije uzorak"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Element „%s” iz .LIBPATTERNS nije uzorak"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "Customs neæe eksportirati: %s\n"
+msgstr "Customs neće izvesti: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Implicitni Propisi"
+"# Implicitni propisi"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1630,7 +1848,7 @@ msgstr ""
 "\n"
 "# Nema implicitnih propisa."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1639,246 +1857,270 @@ msgstr ""
 "\n"
 "# %u implicitnih propisa, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
-msgstr " zavr¹ni."
+msgstr " završni."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "BUG: pogre¹an num_pattern_rules!  %u != %u"
+msgstr "BUG: neispravan num_pattern_rules!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "nepoznat signal"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "Izgubljena veza"
+msgstr "Završetak"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Prekid"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
-msgstr "Prestanak"
+msgstr "Izlaz"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Nedopu¹tena instrukcija"
+msgstr "Nedozvoljena instrukcija"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Zamka za slijed/prekidnu toèku"
+msgstr "Zamka za praćenje/prekidnu točku"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
-msgstr "Otkazan"
+msgstr "Prekinut"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT zamka"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "EMT zamja"
+msgstr "EMT zamka"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Iznimka floating pointa"
+msgstr "Iznimka pomičnog zareza"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
-msgstr "Ubijen"
+msgstr "Prekinut"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
-msgstr "Sabirnièka gre¹ka"
+msgstr "Sabirnička greška"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
-msgstr "Segmentacijska gre¹ka"
+msgstr "Segmentacijska greška"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
-msgstr "Nevaljan sistemski poziv"
+msgstr "Neispravan sustavski poziv"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
-msgstr "Prekinut kanal"
+msgstr "Prekinut cjevovod"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Budilica"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
-msgstr "Terminiran"
+msgstr "Završen"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
-msgstr "Korisnièki definiran signal 1"
+msgstr "Korisnički definiran signal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
-msgstr "Korisnièki definiran signal 2"
+msgstr "Korisnički definiran signal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
-msgstr "Dijete iza¹lo"
+msgstr "Dijete je završilo"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Nestalo struje"
+msgstr "Prekid napajanja"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Zaustavljen"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Zaustavljen (unosom s TTY-ja)"
+msgstr "Zaustavljen (tty ulaz)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Zaustavljen (outputom s TTY-ja)"
+msgstr "Zaustavljen (tty izlaz)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Zaustavljen (signalom)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "prekoraèeno ogranièenje CPU vremena"
+msgstr "Prekoračeno ograničenje procesorskog vremena"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Prekoraèeno ogranièenje velièine spisa"
+msgstr "Prekoračeno ograničenje veličine datoteke"
 
 # Kako prevesti "virtual timer"?
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Virtualna ¹toperica istekla"
+msgstr "Virtualna štoperica istekla"
 
 # Kako prevesti "profiling timer"?
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Profajlerska ¹toperica istekla"
+msgstr "Štoperica profiliranja istekla"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Promijenjen prozor"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Nastavljen"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Hitno stanje I/O-a"
+msgstr "Hitno U/I stanje"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "I/O moguæ"
+msgstr "U/I 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:204
+# 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:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
-msgstr "Izgubljen resurs"
+msgstr "Resurs izgubljen"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Signal za opasnost"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Zahtjev za informacijom"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Aritmetièki koprocesor nije dostupan."
+msgstr "Koprocesor za rad s pomičnim zarezom nije dostupan"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
-#, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
+"%s strcache korišteno: ukupno = %d (%d) / max = %d / min = %d / prosjek = "
+"%d\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
-#, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
+"%s strcache korišteno: ukupno = %d (%d) / max = %d / min = %d / prosjek = "
+"%d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s strcache slobodno: ukupno = %d (%d) / max = %d / min = %d / prosjek = %d\n"
+
+#: strcache.c:287
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s # nizova u strcache: %d / pretrage = %lu / pronalasci = %lu\n"
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statistike hash tablice spisa\n"
+"# statistike tablice raspršivanja datoteka:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatsko"
+
+#: variable.c:1610
 msgid "default"
-msgstr "podrazumijevano"
+msgstr "zadano"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
-msgstr "okoli¹"
+msgstr "okolina"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
-msgstr "makefile"
+msgstr "datoteka izrade"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "okoli¹ pod -e"
+msgstr "okolina pod -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
-msgstr "komandna linija"
-
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "direktiva `override'"
+msgstr "naredbeni redak"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatsko"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
+msgstr "direktiva „override”"
 
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (iz `%s', redak %lu):"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (iz „%s”, redak %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# hash table statistike varijabli:\n"
+msgstr "# statistike tablice raspršivanja skupova varijabli:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1886,8 +2128,7 @@ msgstr ""
 "\n"
 "# Varijable\n"
 
-#: variable.c:1627
-#, fuzzy
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1895,7 +2136,7 @@ msgstr ""
 "\n"
 "# Uzorcima svojstvene vrijednosti varijabli"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1903,7 +2144,7 @@ msgstr ""
 "\n"
 "# Nema uzorcima svojstvenih vrijednosti varijabli."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1912,140 +2153,168 @@ msgstr ""
 "\n"
 "# %u uzorcima svojstvenih vrijednosti varijabli"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "upozorenje: nedefinirana varijabla `%.*s'"
-
-#: vmsfunctions.c:92
+#: variable.h:224
 #, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "upozorenje: nedefinirana varijabla „%.*s”"
+
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search je zatajila s %d\n"
+msgstr "sys$search() nije uspio s %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Upozorenje: Prazno preusmjeravanje\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
-msgstr "unutra¹nja gre¹ka: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
+msgstr "interna greška: „%s” command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+"-upozorenje, možda ćete morati ponovo omogućiti upravljanje s CTRL-Y iz DCL-"
+"a.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr "UGRAÐEN [%s][%s]\n"
+msgstr "UGRAĐEN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr "UGRAÐEN CD %s\n"
+msgstr "UGRAĐEN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr "UGRAÐEN RM %s\n"
+msgstr "UGRAĐEN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Nepoznata ugraðena naredba `%s'\n"
+msgstr "Nepoznata ugrađena naredba „%s”\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
-msgstr "Gre¹ka, prazna naredba\n"
+msgstr "Greška, prazna naredba\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Preusmjerio ulaz iz %s\n"
+msgstr "Preusmjeren ulaz iz %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "Preusmjerio gre¹ke u %s\n"
+msgstr "Preusmjerene greške u %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Preusmjerio izlaz u %s\n"
+msgstr "Dodaj izlaz na %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Preusmjerio izlaz u %s\n"
+msgstr "Preusmjeren izlaz u %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Dodaj %.*s i počisti\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "Umjesto toga, izvr¹avam %s\n"
+msgstr "Umjesto toga, izvršavam %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "Gre¹ka pri pokretanju, %d\n"
+msgstr "Greška pri pokretanju, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# VPATH staze za pretra¾ivanje\n"
+"# VPATH putanje za pretraživanje\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Nema `vpath' staza za pretra¾ivanje."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr "# Nema „vpath” putanja za pretraživanje."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u `vpath' staza za pretra¾ivanje.\n"
+"# %u â\80\9evpathâ\80\9d putanja za pretraživanje.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Nema opæe (iz varijable `VPATH') staze za pretra¾ivanje."
+"# Nema općenite putanje za pretraživanje (varijabla „VPATH”)."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Opæa (iz varijable `VPATH') staza za pretra¾ivanje:\n"
+"# Općenita putanja za pretraživanje (varijabla „VPATH”):\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Neispravna vrijednost u elementu „update_status”!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Greška 0x%x (zanemarena)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Pozivam recept iz %s:%lu za ažuriranje mete „%s”.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Pozivam ugrađeni recept za ažuriranje mete „%s”.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # strcache međuspremnika: %d (* %d B/međuspremniku = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# statistike strcache tablice raspršivanja:\n"
+#~ "# "
+
 #~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Gre¹ka u sintaksi, jo¹ uvijek unutar '\"'\n"
+#~ msgstr "Greška u sintaksi, još uvijek unutar '\"'\n"
 
-# Nepo¾etene ili nepo¾njete?
+# Nepožetene ili nepožnjete?
 #~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Dobio SIGCHLD; %u nepo¾etene djece.\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"
+#~ msgstr "-upozorenje, CTRL-Y Ä\87e 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."
@@ -2059,11 +2328,11 @@ msgstr ""
 #~ "%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"
+#~ "%sNema NIKAKVOG jamstva, čak ni za PROIZVODNOST ili UPOTREBLJIVOST ZA\n"
 #~ "%sPOJEDINU SVRHU.\n"
 
 #~ msgid "extraneous `endef'"
-#~ msgstr "suvi¹an `endef'"
+#~ msgstr "suvišan `endef'"
 
 #~ msgid "empty `override' directive"
 #~ msgstr "prazna direktiva `ovverride'"
@@ -2089,40 +2358,40 @@ msgstr ""
 #~ "# %u files in %u hash buckets.\n"
 #~ msgstr ""
 #~ "\n"
-#~ "# %u spisa u %u raspr¹enih d¾epova.\n"
+#~ "# %u spisa u %u rasprÅ¡enih džepova.\n"
 
 #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr "# prosjeèno %.3f spisa po d¾epu, maks. %u spisa u jednom d¾epu.\n"
+#~ msgstr "# prosjeÄ\8dno %.3f spisa po džepu, maks. %u spisa u jednom džepu.\n"
 
 #~ msgid "DIRECTORY"
 #~ msgstr "DIREKTORIJ"
 
 #~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "Promijeni u DIREKTORIJ prije nego ¹to i¹ta napravi¹"
+#~ msgstr "Promijeni u DIREKTORIJ prije nego što išta napraviš"
 
 #~ msgid "FLAGS"
 #~ msgstr "ZASTAVICE"
 
 #~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Zaustavi proces tako da se debugger mo¾e zakaèiti"
+#~ msgstr "Zaustavi proces tako da se debugger može zakačiti"
 
 #~ msgid "Environment variables override makefiles"
-#~ msgstr "Varijable iz okoli¹a imaju veæu va¾nost od makefilea"
+#~ msgstr "Varijable iz okoliÅ¡a imaju veÄ\87u važnost od makefilea"
 
 #~ msgid "FILE"
 #~ msgstr "SPIS"
 
 #~ msgid "Read FILE as a makefile"
-#~ msgstr "Proèitaj SPIS kao makefile"
+#~ msgstr "Pročitaj SPIS kao makefile"
 
 #~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "Pretra¾i DIREKTORIJ za ukljuèenim makefileovima"
+#~ msgstr "Pretraži DIREKTORIJ za uključenim makefileovima"
 
 #~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "Ne pokreæi vi¹estruke poslove osim ako je optereæenje ispod N"
+#~ msgstr "Ne pokreći višestruke poslove osim ako je opterećenje ispod N"
 
 #~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "Nemoj zapravo pokrenuti nijednu naredbu; samo ih ispi¹i"
+#~ msgstr "Nemoj zapravo pokrenuti nijednu naredbu; samo ih ispiši"
 
 #~ msgid "Consider FILE to be very old and don't remake it"
 #~ msgstr "Pretpostavi da je SPIS vrlo star i nemoj ga ponovo napraviti"
@@ -2131,10 +2400,10 @@ msgstr ""
 #~ msgstr "Ne ispisuj naredbe"
 
 #~ msgid "Turns off -k"
-#~ msgstr "Iskljuèuje -k"
+#~ msgstr "Isključuje -k"
 
 #~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Smatraj SPIS beskonaèno novim"
+#~ msgstr "Smatraj SPIS beskonačno novim"
 
 #~ msgid "Entering"
 #~ msgstr "Ulazim u"
@@ -2146,7 +2415,7 @@ msgstr ""
 #~ msgstr "# Nema varijabli."
 
 #~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# prosjeèno %.1f varijabli po d¾epu, maks. %u u jednom d¾epu.\n"
+#~ msgstr "# prosjeÄ\8dno %.1f varijabli po džepu, maks. %u u jednom džepu.\n"
 
 #~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr "# prosjeèno %d.%d varijabli po d¾epu, maks. %u u jednom d¾epu.\n"
+#~ msgstr "# prosjeÄ\8dno %d.%d varijabli po džepu, maks. %u u jednom džepu.\n"
index 5ef2ce3..d052d6c 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index 3ccb143..7adf238 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -7,116 +7,122 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU make 3.81\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "usaha untuk menggunakan layanan yang tidak didukung: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "touch anggota archive tidak tersedia di VMS"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: Archive `%s' tidak ada"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: `%s' bukan archive yang valid"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: Anggota `%s' tidak terdapat dalam `%s'"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr "touch: Kode kembali tidak baik dari ar_member_touch pada `%s'"
 
-#: arscan.c:69
+#: arscan.c:67
 #, 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:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control gagal dengan status = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "tidak dapat membuka perpustakaan `%s' untuk melihat anggota `%s'"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Anggota `%s'%s: %ld bytes pada %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (nama mungkin akan di potong)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr " Tanggal %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr " uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Berhenti.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] Anggota archive `%s' mungkin palsu: tidak dihapus"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** Anggota archive `%s' mungkin palsu; tidak dihapus"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Menghapus berkas `%s'"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Menghapus berkas `%s'"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  perintah untuk dijalankan"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (bawaan):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (dari `%s', baris %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,222 +130,226 @@ msgstr ""
 "\n"
 "# Direktori\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: tidak dapat melihat statistik.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (kunci %s, mtime %d): tidak dapat dibuka.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (perangkat %d, inode [%d,%d,%d]): tidak dapat dibuka.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (kunci %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (perangkat %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (perangkat %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Tidak"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " berkas, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "tidak"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " tidak mungkin"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " sejauh ini."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " tidak mungkin dalam direktori %lu.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Variabel rekursif `%s' menunjuk pada dirinya sendiri"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "referensi variabel tidak diselesaikan"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "Perintah di spesifikasikan untuk berkas `%s' di %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr "Perintah untuk berkas `%s' ditemukan dalam pencarian aturan implisit,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr ""
 "tetapi `%s' sekarang dipertimbangkan sebagai berkas yang sama dengan `%s'."
 
-#: file.c:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "tidak dapat mengubah nama dari kolon-tunggal `%s' ke kolon-ganda `%s'"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "tidak dapat mengubah nama kolon-ganda `%s' menjadi kolon-tunggal `%s'"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Menghapus berkas sementara `%s'"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Menghapus berkas sementara...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Waktu saat ini"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Bukan sebuah target:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Phony target (dibutuhkan oleh .PHONY)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Baris-perintah target."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Merupakan baku, MAKEFILES atau -include/sinclude makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Tidak ada aturan implisit."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Pencarian aturan implisit sudah selesai."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Pencarian aturan implisit belum selesai."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Pola implisit atau statis stem: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Berkas merupakan dibutuhkan untuk sementara."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Juga membuat:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Waktu ubah sudah diperiksa."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Berkas tidak ada."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Berkas sudah sangat tua."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Terakhir dimodifikasi %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Berkas sudah diperbarui."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Berkas belum diperbarui."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Sukses memperbarui."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Perlu untuk diupdate (-q diset)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Gagal untuk mengupdate."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Nilai yang salah dalam anggota `update_status' !"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Nilai yang salah dalam anggota `command_state' !"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -347,7 +357,7 @@ msgstr ""
 "\n"
 "# Berksa"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -357,117 +367,175 @@ msgstr ""
 "# berkas statistik hash-table:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "argumen pertama untuk fungsi `word' bukan numerik"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "argumen pertama untuk fungsi `word' harus lebih besar dari 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "argumen pertama untuk fungsi `wordlist' bukan numerik"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "argumen kedua dari fungsi `wordlist' bukan numerik"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(In) gagal (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) gagal (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() gagal (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() gagal\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Membersihkan berkas batch sementara %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "error menulis: %s"
+
+#: function.c:2164
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "Jumlah dari argumen (%d) untuk fungsi `%s' tidak mencukupi"
 
-#: function.c:2162
-#, c-format
-msgid "unimplemented on this platform: function `%s'"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
 msgstr "Tidak terimplementasi dalam platform ini: fungsi `%s'"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "fungsi `%s' tidak diselesaikan: hilang `%c'"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: opsi `%s' merupakan ambigu\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Jumlah dari argumen (%d) untuk fungsi `%s' tidak mencukupi"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Jumlah dari argumen (%d) untuk fungsi `%s' tidak mencukupi"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: opsi `%s' merupakan ambigu\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: opsi `--%s' tidak memperbolehkan argumen\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: opsi `%c%s' tidak memperbolehkan argumen\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: opsi `%s' membutuhkan sebuah argumen\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: opsi tidak dikenali `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: opsi tidak dikenali `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opsi tidak legal -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opsi tidak valid -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: opsi `-W %s' merupakan opsi ambigu\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: opsi `-W %s' tidak memperbolehkan sebuah argumen\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, fuzzy, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -489,131 +557,156 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Tabrakan=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Mencari aturan implisit untuk `%s'.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "Mencari aturan implisit untuk anggota-archive pada `%s'.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Menghindari aturan implisit rekursi.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Mencoba aturan pola dengan stem `%.*s'.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Menolak persyaratan aturan yang tidak mungkin `%s'.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Menolak persyaratan implisit yang tidak mungkin `%s'.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Mencoba persyaratan dari aturan `%s'.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Menemukan persyaratan `%s' sebagai VPATH `%s'\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Mencari aturan dengan berkas sementara `%s'.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Tidak dapat membuat berkas sementara\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Error 0x%x (diabaikan)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Error 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (core di-dump)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Error %d (diabaikan)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (bawaan):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Error 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Error %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core di-dump)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Menunggu pekerjaan yang belum selesai...."
 
-#: job.c:579
+#: job.c:639
 #, 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:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (remote)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Reaping anak hilang 0x%08lx PID %ld %s\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Reaping winning child 0x%08lx PID %ld %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Membersihkan berkas batch sementara %s\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Membersihkan berkas batch sementara %s\n"
+
+#: job.c:949
 #, fuzzy, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Menghilangkan proses anak 0x%08lx PID %ld%s dari rantai.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "menulis jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "Melepaskan token dari proses anak 0x%08lx (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "menulis jobserver"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -622,110 +715,166 @@ msgstr ""
 "\n"
 "Terhitung %d argumen gagal untuk dijalankan\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Memperoleh token untuk proses anak 0x%08lx (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read 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:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Archive `%s' tidak ada"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Tidak perlu membuat lagi target `%s'"
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%sTidak terdapat aturan untuk membuat target `%s', dibutuhkan oleh `%s'%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "tidak dapat memaksa mencapai batas beban: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Tidak dapat mengembalikan stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Tidak dapat mengembalikan stdout\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Tidak dapat mengembalikan stdin\n"
+
+#: job.c:2365
 #, fuzzy, c-format
 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:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Perintah tidak ada"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell program tidak ditemukan"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: mungkin kehabisan ruang environment"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL berubah (sebelumnya `%s', sekarang `%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Membuat berkas batch sementara %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Parallel jobs (-j) tidak didukung dalam platform ini."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opsi:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Diabaikan untuk kompatibilitas.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Membuat semua target secara tidak "
 "kondisional.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -733,17 +882,17 @@ msgstr ""
 "  -C DIRECTORI, --directory=DIREKTORI\n"
 "                              Pindah ke DIREKTORI sebelum melakukan apapun.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Menampilkan banyak informasi debug.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAGS]             Menampilkan berbagai tipe informasi debug.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -751,12 +900,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              Variabel lingkungan memaksa makefiles.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -764,18 +913,18 @@ msgstr ""
 "  -f BERKAS, --file=BERKAS, --makefile=BERKAS\n"
 "                              Baca BERKAS sebagai sebuah makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Tampilkan pesan ini dan keluar.\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 "  -i, --ignore-errors         Abaikan kesalahan dari perintah yang "
 "dijalankan.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -784,7 +933,7 @@ msgstr ""
 "                              Cari di DIREKTORI untuk makefile yang "
 "disertakan.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -792,13 +941,13 @@ msgstr ""
 "  -j [N], --jobs[=N]          Ijinkan N kerja secara bersamaan. Kerja tidak "
 "terhingga jika tidak diberikan argumen.\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Tetap jalan ketika target tidak dapat dibuat.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -808,7 +957,7 @@ msgstr ""
 "                              Jangan menjalankan multiple pekerjaan kecuali "
 "beban dibawah N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -816,7 +965,7 @@ msgstr ""
 "  -L, --check-symlink-times   Gunakan waktu mtime terbaru diantara symlinks "
 "dan target.\n"
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -827,7 +976,7 @@ msgstr ""
 "                               Jangan menjalankan perintah apapun; tampilkan "
 "saja apa yang akan dikerjakan.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -837,11 +986,17 @@ msgstr ""
 "                              Pertimbangkan BERKAS sudah sangat tua dan "
 "jangan membuatnya lagi.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Tampilkan basis data internal make.\n"
 
-#: main.c:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -850,22 +1005,22 @@ msgstr ""
 "  -q, --question              Tidak menjalankan perintah. Mengeluarkan "
 "status saja dan mengatakan up to date.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Aturan implisit bawaan tidak digunakan.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Non-aktifkan konfigurasi variabel bawaan.\n"
 
-#: main.c:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       Jangan menampilkan perintah.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -873,21 +1028,26 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Matikan opsi -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Sentuh target dari pada membuat kembali.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -d                          Menampilkan banyak informasi debug.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               Tampilkan versi dari make dan keluar.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Tampilkan directory saat ini.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -895,7 +1055,7 @@ msgstr ""
 "  --no-print-directory        Matikan opsi -w, walaupun opsi ini diaktifkan "
 "secara implisit.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -904,7 +1064,7 @@ msgstr ""
 "                              Pertimbangkan BERKAS sebagai sebuah berkas "
 "baru.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -912,21 +1072,31 @@ msgstr ""
 "  --warn-undefined-variables  Peringatkan akan adanya variabel yang tidak "
 "terdefinisi yang direferensikan.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "`string' kosong tidak valid sebagai nama file"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "spesifikasi tingkat debug tidak diketahui `%s'"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "internal error: opsi --jobserver-fds lebih dari satu"
+
+#: main.c:848
 #, fuzzy, c-format
 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:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -941,162 +1111,184 @@ msgstr ""
 "ExceptionFlags = %lx\n"
 "ExceptionAddress = %lx\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Akses dilanggar: operasi tulis pada alamat %lx\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Akses dilanggar: operasi baca pada alamat %lx\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s dihentikan selama 30 detik..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "selesai tidur(30). Melanjutkan.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile dari standard input dispesifikasikan dua kali."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (berkas sementara)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (berkas sementara)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Parallel jobs (-j) tidak didukung dalam platform ini."
-
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Mereset kembali ke mode satu job (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "internal error: opsi --jobserver-fds lebih dari satu"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "internal error: tidak valid --jobserver-fds string `%s'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup server pekerja"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
 "Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan `+' pada "
 "aturan make paling atas."
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile dari standard input dispesifikasikan dua kali."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (berkas sementara)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (berkas sementara)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Parallel jobs (-j) tidak didukung dalam platform ini."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Mereset kembali ke mode satu job (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "membuat pipa pekerjaan"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "inisiasi pipa server pekerja"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Memperbarui makefiles....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "Makefile `%s' mungkin berupa loop; tidak membuat lagi.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Gagal membuat lagi makefile `%s'."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Makefile yang dimasukan `%s' tidak ditemukan."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "Makefile `%s' tidak ditemukan"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Tidak dapat kembali ke direktori asal."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Menjalankan kembali[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (berkas sementara): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL berisi lebih dari satu target"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Tidak ada targets"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Memperbarui tujuan target....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna"
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Penggunaan: %s [opsi] [target] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1105,7 +1297,7 @@ msgstr ""
 "\n"
 "Program ini dibuat untuk %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1114,36 +1306,36 @@ msgstr ""
 "\n"
 "Program ini dibuat untuk %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Laporkan bugs kepada <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "opsi `-%c' membutuhkan sebuah argument string yang tidak kosong"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "opsi `-%c' membutuhkan sebuah argument `string' yang tidak kosong"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%sAplikasi ini dibuat untuk %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%sAplikasi ini dibuat untuk %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1152,7 +1344,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1161,7 +1353,7 @@ msgstr ""
 "\n"
 "# Membuat basis data, ditampilkan %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1170,106 +1362,106 @@ msgstr ""
 "\n"
 "# Selesai membuat basis data %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Kesalahan tidak diketahui %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "Kehabisan memori maya"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Akses terinisialisasi"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Akses pengguna"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Buat akses"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Akses anak"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Memasuki sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: Memasuki direktori `%s'\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: Meninggalkan direktori `%s'\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Memasuki sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: Memasuki direktori `%s'\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: Meninggalkan direktori `%s'\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "error menulis: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "error menulis"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ". Berhenti.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Kesalahan tidak diketahui %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "Kehabisan memori maya"
-
-#: misc.c:708
-#, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n"
-
-#: misc.c:729
-msgid "Initialized access"
-msgstr "Akses terinisialisasi"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Akses pengguna"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Buat akses"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Akses anak"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "error menulis: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "error menulis"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Membaca makefiles...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Membaca makefile `%s'"
 
 #: read.c:335
@@ -1292,329 +1484,347 @@ msgstr " (tidak peduli)"
 msgid " (no ~ expansion)"
 msgstr " (tidak terdapat ekspansi tilde ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "sintak salah dalam kondisional"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "perintah dijalankan sebelum target pertama"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "hilang aturan sebelum menjalankan perintah"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "pemisah %s hilang"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (apakah yang anda maksud TAB dari pada 8 buah spasi?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "pola target hilang"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "pola target banyak"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "pola target tidak memiliki `%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "hilang `endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "nama variabel kosong"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "Kelebihan text sesudah `endef' directive"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "hilang `endef', tidak diselesaikan `define'"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "Kelebihan text sesudah `endef' directive"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Kelebihan text sesudah `%s' directive"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "kelebihan `%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "hanya satu `else' dalam setiap kondisi"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Definisi variable target-specific memiliki format yang salah"
 
-#: read.c:1855
+#: read.c:1951
 #, fuzzy
 msgid "prerequisites cannot be defined in recipes"
 msgstr "persyaratan tidak dapat didefinisikan dalam script perintah"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "aturan pola implisit dan static tercampur"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "aturan implisit dan aturan normal tercampur"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "target `%s' tidak cocok dengan pola target"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "target berkas `%s' keduanya memiliki masukan : dan ::"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "target `%s' memberikan lebih dari sekali dalam aturan sama."
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "Peringatan: memaksa perintah untuk target `%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "Peringatan: menghiraukan perintah lama untuk target `%s'"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Tidak ada yang harus dilakukan untuk `%s'."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "`%s' sudah baru."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Pruning file `%s'.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sTidak terdapat aturan untuk membuat target `%s'%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Mempertimbangkan berkas target `%s'.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "Baru saja dicoba dan gagal untuk memperbarui berkas `%s'.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "Berkas `%s' baru saja dipertimbangkan.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Sedang memperbarui berkas `%s'.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "Selesai memperbarui berkas `%s'.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "Berkas `%s' tidak ada.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Ditemukan sebuah aturan implisit untuk `%s'.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Tidak terdapat aturan implisit untuk membuat `%s'.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Menggunakan perintah baku untuk `%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Ketergantungan %s <- %s melingkar dijatuhkan."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Selesai melakukan semua persyaratan untuk berkas target `%s'.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "Persyaratan untuk membuat `%s' sedang dibuat.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Menyerah untuk membuat target berkas `%s'.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Target `%s' tidak dibuat lagi karena ada errors."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "Persyaratan untuk `%s' adalah order-only untuk target `%s'.\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "Persyaratan untuk `%s' untuk target `%s' tidak ada.\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "Persyaratan untuk `%s' lebih baru dari pada target `%s'.\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "Persyaratan untuk `%s' lebih tua dari pada target `%s'.\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr "Target `%s' merupakan kolon-ganda dan tidak memiliki syarat.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr "Tidak ada perintah untuk `%s' dan persyaratan tidak berubah.\n"
 
-#: remake.c:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Membuat `%s' karena adanya tanda always-make.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Tidak perlu membuat lagi target `%s'"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; menggunakan nama VPATH `%s'"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Harus membuat lagi target `%s'.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr " Mengabaikan nama VPATH `%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "Perintah dari `%s' sedang dijalankan.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Gagal membuat lagi target berkas `%s'.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Sukses membuat kembali target berkas `%s'.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "Target berkas `%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "Peringatan: Berkas `%s' memiliki waktu modifikasi dimasa depan"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "Peringatan: Berkas `%s' memiliki waktu modifikasi %.2g s kedepan"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS elemen `%s' bukan merupakan sebuah pattern"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Custom tidak akan men-export: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1622,7 +1832,7 @@ msgstr ""
 "\n"
 "# Aturan implisit."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1630,7 +1840,7 @@ msgstr ""
 "\n"
 "# Tidak ada aturan implisit."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1639,244 +1849,259 @@ msgstr ""
 "\n"
 "# %u aturan implisit, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "BUG: num_pattern_rules salah! %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "sinyal tidak diketahui"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Hangup"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interupsi"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Berhenti"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Instruksi Tidak Legal"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Penangkap trace/breakpoint"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Dibatalkan"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Penangkap IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Penangkap EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Eksepsi titik pecahan"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Terbunuh"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Bus error"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Kesalahan segmentasi"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Panggilan sistem buruk"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Pipa rusak"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarm"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Dimatikan"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Sinyal definisi pengguna 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Sinyal definisi pengguna 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Proses anak berakhir"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Listrik bermasalah"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Dihentikkan"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Dihentikan (masukkan tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Dihentikan (keluaran tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Dihentikan (sinyal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Batas waktu CPU telah terlampaui"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Batas maksimal ukuran berkas terlampaui"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Pewaktu maya habis"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Pewaktu profiling habis"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Jendela berubah"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Dilanjutkan"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Kondisi I/O penting"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O mungkin"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Resource hilang"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Sinyal bahaya"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Permintaan informasi"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "co-processor titik pecahan tidak tersedia"
 
-#: strcache.c:235
+#: strcache.c:236
 #, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
-msgstr ""
-"\n"
-"%s # dari string dalam strcache: %d\n"
+"%s No strcache buffers\n"
+msgstr "%s # dari buffer strcache: %d\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, fuzzy, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-msgstr "%s # dari buffer strcache: %d\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr "%s strcache free: total = %d / mak = %d / min = %d / rata-rata = %d\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr "besar %s strcache: total = %d / mak = %d / min = %d / rata-rata = %d\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr "%s strcache free: total = %d / mak = %d / min = %d / rata-rata = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# berkas statistik hash-table:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "otomatis"
+
+#: variable.c:1610
 msgid "default"
 msgstr "baku"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "lingkungan"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "lingkungan dibawah opsi -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "baris perintah"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "`override' direktif"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "otomatis"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (dari `%s', baris %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# statistik variable set hash-table:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1884,7 +2109,7 @@ msgstr ""
 "\n"
 "# Variabel\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1892,7 +2117,7 @@ msgstr ""
 "\n"
 "# Nilai Variabel Pola-Spesifik"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1900,7 +2125,7 @@ msgstr ""
 "\n"
 "# Tidak terdapat nilai variabel pola-spesifik"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1909,93 +2134,93 @@ msgstr ""
 "\n"
 "# %u nilai variabel pola-spesifik"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "peringatan: variabel `%.*s' tidak terdefinisi"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search gagal dengan kode %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Peringatan: redirection kosong\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "kesalahan internal: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BAWAAN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BAWAAN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BAWAAN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Perintah bawaan '%s' tidak diketahui\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Error, perintah kosong\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Meneruskan masukan dari %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Meneruskan error ke %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Meneruskan output ke %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Meneruskan output ke %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Menjalankan perintah %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Gagal spawning, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2003,37 +2228,46 @@ msgstr ""
 "\n"
 "# VPATH Jalur Pencarian\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# Tidak ada `vpath' dalam jalur pencarian."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u `vpath' jalur pencarian.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Tidak ada (`VPATH' variabel) umum dalam jalur pencarian."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Jalur pencarian umum untuk variabel `VPATH':\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Nilai yang salah dalam anggota `update_status' !"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Error 0x%x (diabaikan)"
+
 #~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
 #~ msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n"
 
@@ -2056,6 +2290,13 @@ msgstr ""
 #~ msgid "invalid `override' directive"
 #~ msgstr "directive `override' tidak valid"
 
+#~ msgid ""
+#~ "\n"
+#~ "%s # of strings in strcache: %d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s # dari string dalam strcache: %d\n"
+
 #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
 #~ msgstr "-warning, CTRL-Y akan meninggalkan sub-process(es).\n"
 
index f232b0c..3430cc8 100644 (file)
Binary files a/po/it.gmo and b/po/it.gmo differ
index df0ce15..9e21bd4 100644 (file)
--- a/po/it.po
+++ b/po/it.po
-# Italian messages for GNU Make.
+# 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.
+# Francesco Groccia <frgroccia@gmail.com>, 2010-2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81\n"
+"Project-Id-Version: make 3.99.93\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 18:34+0200\n"
+"Last-Translator: Francesco Groccia <frgroccia@gmail.com>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "tentativo di usare una funzionalità non supportata: «%s»"
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "tentativo di usare una funzionalità non supportata: \"%s\""
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "impossibile modificare la data di un membro di un archivio su VMS"
+msgstr "touch del membro di archivio non disponibile su VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: l'archivio «%s» non esiste"
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: l'archivio \"%s\" non esiste"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch: «%s» non è un archivio valido"
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: \"%s\" non è un archivio valido"
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch: il membro «%s» non esiste in «%s»"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: il membro \"%s\" non esiste in \"%s\""
 
-#: ar.c:166
+#: ar.c:164
 #, 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»"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: codice di uscita errato da ar_member_touch su \"%s\""
 
-#: arscan.c:69
-#, fuzzy, c-format
+#: arscan.c:67
+#, 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"
+"lbr$set_module() non è riuscita a estrarre informazioni sul modulo, stato = "
+"%d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control fallito con lo stato = %d"
+msgstr "lbr$ini_control() non riuscita con lo stato = %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "impossibile aprire la libreria «%s» per cercare il membro «%s»"
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "impossibile aprire la libreria \"%s\" per cercare il membro \"%s\""
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membro «%s»%s: %ld byte a %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Membro \"%s\"%s: %ld byte a %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (il nome potrebbe essere troncato)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Il set di istruzioni ha troppe righe (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Interruzione.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr ""
-"*** [%s] L'archivio membro «%s» potrebbe essere inesistente; non eliminato"
+"*** [%s] Il membro di archivio \"%s\" potrebbe essere inesistente; non "
+"eliminato"
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** L'archivio membro «%s» potrebbe essere inesistente; non eliminarlo"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr ""
+"*** Il membro di archivio \"%s\" potrebbe essere inesistente; non eliminato"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Eliminazione del file «%s»"
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Eliminazione del file \"%s\""
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Eliminazione del file «%s»"
+msgid "*** Deleting file '%s'"
+msgstr "*** Eliminazione del file \"%s\""
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  comandi da eseguire"
+msgstr "#  set di istruzioni da eseguire"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (comando interno):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (da «%s», riga %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (da \"%s\", riga %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -126,227 +134,226 @@ msgstr ""
 "\n"
 "# Directory\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: impossibile eseguire stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (key %s, mtime %d): impossibile aprirlo.\n"
+msgstr "# %s (key %s, mtime %d) non può essere aperto.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (device %d, inode [%d,%d,%d]) non può essere aperto.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (device %ld, inode %ld): impossibile aprirlo.\n"
+msgstr "# %s (device %ld, inode %ld) non può essere aperto.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (key %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "No"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " file, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "no"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " impossibilità"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " finora."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilità nelle directory %lu.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "La variabile ricorsiva «%s» si autoreferenzia (finalmente)"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "La variabile ricorsiva \"%s\" si autoreferenzia (alla fine)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "riferimento della variabile non terminato"
+msgstr "riferimento alla 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:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "È stato specificato un set di istruzioni per il file \"%s\" a %s:%lu,"
 
-#: file.c:272
-#, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+#: file.c:274
+#, 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,"
+"È stato trovato un set di istruzioni per il file \"%s\" mediante una regola "
+"di ricerca implicita,"
 
-#: file.c:275
+#: file.c:277
 #, 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»."
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "ma ora \"%s\" viene considerato lo stesso file di \"%s\"."
 
-#: file.c:298
+#: file.c:280
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr ""
-"impossibile rinominare la regola \"single-colon\" «%s» con la regola \"double-"
-"colon\" «%s»"
+"Il set di istruzioni per \"%s\" verrà ignorato in favore di quello per \"%s"
+"\"."
 
-#: file.c:303
+#: file.c:300
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
-"impossibile rinominare la regola \"double-colon\" «%s» con la regola \"single-"
-"colon\" «%s»"
+"impossibile rinominare la regola \"due punti\" \"%s\" con la regola \"doppio "
+"due punti\" \"%s\""
 
-#: file.c:392
+#: file.c:305
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Eliminazione del file intermedio «%s»"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr ""
+"impossibile rinominare la regola \"doppio due punti\" \"%s\" con la regola "
+"\"due punti\" \"%s\""
 
 #: file.c:396
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Eliminazione del file intermedio \"%s\""
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Rimozione dei file intermedi...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Intervallo errato per la marcatura temporale; sostituzione di %s"
+msgstr "%s: intervallo errato per la marcatura temporale; sostituzione di %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Ora corrente"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Non è un obiettivo:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  File \"precious\" (prerequisito di .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Obiettivo \"phony\" (prerequisito di .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
 msgstr "#  Obiettivo a riga di comando."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Makefile predefiniti oppure un makefile -include/sinclude."
+msgstr "# Un makefile predefinito, da MAKEFILES, o da -include/sinclude."
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Regola incorporata"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  Regola di ricerca implicita completate."
+msgstr "#  Regola di ricerca implicita completata."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Regola di ricerca implicita non completate."
+msgstr "#  Regola di ricerca implicita non completata."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Radice del pattern implicita/statica: «%s»\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Stem implicito/statico del modello: \"%s\"\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Il file è un prerequisito intermedio."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Inoltre, genera:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Ora di modifica mai controllata."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Il file non esiste."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Il file è molto vecchio."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Ultima modifica %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Il file è stato aggiornato."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Il file non è stato aggiornato."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Comandi correntemente in esecuzione (QUESTO È UN BUG)."
+msgstr "#  Set di istruzioni attualmente in esecuzione (QUESTO È UN BUG)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Dipendenze dei comandi in esecuzione (QUESTO È UN BUG)."
+msgstr "#  Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Aggiornato con successo."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Richiede di essere aggiornato (-q è impostato)."
 
-#: file.c:987
+#: file.c:1014
 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:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Valore illecito nel membro \"command_state\"!"
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Valore non valido nel membro «command_state»"
-
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -354,136 +361,189 @@ msgstr ""
 "\n"
 "# File"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statistiche della tabella di hash dei file:\n"
+"# statistiche tabella hash dei file:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "primo argomento non numerico per la funzione word"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Campo \"%s\" non memorizzato: %s"
 
-#: 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:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "primo argomento non numerico per la funzione \"word\""
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "primo argomento non numerico per la funzione wordlist"
+#: function.c:747
+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:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "secondo argomento non numerico per la funzione wordlist"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "primo 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:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "secondo argomento non numerico per la funzione \"wordlist\""
 
-#: 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:1460
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) non riuscita (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1483
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe: DuplicateHandle(Err) non riuscita (e=%ld)\n"
+
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() fallita (e=%ld)\n"
+msgstr "CreatePipe() non riuscita (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() fallita\n"
+msgstr "windows32_openpipe(): process_init_fd() non riuscita\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Pulitura del file batch temporaneo %s\n"
 
-#: function.c:2150
+#: function.c:2151
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»"
+msgid "open: %s: %s"
+msgstr "apertura: %s: %s"
 
-#: function.c:2162
+#: function.c:2158
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "non implementata su questa architettura: funzione «%s»"
+msgid "write: %s: %s"
+msgstr "scrittura: %s: %s"
 
-#: function.c:2212
+#: function.c:2164
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "chiamata non terminata per la funzione «%s»: «%c» mancante"
+msgid "Invalid file operation: %s"
+msgstr "Operazione sui file non valida: %s"
 
-#: getopt.c:661
+#: function.c:2279
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: l'opzione «%s» è ambigua\n"
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\""
 
-#: getopt.c:685
+#: function.c:2291
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: l'opzione «--%s» non ammette un argomento\n"
+msgid "unimplemented on this platform: function '%s'"
+msgstr "non implementata su questa piattaforma: funzione \"%s\""
 
-#: getopt.c:690
+#: function.c:2354
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: l'opzione «%c%s» non ammette un argomento\n"
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "chiamata non terminata alla funzione \"%s\": \"%c\" mancante"
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Operazione sui file non valida: %s"
 
-#: getopt.c:707 getopt.c:880
+#: function.c:2550
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: l'opzione «%s» richiede un argomento\n"
+msgid "Function name too long: %s\n"
+msgstr "Nome della funzione troppo lungo: %s\n"
 
-#: getopt.c:736
+#: function.c:2552
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: «--%s» opzione sconosciuta\n"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\"\n"
 
-#: getopt.c:740
+#: function.c:2555
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: «%c%s» opzione sconosciuta\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\"\n"
 
-#: getopt.c:766
+#: getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: l'opzione \"%s\" è ambigua\n"
+
+#: getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"--%s\" non ammette argomenti\n"
+
+#: getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"%c%s\" non ammette argomenti\n"
+
+#: getopt.c:705 getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: l'opzione \"%s\" richiede un argomento\n"
+
+#: getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: opzione \"--%s\" sconosciuta\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: opzione \"%c%s\" sconosciuta\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: opzione non valida -- %c\n"
+msgstr "%s: opzione illecita -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: opzione non valida -- %c\n"
+msgstr "%s: opzione illecita -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: l'opzione richiede un argomento -- %c\n"
 
-#: getopt.c:846
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: l'opzione \"-W %s\" è ambigua\n"
+
+#: getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opzione \"-W %s\" non ammette argomenti\n"
+
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: l'opzione «-W %s» è ambigua\n"
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Espansione di \"%s\"\n"
 
-#: getopt.c:864
+#: guile.c:71
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: l'opzione «-W %s» non ammette un argomento\n"
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Valutazione di \"%s\"\n"
 
 #: hash.c:49
-#, fuzzy, c-format
+#, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "impossibile allocare %ld byte per la tabella hash: memoria esaurita"
+msgstr "impossibile allocare %lu byte per la tabella hash: memoria esaurita"
 
 #: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Load=%ld/%ld=%.0f%%, "
+msgstr "Carico=%ld/%ld=%.0f%%, "
 
 #: hash.c:282
 #, c-format
@@ -495,134 +555,156 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Collisioni=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Ricerca di una regola implicita per «%s».\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Ricerca di una regola implicita per \"%s\".\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+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"
+"Ricerca di una regola implicita per il membro di archivio per \"%s\".\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Viene evitata la ricorsione della regola implicita.\n"
+msgstr "Evitata la ricorsione della regola implicita.\n"
+
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Stem troppo lungo: \"%.*s\".\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"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Tentativo di usare la regola del modello con stem \"%.*s\".\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Viene rifiutata la regola prerequisita \"impossible\" «%s».\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Prerequisito impossibile \"%s\" della regola rifiutato.\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Viene rifiutato il prerequisito implicito \"impossible\" «%s».\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Prerequisito implicito impossibile \"%s\" rifiutato.\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Viene tentata la regola prerequisita «%s».\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Tentativo di usare il prerequisito della regola \"%s\".\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Viene tentato il prerequisito implicito «%s».\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Tentativo di usare il prerequisito implicito \"%s\".\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Trovato il prerequisito \"%s\" come VPATH \"%s\"\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Ricerca di una regola con il \"file intermedio\" «%s».\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Ricerca di una regola con il file intermedio \"%s\".\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "Impossibile creare il file temporaneo\n"
+msgstr "Impossibile creare un file temporaneo\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Errore 0x%x (ignorato)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (creato dump del core)"
 
-#: job.c:450
+#: job.c:487
+msgid " (ignored)"
+msgstr " (ignorato)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<incorporato>"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Errore 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: set di istruzioni per l'obiettivo \"%s\" non riuscito"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Errore %d (ignorato)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Errore 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Errore %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Errore %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core dumped)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Attesa dei processi non terminati...."
+msgstr "*** Attesa per i processi non terminati...."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Processo figlio vivo 0x%08lx (%s) PID %ld %s\n"
+msgstr "Processo figlio vivo %p (%s) con PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (remoto)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Interruzione del processo figlio perdente 0x%08lx PID %ld %s\n"
+msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Interruzione del processo figlio vincente 0x%08lx PID %ld %s\n"
+msgstr "Interruzione del processo figlio vincente %p con PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Pulitura del file batch temporaneo %s\n"
 
-#: job.c:861
-#, fuzzy, c-format
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Pulitura del file batch temporaneo %s non riuscita (%d)\n"
+
+#: job.c:949
+#, 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"
+"Rimozione del processo figlio %p con PID %s%s dalla catena di esecuzione.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "rilascio del semaforo del jobserver: (Errore %ld: %s)"
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Token rilasciato per il processo figlio 0x%08lx (%s).\n"
+msgstr "Token rilasciato per il processo figlio %p (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "scrittura del jobserver"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() fallita all'avvio del processo (e=%ld)\n"
+msgstr "process_easy() non riuscita all'avvio del processo (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -631,148 +713,209 @@ msgstr ""
 "\n"
 "Contati %d argomenti nell'avvio fallito\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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 "
+"Inserimento del processo figlio %p (%s) con PID %s%s nella catena di "
 "esecuzione.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "attendere semaforo o processo figlio (Errore %ld: %s)"
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Token ottenuto per il processo figlio 0x%08lx (%s).\n"
+msgstr "Token ottenuto per il processo figlio %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "lettura della pipe dei processi"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+msgid "%s: target '%s' does not exist"
+msgstr "%s: l'obbiettivo \"%s\" non esiste"
 
-#: 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:2005
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: aggiorna l'obbiettivo \"%s\" a causa di: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
-msgstr "impossibile applicare i limiti di carico su questo sistema operativo"
+msgstr ""
+"impossibile far rispettare i limiti di carico su questo sistema operativo"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "impossibile applicare il limite di carico: "
+msgstr "impossibile far rispettare il limite di carico: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr "nessun altro file gestito: impossibile duplicare lo standard input\n"
+msgstr ""
+"nessun'altra gestione del file: impossibile duplicare lo standard input\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr "nessun altro file gestito: impossibile duplicare lo standard output\n"
+msgstr ""
+"nessun'altra gestione del file: impossibile duplicare lo standard output\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"nessun'altra gestione del file: impossibile duplicare lo standard error\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Impossibile ripristinare lo standard input\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Impossibile ripristinare lo standard output\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Impossibile ripristinare lo standard error\n"
+
+#: job.c:2365
+#, 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"
+"make ha interrotto il processo figlio con pid %s, è ancora in attesa del "
+"processo con pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: comando non trovato"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: shell non trovata"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL cambiata (era \"%s\", adesso è \"%s\")\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Creazione del file batch temporaneo %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Contenuti del file batch:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Contenuti del file batch:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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"
+"%s (riga %d) contesto della shell errato (!unixy && !batch_mode_shell)\n"
+
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Apertura della tabella dei simboli globale non riuscita: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "L'oggetto caricato %s non è dichiarato compatibile con la licenza GPL"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Caricamento del simbolo %s da %s non riuscito: %s"
 
-#: main.c:303
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Nome del simbolo vuoto per il caricamento: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Caricamento del simbolo %s da %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "L'operazione \"load\" non è supportata su questa piattaforma."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opzioni:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Ignorato per compatibilità.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
-"  -B, --always-make           Genera tutti gli obbiettivi "
-"incondizionatamente\n"
+"  -B, --always-make           Genera tutti gli obiettivi "
+"incondizionatamente.\n"
 
-#: main.c:308
+#: main.c:317
 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 "
+"                              Cambia DIRECTORY prima di fare qualunque "
 "cosa.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "  -d                          Mostra informazioni di debug.\n"
+msgstr "  -d                          Mostra molte informazioni di debug.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAGS]             Mostra diversi tipi di informazioni di debug.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Le variabili d'ambiente sovrascrivono i "
+"                              Le variabili ambiente sovrascrivono i "
 "makefile.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"  --eval=TESTO               Analizza STRINGA come estratta dal makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -780,39 +923,39 @@ msgstr ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Legge FILE come un makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Mostra questo messaggio ed esce.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Ignora gli errori dei comandi.\n"
+msgstr ""
+"  -i, --ignore-errors         Ignora gli errori dai set di istruzioni.\n"
 
-#: main.c:327
+#: main.c:336
 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"
+"                              Cerca nella DIRECTORY per i makefile inclusi.\n"
 
-#: main.c:330
+#: main.c:339
 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"
+"  -j [N], --jobs[=N]          Permette N processi alla volta; infiniti se "
+"non viene specificato l'argomento.\n"
 
-#: main.c:332
+#: main.c:341
 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"
+"  -k, --keep-going            Continua l'esecuzione quando non è possibile "
+"creare alcuni obiettivi.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -820,9 +963,9 @@ msgid ""
 msgstr ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Non avvia processi multipli a meno che il "
-"carico di lavoro è sotto N.\n"
+"carico di lavoro non sia sotto N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -830,57 +973,63 @@ msgstr ""
 "  -L, --check-symlink-times   Usa il più recente mtime tra i collegamenti "
 "simbolici e l'obiettivo.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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 "
+"                              Non esegue alcun set di istruzioni; lo stampa "
 "solamente.\n"
 
-#: main.c:342
+#: main.c:351
 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 "
+"                              Considera il FILE come molto vecchio e non "
 "riesegue make.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[TIPO], --output-sync[=TIPO]\n"
+"                              Sincronizza l'output dei processi paralleli "
+"dal TIPO.\n"
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "  -p, --print-data-base       Mostra il database interno di make.\n"
+msgstr "  -p, --print-data-base       Stampa il database interno di make.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 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"
+"  -q, --question              Non avvia alcun set di istruzioni; lo stato di "
+"uscita indica se è aggiornato.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
-"  -r, --no-builtin-rules      Disabilita le regole implicite integrate.\n"
+"  -r, --no-builtin-rules      Disabilita le regole implicite interne.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Dsabilita le impostazioni delle variabili "
-"integrate.\n"
+"  -R, --no-builtin-variables  Disabilita le impostazioni delle variabili "
+"interne.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       Non visualizza i comandi.\n"
+msgstr "  -s, --silent, --quiet       Non visualizza i set di istruzioni.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -888,64 +1037,77 @@ 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
+# ## touch = in questo contesto è simile alla funzione del comando 'touch'
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Aggiorna la marcatura temporale degli "
-"obbiettivi senza ricrearli.\n"
+"  -t, --touch                 Esegue il touch degli obiettivi invece di "
+"ricrearli.\n"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Stampa informazioni di tracciamento.\n"
+
+#: main.c:374
 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"
+"  -v, --version               Stampa il numero di versione di make ed esce.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       Mostra la directory corrente.\n"
+msgstr "  -w, --print-directory       Stampa la directory corrente.\n"
 
-#: main.c:364
+#: main.c:378
 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 "
+"  --no-print-directory        Disattiva l'opzione -w, anche se era stata "
 "attivata implicitamente.\n"
 
-#: main.c:366
+#: main.c:380
 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"
+"                              Considera il FILE come nuovo di zecca.\n"
 
-#: main.c:369
+#: main.c:383
 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"
+"  --warn-undefined-variables  Avvisa quando viene referenziata una variabile "
+"non definita.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "testo vuoto non valido come nome di file"
+msgstr "una stringa vuota non è valida come nome di file"
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "livello di debug specificato sconosciuto «%s»"
+msgid "unknown debug level specification '%s'"
+msgstr "livello di debug specificato sconosciuto \"%s\""
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto \"%s\""
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "errore interno: opzioni multiple per --sync-mutex"
+
+#: main.c:848
+#, 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"
+"%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -957,167 +1119,192 @@ msgstr ""
 "Filtro eccezione non gestita chiamata dal programma %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
-"ExceptionAddress = %lx\n"
+"ExceptionAddress = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Violazione accesso: operazione di scrittura all'indirizzo %lx\n"
+msgstr "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Violazione accesso: operazione di lettura all'indirizzo %lx\n"
+msgstr "Violazione accesso: operazione di lettura all'indirizzo 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell impostazione default_shell = %s\n"
+msgstr "find_and_set_shell() impostazione default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+"find_and_set_shell() impostazione del percorso di ricerca default_shell = "
+"%s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s viene sospeso per 30 secondi..."
 
-#: main.c:1275
+#: main.c:1449
 #, 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
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "errore interno: opzioni multiple per --jobserver-fds"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "errore interno: testo non valido per --jobserver-fds «%s»"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"errore interno: impossibile aprire il semaforo del jobserver \"%s\": (Errore "
+"%ld: %s)"
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Client del jobserver (semaforo %s)\n"
+
+#: main.c:1551
+#, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "errore interno: stringa illecita per --jobserver-fds \"%s\""
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Client del jobserver (fds %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "attenzione: -jN forzata nel submake: disattivazione della modalità jobserver."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "jobserver duplicato"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
-"attenzione: jobserver non disponibile: viene usato -j1. Aggiungere «+» alla "
-"regola make superiore."
+"attenzione: jobserver non disponibile, viene usato -j1. Aggiungere \"+\" "
+"alla regola make superiore."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Il Makefile dallo standard input è stato specificato due volte."
 
-#: main.c:1777
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (file temporaneo)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (file temporaneo)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "I processi paralleli (-j) non sono supportati su questa piattaforma."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Reimpostazione alla modalità a singolo processo (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Slot del jobserver limitati a %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "Creazione del semaforo del jobserver: (Errore %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "creazione pipe dei processi"
+msgstr "creazione della pipe dei processi"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "inizializzazione della pipe della modalità jobserver"
+msgstr "inizializzazione nella pipe della modalità jobserver"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
-"Collegamenti simbolici non supportati: disabilitazione dell'opzione -L."
+msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Aggiornamento dei makefile....\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Il makefile «%s» potrebbe ciclare all'infinito; non viene ricreato.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr ""
+"Il makefile \"%s\" potrebbe entrare in un ciclo all'infinito; make non "
+"rieseguito.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Riesecuzione del makefile «%s» non riuscita."
+msgid "Failed to remake makefile '%s'."
+msgstr "Riesecuzione del makefile \"%s\" non riuscita."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Il makefile «%s» incluso non è stato trovato."
+msgid "Included makefile '%s' was not found."
+msgstr "Il makefile \"%s\" incluso non è stato trovato."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Il makefile «%s» non è stato trovato."
+msgid "Makefile '%s' was not found"
+msgstr "Il makefile \"%s\" non è stato trovato"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Impossibile ritornare alla directory originale."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Riesecuzione[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (file temporaneo): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL contiene più di un obiettivo"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Nessun obiettivo specificato e nessun makefile trovato"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Nessun obiettivo"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "Aggiornamento degli obbiettivi....\n"
+msgstr "Aggiornamento degli obiettivi....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"attenzione: Rilevato un tempo alterato. La costruzione potrebbe essere "
+"attenzione: rilevato un tempo alterato. La creazione potrebbe essere "
 "incompleta."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uso: %s [opzioni] [obiettivo] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1126,7 +1313,7 @@ msgstr ""
 "\n"
 "Questo programma è stato compilato per %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1135,37 +1322,32 @@ msgstr ""
 "\n"
 "Questo programma è stato compilato per %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Segnalare i bug all'indirizzo <bug-make@gnu.org>\n"
+msgstr "Segnalare i bug a <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:2810
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "l'opzione \"%s%s\" richiede un argomento stringa non vuoto"
 
-#: main.c:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "l'opzione «-%c» richiede un argomento intero positivo"
+msgid "the '-%c' option requires a positive integer 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
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"%sQuesto programma è stato compilato per %s\n"
+msgstr "%sCompilato per %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"%s Questo programma è stato compilato per %s (%s)\n"
+msgstr "%sCompilato per %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1173,9 +1355,13 @@ msgid ""
 "%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 Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/"
+"gpl.html>.\n"
+"%s Questo programma è software libero: siete liberi di modificarlo e "
+"ridistribuirlo.\n"
+"%s Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n"
 
-# # «%s» è un tipo ctime(3)
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1184,116 +1370,116 @@ msgstr ""
 "\n"
 "# Generazione del database delle informazioni, creato il %s"
 
-#: main.c:3096
+#: main.c:3297
 #, 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"
+"# Generazione del database completata il %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
+#: misc.c:201
 #, 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
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "memoria virtuale esaurita"
 
-#: misc.c:708
+#: misc.c:522
 #, 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
+#: misc.c:543
 msgid "Initialized access"
 msgstr "Accesso inizializzato"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "Accesso utente"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
-msgstr "Accesso Make"
+msgstr "Accesso make"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "Accesso processo figlio"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: ingresso in una directory sconosciuta\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: uscita dalla directory sconosciuta\n"
+
+#: output.c:133
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: ingresso nella directory \"%s\"\n"
+
+#: output.c:135
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: uscita dalla directory \"%s\"\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: ingresso in una directory sconosciuta\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: uscita dalla directory sconosciuta\n"
+
+#: output.c:144
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: ingresso nella directory \"%s\"\n"
+
+#: output.c:146
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: uscita dalla directory \"%s\"\n"
+
+#: output.c:515
 #, c-format
 msgid "write error: %s"
 msgstr "errore in scrittura: %s"
 
-#: misc.c:956
+#: output.c:517
 msgid "write error"
 msgstr "errore in scrittura"
 
-#: read.c:179
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Arresto.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Lettura dei makefile...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Lettura del makefile «%s»"
+msgid "Reading makefile '%s'"
+msgstr "Lettura del makefile \"%s\""
 
 #: read.c:335
 #, c-format
@@ -1313,334 +1499,352 @@ msgstr " (ignora)"
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (nessuna sostituzione per il carattere «~»)"
+msgstr " (nessuna espansione per \"~\")"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "UTF-8 BOM nel makefile \"%s\" saltato\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "UTF-8 BOM nel makefile buffer saltato\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "sintassi non valida nella condizione"
+msgstr "sintassi illecita nel condizionale"
+
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: caricamento non riuscito"
 
-#: read.c:891
-#, fuzzy
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "i comandi iniziano prima del primo obiettivo"
+msgstr "il set di istruzioni inizia prima del primo obiettivo"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "regola assente prima dei comandi"
+msgstr "regola mancante prima del set di istruzioni"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "separatore %s assente"
+msgstr "separatore %s mancante"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (si intendeva dire un carattere tabulatore invece di otto spazi?)"
+msgstr " (si intendeva TAB invece di 8 spazi?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "obiettivo del pattern assente"
+msgstr "modello mancante per l'obiettivo"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "obiettivo dei pattern multiplo"
+msgstr "modelli multipli per l'obiettivo"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "obiettivo del pattern non contiene «%%»"
+msgid "target pattern contains no '%%'"
+msgstr "il modello dell'obiettivo non contiene alcun \"%%\""
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "«endif» assente"
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "\"endif\" mancante"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
-msgstr "nome della variabile vuoto"
+msgstr "nome vuoto della variabile"
 
-#: read.c:1367
-#, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "Testo estraneo dopo la direttiva «endef»"
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
+msgstr "testo non pertinente dopo la direttiva \"define\""
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "«endef» assente, «define» non terminato"
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "\"endef\" mancante, \"define\" non terminato"
 
-#: read.c:1420
-#, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Testo estraneo dopo la direttiva «endef»"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "testo non pertinente dopo la direttiva \"endef\""
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Testo estraneo dopo la direttiva «%s»"
+msgid "extraneous text after '%s' directive"
+msgstr "testo non pertinente dopo la direttiva \"%s\""
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "«%s» estraneo"
+msgid "extraneous '%s'"
+msgstr "\"%s\" non pertinente"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "un solo «else» per condizione"
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "un solo \"else\" per condizionale"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Definizione della variabile \"target-specific\""
+msgstr "Definizione malformata della variabile specifica per l'obiettivo"
 
-#: read.c:1855
-#, fuzzy
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr "i prerequisiti non possono essere definiti nei comandi degli script"
+msgstr "i prerequisiti non possono essere definiti nei set di istruzioni"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "regole del pattern implicite e statiche miste"
+msgstr "regole del modello implicite e statiche miste"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "regole implicite e normali miste"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "l'obiettivo «%s» non coincide con l'obiettivo pattern"
+msgid "target '%s' doesn't match the target pattern"
+msgstr ""
+"il \"%s\" dell'obiettivo non corrisponde al modello dell'obiettivo stesso"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "l'obiettivo file «%s» ha entrambe le voci : e ::"
+msgid "target file '%s' has both : and :: entries"
+msgstr "Il file dell'obiettivo \"%s\" contiene sia : che ::"
 
-#: read.c:1997
+#: read.c:2105
 #, 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."
+msgid "target '%s' given more than once in the same rule"
+msgstr ""
+"l'obiettivo \"%s\" è stato fornito 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:2114
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr ""
+"attenzione: sovrascrittura del set di istruzioni 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:2117
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr ""
+"attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo \"%s\""
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
-"attenzione: è stato letto il carattere NUL; il resto della riga viene "
+"attenzione: è stato rilevato il carattere NUL; il resto della riga viene "
 "ignorato"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Nessuna operazione da eseguire per «%s»."
+msgid "Nothing to be done for '%s'."
+msgstr "Nessuna operazione da eseguire per \"%s\"."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "«%s» è aggiornato."
+msgid "'%s' is up to date."
+msgstr "\"%s\" è aggiornato."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Il file «%s» è stato tagliato.\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Pulizia del file \"%s\".\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sNessuna regola per generare l'obiettivo «%s»%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%s Nessuna regola per generare l'obiettivo \"%s\"%s"
 
-#: remake.c:361
+#: remake.c:379
 #, 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"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr ""
+"%s Nessuna 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"
+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"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Tentativo recente di aggiornamento del file \"%s\" non riuscito.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Il file «%s» è stato già esaminato.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Il file \"%s\" è già stato esaminato.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Aggiornamento ancora in corso del file «%s».\n"
+msgid "Still updating file '%s'.\n"
+msgstr "L'aggiornamento del file \"%s\" è ancora in corso.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Aggiornamento del file «%s» terminato.\n"
+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"
+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"
+"*** 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"
+"*** Attenzione: il file .LOW_RESOLUTION_TIME \"%s\" ha una marcatura "
+"temporale ad alta risoluzione"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
-msgstr "Trovata una regola implicita per «%s».\n"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Trovata una regola implicita per \"%s\".\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
-msgstr "Nessuna regola implicita trovata per «%s».\n"
+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"
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Uso del set di istruzioni predefinito per \"%s\".\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Dipendenza circolare %s <- %s scartata."
 
-#: remake.c:651
+#: remake.c:655
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Prerequisiti del file obiettivo «%s» terminati.\n"
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Prerequisiti del file obiettivo \"%s\" terminati.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "I prerequisiti di «%s» vengono generati.\n"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Generazione dei prerequisiti di \"%s\" in corso.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Abbandono del file obiettivo «%s».\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Abbandono sul file obiettivo \"%s\".\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "L'obiettivo «%s» non è stato rigenerato a causa degli errori."
+msgid "Target '%s' not remade because of errors."
+msgstr "L'obiettivo \"%s\" non è stato rigenerato a causa di errori."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Il prerequisito «%s» è solo per l'obiettivo «%s».\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Il prerequisito \"%s\" è solo per l'obiettivo \"%s\".\n"
 
-#: remake.c:732
+#: remake.c:736
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Il prerequisito \"%s\" dell'obiettivo \"%s\" non esiste.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "Il prerequisito di «%s» è più nuovo dell'obiettivo «%s».\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Il prerequisito \"%s\" è più nuovo di quello dell'obiettivo \"%s\".\n"
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "Il prerequisito «%s» è più vecchio dell'obiettivo «%s».\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr ""
+"Il prerequisito \"%s\" è più vecchio di quello dell'obiettivo \"%s\".\n"
 
-#: remake.c:758
+#: remake.c:762
 #, 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"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr ""
+"L'obiettivo \"%s\" è \"doppio due punti\" 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:769
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr ""
+"Nessun set di istruzioni per \"%s\" e nessun prerequisito effettivamente "
+"cambiato.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Generazione di «%s» a causa dell'opzione \"always-make\".\n"
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Generazione di \"%s\" a causa del flag \"always-make\".\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
-msgstr "L'obiettivo «%s» non necessita di essere rigenerato"
+msgid "No need to remake target '%s'"
+msgstr "Non è necessario rigenerare l'obiettivo \"%s\""
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; uso del nome VPATH «%s»"
+msgid "; using VPATH name '%s'"
+msgstr "; uso del nome VPATH \"%s\""
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "L'obiettivo «%s» deve essere rigenerato.\n"
+msgid "Must remake target '%s'.\n"
+msgstr "L'obiettivo \"%s\" deve essere rigenerato.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Ignoro il nome VPATH «%s».\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  nome VPATH \"%s\" ignorato.\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:819
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Esecuzione del set di istruzioni per \"%s\" in corso.\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Rigenerazione del file obiettivo \"%s\" non riuscita.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "File obiettivo «%s» rigenerato correttamente.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "File obiettivo \"%s\" rigenerato correttamente.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Il file obiettivo «%s» deve essere rigenerato con l'opzione -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr ""
+"Il file obiettivo \"%s\" necessita di essere rigenerato con l'opzione -q.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Uso dei comandi predefiniti per «%s».\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Uso dei comandi predefiniti per \"%s\".\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
-msgstr "Attenzione: il file «%s» ha il tempo di modifica nel futuro"
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Attenzione: il file \"%s\" ha un orario 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:1385
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Attenzione: il file \"%s\" ha un orario di modifica %s nel futuro"
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "l'elemento .LIBPATTERNS «%s» non è un pattern"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "l'elemento .LIBPATTERNS \"%s\" non è un modello"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "Le personalizzazioni non saranno esportate: %s\n"
+msgstr "Le personalizzazioni non verranno esportate: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1648,15 +1852,15 @@ msgstr ""
 "\n"
 "# Regole implicite"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# Nessuna regola implicita."
+"# Regole non implicite."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1665,247 +1869,266 @@ msgstr ""
 "\n"
 "# %u regole implicite, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminale."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "BUG: num_pattern_rules errato!  %u != %u"
+msgstr "BUG: num_pattern_rules è errato!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "segnale sconosciuto"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "Riaggancia"
+msgstr "Chiusura"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
-msgstr "Interrompi"
+msgstr "Interruzione"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
-msgstr "Esci"
+msgstr "Uscita (con core dump)"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Istruzione illegale"
+msgstr "Istruzione illecita"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Intercetta traccia/punto di rottura"
+msgstr "Rilevato trace/breakpoint"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Annullato"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
-msgstr "IOT trap"
+msgstr "Rilevato IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "EMT trap"
+msgstr "Rilevato EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Eccezione virgola mobile"
+msgstr "Eccezione in virgola mobile"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Ucciso"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
-msgstr "Errore del bus"
+msgstr "Errore di bus"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Errore di segmentazione"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Chiamata di sistema errata"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Pipe interrotta"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
-msgstr "Allarme"
+msgstr "Sveglia"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Terminato"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Segnale 1 definito dall'utente"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Segnale 2 definito dall'utente"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Processo figlio uscito"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Blackout"
+msgstr "Mancanza di alimentazione elettrica"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
-msgstr "Fermato"
+msgstr "Fermato (da terminale)"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Fermato (tty input)"
+msgstr "Fermato (input tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Fermato (tty output)"
+msgstr "Fermato (output tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
-msgstr "Fermato (segnale)"
+msgstr "Fermato"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "Limite di tempo della CPU superato"
+msgstr "Limite di tempo CPU superato"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Limite della dimensione dei file superato"
+msgstr "Superato il limite di dimensione file"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Timer virtuale scaduto"
+msgstr "Timer virtuale terminato"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Profiling timer scaduto"
+msgstr "Timer di profiling terminato"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "Finestra cambiata"
+msgstr "Finestra modificata"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
-msgstr "Continua"
+msgstr "Continuato"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Condizioni I/O urgenti"
+msgstr "Condizioni di I/O urgente"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "I/O possibile"
+msgstr "I/O consentito"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Risorsa persa"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Segnale di pericolo"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Richiesta informazioni"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Co-processore virgola mobile non disponibile"
+msgstr "Co-processore virgola mobile non disponibile"
 
-#: strcache.c:235
-#, fuzzy, c-format
+#: strcache.c:236
+#, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 "\n"
-"%s # di stringhe in strcache: %d\n"
+"%s buffer strcache assenti\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:266
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s buffer strcache: %lu (%lu) / stringhe = %lu / memorizzazione = %lu B / "
+"media = %lu B\n"
 
-#: strcache.c:239
-#, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
-"%s dimensione strcache: totale = %d / massima = %d / minima = %d / media = %"
-"d\n"
+"%s buffer corrente: dimensione = %hu B / usato = %hu B / count = %hu / media "
+"= %hu B\n"
 
-#: strcache.c:241
-#, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s altra usata: totale = %lu B / count = %lu / media = %lu B\n"
+
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
-"%s strcache libera: totale = %d / massima = %d / minima = %d / media = %d\n"
+"%s altra libera: totale = %lu B / max = %lu B / min = %lu B / media = %hu B\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# statistiche della tabella di hash dei file:\n"
+"%s prestazioni strcache: lookups = %lu / hit rate = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# statistiche della tabella hash:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatico"
+
+#: variable.c:1610
 msgid "default"
 msgstr "predefinito"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "ambiente"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "ambiente sotto l'opzione -e"
+msgstr "ambiente con l'opzione -e"
 
-#: variable.c:1553
+#: variable.c:1622
 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:1625
+msgid "'override' directive"
+msgstr "direttiva \"override\""
 
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (da «%s», riga %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (da \"%s\", riga %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# impostazione variabile delle statistiche della tabella di hash:\n"
+msgstr "# statistiche tabella di hash del set di variabili:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1913,15 +2136,15 @@ msgstr ""
 "\n"
 "# Variabili\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Valori variabile \"pattern-specific\""
+"# Valori di variabile non specifici per il modello."
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1929,101 +2152,103 @@ msgstr ""
 "\n"
 "# Nessun valore per la variabile \"pattern-specific\"."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u valori della variabile \"pattern-specific\""
+"# %u valori di variabile specifici per il modello."
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "attenzione: variabile «%.*s» non definita"
+msgid "warning: undefined variable '%.*s'"
+msgstr "attenzione: variabile \"%.*s\" non definita"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search fallita con %d\n"
+msgstr "sys$search() non riuscita con %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "Attenzione: Redirezione vuota\n"
+msgstr "Attenzione: redirezione vuota\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
-msgstr "errore interno: «%s» command_state"
+msgid "internal error: '%s' command_state"
+msgstr "errore interno: command_state \"%s\""
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+msgstr ""
+"-attenzione, potrebbe essere necessario riabilitare la gestione di CTRL+Y da "
+"DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr "BUILTIN [%s][%s]\n"
+msgstr "[%s] INTERNO [%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr "BUILTIN CD %s\n"
+msgstr "CD INTERNO %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr "BUILTIN RM %s\n"
+msgstr "RM INTERNO %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Comando interno «%s» sconosciuto\n"
+msgstr "Comando interno \"%s\" sconosciuto\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Errore, comando vuoto\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Input rediretto da %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Errore rediretto a %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Output rediretto a %s\n"
+msgstr "Accoda output a %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Output rediretto a %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Accoda %.*s e pulisce\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "%s verrà invece eseguito\n"
+msgstr "Verrà invece eseguito %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "Error spawning, %d\n"
+msgstr "Errore nella generazione, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2031,59 +2256,64 @@ msgstr ""
 "\n"
 "# Percorsi di ricerca VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Nessun percorso di ricerca «vpath»."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Percorsi di ricerca \"vpath\" assenti."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# percorsi di ricerca «vpath» %u.\n"
+"# %u 'vpath' percorsi di ricerca.\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Nessun percorso di ricerca generale (variabile \"VPATH\")."
+"# Percorso di ricerca non generale (variabile \"VPATH\")."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\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 "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Valore illecito nel membro \"update_status\"!"
 
-#~ 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 "unknown trace mode '%s'"
+#~ msgstr "modo di tracciamento \"%s\" sconosciuto"
 
-#~ msgid "extraneous `endef'"
-#~ msgstr "«endef» estraneo"
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Errore 0x%x (ignorato)"
 
-#~ msgid "empty `override' directive"
-#~ msgstr "direttiva «override» vuota"
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr ""
+#~ "Chiamata del set di istruzioni da %s:%lu per aggiornare l'obiettivo \"%s"
+#~ "\".\n"
 
-#~ msgid "invalid `override' directive"
-#~ msgstr "direttiva «override» non valida"
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr ""
+#~ "Chiamata del set di istruzioni interno per aggiornare l'obiettivo \"%s"
+#~ "\".\n"
 
-#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # di buffer strcache: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
 #~ msgstr ""
-#~ "-attenzione, CTRL+Y lascierà il sottoprocesso (o i sottoprocessi).\n"
+#~ "\n"
+#~ "# statistiche tabella hash di strcache:\n"
+#~ "# "
index 990a70f..7d94d20 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index 1791f48..5e98fa6 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
-# Japanese message for make 3.80
-# Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+# Japanese message catalog for make 3.82
+# Copyright (C) 2001, 2003, 2004, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 # GOTO Masanori <gotom@debian.or.jp>, 2003-2004.
 # Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 2001.
 #             Thanks to NISHIJIMA Takanori
+# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2011
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2011-08-28 01:14+0900\n"
+"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=EUC-JP\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Basepath: /factory/ja-po/make/make-3.82\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½¤ò»È¤ª¤¦¤È¤·¤Æ¤¤¤Þ¤¹: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "VMS ¤Ç¤Ï½ñ¸Ë¤Î¥á¥ó¥Ð¤ò touch ¤¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: ½ñ¸Ë `%s' ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: `%s' ¤ÏÀµ¾ï¤Ê½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: ¥á¥ó¥Ð `%s' ¤Ï `%s' Æâ¤Ë¤¢¤ê¤Þ¤»¤ó"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr "touch: `%s' ¤Ø¤Î ar_member_touch ¤«¤é°Û¾ï¤ÊÃͤ¬ÊÖ¤ê¤Þ¤·¤¿"
 
-#: arscan.c:69
-#, fuzzy, c-format
+#: arscan.c:67
+#, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
-msgstr "lbr$set_module ¤¬¥â¥¸¥å¡¼¥ë¾ðÊó¤ÎÃê½Ð¤Ë¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
+msgstr "lbr$set_module() ¤¬¥â¥¸¥å¡¼¥ë¾ðÊó¤ÎÃê½Ð¤Ë¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control ¤¬¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
+msgstr "lbr$ini_control() ¤¬¼ºÇÔ¤·¤Þ¤·¤¿. ¾õÂÖ = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "¥é¥¤¥Ö¥é¥ê `%s' ¤ò³«¤±¤º, ¥á¥ó¥Ð `%s' ¤Î¸¡º÷¤¬¤Ç¤­¤Þ¤»¤ó"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "¥á¥ó¥Ð `%s'%s: %ld ¥Ð¥¤¥È at %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (̾Á°¤¬ÀÚ¤êµÍ¤á¤é¤ì¤¿¤«¤â)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  ÆüÉÕ %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** ÃæÃÇ.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] ½ñ¸Ë¥á¥ó¥Ð `%s' ¤Ï¿ʬµ¶Êª¤Ç¤¹ ¡½ ºï½ü¤·¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** ½ñ¸Ë¥á¥ó¥Ð `%s' ¤Ï¿ʬµ¶Êª¤Ç¤¹ ¡½ ºï½ü¤·¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] ¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** ¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  ¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É"
+msgstr "#  ¼Â¹Ô¤¹¤ë¥ì¥·¥Ô"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (¥Ó¥ë¥È¥¤¥ó):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (`%s', %lu ¹ÔÌܤ«¤é):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,222 +133,222 @@ msgstr ""
 "\n"
 "# ¥Ç¥£¥ì¥¯¥È¥ê\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: ¾õÂÖ¤òÄ´¤Ù¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (key %s, mtime %d): ³«¤±¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (device %ld, inode %ld): ³«¤±¤Þ¤»¤ó¤Ç¤·¤¿.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (key %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (device %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (device %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "0"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " ¸Ä¤Î¥Õ¥¡¥¤¥ë, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "0"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " ¸Ä¤ÎŬÍÑÉÔǽ¥Õ¥¡¥¤¥ë̾"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " (¤³¤³¤Þ¤Ç¤Ë)."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " ¸Ä¤ÎŬÍÑÉÔǽ¥Õ¥¡¥¤¥ë̾ (%lu ¸Ä¤Î¥Ç¥£¥ì¥¯¥È¥êÆâ).\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "ºÆµ¢ÅªÊÑ¿ô `%s' ¤¬(ºÇ½ªÅª¤Ë)¤½¤ì¼«¿È¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "½ªÃ¼¤Î¤Ê¤¤ÊÑ¿ô»²¾È"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was 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:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
-msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤Ï°ÅÌۥ롼¥ë¤Îõº÷¤Ç¸«¤Ä¤«¤ê¤Þ¤·¤¿,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Î¤¿¤á¤Î¥ì¥·¥Ô¤¬°ÅÌۥ롼¥ë¤Îõº÷¤Ç¸«¤Ä¤«¤ê¤Þ¤·¤¿,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr "¤·¤«¤·º£¤Ï `%s' ¤È `%s' ¤ÏƱ¤¸¥Õ¥¡¥¤¥ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹."
 
-#: file.c:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
-msgstr "`%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤Ï, `%s' ¤òÁª¤Ö¤³¤È¤Çº£¸å̵»ë¤µ¤ì¤Þ¤¹."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "`%s' ¤Î¤¿¤á¤Î¥ì¥·¥Ô¤Ï, `%s' ¤Î¤¿¤á¤Î¤â¤Î¤òÍ¥À褹¤ë¤¿¤á̵»ë¤µ¤ì¤Þ¤¹."
 
-#: file.c:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "¥·¥ó¥°¥ë¥³¥í¥ó `%s' ¤«¤é¥À¥Ö¥ë¥³¥í¥ó `%s' ¤Ë̾Á°¤òÊѤ¨¤é¤ì¤Þ¤»¤ó"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "¥À¥Ö¥ë¥³¥í¥ó `%s' ¤«¤é¥·¥ó¥°¥ë¥³¥í¥ó `%s' ¤Ë̾Á°¤òÊѤ¨¤é¤ì¤Þ¤»¤ó"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Ãæ´Ö¥Õ¥¡¥¤¥ë `%s' ¤òºï½ü¤·¤Þ¤¹"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Ãæ´Ö¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Æ¤¤¤Þ¤¹...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: ¥¿¥¤¥à¥¹¥¿¥ó¥×¤¬Èϰϳ°¤Ç¤¹ -- Âå¤ê¤Ë %s ¤È¤·¤Þ¤¹"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "¸½ºß»þ¹ï"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# ¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ÆÃÊÌ°·¤¤¤Î¥Õ¥¡¥¤¥ë (.PRECIOUS ¤ÎɬÍ×¾ò·ï)"
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  µ¿»÷¥¿¡¼¥²¥Ã¥È (.PHONY ¤ÎɬÍ×¾ò·ï)"
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
 msgstr "#  ¥³¥Þ¥ó¥É¥é¥¤¥ó¥¿¡¼¥²¥Ã¥È."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  ¥Ç¥Õ¥©¥ë¥È¤Þ¤¿¤Ï MAKEFILES ¥á¥¤¥¯¥Õ¥¡¥¤¥ë."
+msgstr "#  ¥Ç¥Õ¥©¥ë¥È¤Þ¤¿¤Ï MAKEFILES, -include/sinclude Makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# °ÅÌۥ롼¥ë¤Ê¤·."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  °ÅÌۥ롼¥ë¤Îõº÷¤¬¹Ô¤ï¤ì¤Þ¤·¤¿."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  °ÅÌۥ롼¥ë¤Îõº÷¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  °ÅÌÛ/ÀÅŪ¥Ñ¥¿¡¼¥ó¸ì´´: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤ÏÃæ´ÖɬÍ×¾ò·ï¤Ç¤¹."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  ¤µ¤é¤Ë make:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  ½¤Àµ»þ¹ï¤¬¥Á¥§¥Ã¥¯¤µ¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤¬Èó¾ï¤Ë¸Å¤¤¤Ç¤¹."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  ºÇ½ª½¤Àµ %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤Ï¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  ¥Õ¥¡¥¤¥ë¤Ï¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤»¤ó."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  ¥³¥Þ¥ó¥É¤¬¸½ºß¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
+msgstr "#  ¥ì¥·¥Ô¤ò¸½ºß¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  °Í¸´Ø·¸¥³¥Þ¥ó¥É¤¬¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
+msgstr "#  °Í¸´Ø·¸¥ì¥·¥Ô¤ò¼Â¹ÔÃæ¤Ç¤¹ (*¤³¤ì¤Ï¥Ð¥°¤Ç¤¹*)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  ¹¹¿·¤ËÀ®¸ù¤·¤Þ¤·¤¿."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  ¹¹¿·¤¬É¬ÍפǤ¹ (-q ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  ¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  `update_status' ¥á¥ó¥Ð¤Ë̵¸ú¤ÊÃÍ!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  `command_state' ¥á¥ó¥Ð¤Ë̵¸ú¤ÊÃÍ!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -348,7 +356,7 @@ msgstr ""
 "\n"
 "# ¥Õ¥¡¥¤¥ë"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -358,122 +366,179 @@ msgstr ""
 "# ¥Õ¥¡¥¤¥ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "Èó¿ôÃͤÎÂè°ì°ú¿ô¤¬ `word' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "`word' ´Ø¿ô¤Ø¤ÎÂè°ì°ú¿ô¤Ï 0 ¤è¤êÂ礭¤¯¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "Èó¿ôÃͤÎÂè°ì°ú¿ô¤¬ `wordlist' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "Èó¿ôÃͤÎÂèÆó°ú¿ô¤¬ `wordlist' ´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤Þ¤·¤¿"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) ¤¬¼ºÇÔ (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) ¤¬¼ºÇÔ (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Err) ¤¬¼ºÇÔ (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(Err) ¤¬¼ºÇÔ (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() ¤¬¼ºÇÔ (e=%d)\n"
+msgstr "CreatePipe() ¤¬¼ºÇÔ (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() ¤¬¼ºÇÔ\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤ò¾Ãµî¤·¤Þ¤¹\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "°ú¿ô¤Î¿ô(%d)¤¬´Ø¿ô `%s' ¤Ë¤È¤Ã¤ÆÉÔ½½Ê¬¤Ç¤¹"
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó: ´Ø¿ô `%s'"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "½ªÃ¼¤¬¤Ê¤¤´Ø¿ô¸Æ¤Ó½Ð¤· `%s': `%c' ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "°ú¿ô¤Î¿ô(%d)¤¬´Ø¿ô `%s' ¤Ë¤È¤Ã¤ÆÉÔ½½Ê¬¤Ç¤¹"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "°ú¿ô¤Î¿ô(%d)¤¬´Ø¿ô `%s' ¤Ë¤È¤Ã¤ÆÉÔ½½Ê¬¤Ç¤¹"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: Ç§¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: Ç§¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó ¡½ %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: Ìµ¸ú¤Ê¥ª¥×¥·¥ç¥ó ¡½ %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹ ¡½ %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤Ï°ú¿ô¤ò¼è¤ê¤Þ¤»¤ó\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
-#, fuzzy, c-format
+#, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
-"¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ëÍÑ %ld ¥Ð¥¤¥È¤Î³ä¤êÅö¤Æ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·"
+"¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ëÍÑ %lu ¥Ð¥¤¥È¤Î³ä¤êÅö¤Æ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·"
 "¤¿"
 
 #: hash.c:280
@@ -491,132 +556,155 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Collisions=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î½ñ¸Ë¥á¥ó¥Ð°ÅÌۥ롼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "°ÅÌۥ롼¥ë¤ÎºÆµ¢¤ò²óÈò¤·¤Þ¤¹.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "¸ì´´ `%.*s' ¤È¤Î¥Ñ¥¿¡¼¥ó¥ë¡¼¥ë¤ò»î¤·¤Þ¤¹.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "ŬÍÑÉÔǽ¤Ê¥ë¡¼¥ë¤ÎɬÍ×¾ò·ï `%s' ¤òµÑ²¼¤·¤Þ¤¹.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "ŬÍÑÉÔǽ¤Ê°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤òµÑ²¼¤·¤Þ¤¹.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "¥ë¡¼¥ë¤ÎɬÍ×¾ò·ï `%s' ¤ò»î¤·¤Þ¤¹.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr "°ÅÌÛ¤ÎɬÍ×¾ò·ï `%s' ¤ò»î¤·¤Þ¤¹.\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "VPATH `%2$s' ¤È¤·¤ÆɬÍ×¾ò·ï `%1$s' ¤ò¸«¤Ä¤±¤Þ¤·¤¿\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Ãæ´Ö¥Õ¥¡¥¤¥ë `%s' ¤Î¥ë¡¼¥ë¤òõ¤·¤Þ¤¹.\n"
 
-#: job.c:335
-#, fuzzy
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (°ì»þ¥Õ¥¡¥¤¥ë)"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] ¥¨¥é¡¼ 0x%x (̵»ë¤µ¤ì¤Þ¤·¤¿)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (¥³¥¢¥À¥ó¥×¤·¤Þ¤·¤¿)"
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] ¥¨¥é¡¼ 0x%x"
+#: job.c:487
+msgid " (ignored)"
+msgstr " (̵»ë¤µ¤ì¤Þ¤·¤¿)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] ¥¨¥é¡¼ %d (̵»ë¤µ¤ì¤Þ¤·¤¿)"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (¥Ó¥ë¥È¥¤¥ó):"
 
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Î¤¿¤á¤Î¥ì¥·¥Ô¤òÃÖ¤­´¹¤¨¤Þ¤¹"
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] ¥¨¥é¡¼ 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] ¥¨¥é¡¼ %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (¥³¥¢¥À¥ó¥×¤·¤Þ¤·¤¿)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Ì¤´°Î»¤Î¥¸¥ç¥Ö¤òÂԤäƤ¤¤Þ¤¹...."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "À¸Â¸»Ò¥×¥í¥»¥¹ 0x%08lx (%s) PID %ld %s\n"
+msgstr "À¸Â¸»Ò¥×¥í¥»¥¹ %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (¥ê¥â¡¼¥È)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "¼º¤Ã¤¿»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
+msgstr "¼ºÇÔ¤·¤¿»Ò¥×¥í¥»¥¹ %p PID %s %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "À®¸ù¤·¤¿»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
+msgstr "À®¸ù¤·¤¿»Ò¥×¥í¥»¥¹ %p PID %s %s ¤ò²ó¼ý¤·¤Þ¤¹\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤òÊÒÉÕ¤±¤Þ¤¹\n"
+msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤ò¾Ãµî¤·¤Þ¤¹\n"
 
-#: job.c:861
+#: job.c:843
 #, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤ò¾Ãµî¤·¤Þ¤¹\n"
+
+#: job.c:949
+#, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "¥Á¥§¥¤¥ó¤«¤é»Ò¥×¥í¥»¥¹ 0x%08lx PID %ld%s ¤òºï½ü¤·¤Þ¤¹.\n"
+msgstr "¥Á¥§¥¤¥ó¤«¤é»Ò¥×¥í¥»¥¹ %p PID %s%s ¤òºï½ü¤·¤Þ¤¹.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "¥¸¥ç¥Ö¥µ¡¼¥Ð¤Ø¤Î write"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "»Ò¥×¥í¥»¥¹ 0x%08lx (%s) ¤Î°õ¤ò²òÊü¤·¤Þ¤·¤¿.\n"
+msgstr "»Ò¥×¥í¥»¥¹ %p (%s) ¤Î°õ¤ò²òÊü¤·¤Þ¤·¤¿.\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+#: job.c:1023
+msgid "write jobserver"
+msgstr "¥¸¥ç¥Ö¥µ¡¼¥Ð¤Ø¤Î write"
+
+#: job.c:1612 job.c:2332
+#, 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:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -625,108 +713,169 @@ msgstr ""
 "\n"
 "µ¯Æ°¤Î¼ºÇԤǠ%d ¸Ä¤Î°ú¿ô¤¬¥«¥¦¥ó¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
-msgstr "¥Á¥§¥¤¥ó¤Ë»Ò¥×¥í¥»¥¹ 0x%08lx (%s) PID %ld%s ¤ò¼è¤ê¹þ¤ß¤Þ¤·¤¿.\n"
+msgstr "¥Á¥§¥¤¥ó¤Ë»Ò¥×¥í¥»¥¹ %p (%s) PID %s%s ¤ò¼è¤ê¹þ¤ß¤Þ¤·¤¿.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "»Ò¥×¥í¥»¥¹ 0x%08lx (%s) ¤Ë°õ¤¬¤Ä¤±¤é¤ì¤Þ¤·¤¿.\n"
+msgstr "»Ò¥×¥í¥»¥¹ %p (%s) ¤Ë°õ¤ò¤Ä¤±¤Þ¤·¤¿.\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "¥¸¥ç¥Ö¤Î¥Ñ¥¤¥×¤Î read"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: ½ñ¸Ë `%s' ¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤òºÆ make ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó"
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%1$s`%3$s' ¤ËɬÍפʥ¿¡¼¥²¥Ã¥È `%2$s' ¤ò make ¤¹¤ë¥ë¡¼¥ë¤¬¤¢¤ê¤Þ¤»¤ó%4$s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "¤³¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¥·¥¹¥Æ¥àÉé²ÙÀ©¸Â¤ò²Ã¤¨¤é¤ì¤Þ¤»¤ó"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "¥·¥¹¥Æ¥àÉé²ÙÀ©¸Â¤Î²Ý¤¹¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: "
+msgstr "¥·¥¹¥Æ¥àÉé²ÙÀ©¸Â¤ò²Ý¤¹¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò»È¤¤¿Ô¤¯¤·¤Þ¤·¤¿: É¸½àÆþÎϤòÊ£À½¤Ç¤­¤Þ¤»¤ó\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò»È¤¤¿Ô¤¯¤·¤Þ¤·¤¿: É¸½à½ÐÎϤòÊ£À½¤Ç¤­¤Þ¤»¤ó\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò»È¤¤¿Ô¤¯¤·¤Þ¤·¤¿: É¸½àÆþÎϤòÊ£À½¤Ç¤­¤Þ¤»¤ó\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "ɸ½àÆþÎϤòÉü¸µ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "ɸ½à½ÐÎϤòÉü¸µ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "ɸ½àÆþÎϤòÉü¸µ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: job.c:2365
+#, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
-msgstr "make ¤Ï pid %d ¤Î»Ò¥×¥í¥»¥¹¤ò²ó¼ý¤·, pid %d ¤òÂÔ¤Á³¤±¤Þ¤¹\n"
+msgstr "make ¤Ï pid %s ¤Î»Ò¥×¥í¥»¥¹¤ò²ó¼ý¤·, pid %s ¤òÂÔ¤Á³¤±¤Þ¤¹\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: ¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ¥·¥§¥ë¥×¥í¥°¥é¥à¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe:´Ä¶­ÀßÄê¤Î¤¿¤á¤Î¥á¥â¥ê¤ò»È¤¤¿Ô¤¯¤¹¤«¤â¤·¤ì¤Þ¤»¤ó"
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿ (Á°¤Ï `%s', º£¤Ï `%s')"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL ¤¬Êѹ¹¤µ¤ì¤Þ¤·¤¿ (Á°¤Ï `%s', º£¤Ï `%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "°ì»þŪ¤Ê¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤·¤Þ¤¹\n"
 
-#: job.c:2963
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ :%s\n"
+"\t%s\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ :%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (%d ¹ÔÌÜ) ÉÔÀµ¤Ê¥·¥§¥ë¥³¥ó¥Æ¥­¥¹¥È (!unixy && !batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "ÊÂÎ󥸥ç¥Ö (-j) ¤Ï¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "¥ª¥×¥·¥ç¥ó:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      ¸ß´¹À­¤Î¤¿¤á¤Î¤â¤Î¤Ç, Ìµ»ë¤µ¤ì¤ë.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Ìµ¾ò·ï¤ËÁ´¥¿¡¼¥²¥Ã¥È¤ò make ¤¹¤ë.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -735,16 +884,16 @@ msgstr ""
 "                              make ³«»ÏÁ°¤Ë¥Ç¥£¥ì¥¯¥È¥ê DIRECTORY ¤Ø°ÜÆ°¤¹"
 "¤ë.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          ¥Ç¥Ð¥Ã¥°¾ðÊó¤òÂçÎ̤Ëɽ¼¨¤¹¤ë.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "  --debug[=FLAGS]             ÍÍ¡¹¤Ê¥¿¥¤¥×¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -752,12 +901,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              ´Ä¶­ÊÑ¿ô¤¬ makefile Ãæ¤Îµ­½Ò¤ËÍ¥À褹¤ë\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
-msgstr ""
+msgstr "  --eval=STRING               STRING ¤ò makefile ¤Îʸ¤È¤·¤Æɾ²Á¤¹¤ë.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -765,16 +914,15 @@ msgstr ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              FILE ¤ò makefile ¤È¤·¤ÆÆɤ߹þ¤à\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  ¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         ¥³¥Þ¥ó¥É¤«¤éÊÖ¤µ¤ì¤¿¥¨¥é¡¼¤ò̵»ë¤¹¤ë.\n"
+msgstr "  -i, --ignore-errors         ¥ì¥·¥Ô¤«¤éÊ֤ä¿¥¨¥é¡¼¤ò̵»ë¤¹¤ë.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -784,7 +932,7 @@ msgstr ""
 "                              ¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë makefile ¤òõº÷¤¹¤ë "
 "DIRECTORY.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -792,14 +940,14 @@ msgstr ""
 "  -j [N], --jobs[=N]          °ìÅ٤ˠN ¸Ä¤Þ¤Ç¤Î¥¸¥ç¥Ö¤òµö²Ä; Ìµ°ú¿ô¤À¤È¥¸¥ç¥Ö"
 "¿ôÀ©¸Â¤Ê¤·.\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            ¤¢¤ë¥¿¡¼¥²¥Ã¥È¤¬ make ¤Ç¤­¤Ê¤¯¤Æ¤â¼Â¹Ô¤ò³¤±"
 "¤ë.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -809,23 +957,24 @@ msgstr ""
 "                              Éé²Ù ¤¬ N Ì¤Ëþ¤Ç¤Ê¤¤¸Â¤êÊ£¿ô¤Î¥¸¥ç¥Ö¤ò³«»Ï¤·¤Ê"
 "¤¤.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤È¥¿¡¼¥²¥Ã¥È¤ÎÃæ¤Ç°ìÈÖ¿·¤·¤¤ "
+"mtime ¤ò»È¤¦.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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"
-"                              ¥³¥Þ¥ó¥É¤ò¼ÂºÝ¤Ë¼Â¹Ô¤·¤Ê¤¤; É½¼¨¤¹¤ë¤Î¤ß.\n"
+"                              ¥ì¥·¥Ô¤ò¼ÂºÝ¤Ë¼Â¹Ô¤·¤Ê¤¤; É½¼¨¤¹¤ë¤Î¤ß.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -835,33 +984,37 @@ msgstr ""
 "                              FILE ¤ò¤È¤Æ¤â¸Å¤¤¤â¤Î¤È¸«¤Ê¤·¤Æ, ºÆ make ¤·¤Ê"
 "¤¤.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       make ¤ÎÆâÉô¥Ç¡¼¥¿¥Ù¡¼¥¹¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"  -q, --question              ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Ê¤¤; ¹¹¿·ºÑ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò½ª"
-"λ¥¹¥Æ¡¼¥¿¥¹¤ÇÄÌÃÎ.\n"
+"  -q, --question              ¥ì¥·¥Ô¤ò¼Â¹Ô¤·¤Ê¤¤; ¹¹¿·ºÑ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò½ªÎ»"
+"¥¹¥Æ¡¼¥¿¥¹¤ÇÄÌÃÎ.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "  -r, --no-builtin-rules      ¥Ó¥ë¥È¥¤¥ó¤Î°ÅÌۥ롼¥ë¤ò̵¸ú¤Ë¤¹¤ë.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "  -R, --no-builtin-variables  ¥Ó¥ë¥È¥¤¥ó¤ÎÊÑ¿ôÀßÄê¤ò̵¸ú¤Ë¤¹¤ë.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       ¥³¥Þ¥ó¥Éɽ¼¨¤ò¥¨¥³¡¼¤·¤Ê¤¤.\n"
+msgstr "  -s, --silent, --quiet       ¥ì¥·¥Ô¤òɽ¼¨¤·¤Ê¤¤.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -869,22 +1022,27 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              -k ¥ª¥×¥·¥ç¥ó¤ò¥ª¥Õ¤Ë¤¹¤ë.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 ¥¿¡¼¥²¥Ã¥È¤òºÆ make ¤¹¤ëÂå¤ï¤ê¤Ë¥¿¥Ã¥Á¤¹¤ë.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -d                          ¥Ç¥Ð¥Ã¥°¾ðÊó¤òÂçÎ̤Ëɽ¼¨¤¹¤ë.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               make ¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤òɽ¼¨¤¹¤ë.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -892,7 +1050,7 @@ msgstr ""
 "  --no-print-directory        -w ¤ò¥ª¥Õ¤Ë¤¹¤ë. °ÅÌÛ¤ËÍ­¸ú¤Ê¾ì¹ç¤Ç¤â¥ª¥Õ¤Ë¤¹"
 "¤ë.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -900,29 +1058,39 @@ msgstr ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              FILE ¤ò¤¤¤Ä¤Ç¤âºÇ¿·¤È¤·¤Æ¸«¤Ê¤¹.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 "  --warn-undefined-variables  Ì¤ÄêµÁ¤ÎÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿¤È¤­¤Ë·Ù¹ð¤òȯ¤¹¤ë.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "¶õ¤Îʸ»úÎó¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ¤Ï̵¸ú¤Ç¤¹"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "ÉÔÌÀ¤Ê¥Ç¥Ð¥Ã¥°¥ì¥Ù¥ë»ØÄê `%s'"
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "ÆâÉô¥¨¥é¡¼: Ê£¿ô¤Î --jobserver-fds ¥ª¥×¥·¥ç¥ó"
+
+#: main.c:848
+#, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr "%s: ³ä¤ê¹þ¤ß/Îã³°¤òÊ᪤·¤Þ¤·¤¿ (code = 0x%x, addr = 0x%x)\n"
+msgstr "%s: ³ä¤ê¹þ¤ß/Îã³°¤òÊ᪤·¤Þ¤·¤¿ (code = 0x%lx, addr = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -931,165 +1099,188 @@ msgid ""
 "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:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ %x ¤Ç¤Î½ñ¤­¹þ¤ßÁàºî\n"
+msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ 0x%p ¤Ç¤Î½ñ¤­¹þ¤ßÁàºî\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ %x ¤Ç¤ÎÆɤ߹þ¤ßÁàºî\n"
+msgstr "¥¢¥¯¥»¥¹Êݸî°ãÈ¿: ¥¢¥É¥ì¥¹ 0x%p ¤Ç¤ÎÆɤ߹þ¤ßÁàºî\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell ¤Ï default_shell = %s ¤ËÀßÄꤷ¤Þ¤¹\n"
+msgstr "find_and_set_shell() ¤Ï default_shell = %s ¤ËÀßÄꤷ¤Þ¤¹\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, c-format
 msgid "find_and_set_shell() path search set default_shell = %s\n"
-msgstr "find_and_set_shell ¥Ñ¥¹Ãµº÷¤Ç default_shell = %s ¤Ë¥»¥Ã¥È¤·¤Þ¤·¤¿\n"
+msgstr "find_and_set_shell() ¥Ñ¥¹Ãµº÷¤Ç default_shell = %s ¤Ë¥»¥Ã¥È¤·¤Þ¤·¤¿\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s ¤Ï 30 ÉôÖÄä»ß¤·¤Þ¤¹..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) ¤¬½ª¤ï¤ê¤Þ¤·¤¿. Â³¤±¤Þ¤¹.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "ɸ½àÆþÎϤ«¤é¤Î makefile ¤¬Æó²ó»ØÄꤵ¤ì¤Þ¤·¤¿."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (°ì»þ¥Õ¥¡¥¤¥ë)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (°ì»þ¥Õ¥¡¥¤¥ë)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "ÊÂÎ󥸥ç¥Ö (-j) ¤Ï¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó."
-
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "ñ°ì¥¸¥ç¥Ö (-j1) ¥â¡¼¥É¤Ë¥ê¥»¥Ã¥È¤·¤Þ¤¹."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "ÆâÉô¥¨¥é¡¼: Ê£¿ô¤Î --jobserver-fds ¥ª¥×¥·¥ç¥ó"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "jobserver ¥¯¥é¥¤¥¢¥ó¥È (fds %d,%d)\n"
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "ÆâÉô¥¨¥é¡¼: Ìµ¸ú¤Ê --jobserver-fds Ê¸»úÎó `%s'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "jobserver ¥¯¥é¥¤¥¢¥ó¥È (fds %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "·Ù¹ð: Éû¼¡ make ¤Ç -jN ¤ò¶¯À©»ØÄꤷ¤Þ¤·¤¿: jobserver ¥â¡¼¥É¤ò̵¸ú¤Ë¤·¤Þ¤¹."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+"·Ù¹ð: jobserver ¤¬ÍøÍÑÉÔ²Ä: º£²ó¤Ï -j1 ¤ò»È¤¤¤Þ¤¹. ¿Æ make ¥ë¡¼¥ë¤Ë `+' ¤òÄÉ"
+"²Ã¤·¤Þ¤·¤ç¤¦."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "ɸ½àÆþÎϤ«¤é¤Î makefile ¤¬Æó²ó»ØÄꤵ¤ì¤Þ¤·¤¿."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (°ì»þ¥Õ¥¡¥¤¥ë)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (°ì»þ¥Õ¥¡¥¤¥ë)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "ÊÂÎ󥸥ç¥Ö (-j) ¤Ï¤³¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "ñ°ì¥¸¥ç¥Ö (-j1) ¥â¡¼¥É¤Ë¥ê¥»¥Ã¥È¤·¤Þ¤¹."
+
+#: main.c:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "jobserver ¥¯¥é¥¤¥¢¥ó¥È (fds %d,%d)\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 msgstr ""
-"·Ù¹ð: jobserver ¤¬ÍøÍÑÉÔ²Ä: -j1 ¤ò»È¤¤, ¿Æ make ¥ë¡¼¥ë¤Ë `+' ¤òÄɲä·¤Þ¤·¤ç¤¦"
 
-#: main.c:1777
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "¥¸¥ç¥Ö¥Ñ¥¤¥×ºîÀ®Ãæ"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "jobserver ¥Ñ¥¤¥×¤Î½é´ü²½"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó: -L ¤Ï̵¸ú¤Ç¤¹."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "makefile ¤Î¹¹¿·Ãæ....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "makefile `%s' ¼«¸ÊºÆµ¢¤Î¤ª¤½¤ì ¡½ ºÆ make ¤·¤Þ¤»¤ó.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "makefile `%s' ¤ÎºÆ make ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë makefile `%s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "makefile `%s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "¸µ¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÌá¤ì¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "ºÆ¼Â¹Ô¤·¤Þ¤¹:"
+msgstr "ºÆ¼Â¹Ô¤·¤Þ¤¹[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (°ì»þ¥Õ¥¡¥¤¥ë): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL ¤¬Æó¤Ä°Ê¾å¤Î¥¿¡¼¥²¥Ã¥È¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "¥¿¡¼¥²¥Ã¥È¤¬»ØÄꤵ¤ì¤Æ¤ª¤é¤º, makefile ¤â¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "¥¿¡¼¥²¥Ã¥È¤¬¤¢¤ê¤Þ¤»¤ó"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "ºÇ½ª¥¿¡¼¥²¥Ã¥È¤ò¹¹¿·Ãæ....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "·Ù¹ð:  »þ¹ï¤Î¤º¤ì¤ò¸¡½Ð. ÉÔ´°Á´¤Ê¥Ó¥ë¥É·ë²Ì¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó] [¥¿¡¼¥²¥Ã¥È] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1098,7 +1289,7 @@ msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1107,36 +1298,32 @@ msgstr ""
 "\n"
 "¤³¤Î¥×¥í¥°¥é¥à¤Ï %s (%s) ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï <bug-make@gnu.org> ¤Þ¤Ç.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "`-%c' ¥ª¥×¥·¥ç¥ó¤ÏÀµ¤ÎÀ°¿ô°ú¿ô¤òÍ׵ᤷ¤Þ¤¹"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "`%s%s' ¥ª¥×¥·¥ç¥ó¤Ï¶õ¤Ç¤Ê¤¤Ê¸»úÎó°ú¿ô¤òÍ׵ᤷ¤Þ¤¹"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "`-%c' ¥ª¥×¥·¥ç¥ó¤ÏÀµ¤ÎÀ°¿ô°ú¿ô¤òÍ׵ᤷ¤Þ¤¹"
 
-#: main.c:3054
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"¤³¤Î¥×¥í¥°¥é¥à¤Ï %s ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
+msgstr "%s¤³¤Î¥×¥í¥°¥é¥à¤Ï %s ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"¤³¤Î¥×¥í¥°¥é¥à¤Ï %s (%s) ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
+msgstr "%s¤³¤Î¥×¥í¥°¥é¥à¤Ï %s (%s) ÍѤ˥ӥë¥É¤µ¤ì¤Þ¤·¤¿\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1144,8 +1331,12 @@ msgid ""
 "%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:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1154,7 +1345,7 @@ msgstr ""
 "\n"
 "# Make ¥Ç¡¼¥¿¥Ù¡¼¥¹½ÐÎÏ %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1163,107 +1354,106 @@ msgstr ""
 "\n"
 "# Make ¥Ç¡¼¥¿¥Ù¡¼¥¹½ªÎ» %s\n"
 
-#: main.c:3237
-#, fuzzy, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹"
-
-#: main.c:3239
-#, fuzzy, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹"
-
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
-
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
-
-#: main.c:3250
-#, fuzzy, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹"
-
-#: main.c:3253
-#, fuzzy, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹"
-
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
-
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
-
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ".  Ãæ»ß.\n"
-
-#: misc.c:337
+#: misc.c:201
 #, c-format
 msgid "Unknown error %d"
 msgstr "̤ÃΤΥ¨¥é¡¼ %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
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "²¾ÁÛ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
 
-#: misc.c:708
+#: misc.c:522
 #, c-format
 msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "%s: ¥æ¡¼¥¶ %lu (¼Â¸ú %lu), ¥°¥ë¡¼¥× %lu (¼Â¸ú %lu)\n"
 
-#: misc.c:729
+#: misc.c:543
 msgid "Initialized access"
 msgstr "¥¢¥¯¥»¥¹¸¢¸Â¤ò½é´ü²½"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "¥æ¡¼¥¶¥¢¥¯¥»¥¹"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
 msgstr "make ¥¢¥¯¥»¥¹"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "»Ò¥×¥í¥»¥¹¥¢¥¯¥»¥¹"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹\n"
+
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤ËÆþ¤ê¤Þ¤¹\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê(¥Ç¥£¥ì¥¯¥È¥ê̾ÉÔÌÀ)¤«¤é½Ð¤Þ¤¹\n"
+
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤ËÆþ¤ê¤Þ¤¹\n"
+
+#: output.c:146
 #, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: ¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤«¤é½Ð¤Þ¤¹\n"
+
+#: output.c:515
+#, c-format
 msgid "write error: %s"
-msgstr "%s ¤Ø¥¨¥é¡¼¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼: %s"
 
-#: misc.c:956
-#, fuzzy
+#: output.c:517
 msgid "write error"
-msgstr "¥¸¥ç¥Ö¥µ¡¼¥Ð¤Ø¤Î write"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼"
 
-#: read.c:179
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Ãæ»ß.\n"
+
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "makefile ¤òÆɤ߹þ¤ß¤Þ¤¹...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "makefile `%s' ¤ÎÆɤ߹þ¤ßÃæ"
 
 #: read.c:335
@@ -1286,329 +1476,344 @@ msgstr " (
 msgid " (no ~ expansion)"
 msgstr " (~ ¤ÎŸ³«¤Ê¤·)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "¾ò·ïÉô¤Îʸˡ¤¬Ìµ¸ú¤Ç¤¹"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "ºÇ½é¤Î¥¿¡¼¥²¥Ã¥È¤è¤êÁ°¤Ë¥³¥Þ¥ó¥É¤òµ¯Æ°"
+msgstr "ºÇ½é¤Î¥¿¡¼¥²¥Ã¥È¤è¤êÁ°¤Ë¥ì¥·¥Ô¤¬¤¢¤ê¤Þ¤¹"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "¥³¥Þ¥ó¥É¤è¤êÁ°¤Ç¥ë¡¼¥ë¤¬»Ø¼¨¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+msgstr "¥ì¥·¥Ô¤ÎÁ°¤Î¥ë¡¼¥ë¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "ʬΥµ­¹æ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (8 ¸Ä¤Î¶õÇò¤Ç¤·¤¿¤¬, TAB ¤Î¤Ä¤â¤ê¤Ç¤·¤¿¤«?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò·ç¤¤¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "Ê£¿ô¤Î¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤Ç¤¹"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤¬ `%%' ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "`endif' ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "¶õ¤ÎÊÑ¿ô̾"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "`endef' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
+msgid "extraneous text after 'define' directive"
+msgstr "`define' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "`endef' ¤ò·ç¤¤¤Æ¤ª¤ê, `define' ¤¬½ªÎ»¤µ¤ì¤Þ¤»¤ó"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "`endef' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "`%s' µ¿»÷Ì¿Îá¤Î¸å¤í¤Ë̵´Ø·¸¤Êʸ»úÎ󤬤¢¤ê¤Þ¤¹"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "̵´Ø·¸¤Ê `%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "°ì¤Ä¤Î¾ò·ïÉô¤Ë¤Ä¤­°ì¤Ä¤·¤« `else' ¤ò»È¤¨¤Þ¤»¤ó"
 
-#: read.c:1797
-#, fuzzy
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "¥¿¡¼¥²¥Ã¥ÈËè¤ÎÊÑ¿ôÄêµÁ¤¬°Û¾ï¤Ç¤¹"
+msgstr "¥¿¡¼¥²¥Ã¥ÈÆÃÍ­¤ÎÊÑ¿ôÄêµÁ¤¬°Û¾ï¤Ç¤¹"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr ""
+msgstr "ɬÍ×¾ò·ï¤ò¥ì¥·¥ÔÆâ¤ÇÄêµÁ¤Ç¤­¤Þ¤»¤ó"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "°ÅÌۥ롼¥ë¤ÈÀÅŪ¥Ñ¥¿¡¼¥ó¥ë¡¼¥ë¤¬º®¤¶¤ê¤Þ¤·¤¿"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "°ÅÌۥ롼¥ë¤ÈÄ̾ï¥ë¡¼¥ë¤¬º®¤¶¤ê¤Þ¤·¤¿"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥¿¡¼¥²¥Ã¥È¥Ñ¥¿¡¼¥ó¤È°ìÃפ·¤Þ¤»¤ó"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤¬ : ¤È :: ¹àÌܤÎξÊý¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "Ʊ°ì¥ë¡¼¥ëÆâ¤Ç¥¿¡¼¥²¥Ã¥È `%s' ¤¬Ê£¿ô²óÍ¿¤¨¤é¤ì¤Þ¤·¤¿."
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Ø¤Î¥³¥Þ¥ó¥É¤òÃÖ¤­´¹¤¨¤Þ¤¹"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Î¤¿¤á¤Î¥ì¥·¥Ô¤òÃÖ¤­´¹¤¨¤Þ¤¹"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Ø¤Î¸Å¤¤¥³¥Þ¥ó¥É¤Ï̵»ë¤µ¤ì¤Þ¤¹"
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "·Ù¹ð: ¥¿¡¼¥²¥Ã¥È `%s' ¤Î¤¿¤á¤Î¸Å¤¤¥ì¥·¥Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "·Ù¹ð: NUL Ê¸»ú¤¬¤¢¤ê¤Þ¤¹; ¹Ô¤Î»Ä¤ê¤Ï̵»ë¤µ¤ì¤Þ¤¹"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "`%s' ¤ËÂФ·¤Æ¹Ô¤¦¤Ù¤­»ö¤Ï¤¢¤ê¤Þ¤»¤ó."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
-msgstr "`%s' ¤Ï¹¹¿·ºÑ¤ß¤Ç¤¹"
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
+msgstr "`%s' ¤Ï¹¹¿·ºÑ¤ß¤Ç¤¹."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òÀ°Íý¤·¤Þ¤¹.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%s¥¿¡¼¥²¥Ã¥È `%s' ¤ò make ¤¹¤ë¥ë¡¼¥ë¤¬¤¢¤ê¤Þ¤»¤ó%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤Î¸¡Æ¤¤ò¹Ô¤¤¤Þ¤¹.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "ºÇ¶á»î¤·¤Æ¹¹¿·¤Ë¼ºÇÔ¤·¤¿¥Õ¥¡¥¤¥ë `%s'.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ï¸¡Æ¤ºÑ¤ß¤Ç¤¹.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "¤Þ¤À¥Õ¥¡¥¤¥ë `%s' ¤Î¹¹¿·Ãæ¤Ç¤¹.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Î¹¹¿·¤¬½ªÎ»¤·¤Þ¤·¤¿.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "¥Õ¥¡¥¤¥ë `%s' ¤¬Â¸ºß¤·¤Þ¤»¤ó.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** ·Ù¹ð: .LOW_RESOLUTION_TIME ¥Õ¥¡¥¤¥ë `%s' ¤¬¹â²òÁüÅÙ¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò»ý¤Ã¤Æ"
 "¤¤¤Þ¤¹"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤ò¸«¤Ä¤±¤Þ¤·¤¿.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "`%s' ¤Î¤¿¤á¤Î°ÅÌۥ롼¥ë¤¬¤¢¤ê¤Þ¤»¤ó.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "`%s' ÍѤΥǥե©¥ë¥È¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "`%s' ÍѤΥǥե©¥ë¥È¥ì¥·¥Ô¤ò»ÈÍѤ·¤Þ¤¹.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "½Û´Ä %s <- %s °Í¸´Ø·¸¤¬ÇË´þ¤µ¤ì¤Þ¤·¤¿."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎɬÍ×¾ò·ï¤òËþ¤¿¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "`%s' ¤ÎɬÍ×¾ò·ï¤ò make ¤·¤Þ¤¹.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤òÄü¤á¤Þ¤¹.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥¨¥é¡¼¤Ë¤è¤êºÆ make ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤Ë¤Ä¤¤¤Æ½çÈÖÄ̤ê¤Î¤ß¹Ô¤¤¤Þ¤¹.\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%2$s' ¤ÎɬÍ×¾ò·ï `%1$s' ¤¬Â¸ºß¤·¤Þ¤»¤ó.\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤è¤ê¤â¿·¤·¤¤.\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "ɬÍ×¾ò·ï `%s' ¤Ï¥¿¡¼¥²¥Ã¥È `%s' ¤è¤ê¤â¸Å¤¤.\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤Ï¥À¥Ö¥ë¥³¥í¥ó¤Ç, ¤«¤ÄɬÍ×¾ò·ï¤ò»ý¤¿¤Ê¤¤.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe 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:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "akways-make ¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤ë¤Î¤Ç `%s' ¤ò make ¤·¤Þ¤¹.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "always-make ¥Õ¥é¥°¤¬¤¿¤Ã¤Æ¤¤¤ë¤Î¤Ç `%s' ¤ò make ¤·¤Þ¤¹.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤òºÆ make ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; VPATH Ì¾ `%s' ¤ò»ÈÍѤ·¤Þ¤¹"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤ÎºÆ make ¤¬É¬ÍפǤ¹.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  VPATH Ì¾ `%s' ¤ò̵»ë¤·¤Þ¤¹.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "`%s' ¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr "`%s' ¤Î¥ì¥·¥Ô¤ò¼Â¹ÔÃæ¤Ç¤¹.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎºÆ make ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤ÎºÆ make ¤ËÀ®¸ù¤·¤Þ¤·¤¿.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "¥¿¡¼¥²¥Ã¥È¥Õ¥¡¥¤¥ë `%s' ¤Ï -q ¥ª¥×¥·¥ç¥óÉդǤκƠmake ¤¬É¬ÍפǤ¹.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "·Ù¹ð: ¥Õ¥¡¥¤¥ë `%s' ¤Î½¤Àµ»þ¹ï¤¬Ì¤Íè¤Î»þ¹ï¤Ç¤¹"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
-msgstr "·Ù¹ð: ¥Õ¥¡¥¤¥ë `%s' ¤Î½¤Àµ»þ¹ï¤¬ %.2g ÉÃʬ̤Íè¤Î»þ¹ï¤Ç¤¹"
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "·Ù¹ð: ¥Õ¥¡¥¤¥ë `%s' ¤Î½¤Àµ»þ¹ï %s ¤Ï̤Íè¤Î¤â¤Î¤Ç¤¹"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS Í×ÁÇ `%s' ¤¬¥Ñ¥¿¡¼¥ó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customs ¤¬¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Æ¤¯¤ì¤Þ¤»¤ó: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1616,7 +1821,7 @@ msgstr ""
 "\n"
 "# °ÅÌۥ롼¥ë"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1624,7 +1829,7 @@ msgstr ""
 "\n"
 "# °ÅÌۥ롼¥ë¤Ê¤·."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1633,242 +1838,264 @@ msgstr ""
 "\n"
 "# %u ¸Ä¤Î°ÅÌۥ롼¥ë, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " °Ê¾å."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "¥Ð¥°: num_pattern_rules ¤¬´Ö°ã¤Ã¤Æ¤¤¤ë!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "̤ÃΤΥ·¥°¥Ê¥ë"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "¥Ï¥ó¥°¥¢¥Ã¥×"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "³ä¤ê¹þ¤ß"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "½ªÎ»"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "ÉÔÀµ¤Ê¥Ï¡¼¥É¥¦¥§¥¢Ì¿Îá"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "¥È¥ì¡¼¥¹/¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¥È¥é¥Ã¥×"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Abort ¤·¤Þ¤·¤¿"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT ¥È¥é¥Ã¥×"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT ¥È¥é¥Ã¥×"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "ÉâÆ°¾®¿ôÅÀÎã³°"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Kill ¤µ¤ì¤Þ¤·¤¿"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "¥Ð¥¹¥¨¥é¡¼"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "¥á¥â¥ê°ãÈ¿"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "ÉÔÀµ¤Ê¥·¥¹¥Æ¥à¥³¡¼¥ë"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Æɤ߼ê¤Î¤Ê¤¤¥Ñ¥¤¥×¤Ø¤Î½ñ¤­¹þ¤ß"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "¥¢¥é¡¼¥à¥¯¥í¥Ã¥¯"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "¶¯À©½ªÎ»"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "¥æ¡¼¥¶ÄêµÁ¥·¥°¥Ê¥ë 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "¥æ¡¼¥¶ÄêµÁ¥·¥°¥Ê¥ë 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "»Ò¥×¥í¥»¥¹½ªÎ»"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "ÅŸ»¾ã³²"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "°ì»þÄä»ß"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "°ì»þÄä»ß (tty ÆþÎÏ)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "°ì»þÄä»ß (tty ½ÐÎÏ)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "°ì»þÄä»ß (¥·¥°¥Ê¥ë)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU »þ´Ö¤¬À©¸Â¤ò±Û¤¨¤Þ¤·¤¿"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "¥Õ¥¡¥¤¥ë¥µ¥¤¥ºÀ©¸Â¤ò±Û¤¨¤Þ¤·¤¿"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "²¾ÁÛ¥¿¥¤¥ÞËþλ"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "¥×¥í¥Õ¥¡¥¤¥ë¥¿¥¤¥ÞËþλ"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "¥¦¥£¥ó¥É¥¦¥µ¥¤¥ºÊѹ¹"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "ºÆ³«¤µ¤ì¤Þ¤·¤¿"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "¶ÛµÞ I/O ¾ò·ï"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "ÈóƱ´ü I/O ²ÄǽÀ­"
+msgstr "Æþ½ÐÎϲÄǽ"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "¥ê¥½¡¼¥¹¤¬¼º¤ï¤ì¤Þ¤·¤¿"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "´í¸±¥·¥°¥Ê¥ë"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "¾ðÊóÍ×µá"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "ÉâÆ°¾®¿ôÅÀ¥³¥×¥í¥»¥Ã¥µ¤¬ÍøÍÑÉÔǽ"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
-#, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
+"%s »ÈÍѤµ¤ì¤¿ strcache : ¹ç·× = %d (%d) / ºÇÂç = %d / ºÇ¾® = %d / Ê¿¶Ñ = %d\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
-#, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
+"%s »ÈÍѤµ¤ì¤¿ strcache : ¹ç·× = %d (%d) / ºÇÂç = %d / ºÇ¾® = %d / Ê¿¶Ñ = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s Ì¤»ÈÍѤΡ¡ strcache: ¹ç·× = %d (%d) / ºÇÂç = %d / ºÇ¾® = %d / Ê¿¶Ñ = %d\n"
+
+#: strcache.c:287
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s # strcache Æâ¤Î %d ¸Ä¤Îʸ»úÎó¤Î¤¦¤Á: Ãµº÷ = %lu / ¥Ò¥Ã¥È = %lu\n"
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# ¥Õ¥¡¥¤¥ë¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "¼«Æ°ÊÑ¿ô"
+
+#: variable.c:1610
 msgid "default"
 msgstr "¥Ç¥Õ¥©¥ë¥È"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "´Ä¶­ÊÑ¿ô"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile ÊÑ¿ô"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "-e ¥ª¥×¥·¥ç¥ó¤Ç¤Î´Ä¶­ÊÑ¿ô"
+msgstr "-e ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤¿´Ä¶­ÊÑ¿ô"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "¥³¥Þ¥ó¥É¥é¥¤¥óÊÑ¿ô"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "`override' µ¿»÷Ì¿Îá"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "¼«Æ°ÊÑ¿ô"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (`%s', %lu ¹ÔÌܤ«¤é)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (`%s', %lu ¹ÔÌÜ)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# ÊÑ¿ô¥»¥Ã¥È¤Î¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤Î¾õÂÖ:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1876,16 +2103,15 @@ msgstr ""
 "\n"
 "# ÊÑ¿ô\n"
 
-#: variable.c:1627
-#, fuzzy
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# ¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃÍ"
+"# ¥Ñ¥¿¡¼¥ó»ØÄê ÊÑ¿ô ÃÍ"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1893,7 +2119,7 @@ msgstr ""
 "\n"
 "# ¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃͤʤ·."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1902,93 +2128,93 @@ msgstr ""
 "\n"
 "# %u ¸Ä¤Î¥Ñ¥¿¡¼¥ó»ØÄêÊÑ¿ô¤ÎÃÍ"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "·Ù¹ð: Ì¤ÄêµÁ¤ÎÊÑ¿ô `%.*s'"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search ¤¬ %d ¤Ç¼ºÇÔ¤·¤Þ¤·¤¿\n"
+msgstr "sys$search() ¤¬ %d ¤Ç¼ºÇÔ¤·¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "·Ù¹ð: ¶õ¤Î¥ê¥À¥¤¥ì¥¯¥È\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "ÆâÉô¥¨¥é¡¼: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-·Ù¹ð, DCL ¤«¤é¤Î CTRL-Y Áàºî¤òºÆ¤ÓÍ­¸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "¥Ó¥ë¥È¥¤¥ó RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "ÉÔÌÀ¤Ê¥Ó¥ë¥È¥¤¥ó¥³¥Þ¥ó¥É '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "¥¨¥é¡¼, ¶õ¤Î¥³¥Þ¥ó¥É\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s ¤«¤éÆþÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s ¤Ø¥¨¥é¡¼¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "%s ¤Ø½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
+msgstr "½ÐÎϤò %s ¤ØÄɲÃ\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s ¤Ø½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Þ¤·¤¿\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Äɲà%.*s ¤È¸åÊÒÉÕ¤±\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Âå¤ï¤ê¤Ë %s ¤ò¼Â¹Ô¤·¤Þ¤¹\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "spawn ¤Î¥¨¥é¡¼, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1996,37 +2222,67 @@ msgstr ""
 "\n"
 "# VPATH Ãµº÷¥Ñ¥¹\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# `vpath' Ãµº÷¥Ñ¥¹¤Ï¤¢¤ê¤Þ¤»¤ó"
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr "# `vpath' Ãµº÷¥Ñ¥¹¤Ï¤¢¤ê¤Þ¤»¤ó."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u ¸Ä¤Î `vpath' Ãµº÷¥Ñ¥¹\n"
+"# %u ¸Ä¤Î `vpath' Ãµº÷¥Ñ¥¹¤¬¤¢¤ê¤Þ¤¹.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# °ìÈ̤Π(`VPATH' ÊÑ¿ô) Ãµº÷¥Ñ¥¹¤Ê¤·."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# °ìÈ̤Π(`VPATH' ÊÑ¿ô) Ãµº÷¥Ñ¥¹:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  `update_status' ¥á¥ó¥Ð¤Ë̵¸ú¤ÊÃÍ!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] ¥¨¥é¡¼ 0x%x (̵»ë¤µ¤ì¤Þ¤·¤¿)"
+
+#~ msgid "[%s] Error %d (ignored)"
+#~ msgstr "[%s] ¥¨¥é¡¼ %d (̵»ë¤µ¤ì¤Þ¤·¤¿)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "¥ì¥·¥Ô¤ò %s:%lu ¤«¤é¸Æ¤Ó½Ð¤·¤Æ¥¿¡¼¥²¥Ã¥È `%s' ¤ò¹¹¿·¤·¤Þ¤¹.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "¥¿¡¼¥²¥Ã¥È `%s' ¤ò¹¹¿·¤¹¤ë¤¿¤áÆ⢥쥷¥Ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # strcache ¥Ð¥Ã¥Õ¥¡ %d ¤Î¤¦¤Á: (* %d B/¥Ð¥Ã¥Õ¥¡ = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# strcache ¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤ÎÅý·×:\n"
+#~ "# "
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "ʸˡ¥¨¥é¡¼, '\"' Æâ¤Î¤Þ¤Þ¤Ç¤¹\n"
 
@@ -2081,6 +2337,3 @@ msgstr ""
 
 #~ msgid "the `word' function takes a positive index argument"
 #~ msgstr "`word' ´Ø¿ô¤ÏÈóÉé¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹°ú¿ô¤ò¤È¤ê¤Þ¤¹"
-
-#~ msgid " (ignored)"
-#~ msgstr " (̵»ë¤µ¤ì¤Þ¤·¤¿)"
index a00dcfc..bf0cf9c 100644 (file)
Binary files a/po/ko.gmo and b/po/ko.gmo differ
index 939e2a8..256ffb1 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -6,117 +6,123 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU make 3.79.1\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: ko\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=EUC-KR\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "Áö¿øµÇÁö ¾Ê´Â ±â´ÉÀ» »ç¿ëÇÏ·Á°í ÇÔ: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "¾ÆÄ«À̺꠸â¹ö touch´Â VMS¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: ¹®¼­ `%s'°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: `%s'´Â Àû¹ýÇÑ ¹®¼­°¡ ¾Æ´Õ´Ï´Ù"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: ¸â¹ö `%s'°¡ `%s'¿¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr "touch: `%s'¿¡ ´ëÇÏ¿© ar_member_touch¿¡¼­ ½ÇÆР¸®ÅÏ ÄÚµå"
 
-#: arscan.c:69
+#: arscan.c:67
 #, fuzzy, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_moduleÀÌ ¸ðµâÁ¤º¸¸¦ ÃßÃâÇϴ µ¥ ½ÇÆÐ, »óÅ = %d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_controlÀÌ »óÅ = %d·Î(À¸·Î) ½ÇÆР"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "¸â¹ö `%2$s'¸¦ ÂüÁ¶Çϱâ À§ÇØ ¶óÀ̺귯¸® `%1$s'¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "¸â¹ö `%s'%s: %ld¹ÙÀÌÆ®, %ld (%ld) ¿¡¼­.\n"
 
 # À̹̠Àß·ÁÁø À̸§À» Ç¥½ÃÇϸ鼭 À̸§ÀÌ Àß·ÁÁ³À» ¼öµµ ÀÖÀ¸´Ï À¯ÀÇÇ϶ó´Â ¶æ
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (À̸§ÀÌ Àß·Á³ª°¬À» ¼öµµ ÀÖ½À´Ï´Ù)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  ³¯Â¥ %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, ¸ðµå = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** ÁßÁö.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] ¾ÆÄ«À̺꠸â¹ö `%s'´Â °¡Â¥ÀÏ ¼ö ÀÖ½À´Ï´Ù; Áö¿ìÁö ¾Ê½À´Ï´Ù"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** ¾ÆÄ«À̺꠸â¹ö `%s'´Â °¡Â¥ÀÏ ¼ö ÀÖ½À´Ï´Ù; Áö¿ìÁö ¾Ê½À´Ï´Ù"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** ÆÄÀÏ `%s'À»(¸¦) Áö¿ó´Ï´Ù"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  ½ÇÇàÇÒ ¸í·É¾î"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (³»Àå):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (`%s'¿¡¼­, %lu¹ø° ÁÙ):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -124,225 +130,229 @@ msgstr ""
 "\n"
 "# µð·ºÅ丮\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: statÀ» ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (Å° %s, º¯°æ½Ã°¢ %d): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (ÀåÄ¡ %d, ¾ÆÀ̳ëµå [%d,%d,%d]): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (ÀåÄ¡ %ld, ¾ÆÀ̳ëµå %ld): ¿­ ¼ö ¾ø½À´Ï´Ù.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (Å° %s, º¯°æ½Ã°¢ %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (ÀåÄ¡ %d, ¾ÆÀ̳ëµå [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (ÀåÄ¡ %ld, ¾ÆÀ̳ëµå %ld): "
 
 # ¿©±â¼­ No´Â "No files"¶ó°í ¾²ÀδÙ.  ±Ã±ØÀûÀ¸·Î msgid°¡ °íÃÄÁ®¾ß ÇÔ
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "0°³"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " ÆÄÀÏ, "
 
 # ¿©±â¼­ no´Â "no impossibilities"¶ó°í ¾²ÀδÙ.  ±Ã±ØÀûÀ¸·Î msgid°¡ °íÃÄÁ®¾ß ÇÔ
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "0°³"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " ºÒ°¡´É"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " Áö±Ý±îÁö."
 
-#: dir.c:1092
+#: dir.c:1085
 #, fuzzy, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " %u°³ÀÇ µð·ºÅ丮¿¡¼­ ºÒ°¡´É.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Àç±Í º¯¼ö `%s'´Â ÀÚ±â ÀÚ½ÅÀ» ÂüÁ¶ÇÏ°í ÀÖ½À´Ï´Ù (°á±¹)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "Á¾°áµÇÁö ¾ÊÀº º¯¼ö ÂüÁ¶"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "ÆÄÀÏ `%s'ÀÇ %s:%lu¿¡¼­ ¸í·É¾î°¡ ÁöÁ¤µÇ¾ú½À´Ï´Ù,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr "ÆÄÀÏ `%s'¸¦ À§ÇÑ ¸í·ÉÀ» ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀ¸·Î Ã£¾Ò½À´Ï´Ù."
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr "ÇÏÁö¸¸ `%s'´Â ÀÌÁ¦ `%s'¿Í °°Àº ÆÄÀϷΠ°£Áֵ˴ϴÙ."
 
-#: file.c:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr "`%s'¿¡ ´ëÇÑ ¸í·É¾î´Â `%s'¿¡ ´ëÇÑ ¸í·É¾î°¡ ¿ì¼±ÇϹǷΠ¹«½ÃµË´Ï´Ù.."
 
-#: file.c:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "´ÜÀÏ ÄݷР`%s'¸¦ ÀÌÁß ÄݷР`%s'·Î À̸§¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "ÀÌÁß ÄݷР`%s'¸¦ ´ÜÀÏ ÄݷР`%s'·Î À̸§¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Áß°£ ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: file.c:396
+#: file.c:400
 #, fuzzy
 msgid "Removing intermediate files...\n"
 msgstr "*** Áß°£ ÆÄÀÏ `%s'À»(¸¦) ÁÖÀÔ´Ï´Ù"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Å¸ÀÓ½ºÅÆÇÁ°¡ ¹üÀ§¸¦ ¹þ¾î³³´Ï´Ù; %sÀ»(¸¦) ´ëüÇÕ´Ï´Ù"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "ÇöÀ砽ð¢"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Å¸°ÙÀÌ ¾Æ´Ô:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ÇÁ·¹½Ã¾î½º ÆÄÀÏ (.PRECIOUSÀÇ ¼±ÇàÁ¶°Ç)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Æ÷´Ï Å¸°Ù (.PHONYÀÇ ¼±ÇàÁ¶°Ç)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  ¸í·ÉÇà Å¸°Ù."
 
-#: file.c:935
+#: file.c:960
 #, fuzzy
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  ±âº» ¸ÞÀÌÅ©ÆÄÀϠȤÀº MAKEFILES ¸ÞÀÌÅ©ÆÄÀÏ."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# ¹¬½ÃÀû ±ÔÄ¢ ¾øÀ½."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  ¹¬½ÃÀû ±ÔÄ¢ Å½»öÀÌ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  ¹¬½ÃÀû/°íÁ¤ ÆÐÅÏ ½ºÅÛ: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  ÆÄÀÏÀÌ Áß°£´Ü°èÀÇ ¼±ÇàÁ¶°ÇÀÔ´Ï´Ù."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  ´ÙÀ½µµ ¸¸µì´Ï´Ù:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  º¯°æ ½Ã°¢ÀÌ °áÄÚ °Ë»çµÇÁö ¾Ê¾ÒÀ½."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  ÆÄÀÏÀÌ ¸Å¿ì ¿À·¡µÇ¾ú½À´Ï´Ù."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  ¸¶Áö¸· º¯°æ %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  ÆÄÀÏÀÌ °»½ÅµÇ¾ú½À´Ï´Ù."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  ÆÄÀÏÀÌ °»½ÅµÇÁö ¾Ê¾Ò½À´Ï´Ù."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  ÇöÀç ½ÇÇàÁßÀΠ¸í·É (ÀÌ°ÍÀº ¹ö±×ÀÔ´Ï´Ù)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  ÇöÀç ½ÇÇàÁßÀΠÀÇÁ¸¼º (ÀÌ°ÍÀº ¹ö±×ÀÔ´Ï´Ù)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  ¼º°øÀûÀ¸·Î °»½ÅµÊ."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  °»½ÅµÉ ÇÊ¿ä°¡ ÀÖÀ½ (-q ¼³Á¤µÊ)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  °»½Å¿¡ ½ÇÆÐÇÔ."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  `update_status' ¸â¹ö¿¡ °ªÀÌ À߸øµÇ¾ú½À´Ï´Ù!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  `command_status' ¸â¹ö¿¡ °ªÀÌ À߸øµÇ¾ú½À´Ï´Ù!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -350,124 +360,182 @@ msgstr ""
 "\n"
 "# ÆÄÀÏ"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "`word' ÇÔ¼öÀǠù¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "`word' ÇÔ¼öÀǠù¹ø° ÀÎÀڴ 0º¸´Ù Ä¿¾ß ÇÕ´Ï´Ù"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "`wordlist' ÇÔ¼öÀǠù¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "`wordlist' ÇÔ¼öÀÇ µÎ¹ø° ÀÎÀÚ°¡ ¼ýÀÚ°¡ ¾Æ´Õ´Ï´Ù"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): 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:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) ½ÇÆР(e=%d)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, fuzzy, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() ½ÇÆР(e=%d)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() ½ÇÆÐ\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) Áö¿ó´Ï´Ù\n"
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr ""
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr ""
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "ÇÔ¼ö `%2$s'¿¡ ÀÎÀÚ °¹¼ö(%1$d)°¡ ºÎÁ·ÇÕ´Ï´Ù "
 
-#: function.c:2162
+#: function.c:2291
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â ±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù: `%s' ÇÔ¼ö"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "ÇÔ¼ö `%s'¿¡ ´ëÇØ Á¾·áµÇÁö ¾ÊÀº È£Ãâ: `%c'°¡ ºüÁ³À½"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: `%s'´Â ¾Ö¸ÅÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "ÇÔ¼ö `%2$s'¿¡ ÀÎÀÚ °¹¼ö(%1$d)°¡ ºÎÁ·ÇÕ´Ï´Ù "
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "ÇÔ¼ö `%2$s'¿¡ ÀÎÀÚ °¹¼ö(%1$d)°¡ ºÎÁ·ÇÕ´Ï´Ù "
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: `%s'´Â ¾Ö¸ÅÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: `--%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: `%c%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: `%s' ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: À߸øµÈ ¿É¼Ç -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ºÎÀûÀýÇÑ ¿É¼Ç -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ÀÌ ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' ¿É¼ÇÀº ¾Ö¸ÅÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: `-W %s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -488,135 +556,160 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¾ÆÄ«À̺ê¸â¹ö ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "¹¬½ÃÀû ±ÔÄ¢ÀÇ Àç±Í¸¦ ÇÇÇÔ.\n"
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
 # ½ºÅÛstemÀ̶õ ÆÐÅÏ ·ê¿¡¼­ prefix/suffix¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö¸¦ ¸»ÇÑ´Ù.
 # ¿¹¸¦ µé¾î `%.c'¶ó´Â ÆÐÅÏ¿¡ `hello.c'°¡ µé¾î ¸Â¾ÒÀ» °æ¿ì stemÀº `hello'ÀÌ´Ù.
 #: implicit.c:491
-#, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "½ºÅÛ `%.*s'¿¡¼­ºÎÅÍ ÆÐÅÏ ±ÔÄ¢ ½Ãµµ.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "ºÒ°¡´ÉÇÑ ±ÔÄ¢ ¼±ÇàÁ¶°Ç `%s'Àº(´Â) °ÅºÎµË´Ï´Ù.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "ºÒ°¡´ÉÇÑ ¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'Àº(´Â) °ÅºÎµË´Ï´Ù.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "±ÔÄ¢ ¼±ÇàÁ¶°Ç `%s'À»(¸¦) ½ÃµµÇÕ´Ï´Ù.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr "¹¬½ÃÀû ¼±ÇàÁ¶°Ç `%s'À»(¸¦) ½ÃµµÇÕ´Ï´Ù\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "VPATH `%2$s'¿¡¼­ ¼±ÇàÁ¶°Ç `%1$s'À»(¸¦) Ã£¾Ò½À´Ï´Ù\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Áß°£ ÆÄÀÏ `%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£°í ÀÖ½À´Ï´Ù.\n"
 
-#: job.c:335
+#: job.c:361
 #, fuzzy
 msgid "Cannot create a temporary file\n"
 msgstr "fwrite (ÀӽàÆÄÀÏ)"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] ¿À·ù 0x%x (¹«½ÃµÊ)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] ¿À·ù 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (¸Þ¸ð¸® ´ýÇÁµÊ)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] ¿À·ù %d (¹«½ÃµÊ)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (³»Àå):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] ¿À·ù 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] ¿À·ù %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (¸Þ¸ð¸® ´ýÇÁµÊ)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr ""
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ³¡³ªÁö ¾ÊÀº ÀÛ¾÷À» ±â´Ù¸®°í ÀÖ½À´Ï´Ù...."
 
-#: job.c:579
+#: job.c:639
 #, fuzzy, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "»ì¾ÆÀִ ÀڽĠÇÁ·Î¼¼½º 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (¿ø°Ý)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "½ÇÆÐÇÑ ÀڽĠÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) °ÅµÖµéÀÔ´Ï´Ù\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "¼º°øÇÑ ÀڽĠÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) °ÅµÖµéÀÔ´Ï´Ù\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) Áö¿ó´Ï´Ù\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) Áö¿ó´Ï´Ù\n"
+
+#: job.c:949
 #, fuzzy, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "üÀο¡¼­ ÀÚ½ÄÇÁ·Î¼¼½º 0x%08lx PID %ld %sÀ»(¸¦) Áö¿ó´Ï´Ù.\n"
 
-# ??? µð¹ö±ë ¸Þ¼¼Áö
-#: job.c:920
-msgid "write jobserver"
-msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "ÀÚ½ÄÇÁ·Î¼¼½º child 0x%08lx (%s) ¿¡ ÅäÅ«À» ³»¾î ÁÝ´Ï´Ù.\n"
 
-#: job.c:1453 job.c:2094
+# ??? µð¹ö±ë ¸Þ¼¼Áö
+#: job.c:1023
+msgid "write jobserver"
+msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
+
+#: job.c:1612 job.c:2332
 #, fuzzy, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy()°¡ ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇϴ µ¥ ½ÇÆÐÇß½À´Ï´Ù (e=%d)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -625,85 +718,104 @@ msgstr ""
 "\n"
 "½ÇÇà ½ÇÆп¡¼­ %d°³ÀÇ Àμö\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "ÀڽĠÇÁ·Î¼¼½º 0x%08lx (%s)¿¡¼­ ÅäÅ«À» ¹Þ¾Ò½À´Ï´Ù.\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "ÀÛ¾÷ ÆÄÀÌÇÁ Àбâ"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: ¹®¼­ `%s'°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Ÿ°Ù `%s'À»(¸¦) ´Ù½Ã ¸¸µé ÇÊ¿ä°¡ ¾ø½À´Ï´Ù."
+msgid "%s: update target '%s' due to: %s"
+msgstr "%1$s`%3$s'¿¡¼­ ÇÊ¿ä·Î Çϴ  Å¸°Ù `%2$s'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾ø½À´Ï´Ù%4$s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "ÀÌ ¿î¿µ Ã¼Á¦¿¡¼­´Â ºÎÇÏ Á¦ÇÑÀ» °­Á¦ÇÒ ¼ö ¾ø½À´Ï´Ù"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "ºÎÇÏ Á¦ÇÑÀ» °­Á¦ÇÒ ¼ö ¾ø½À´Ï´Ù: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, fuzzy, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 "ÀÚ½ÄÇÁ·Î¼¼½º pid %d¸¦ °ÅµÖµéÀÌ°í, ¾ÆÁ÷ pid %dÀ»(¸¦) ±â´Ù¸®°í ÀÖ½À´Ï´Ù\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: ¸í·ÉÀ» Ã£Áö ¸øÇßÀ½"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ¼Ð ÇÁ·Î±×·¥À» Ã£Áö ¸øÇßÀ½"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELLÀÌ ¹Ù²î¾ú½À´Ï´Ù (°ú°Å `%s', ÇöÀç `%s')"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Àӽà¹èÄ¡ ÆÄÀÏ %sÀ»(¸¦) ¸¸µì´Ï´Ù\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
@@ -711,196 +823,250 @@ msgid ""
 msgstr ""
 
 # ???  µð¹ö±ë ¸Þ¼¼Áö
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (%d¹ø° ÁÙ) À߸øµÈ ½© ÄÁÅؽºÆ® (!unixy && !batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â º´·Ä ÀÛ¾÷(-j)ÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "¿É¼Ç:\n"
 
-#: main.c:304
+#: main.c:313
 #, fuzzy
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "ȣȯ¼ºÀ» À§ÇØ ¹«½ÃµÊ"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:311
+#: main.c:320
 #, fuzzy
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "¿©·¯ °¡Áö µð¹ö±ë Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:313
+#: main.c:322
 #, fuzzy
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "¿©·¯ °¡Áö Á¾·ùÀÇ µð¹ö±ë Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:332
 #, fuzzy
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "ÀÌ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:330
+#: main.c:339
 #, fuzzy
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr "µ¿½Ã¿¡ N°³ÀÇ ÀÛ¾÷À» Çã¿ëÇÕ´Ï´Ù; ÀÎÀÚ°¡ ¾øÀ¸¸é ¹«ÇÑ´ë·Î Çã¿ëÇÕ´Ï´Ù"
 
-#: main.c:332
+#: main.c:341
 #, fuzzy
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "¸î¸î Å¸°ÙÀ» ¸¸µé ¼ö ¾ø´õ¶óµµ °è¼Ó ÁøÇàÇÕ´Ï´Ù"
 
-#: main.c:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 #, fuzzy
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "makeÀÇ ³»ºÎ µ¥ÀÌŸº£À̽º¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr "¸í·ÉÀ» ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù; Á¾·á »óȲÀÌ °»½Å ¿©ºÎ¸¦ ¸»ÇØ ÁÝ´Ï´Ù"
 
-#: main.c:349
+#: main.c:361
 #, fuzzy
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "³»Àå ¹¬½ÃÀû ±ÔÄ¢À» »ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÕ´Ï´Ù"
 
-#: main.c:351
+#: main.c:363
 #, fuzzy
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "³»Àå º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:358
+#: main.c:370
 #, fuzzy
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "Ÿ°ÙÀ» ´Ù½Ã ¸¸µéÁö ¾Ê°í touch¸¸ ÇÕ´Ï´Ù"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+
+#: main.c:374
 #, fuzzy
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "makeÀÇ ¹öÀü ¹øÈ£¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù"
 
-#: main.c:362
+#: main.c:376
 #, fuzzy
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "ÇöÀç µð·ºÅ丮¸¦ Ãâ·ÂÇÕ´Ï´Ù"
 
-#: main.c:364
+#: main.c:378
 #, fuzzy
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "¹¬½ÃÀûÀ¸·Î ÄÑÁ® ÀÖ´õ¶óµµ -w¸¦ ²ü´Ï´Ù"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 #, fuzzy
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr "Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§ °æ°í¸¦ ³À´Ï´Ù"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "ºó ¹®ÀÚ¿­Àº ÆÄÀÏ À̸§À¸·Î ºÎÀûÀýÇÕ´Ï´Ù"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "µð¹ö±ë ´Ü°è ÁöÁ¤ `%s'ÀÌ(°¡) À߸øµÇ¾ú½À´Ï´Ù"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "³»ºÎ ¿À·ù: ¿©·¯ °³ÀÇ -jobserver-fds ¿É¼Ç"
+
+#: main.c:848
 #, fuzzy, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: ÀÎÅÍ·´Æ®/¿¹¿Ü°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù (ÄÚ¤§ = 0x%x, ÁÖ¼Ò = 0x%x)\n"
 
-#: main.c:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -915,204 +1081,226 @@ msgstr ""
 "¿¹¿ÜÇ÷¡±× = %x\n"
 "¿¹¿ÜÁÖ¼Ò = %x\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Á¢±Ù±ÇÇÑ À§¹Ý: ÁÖ¼Ò %x¿¡ ¾²±â\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Á¢±Ù±ÇÇÑ À§¹Ý: ÁÖ¼Ò %x¿¡¼­ Àбâ\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, fuzzy, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shellÀÌ default_shell = %s À¸·Î(·Î) ¼¼ÆÃÇÕ´Ï´Ù.\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%sÀÌ(°¡) 30Ãʵ¿¾È ÀϽàÁßÁöµË´Ï´Ù..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "¿Ï·á sleep(30). °è¼Ó.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Ç¥ÁØÀԷ¿¡¼­ ¹Þ¾ÆµéÀ̴ ¸ÞÀÌÅ©ÆÄÀÏÀÌ µÎ ¹ø ÀÌ»ó ÁöÁ¤µÇ¾ú½À´Ï´Ù."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (ÀӽàÆÄÀÏ)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (ÀӽàÆÄÀÏ)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â º´·Ä ÀÛ¾÷(-j)ÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
-
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "´ÜÀÏ ÀÛ¾÷ (-j1) ¸ðµå·Î µ¹¾Æ°©´Ï´Ù."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "³»ºÎ ¿À·ù: ¿©·¯ °³ÀÇ -jobserver-fds ¿É¼Ç"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "³»ºÎ ¿À·ù: À߸øµÈ -jobserver-fds ¹®ÀÚ¿­ `%s'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "°æ°í: ÆÄ»ýµÈ ¸ÞÀÌÅ©¿¡¼­ -jNÀÌ °­Á¦µÇ¾ú½À´Ï´Ù: ÀÛ¾÷¼­¹ö ¸ðµå¸¦ ²ü´Ï´Ù."
 
 # ???  µð¹ö±ë ¸Þ¼¼Áö
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dup ÀÛ¾÷¼­¹ö"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
 "°æ°í: ÀÛ¾÷¼­¹ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù: -j1À» »ç¿ëÇÕ´Ï´Ù.  ºÎ¸ð ¸ÞÀÌÅ© ±ÔÄ¢¿¡ `"
 "+'¸¦ Ãß°¡ÇÕ´Ï´Ù."
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Ç¥ÁØÀԷ¿¡¼­ ¹Þ¾ÆµéÀ̴ ¸ÞÀÌÅ©ÆÄÀÏÀÌ µÎ ¹ø ÀÌ»ó ÁöÁ¤µÇ¾ú½À´Ï´Ù."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (ÀӽàÆÄÀÏ)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (ÀӽàÆÄÀÏ)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "ÀÌ Ç÷§Æû¿¡¼­´Â º´·Ä ÀÛ¾÷(-j)ÀÌ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "´ÜÀÏ ÀÛ¾÷ (-j1) ¸ðµå·Î µ¹¾Æ°©´Ï´Ù."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "ÀÛ¾÷ ÆÄÀÌÇÁ »ý¼º"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "ÀÛ¾÷¼­¹ö ÆÄÀÌÇÁ ÃʱâÈ­"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ°í ÀÖ½À´Ï´Ù....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'Àº(´Â) ¹Ýº¹ÇÒ ¼ö ÀÖ½À´Ï´Ù; ´Ù½Ã ¸¸µéÁö ¾Ê½À´Ï´Ù.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'À» ´Ù½Ã ¸¸µå´Âµ¥ ½ÇÆÐÇÔ."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "Æ÷ÇԵȠ¸ÞÀÌÅ©ÆÄÀÏ `%s'¸¦ Ã£Áö ¸øÇß½À´Ï´Ù."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'À» Ã£Áö ¸øÇß½À´Ï´Ù"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "¿ø·¡ µð·ºÅ丮·Î µ¹¾Æ°¥ ¼ö ¾ø½À´Ï´Ù."
 
-#: main.c:2102
+#: main.c:2354
 #, fuzzy, c-format
 msgid "Re-executing[%u]:"
 msgstr "Àç½ÇÇà:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (ÀӽàÆÄÀÏ): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Ÿ°ÙÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò°í ¸ÞÀÌÅ©ÆÄÀÏÀÌ ¾ø½À´Ï´Ù"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Ÿ°Ù ¾øÀ½"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "ÃÖÁ¾ Å¸°ÙÀ» °»½ÅÇÕ´Ï´Ù....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "°æ°í:  ½Ã°è°¡ À߸øµÇ¾úÀ½ÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.  ºôµå°¡ ºÒ¿ÏÀüÇÒ ¼ö ÀÖ½À´Ï´Ù."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "»ç¿ë¹ý: %s [¿É¼Ç] [Ÿ°Ù] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2481
+#: main.c:2729
 #, fuzzy, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "\n"
 "¹®Á¦Á¡À» <bug-make@gnu.org>·Î ¾Ë·Á ÁֽʽÿÀ.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "`-%c' ¿É¼ÇÀº ¾çÀÇ ÀûºÐ Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "`-%c' ¿É¼ÇÀº ¾çÀÇ ÀûºÐ Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1121,7 +1309,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1130,7 +1318,7 @@ msgstr ""
 "\n"
 "# ¸ÞÀÌÅ© µ¥ÀÌŸº£À̽º, %s¿¡ Ç¥½Ã"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1139,109 +1327,109 @@ msgstr ""
 "\n"
 "# ¸ÞÀÌÅ© µ¥ÀÌŸ º£À̽º ¸¶Ä§, %s¿¡¼­\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "¾Ë ¼ö ¾ø´Â ¿À·ù %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "°¡»ó ¸Þ¸ð¸®°¡ °í°¥µÊ"
+
+#: misc.c:522
+#, fuzzy, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s Á¢±Ù: »ç¿ëÀÚ %lu (½ÇÁ¦ %lu), ±×·ì %lu (½ÇÁ¦ %lu)\n"
+
+#: misc.c:543
+#, fuzzy
+msgid "Initialized access"
+msgstr "ÃʱâÈ­µÊ"
+
+#: misc.c:622
+msgid "User access"
+msgstr ""
+
+#: misc.c:670
+msgid "Make access"
+msgstr ""
+
+#: misc.c:704
+msgid "Child access"
+msgstr ""
+
+#: output.c:128
 #, fuzzy, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3239
+#: output.c:130
 #, fuzzy, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3242
+#: output.c:133
 #, fuzzy, c-format
-msgid "%s: Entering directory `%s'\n"
+msgid "%s: Entering directory '%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3245
+#: output.c:135
 #, fuzzy, c-format
-msgid "%s: Leaving directory `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3250
+#: output.c:139
 #, fuzzy, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3253
+#: output.c:141
 #, fuzzy, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "¾Ë ¼ö ¾ø´Â µð·ºÅ丮"
 
-#: main.c:3257
+#: output.c:144
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr ""
+
+#: output.c:146
 #, fuzzy, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "`%s' µð·ºÅ丮\n"
 
-#: main.c:3260
+#: output.c:515
 #, fuzzy, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "`%s' µð·ºÅ丮\n"
+msgid "write error: %s"
+msgstr "¿À·ù¸¦ %sÀ¸·Î(·Î) ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
+
+# ??? µð¹ö±ë ¸Þ¼¼Áö
+#: output.c:517
+#, fuzzy
+msgid "write error"
+msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
 
-#: misc.c:316
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  ¸ØÃã.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "¾Ë ¼ö ¾ø´Â ¿À·ù %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:355
+#: output.c:759
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: 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:708
-#, fuzzy, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s Á¢±Ù: »ç¿ëÀÚ %lu (½ÇÁ¦ %lu), ±×·ì %lu (½ÇÁ¦ %lu)\n"
-
-#: misc.c:729
-#, fuzzy
-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
-#, fuzzy, c-format
-msgid "write error: %s"
-msgstr "¿À·ù¸¦ %sÀ¸·Î(·Î) ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
-
-# ??? µð¹ö±ë ¸Þ¼¼Áö
-#: misc.c:956
-#, fuzzy
-msgid "write error"
-msgstr "ÀÛ¾÷¼­¹ö ¾²±â"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏÀ» Àаí ÀÖ½À´Ï´Ù\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ `%s'¸¦ Àаí ÀÖ½À´Ï´Ù"
 
 #: read.c:335
@@ -1264,328 +1452,346 @@ msgstr " (
 msgid " (no ~ expansion)"
 msgstr " (~ È®Àå ¾øÀ½)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "Á¶°Ç¹®¿¡ ºÎÀûÀýÇÑ ¹®¹ýÀÌ ¾²ÀÓ"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "ù¹ø° Å¸°Ùº¸´Ù ¾Õ¿¡¼­ ¸í·É¾î°¡ ½ÃÀ۵Ǿú½À´Ï´Ù"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "¸í·É ¾Õ¿¡ ±ÔÄ¢ÀÌ ºüÁ³À½"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "ºÐ¸®±âÈ£ %sÀÌ(°¡) ºüÁ³À½"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (8°³ÀÇ °ø¹é ¸»°í ÅÇÀ» ¾²·Á°í ÇÑ °Í ¾Æ´Ï¾ú½À´Ï±î?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "Ÿ°Ù ÆÐÅÏÀÌ ºüÁ³À½"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "´ÙÁߠŸ°Ù ÆÐÅÏ"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "Ÿ°Ù ÆÐÅÏ¿¡ `%%'°¡ ¾ø½À´Ï´Ù."
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "`endif'°¡ ºüÁ³À½"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "ºó º¯¼ö À̸§"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "`endef' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ±ÛÀÌ ÀÖÀ½"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "`endef'°¡ ºüÁ³À½. Á¾·áµÇÁö ¾ÊÀº `define'"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "`endef' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ±ÛÀÌ ÀÖÀ½"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "`%s' Áö½ÃÀÚ µÚ¿¡ ¿©ºÐÀÇ ¹®ÀåÀÌ ÀÖÀ½"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "¿©ºÐÀÇ `%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "ÇÑ °³ÀÇ Á¶°Ç¿¡´Â ÇÑ °³ÀÇ `else'¸¸ ÀÖ¾î¾ß ÇÕ´Ï´Ù"
 
-#: read.c:1797
+#: read.c:1892
 #, fuzzy
 msgid "Malformed target-specific variable definition"
 msgstr "Ÿ°Ùº° º¯¼ö Á¤ÀÇ Çü½ÄÀ̠Ʋ·È½À´Ï´Ù"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "¹¬½ÃÀû ÆÐÅÏ ·ê°ú °íÁ¤µÈ ÆÐÅÏ·êÀÌ ¼¯¿´½À´Ï´Ù"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "È¥ÇյȠ¹¬½ÃÀû ±ÔÄ¢°ú ÀϹÝÀû ±ÔÄ¢"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "Ÿ°Ù `%s'Àº(´Â) Å¸°Ù ÆÐÅÏ¿¡ ¸ÂÁö ¾Ê½À´Ï´Ù"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'Àº(´Â) :¿Í :: Ç׸ñÀ» µ¿½Ã¿¡ °®°í ÀÖ½À´Ï´Ù"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "Ÿ°Ù `%s'ÀÌ(°¡) °°Àº ±ÔÄ¢¿¡¼­ ¿©·¯ ¹ø ÁÖ¾îÁ³½À´Ï´Ù"
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "°æ°í: Å¸°Ù `%s'¿¡ ´ëÇÑ ¸í·É¾îº¸´Ù ´Ù¸¥ °ÍÀÌ ¿ì¼±ÇÕ´Ï´Ù"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "°æ°í: Å¸°Ù `%s'¿¡ ´ëÇÑ °ú°Å ¸í·É¾îµéÀ» ¹«½ÃÇÕ´Ï´Ù"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "°æ°í: NUL ¹®ÀÚ°¡ ¹ß°ßµÇ¾ú½À´Ï´Ù; ÁÙÀÇ ³ª¸ÓÁö´Â ¹«½ÃµË´Ï´Ù"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "`%s'¸¦ À§ÇØ ÇÒ ÀÏÀÌ ¾ø½À´Ï´Ù"
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "`%s'´Â À̹̠°»½ÅµÇ¾ú½À´Ï´Ù."
 
 # pruneÀÌ truncateÀÇ ÀǹÌÀΰ¡ Áö¿î´Ù´Â ÀǹÌÀΰ¡??
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "`%s' ÆÄÀÏÀ» À߶󳻰í ÀÖ½À´Ï´Ù.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sŸ°Ù `%s'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾øÀ½%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr "%1$s`%3$s'¿¡¼­ ÇÊ¿ä·Î Çϴ  Å¸°Ù `%2$s'¸¦ ¸¸µé ±ÔÄ¢ÀÌ ¾ø½À´Ï´Ù%4$s"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'À»(¸¦) °í·ÁÇÕ´Ï´Ù.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "ÃÖ±Ù¿¡ `%s' ÆÄÀÏÀ» °»½ÅÇÏ·Á°í ½ÃµµÇÏ¿´°í ½ÇÆÐÇÏ¿´½À´Ï´Ù.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "ÆÄÀÏ `%s'´Â À̹̠°ËÅäµÇ¾ú½À´Ï´Ù.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "¾ÆÁ÷ `%s' ÆÄÀÏÀ» °»½ÅÇÏ°í ÀÖ½À´Ï´Ù.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "`%s' ÆÄÀÏÀÇ °»½ÅÀ» ¸¶ÃƽÀ´Ï´Ù.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "`%s' ÆÄÀÏÀº Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£¾Ò½À´Ï´Ù.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» Ã£Áö ¸øÇß½À´Ï´Ù.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇØ ³»Á¤µÈ ¸í·ÉÀ» »ç¿ëÇÔ.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "%s <- %s »óÈ£ ÀÇÁ¸¼ºÀº ¹«½ÃµË´Ï´Ù."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'ÀÇ ¼±ÇàÁ¶°ÇÀ» ¸¶ÃƽÀ´Ï´Ù.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "`%s'ÀÇ ¼±ÇàÁ¶°ÇÀÌ ¸¸µé¾îÁö°í ÀÖ½À´Ï´Ù.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'À»(¸¦) Æ÷±âÇÕ´Ï´Ù.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "¿À·ù·Î ÀÎÇؠŸ°Ù `%s'¸¦ ´Ù½Ã ¸¸µéÁö ¸øÇß½À´Ï´Ù."
 
-#: remake.c:727
+#: remake.c:731
 #, fuzzy, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ¸ÕÀú ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "Ÿ°Ù `%2$s'ÀÇ ¼±ÇàÁ¶°Ç %1$sÀº(´Â) Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ÃÖ±Ù¿¡ ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "¼±ÇàÁ¶°Ç `%s'ÀÌ(°¡) Å¸°Ù `%s'º¸´Ù ¸ÕÀú ¸¸µé¾îÁ³½À´Ï´Ù.\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr "Ÿ°Ù `%s'ÀÌ(°¡) µÎ °³ÀÇ ÄÝ·ÐÀÌ ºÙ¿©Á³Áö¸¸ ¼±ÇàÁ¶°ÇÀÌ ¾ø½À´Ï´Ù.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr "`%s'¿¡ ´ëÇÑ ¸í·É¾î°¡ ¾ø°í ¾î¶² ¼±ÇàÁ¶°Çµµ º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Ÿ°Ù `%s'À»(¸¦) ´Ù½Ã ¸¸µé ÇÊ¿ä°¡ ¾ø½À´Ï´Ù."
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; VPATH À̸§ `%s'À»(¸¦) »ç¿ëÇÕ´Ï´Ù"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Ÿ°Ù `%s'¸¦ ´Ù½Ã ¸¸µé¾î¾ß ÇÕ´Ï´Ù.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  VPATH À̸§ `%s'À»(¸¦) ¹«½ÃÇÕ´Ï´Ù.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "`%s'¶ó´Â ¸í·ÉÀÌ ½ÇÇà ÁßÀÔ´Ï´Ù.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'¸¦ ´Ù½Ã ¸¸µå´Â µ¥ ½ÇÆÐÇß½À´Ï´Ù.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'¸¦ ¼º°øÀûÀ¸·Î ´Ù½Ã ¸¸µé¾ú½À´Ï´Ù.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "Ÿ°Ù ÆÄÀÏ `%s'ÀÌ(°¡) -q ÇÏ¿¡ ´Ù½Ã ¸¸µé¾îÁ®¾ß ÇÕ´Ï´Ù.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
 msgstr "`%s'¿¡ ´ëÇØ ³»Á¤µÈ ¸í·ÉÀ» »ç¿ëÇÔ.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "*** ÆÄÀÏ `%s'°¡ ¹Ì·¡ÀÇ º¯°æ ½Ã°¢À» °¡Áö°í ÀÖ½À´Ï´Ù (%s > %s)"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "*** ÆÄÀÏ `%s'°¡ ¹Ì·¡ÀÇ º¯°æ ½Ã°¢À» °¡Áö°í ÀÖ½À´Ï´Ù (%s > %s)"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNSÀÇ ¿ø¼Ò `%s'ÀÌ(°¡) ÆÐÅÏÀÌ ¾Æ´Õ´Ï´Ù"
 
 # ???  µð¹ö±ë ¸Þ¼¼Áö -- ¹ºÁö ¾Ë±â ¾î·Á¿ò
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "CustomsÀº exportµÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 #, fuzzy
 msgid ""
 "\n"
@@ -1594,7 +1800,7 @@ msgstr ""
 "\n"
 "# ¹¬½ÃÀû ±ÔÄ¢ ¾øÀ½."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1602,7 +1808,7 @@ msgstr ""
 "\n"
 "# ¹¬½ÃÀû ±ÔÄ¢ ¾øÀ½."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1611,239 +1817,256 @@ msgstr ""
 "\n"
 "# %u°³ÀÇ ¹¬½ÃÀû ±ÔÄ¢, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " Å͹̳Î."
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "¹ö±×: num_pattern_rules ¿À·ù!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "¾Ë ¼ö ¾ø´Â ½ÅÈ£"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "²÷¾îÁü"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "ÀÎÅÍ·´Æ®"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Á¾·á"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "À߸øµÈ ¸í·É"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "ÃßÀû/Áß´ÜÁ¡ Æ®·¦"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "ÁߴܵÊ"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT Æ®·¦"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT Æ®·¦"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "ºÎµ¿ ¼Ò¼öÁ¡ ¿¹¿Ü"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Á×¾úÀ½"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "¹ö½º ¿À·ù"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "¼¼±×¸àÅ×À̼Ǡ¿À·ù"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "À߸øµÈ ½Ã½ºÅ۠ȣÃâ"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "±ú¾îÁø ÆÄÀÌÇÁ"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "ÀÚ¸íÁ¾ ½Ã°è"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Á¾·áµÊ"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "»ç¿ëÀÚ Á¤ÀÇ ½ÅÈ£ 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "»ç¿ëÀÚ Á¤ÀÇ ½ÅÈ£ 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "ÀÚ½ÄÀÌ Á¾·áµÇ¾úÀ½"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Àü·Â Áß´Ü"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "ÁßÁöµÊ"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "ÁßÁöµÊ (tty ÀÔ·Â)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "ÁßÁöµÊ (tty Ãâ·Â)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "ÁßÁöµÊ (½Ã±×³Î)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU ½Ã°£ Á¦ÇÑ ÃÊ°úµÊ"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "ÆÄÀÏ Å©±â Á¦ÇÑ ÃÊ°úµÊ"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "°¡»ó Å¸À̸Ӡ½Ã°£ ÃÊ°úµÊ"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "ÇÁ·ÎÆÄÀϸµ Å¸À̸Ӡ½Ã°£ ÃÊ°úµÊ"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "âÀÌ ¹Ù²î¾úÀ½"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "°è¼ÓµÊ"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "±ä±ÞÇÑ ÀÔÃâ·Â »óȲ"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "ÀÔÃâ·Â °¡´É"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "ÀÚ¿ø ¼Õ½Ç"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "À§Çè ½ÅÈ£"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Á¤º¸ ¿äû"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "ºÎµ¿¼Ò¼öÁ¡ ¿¬»ê º¸Á¶ÇÁ·Î¼¼¼­°¡ ¾ø½À´Ï´Ù"
 
-#: strcache.c:235
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+
+#: strcache.c:266
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "ÀÚµ¿"
+
+#: variable.c:1610
 msgid "default"
 msgstr "±âº»°ª"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "ȯ°æ"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "¸ÞÀÌÅ©ÆÄÀÏ"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "-e ÇÏÀǠȯ°æ"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "¸í·ÉÇà"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "`override' Áö½ÃÀÚ"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "ÀÚµ¿"
-
-#: variable.c:1570
+#: variable.c:1636
 #, fuzzy, c-format
-msgid " (from `%s', line %lu)"
+msgid " (from '%s', line %lu)"
 msgstr " (`%s'¿¡¼­, %lu¹ø° ÁÙ):\n"
 
-#: variable.c:1612
+#: variable.c:1699
 #, fuzzy
 msgid "# variable set hash-table stats:\n"
 msgstr "# %2$u°³ÀÇ Çؽ¬ ¹öŶ¿¡ %1$u°³ÀÇ º¯¼ö.\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1851,7 +2074,7 @@ msgstr ""
 "\n"
 "# º¯¼ö\n"
 
-#: variable.c:1627
+#: variable.c:1714
 #, fuzzy
 msgid ""
 "\n"
@@ -1860,7 +2083,7 @@ msgstr ""
 "\n"
 "# ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµé"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1868,7 +2091,7 @@ msgstr ""
 "\n"
 "# ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµéÀÌ ¾ø½À´Ï´Ù."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1877,93 +2100,93 @@ msgstr ""
 "\n"
 "# %u°³ÀÇ ÆÐÅÏÀ» À§ÇÑ º¯¼ö °ªµé"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "°æ°í: Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö `%.*s'"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search°¡ %d¸¦ ¸®ÅÏÇϸ砽ÇÆÐÇß½À´Ï´Ù\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "°æ°í: ºñ¾î Àִ ¸®´ÙÀÌ·º¼Ç\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "³»ºÎ ¿À·ù: `%s' command_state"
 
 # DCL - Digital Command Language, VMS¿¡¼­¸¸ Á¸ÀçÇϴ shell languageÀÇ ÀÏÁ¾
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-°æ°í, DCL¿¡¼­ CTRL-Y¸¦ ´Ù½Ã »ç¿ë°¡´ÉÇϵµ·Ï ÇؾߠÇÒ °ÍÀÔ´Ï´Ù.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "³»Àå [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "³»Àå CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "³»Àå RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "¾Ë ¼ö ¾ø´Â ³»Àå ¸í·É¾î `%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "¿À·ù, ºó ¸í·É¾î\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "ÀÔ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "¿À·ù¸¦ %sÀ¸·Î(·Î) ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "Ãâ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Ãâ·ÂÀ» %s¿¡¼­ ¸®´ÙÀÌ·ºÆ®ÇÕ´Ï´Ù\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "´ë½Å %s¸¦ ½ÇÇàÇÔ\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "½ÇÇà ¿À·ù, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1971,37 +2194,43 @@ msgstr ""
 "\n"
 "# VPATH Å½»ö °æ·Î\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# `vpath' Å½»ö °æ·Î°¡ ¾øÀ½."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u°³ÀÇ `vpath' Å½»ö °æ·Î.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# ÀϹÝÀûÀΠ(`VPATH' º¯¼ö) Å½»ö °æ·Î°¡ ¾øÀ½."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# ÀϹÝÀûÀΠ(`VPATH' º¯¼ö) Å½»ö °æ·Î:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  `update_status' ¸â¹ö¿¡ °ªÀÌ À߸øµÇ¾ú½À´Ï´Ù!"
+
 #~ msgid ""
 #~ "\n"
 #~ "# No files."
@@ -2019,6 +2248,9 @@ msgstr ""
 #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
 #~ msgstr "# ¹öŶ´ç %.3f°³ÀÇ ÆÄÀÏ, ÇÑ °³ÀÇ ¹öŶ¿¡ ÃÖ´ë %u°³ÀÇ ÆÄÀÏ.\n"
 
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] ¿À·ù 0x%x (¹«½ÃµÊ)"
+
 #~ msgid "Syntax error, still inside '\"'\n"
 #~ msgstr "¹®¹ý ¿À·ù, ¾ÆÁ÷ '\"' ¾È¿¡ ÀÖ½À´Ï´Ù\n"
 
index a956d85..aa293e5 100644 (file)
Binary files a/po/lt.gmo and b/po/lt.gmo differ
index 3b337bd..02e43f3 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,119 +7,125 @@ 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"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: 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"
+"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'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "bandymas naudoti nepalaikomą funkcionalumą: „%s“"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr ""
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, 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"
+#: ar.c:150
+#, fuzzy, 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:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Archyvas „%s“ neegzistuoja"
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:175
+#: arscan.c:173
 #, 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'"
+#: arscan.c:185
+#, fuzzy, 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"
+#: arscan.c:847
+#, fuzzy, 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
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (pavadinimas gali būti sutrumpintas)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Trinamas failas „%s“"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** Trinamas failas „%s“"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  vykdytinos komandos"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr "  (integruota)"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (nuo „%s“, %lu eilutė):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -127,224 +133,228 @@ msgstr ""
 "\n"
 "# Aplankai\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: negalėjo būti stat'intas.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Ne"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " failai, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "ne"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " negalimybės"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " kol kas."
 
-#: dir.c:1092
+#: dir.c:1085
 #, 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)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksčiau ar vėliau)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "neterminuota nuoroda į kintamąjį"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "Komandos nurodytos failui „%s“ %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+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'."
+#: file.c:277
+#, fuzzy, 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
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Trinamas tarpinis failas „%s“"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Šalinami tarpiniai failai...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Laiko žymė už rėžių; keičiama į %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Dabartinis laikas"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Ne tikslas:"
 
-#: file.c:929
+#: file.c:954
 #, fuzzy
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Brangus failas (reikalingas .PRECIOUS)"
 
-#: file.c:931
+#: file.c:956
 #, fuzzy
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Keistas tikslas (reikalingas .PHONY)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Komandinės eilutės tikslas"
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Numatytoji reikšmė, MAKEFILES, arba -include/sinclude „make“ failas"
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Nėra neišreikštinių taisyklių."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Neišreikštinių taisyklių paieška atlikta."
 
-#: file.c:938
+#: file.c:965
 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"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Išreikštinis/statinis šablono kamienas: „%s“\n"
 
-#: file.c:942
+#: file.c:969
 #, fuzzy
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Failas yra tarpinė sąlyga"
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Taip pat sukuria:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Modifikacijos laikas niekada netikrintas."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Failas neegzistuoja."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Failas labai senas."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Paskutinį kartą pakeista %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Failas atnaujintas."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Failas nebuvo atnaujintas."
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Dabar vykdomos komandos (TAI KLAIDA)."
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Vykdomos priklausomybių komandos (TAI KLAIDA)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Sėkmingai atnaujinta."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Turi būti atnaujinta (-q nustatyta)."
 
-#: file.c:987
+#: file.c:1014
 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!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Netaisyklinga reikšmė „command_state“ naryje!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -352,7 +362,7 @@ msgstr ""
 "\n"
 "# Failai"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -362,116 +372,170 @@ msgstr ""
 "# failų maišos lentelės statistika:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
 msgstr ""
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
 msgstr ""
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr ""
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr ""
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1469
+#: function.c:1483
 #, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr ""
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "rašymo klaida: %s"
+
+#: function.c:2164
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid file operation: %s"
 msgstr ""
 
-#: function.c:2162
+#: function.c:2279
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr ""
 
-#: function.c:2212
+#: function.c:2291
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr ""
 
-#: getopt.c:661
+#: function.c:2354
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: parametras `%s' dviprasmis\n"
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: argumentas „--%s“ neleidžia parametro\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:690
+#: function.c:2550
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: argumentas „%c%s“ neleidžia parametro\n"
+msgid "Function name too long: %s\n"
+msgstr ""
 
-#: getopt.c:707 getopt.c:880
+#: function.c:2552
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: parametrui „%s“ reikia argumento\n"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr ""
 
-#: getopt.c:736
+#: function.c:2555
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr ""
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: parametras `%s' dviprasmis\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: argumentas „--%s“ neleidžia parametro\n"
+
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: argumentas „%c%s“ neleidžia parametro\n"
+
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: parametrui „%s“ reikia argumento\n"
+
+#: getopt.c:734
+#, fuzzy, 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"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: neatpažintas argumentas „%c%s“\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: neleistinas parametras -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: netaisyklingas argumentas -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, 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"
+#: getopt.c:844
+#, fuzzy, 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"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: parametras „-W %s“ neleidžia argumento\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -492,398 +556,493 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr ""
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr ""
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
 msgstr ""
 
-#: implicit.c:674
+#: implicit.c:491
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr ""
 
-#: implicit.c:675
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:688
+#: implicit.c:698
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:689
+#: implicit.c:711
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:728
+#: implicit.c:712
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:742
+#: implicit.c:751
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr ""
 
-#: job.c:335
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Šalinami tarpiniai failai...\n"
+
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr ""
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
+#: job.c:482
+msgid " (core dumped)"
 msgstr ""
 
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
+#: job.c:487
+msgid " (ignored)"
 msgstr ""
 
-#: job.c:454
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr "  (integruota)"
+
+#: job.c:501
 #, c-format
-msgid "[%s] Error %d (ignored)"
+msgid "%s: recipe for target '%s' failed"
 msgstr ""
 
-#: job.c:455
+#: job.c:510
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s[%s] Error 0x%x%s"
 msgstr ""
 
-#: job.c:460
-msgid " (core dumped)"
+#: job.c:513
+#, c-format
+msgid "%s[%s] Error %d%s"
 msgstr ""
 
-#: job.c:549
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
+
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr ""
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr ""
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:763
+#: job.c:837
 #, fuzzy, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "%s: nepavyko atverti laikinojo failo: %s"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "%s: nepavyko atverti laikinojo failo: %s"
+
+#: job.c:949
 #, 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:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+#, fuzzy
+msgid "write jobserver"
+msgstr "rašymo klaida: %s"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ""
 
-#: job.c:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Archyvas „%s“ neegzistuoja"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Nereikia atnaujinti taikinio „%s“"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1912
+#: job.c:2120
 #, fuzzy
 msgid "cannot enforce load limit: "
 msgstr "%s: nepayko pakeisti limito: %s"
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Komanda nerasta"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Kevalo programa nerasta"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr ""
+
+#: main.c:312
 msgid "Options:\n"
 msgstr ""
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr ""
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "negalimas tuščias failo pavadinimas"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "nežinomas debug lygio specifikacija „%s“"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr ""
+
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -893,158 +1052,179 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:834
+#: main.c:1008
 #, c-format
 msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ""
 
-#: main.c:1275
+#: main.c:1449
 #, 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."
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
 msgstr ""
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
 msgstr ""
 
-#: main.c:1727
+#: main.c:1551
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr ""
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr ""
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr ""
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr ""
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr ""
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr ""
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
 msgstr ""
 
-#: main.c:1777
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr ""
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Atnaujinami „make“ failai....\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr ""
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Nereikia atnaujinti taikinio „%s“"
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
-msgstr ""
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "„Make“ failas „%s“ nerastas"
 
-#: main.c:2018
+#: main.c:2275
 #, fuzzy, c-format
-msgid "Makefile `%s' was not found"
+msgid "Makefile '%s' was not found"
 msgstr "„Make“ failas „%s“ nerastas"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Nepavyko grįžti į pirminį aplanką."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr ""
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr ""
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Nenurodyta tikslų ir nerasta „make“ failų"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Nėra tikslų"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Atnaujinami tikslai...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1053,7 +1233,7 @@ msgstr ""
 "\n"
 "Ši programa sukompiliuota %s sistemai\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1062,36 +1242,36 @@ msgstr ""
 "\n"
 "Ši programa sukompiliuota %s (%s) sistemai\n"
 
-#: main.c:2481
+#: main.c:2729
 #, 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
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "parametrui „-%c“ reikia netuščio argumento"
 
-#: main.c:2617
+#: main.c:2864
 #, fuzzy, c-format
-msgid "the `-%c' option requires a positive integral argument"
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%sŠi programa sukompiliuota %s sistemai\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%sŠi programa sukompiliuota %s (%s) sistemai\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1100,120 +1280,120 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Nežinoma klaida %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "baigėsi virtuali atmintis"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr ""
+
+#: misc.c:622
+msgid "User access"
+msgstr ""
+
+#: misc.c:670
+msgid "Make access"
+msgstr ""
+
+#: misc.c:704
+msgid "Child access"
+msgstr ""
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Įeinama į nežinomą aplanką\n"
 
-#: main.c:3239
+#: output.c:130
 #, 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"
+#: output.c:133
+#, fuzzy, 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"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: Išeinama iš aplanko „%s“\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Įeinama į nežinomą aplanką\n"
 
-#: main.c:3253
+#: output.c:141
 #, 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"
+#: output.c:144
+#, fuzzy, 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"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: Išeinama iš aplanko „%s“\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "rašymo klaida: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "rašymo klaida"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Pabaiga.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nežinoma klaida %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Skaitomi „make“ failai...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Skaitomas „make“ failas „%s“"
 
 #: read.c:335
@@ -1236,325 +1416,342 @@ msgstr " (nesvarbu)"
 msgid " (no ~ expansion)"
 msgstr " (nėra ~ išplėtimo)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "netaisyklinga sąlygos sintaksė"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "komandos prasideda prieš pirmąjį tikslą"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "trūksta taisyklės prieš komandas"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "trūksta skirtuko%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (ar norėjote padėti TAB simbolį vietoje 8 tarpų?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "trūksta tikslo šablono"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "keli tikslo šablonai"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "tikslo šablone nėra „%%“"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "trūksta „endif“"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "tuščias kintamojo pavadinimas"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "Perteklinis tekstas po „endef“ direktyvos"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "trūksta „endef“, nebaigtas „define“"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "Perteklinis tekstas po „endef“ direktyvos"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, 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'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "perteklinis „%s“"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+msgid "only one 'else' per conditional"
 msgstr ""
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
+msgid "target '%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
+msgid "target file '%s' has both : and :: entries"
 msgstr ""
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
+msgid "target '%s' given more than once in the same rule"
 msgstr ""
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr ""
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr ""
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, 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."
+#: remake.c:233
+#, fuzzy, 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:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Vis dar atnaujinamas failas „%s“.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, 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"
+#: remake.c:379
+#, fuzzy, 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"
+#, fuzzy, 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"
+#, fuzzy, 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"
+#, fuzzy, 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"
+#, fuzzy, 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"
+#, fuzzy, 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"
+#, fuzzy, 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"
+"*** 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"
+#: remake.c:494 remake.c:1019
+#, fuzzy, 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"
+#: remake.c:496 remake.c:1021
+#, fuzzy, 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."
+msgid "Using default recipe for '%s'.\n"
 msgstr ""
 
-#: remake.c:651
+#: remake.c:535 remake.c:1067
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr ""
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Svarstomas tikslo failas „%s“.\n"
 
-#: remake.c:670
+#: remake.c:661
 #, c-format
-msgid "Giving up on target file `%s'.\n"
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr ""
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Svarstomas tikslo failas „%s“.\n"
+
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Tikslas „%s“ neatnaujintas dėl klaidų."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+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:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Failas „%s“ neegzistuoja.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr ""
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr ""
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Nereikia atnaujinti taikinio „%s“"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
+msgid "; using VPATH name '%s'"
 msgstr ""
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Būtina atnaujinti taikinį „%s“.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr ""
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+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:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Nereikia atnaujinti taikinio „%s“"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr ""
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Būtina atnaujinti taikinį „%s“.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr ""
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr ""
+#: remake.c:1027
+#, fuzzy, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "paskutinė komanda: %s\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr ""
 
-#: remake.c:1370
+#: remake.c:1385
 #, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr ""
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ""
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1562,7 +1759,7 @@ msgstr ""
 "\n"
 "# Neišreikštinės taisyklės"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1570,7 +1767,7 @@ msgstr ""
 "\n"
 "# Nėra neišreikštinių taisyklių."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1579,393 +1776,411 @@ msgstr ""
 "\n"
 "# %u neišreikštinių taisyklių, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr ""
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "nežinomas signalas"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Pertraukimas"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Išeita"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Neleistina instrukcija"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:114
+#: signame.c:112
 #, fuzzy
 msgid "IOT trap"
 msgstr "EMT gaudyklė"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT gaudyklė"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Slankaus kablelio klaida"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Nutraukta"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Magistralės klaida"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Segmentacijos klaida"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Blogas sisteminis kvietimas"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr ""
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Žadintuvas"
 
-#: signame.c:141
+#: signame.c:139
 #, fuzzy
 msgid "Terminated"
 msgstr "apribota"
 
-#: signame.c:144
+#: signame.c:142
 #, fuzzy
 msgid "User defined signal 1"
 msgstr "%s: nutrauktas signalo %d"
 
-#: signame.c:147
+#: signame.c:145
 #, fuzzy
 msgid "User defined signal 2"
 msgstr "%s: nutrauktas signalo %d"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 #, fuzzy
 msgid "Child exited"
 msgstr "Failas jau egzistuoja"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Elektros maitinimo sutrikimas"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Sustabdyta"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Sustabdyta (tty įvedimas)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Sustabdyta (tty išvedimas)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Sustabdyta (signalas)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Viršytas CPU laiko limitas"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Viršytas failo dydžio limitas"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Langas pakeistas"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Pratęsta"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "Galimas įvedimas/išvedimas"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Išteklius prarastas"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Pavojaus signalas"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Informacijos užklausa"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Slankaus kablelio koprocesorius neprieinamas"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:280
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# failų maišos lentelės statistika:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr ""
+
+#: variable.c:1610
 msgid "default"
 msgstr ""
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr ""
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr ""
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1553
+#: variable.c:1622
 #, fuzzy
 msgid "command line"
 msgstr "%s: komanda nerasta"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr ""
-
-#: variable.c:1559
-msgid "automatic"
-msgstr ""
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
+msgstr "tuščia „override“ direktyva"
 
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
-msgstr ""
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (nuo „%s“, %lu eilutė):\n"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:219
+#: variable.h:224
 #, fuzzy, c-format
-msgid "warning: undefined variable `%.*s'"
+msgid "warning: undefined variable '%.*s'"
 msgstr "%s: neatpažintas argumentas „%c%s“\n"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr ""
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
+msgid "internal error: '%s' command_state"
 msgstr ""
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, fuzzy, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "paskutinė komanda: %s\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr ""
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr ""
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, fuzzy, c-format
 msgid "Redirected error to %s\n"
 msgstr "skaitymo klaida: %d: %s"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr ""
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr ""
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr ""
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
+msgstr " (paieškos kelias)"
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  Netaisyklinga reikšmė „update_status“ naryje!"
+
 #~ 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 175984e..d2ff216 100644 (file)
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: GNU make 4.0\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
+msgid "attempt to use unsupported feature: '%s'"
 msgstr ""
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr ""
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
+msgid "touch: Archive '%s' does not exist"
 msgstr ""
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
+msgid "touch: '%s' is not a valid archive"
 msgstr ""
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr ""
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
 
-#: arscan.c:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr ""
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr ""
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr ""
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr ""
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr ""
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr ""
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr ""
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr ""
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
+msgid "*** [%s] Deleting file '%s'"
 msgstr ""
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
+msgid "*** Deleting file '%s'"
 msgstr ""
 
-#: commands.c:676
+#: commands.c:684
 msgid "#  recipe to execute"
 msgstr ""
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr ""
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
+msgid " (from '%s', line %lu):\n"
 msgstr ""
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
 msgstr ""
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr ""
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr ""
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr ""
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr ""
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr ""
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr ""
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr ""
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr ""
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr ""
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr ""
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr ""
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr ""
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr ""
 
-#: file.c:267
+#: file.c:269
 #, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr ""
 
-#: file.c:272
+#: file.c:274
 #, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr ""
 
-#: file.c:275
+#: file.c:277
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr ""
 
-#: file.c:278
+#: file.c:280
 #, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr ""
 
-#: file.c:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
 
-#: file.c:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
+msgid "*** Deleting intermediate file '%s'"
 msgstr ""
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr ""
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr ""
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr ""
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr ""
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr ""
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr ""
 
-#: file.c:933
+#: file.c:958
 msgid "#  Command line target."
 msgstr ""
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr ""
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr ""
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr ""
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr ""
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr ""
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr ""
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr ""
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr ""
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr ""
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr ""
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr ""
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr ""
 
-#: file.c:968
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:971
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr ""
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr ""
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr ""
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr ""
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
 msgstr ""
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
 msgstr ""
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
 msgstr ""
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr ""
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr ""
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1469
+#: function.c:1483
 #, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr ""
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr ""
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr ""
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr ""
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr ""
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr ""
+
+#: function.c:2291
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr ""
+
+#: function.c:2354
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr ""
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid function name: %s\n"
 msgstr ""
 
-#: function.c:2162
+#: function.c:2550
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "Function name too long: %s\n"
 msgstr ""
 
-#: function.c:2212
+#: function.c:2552
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+msgid "Invalid minimum argument count (%d) for function %s\n"
 msgstr ""
 
-#: getopt.c:661
+#: function.c:2555
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
 msgstr ""
 
-#: getopt.c:685
+#: getopt.c:659
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "%s: option '%s' is ambiguous\n"
 msgstr ""
 
-#: getopt.c:690
+#: getopt.c:683
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr ""
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:688
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr ""
 
-#: getopt.c:736
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
+msgid "%s: option '%s' requires an argument\n"
 msgstr ""
 
-#: getopt.c:740
+#: getopt.c:734
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
 msgstr ""
 
-#: getopt.c:766
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr ""
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: getopt.c:846
+#: getopt.c:844
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr ""
 
-#: getopt.c:864
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
 msgstr ""
 
 #: hash.c:49
@@ -476,396 +536,490 @@ msgstr ""
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr ""
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr ""
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr ""
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr ""
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr ""
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr ""
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr ""
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr ""
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr ""
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr ""
+
+#: job.c:487
+msgid " (ignored)"
 msgstr ""
 
-#: job.c:450
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr ""
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
+msgid "%s: recipe for target '%s' failed"
 msgstr ""
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
+msgid "%s[%s] Error 0x%x%s"
 msgstr ""
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s[%s] Error %d%s"
 msgstr ""
 
-#: job.c:460
-msgid " (core dumped)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
 msgstr ""
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr ""
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr ""
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr ""
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr ""
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr ""
 
-#: job.c:861
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr ""
+
+#: job.c:949
 #, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr ""
 
-#: job.c:920
-msgid "write jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
 msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr ""
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr ""
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr ""
 
-#: job.c:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr ""
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr ""
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+msgid "%s: target '%s' does not exist"
 msgstr ""
 
-#: job.c:1802
+#: job.c:2005
 #, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
+msgid "%s: update target '%s' due to: %s"
 msgstr ""
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr ""
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr ""
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr ""
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr ""
+
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr ""
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr ""
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr ""
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr ""
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr ""
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr ""
+
+#: main.c:312
 msgid "Options:\n"
 msgstr ""
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 
-#: main.c:334
+#: main.c:343
 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
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
 "them.\n"
 msgstr ""
 
-#: main.c:342
+#: main.c:351
 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
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr ""
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr ""
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr ""
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr ""
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
+msgid "unknown debug level specification '%s'"
 msgstr ""
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr ""
+
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr ""
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -875,197 +1029,218 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr ""
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr ""
 
-#: main.c:834
+#: main.c:1008
 #, c-format
 msgid "find_and_set_shell() path search set default_shell = %s\n"
 msgstr ""
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr ""
 
-#: main.c:1275
+#: main.c:1449
 #, 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."
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
 msgstr ""
 
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
 msgstr ""
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
 msgstr ""
 
-#: main.c:1727
+#: main.c:1551
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr ""
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr ""
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr ""
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr ""
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr ""
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr ""
 
-#: main.c:1777
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr ""
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr ""
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr ""
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr ""
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr ""
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
+msgid "Failed to remake makefile '%s'."
 msgstr ""
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
+msgid "Included makefile '%s' was not found."
 msgstr ""
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
+msgid "Makefile '%s' was not found"
 msgstr ""
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr ""
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr ""
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr ""
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ""
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr ""
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr ""
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr ""
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr ""
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 
-#: main.c:2562
+#: main.c:2810
 #, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr ""
 
-#: main.c:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
+msgid "the '-%c' option requires a positive integer argument"
 msgstr ""
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1074,120 +1249,120 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 
-#: main.c:3237
+#: misc.c:201
 #, c-format
-msgid "%s: Entering an unknown directory\n"
+msgid "Unknown error %d"
 msgstr ""
 
-#: main.c:3239
-#, c-format
-msgid "%s: Leaving an unknown directory\n"
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
 msgstr ""
 
-#: main.c:3242
+#: misc.c:522
 #, c-format
-msgid "%s: Entering directory `%s'\n"
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: misc.c:543
+msgid "Initialized access"
 msgstr ""
 
-#: main.c:3250
-#, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
+#: misc.c:622
+msgid "User access"
 msgstr ""
 
-#: main.c:3253
-#, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
+#: misc.c:670
+msgid "Make access"
 msgstr ""
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: misc.c:704
+msgid "Child access"
 msgstr ""
 
-#: main.c:3260
+#: output.c:128
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+msgid "%s: Entering an unknown directory\n"
 msgstr ""
 
-#: misc.c:316
-msgid ".  Stop.\n"
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
 msgstr ""
 
-#: misc.c:337
+#: output.c:133
 #, c-format
-msgid "Unknown error %d"
+msgid "%s: Entering directory '%s'\n"
 msgstr ""
 
-#: misc.c:347
+#: output.c:135
 #, c-format
-msgid "%s%s: %s"
+msgid "%s: Leaving directory '%s'\n"
 msgstr ""
 
-#: misc.c:355
+#: output.c:139
 #, c-format
-msgid "%s: %s"
+msgid "%s[%u]: Entering an unknown directory\n"
 msgstr ""
 
-#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
-msgid "virtual memory exhausted"
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr ""
 
-#: misc.c:708
+#: output.c:144
 #, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr ""
 
-#: misc.c:729
-msgid "Initialized access"
+#: output.c:146
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr ""
 
-#: misc.c:808
-msgid "User access"
+#: output.c:515
+#, c-format
+msgid "write error: %s"
 msgstr ""
 
-#: misc.c:856
-msgid "Make access"
+#: output.c:517
+msgid "write error"
 msgstr ""
 
-#: misc.c:890
-msgid "Child access"
+#: output.c:740
+msgid ".  Stop.\n"
 msgstr ""
 
-#: misc.c:954
+#: output.c:751
 #, c-format
-msgid "write error: %s"
+msgid "%s%s: %s"
 msgstr ""
 
-#: misc.c:956
-msgid "write error"
+#: output.c:759
+#, c-format
+msgid "%s: %s"
 msgstr ""
 
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr ""
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
+msgid "Reading makefile '%s'"
 msgstr ""
 
 #: read.c:335
@@ -1210,706 +1385,737 @@ msgstr ""
 msgid " (no ~ expansion)"
 msgstr ""
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr ""
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr ""
 
-#: read.c:940
+#: read.c:1036
 msgid "missing rule before recipe"
 msgstr ""
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr ""
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr ""
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr ""
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr ""
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
+msgid "target pattern contains no '%%'"
 msgstr ""
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+msgid "missing 'endif'"
 msgstr ""
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr ""
 
-#: read.c:1367
-msgid "extraneous text after `define' directive"
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
 msgstr ""
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
 msgstr ""
 
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
 msgstr ""
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
+msgid "extraneous text after '%s' directive"
 msgstr ""
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
+msgid "extraneous '%s'"
 msgstr ""
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+msgid "only one 'else' per conditional"
 msgstr ""
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr ""
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr ""
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr ""
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr ""
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
+msgid "target '%s' doesn't match the target pattern"
 msgstr ""
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
+msgid "target file '%s' has both : and :: entries"
 msgstr ""
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
+msgid "target '%s' given more than once in the same rule"
 msgstr ""
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr ""
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr ""
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr ""
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
+msgid "Nothing to be done for '%s'."
 msgstr ""
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
+msgid "'%s' is up to date."
 msgstr ""
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
+msgid "Pruning file '%s'.\n"
 msgstr ""
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
+msgid "%sNo rule to make target '%s'%s"
 msgstr ""
 
-#: remake.c:361
+#: remake.c:379
 #, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr ""
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
+msgid "Considering target file '%s'.\n"
 msgstr ""
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr ""
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
+msgid "File '%s' was considered already.\n"
 msgstr ""
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
+msgid "Still updating file '%s'.\n"
 msgstr ""
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
+msgid "Finished updating file '%s'.\n"
 msgstr ""
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
+msgid "File '%s' does not exist.\n"
 msgstr ""
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
+msgid "Found an implicit rule for '%s'.\n"
 msgstr ""
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
+msgid "No implicit rule found for '%s'.\n"
 msgstr ""
 
 #: remake.c:502
 #, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr ""
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr ""
 
-#: remake.c:651
+#: remake.c:655
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr ""
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr ""
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
+msgid "Giving up on target file '%s'.\n"
 msgstr ""
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
+msgid "Target '%s' not remade because of errors."
 msgstr ""
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr ""
 
-#: remake.c:732
+#: remake.c:736
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr ""
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr ""
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr ""
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr ""
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr ""
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr ""
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
+msgid "No need to remake target '%s'"
 msgstr ""
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
+msgid "; using VPATH name '%s'"
 msgstr ""
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
+msgid "Must remake target '%s'.\n"
 msgstr ""
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr ""
 
-#: remake.c:815
+#: remake.c:819
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr ""
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
+msgid "Failed to remake target file '%s'.\n"
 msgstr ""
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
+msgid "Successfully remade target file '%s'.\n"
 msgstr ""
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr ""
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
+msgid "Using default commands for '%s'.\n"
 msgstr ""
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr ""
 
-#: remake.c:1370
+#: remake.c:1385
 #, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr ""
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ""
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr ""
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr ""
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr ""
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr ""
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr ""
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr ""
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr ""
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr ""
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr ""
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr ""
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr ""
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr ""
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr ""
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr ""
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr ""
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr ""
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr ""
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr ""
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr ""
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr ""
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr ""
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr ""
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr ""
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr ""
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr ""
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr ""
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr ""
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr ""
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr ""
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr ""
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr ""
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr ""
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr ""
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr ""
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr ""
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr ""
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr ""
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr ""
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr ""
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr ""
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr ""
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr ""
 
-#: strcache.c:235
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+
+#: strcache.c:266
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr ""
+
+#: variable.c:1610
 msgid "default"
 msgstr ""
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr ""
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr ""
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr ""
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr ""
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+msgid "'override' directive"
 msgstr ""
 
-#: variable.c:1559
-msgid "automatic"
-msgstr ""
-
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
+msgid " (from '%s', line %lu)"
 msgstr ""
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr ""
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
+msgid "warning: undefined variable '%.*s'"
 msgstr ""
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr ""
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr ""
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
+msgid "internal error: '%s' command_state"
 msgstr ""
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr ""
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr ""
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr ""
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr ""
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr ""
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr ""
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr ""
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr ""
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr ""
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr ""
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
 msgstr ""
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
index 1f15184..3961e79 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index 5235d0c..44e81e0 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
-# Dutch translations for make.
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# Dutch translations for GNU make.
+# Copyright (C) 2013 Free Software Foundation, Inc.
 # This file is distributed under the same license as the make package.
 #
+# "Eĉ en Arkadio mi estas."
+#
 # Taco Witte <tcwitte@cs.uu.nl>, 2004.
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: make-3.81.91\n"
+"Project-Id-Version: make-3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2010-07-24 11:28+0200\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 22:07+0200\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Lokalize 1.0\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "poging tot gebruik van niet-ondersteunde functie: '%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "het 'touchen' van een archiefonderdeel is niet mogelijk op VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: Archief '%s' bestaat niet"
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: archief '%s' bestaat niet"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: '%s' is geen geldig archief"
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch: Onderdeel '%s' bestaat niet in '%s'"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: onderdeel '%s' bestaat niet in '%s'"
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
-msgstr "touch: ar_member_touch van '%s' is mislukt"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: ar_member_touch() van '%s' is mislukt"
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 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:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control() is mislukt, afsluitwaarde = %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "kan bibliotheek '%s' niet openen om onderdeel '%s' op te zoeken"
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Onderdeel '%s'%s: %ld bytes bij %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (naam kan afgekapt zijn)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modus = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Recept bevat te veel regels (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Afgebroken.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] Archiefonderdeel '%s' kan verkeerd zijn; niet verwijderd"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Archiefonderdeel '%s' kan onecht zijn; niet verwijderd"
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Archiefonderdeel '%s' kan verkeerd zijn; niet verwijderd"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Archiefonderdeel '%s' kan onecht zijn; niet verwijderd"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] Verwijderen van bestand '%s'"
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
+msgid "*** Deleting file '%s'"
 msgstr "*** Verwijderen van bestand '%s'"
 
-#: commands.c:676
+#: commands.c:684
 msgid "#  recipe to execute"
 msgstr "#  uit te voeren recept"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (ingebouwd):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (van '%s', regel %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (uit '%s', regel %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -127,218 +135,219 @@ msgstr ""
 "\n"
 "# Mappen\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# kan status van %s niet opvragen.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (sleutel %s, wijzigingstijd %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (apparaat %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (apparaat %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Geen"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " bestanden, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "geen"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " onmogelijkheden"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " tot nu toe."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " onmogelijkheden in %lu mappen.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Recursieve variabele '%s' verwijst naar zichzelf, uiteindelijk"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "onafgemaakte verwijzing naar variabele"
 
-#: file.c:267
+#: file.c:269
 #, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken,"
 
-#: file.c:275
+#: file.c:277
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'."
 
-#: file.c:278
+#: file.c:280
 #, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%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:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'"
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'"
 
-#: file.c:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Verwijderen van tussentijds bestand '%s'"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Verwijderen van tussentijdse bestanden...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Huidige tijd"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Is geen doel:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Waardevol bestand (vereiste van .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Nepdoel (vereiste van .PHONY)."
 
-#: file.c:933
+#: file.c:958
 msgid "#  Command line target."
 msgstr "#  Doel afkomstig van opdrachtregel."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Een standaard, of MAKEFILES, of -include/sinclude makefile."
+msgstr ""
+"#  Een standaard Makefile, of eentje via MAKEFILES of '-include/sinclude'."
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Ingebouwde regel"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Impliciete regel-zoekopdracht is uitgevoerd."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Impliciete regel-zoekopdracht is niet uitgevoerd."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Impliciete/statische patroonstam: '%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Bestand is een tussentijds vereiste."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Maakt ook:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Wijzigingstijd is nooit gecontroleerd."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Bestand bestaat niet."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Bestand is erg oud."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Laatst gewijzigd %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Bestand is bijgewerkt."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Bestand is niet bijgewerkt."
 
-#: file.c:968
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)."
 
-#: file.c:971
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "#  Succesvol bijgewerkt."
+msgstr "#  Met succes bijgewerkt."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Moet worden bijgewerkt (-q is ingesteld)."
+msgstr "#  Moet worden bijgewerkt ('-q' is ingesteld)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Bijwerken is mislukt."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Ongeldige waarde in 'update_status'-onderdeel!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  Ongeldige waarde in 'command_state'-onderdeel!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -346,7 +355,7 @@ msgstr ""
 "\n"
 "# Bestanden"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -356,116 +365,170 @@ msgstr ""
 "# hashtabel-statistieken van bestanden:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Veld '%s' is niet gecached: %s"
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
 msgstr "niet-numeriek eerste argument van 'word'-functie"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "eerste argument van 'word'-functie moet groter zijn dan 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "niet-numeriek eerste argument van 'wordlist'-functie"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "niet-numeriek tweede argument van 'wordlist'-functie"
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() is mislukt (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe(): process_init_fd() is mislukt\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Opschonen van tijdelijk batch-bestand %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "open(): %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "write(): %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Ongeldige bestandsbewerking: %s"
+
+#: function.c:2279
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "onvoldoende aantal argumenten (%d) voor functie '%s'"
 
-#: function.c:2162
+#: function.c:2291
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
+msgid "unimplemented on this platform: function '%s'"
 msgstr "niet-geïmplementeerd op dit platform: functie '%s'"
 
-#: function.c:2212
+#: function.c:2354
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Ongeldige bestandsbewerking: %s"
+
+#: function.c:2550
+#, c-format
+msgid "Function name too long: %s\n"
+msgstr "Functienaam is te lang: %s\n"
+
+#: function.c:2552
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Ongeldig minimumaantal argumenten (%d) voor functie '%s'\n"
+
+#: function.c:2555
+#, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Ongeldig maximumaantal argumenten (%d) voor functie '%s'\n"
+
+#: getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
 msgstr "%s: optie '%s' is niet eenduidig\n"
 
-#: getopt.c:685
+#: getopt.c:683
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s: optie '--%s' staat geen argument toe\n"
 
-#: getopt.c:690
+#: getopt.c:688
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s: optie '%c%s' staat geen argument toe\n"
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: optie '%s' vereist een argument\n"
 
-#: getopt.c:736
+#: getopt.c:734
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: onbekende optie '--%s'\n"
 
-#: getopt.c:740
+#: getopt.c:738
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: onbekende optie '%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: optie vereist een argument -- %c\n"
 
-#: getopt.c:846
+#: getopt.c:844
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: optie '-W %s' is niet eenduidig\n"
 
-#: getopt.c:864
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s: optie '-W %s' staat geen argument toe\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Expanderen van '%s'\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Evalueren van '%s'\n"
+
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -488,131 +551,154 @@ msgstr "Herhash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Botsingen=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Zoeken naar impliciete regel voor '%s'.\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Impliciete regelrecursie wordt ontweken.\n"
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Stam is te lang: '%.*s'.\n"
+
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Patroonregel wordt geprobeerd met stam '%.*s'.\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Onmogelijke regelvereiste '%s' wordt verworpen.\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Proberen van regelvereiste '%s'.\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr "Proberen van impliciete vereiste '%s'.\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Kan geen tijdelijk bestand aanmaken\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Fout 0x%x (genegeerd)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (geheugendump gemaakt)"
+
+#: job.c:487
+msgid " (ignored)"
+msgstr " (genegeerd)"
 
-#: job.c:450
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<ingebouwd>"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Fout 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: recept voor doel '%s' is mislukt"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Fout %d (genegeerd)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Fout 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Fout %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Fout %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (geheugendump gemaakt)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Wachten op onvoltooide taken..."
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Levend kind %p (%s) PID %s %s\n"
+msgstr "Levend dochterproces %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (ginds)"
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Beëindigen van verliezend kind %p PID %s %s\n"
+msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n"
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Beëindigen van winnend kind %p PID %s %s\n"
+msgstr "Beëindigen van winnend dochterproces %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Opschonen van tijdelijk batch-bestand %s\n"
 
-#: job.c:861
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Opschonen van tijdelijk batch-bestand %s is mislukt (%d)\n"
+
+#: job.c:949
 #, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Verwijderen van kind %p PID %s%s uit de ketting.\n"
+msgstr "Verwijderen van dochterproces %p PID %s%s uit de ketting.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "schrijven naar taakserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "vrijgeven van taakserver-semafoor: (Fout %ld: %s)"
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Token vrijgegeven voor kind %p (%s).\n"
+msgstr "Token vrijgegeven voor dochterproces %p (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "schrijven naar taakserver"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() kan geen proces starten (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -621,88 +707,112 @@ msgstr ""
 "\n"
 "%d argumenten geteld bij mislukte start\n"
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 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"
+msgstr "Opname van dochterproces %p (%s) PID %s%s in de ketting.\n"
+
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)"
 
-#: job.c:1778
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Token verkregen voor kind %p (%s).\n"
+msgstr "Token verkregen voor dochterproces %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "lezen van taken-pijp"
 
-#: job.c:1798
+#: job.c:2003
 #, 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"
+msgid "%s: target '%s' does not exist"
+msgstr "%s: doel '%s' bestaat niet"
 
-#: job.c:1802
+#: job.c:2005
 #, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Ingebouwd recept wordt aangeroepen om doel '%s' bij te werken.\n"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: bijwerken van doel '%s' vanwege: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "kan belastingsgrens niet afdwingen: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr ""
 "geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet "
 "dupliceren\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr ""
 "geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet "
 "dupliceren\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet "
+"dupliceren\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Kan standaardinvoer niet herstellen\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Kan standaarduitvoer niet herstellen\n"
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Kan standaardfoutuitvoer niet herstellen\n"
+
+#: job.c:2365
 #, 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"
+msgstr ""
+"'make' heeft dochterproces met PID %s verwerkt, maar wacht nog op PID %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Opdracht niet gevonden"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Shell-programma niet gevonden"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Maken van tijdelijk batch-bestand %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Inhoud van batch-bestand:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
@@ -711,60 +821,93 @@ msgstr ""
 "Inhoud van batch-bestand:%s\n"
 "\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
-msgid "Options:\n"
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
 msgstr ""
-"  \n"
-"Opties:\n"
+"Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit "
+"programma."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Openen van globale symbolentabel is mislukt: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Geladen object %s is niet gedeclareerd als GPL-compatibel"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Laden van symbool %s uit %s is mislukt: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Lege symboolnaam om te laden: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Laden van symbool %s uit %s\n"
 
-#: main.c:304
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "De 'load'-operatie wordt op dit platform niet ondersteund."
+
+#: main.c:312
+msgid "Options:\n"
+msgstr "Opties:\n"
+
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr ""
 "  -b, -m                       (genegeerd, maar herkend wegens "
 "compatibiliteit)\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make            onvoorwaardelijk alle doelen maken\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C MAP, --directory=MAP      naar deze map gaan alvorens iets te doen\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
 "  -d                           veel informatie weergeven voor het debuggen\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=VLAGGEN]            verschillende soorten debuginformatie "
 "weergeven\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides  omgevingsvariabelen gaan boven Makefiles\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 "  --eval=TEKST                 deze TEKST als Makefile-statement evalueren\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -773,23 +916,23 @@ msgstr ""
 "                               het gegeven bestand als Makefile gebruiken\n"
 "\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                   deze hulptekst tonen en stoppen\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors          alle fouten in recepten negeren\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
-"  -I MAP, --include-dir=MAP    deze map doorzoeken naar ingevoegde "
+"  -I MAP, --include-dir=MAP    deze map doorzoeken naar ingesloten "
 "Makefiles\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -797,14 +940,14 @@ msgstr ""
 "  -j [N], --jobs[=N]           het uitvoeren van N taken tegelijk toestaan;\n"
 "                               zonder N is het aantal onbeperkt\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going             doorgaan als een doel niet gemaakt kan "
 "worden\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -814,17 +957,16 @@ msgstr ""
 "                               alleen extra taken starten als de\n"
 "                               systeembelasting lager is dan N\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times    van een symbolische koppeling en zijn doel "
-"de\n"
-"                               laatste wijzigingstijd gebruiken\n"
+"  -L, --check-symlink-times    van een symbolische koppeling en zijn doel\n"
+"                               de laatste wijzigingstijd gebruiken\n"
 "\n"
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
@@ -833,7 +975,7 @@ msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                               recepten niet uitvoeren, alleen weergeven\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -843,12 +985,21 @@ msgstr ""
 "                               BESTAND als oud beschouwen, niet opnieuw "
 "maken\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                               uitvoer van parallelle taken synchroniseren "
+"op TYPE\n"
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 "  -p, --print-data-base        interne gegevensbank van 'make' weergeven\n"
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
@@ -856,43 +1007,47 @@ msgstr ""
 "  -q, --question               geen recepten uitvoeren; de afsluitwaarde\n"
 "                               geeft aan of alles bijgewerkt is\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules       ingebouwde impliciete regels uitzetten\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables   ingebouwde instellingen van variabelen "
 "uitzetten\n"
 "\n"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet        recepten niet weergeven\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr "  -S, --no-keep-going, --stop  optie '-k' uitzetten\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                  doelen aanraken in plaats van opnieuw maken\n"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                      tracing-informatie weergeven\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr "  -v, --version                versienummer tonen en stoppen\n"
+msgstr "  -v, --version                programmaversie tonen en stoppen\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory        de huidige map weergeven\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -900,7 +1055,7 @@ msgstr ""
 "  --no-print-directory         optie '-w' uitzetten, ook als deze impliciet\n"
 "                               was aangezet\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -908,7 +1063,7 @@ msgstr ""
 "  -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n"
 "                               BESTAND als oneindig nieuw beschouwen\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -916,21 +1071,30 @@ msgstr ""
 "  --warn-undefined-variables   waarschuwen als naar een ongedefinieerde\n"
 "                               variabele wordt verwezen\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "lege tekenreeks is ongeldig als bestandsnaam"
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
+msgid "unknown debug level specification '%s'"
 msgstr "onbekende aanduiding '%s' voor debug-niveau"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "onbekend uitvoersynchronisatie-type: '%s'"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "*interne fout*: meerdere opties '--sync-mutex'"
+
+#: main.c:848
 #, 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:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -945,211 +1109,233 @@ msgstr ""
 "ExceptionFlags = %lx\n"
 "ExceptionAddress = 0x%p\n"
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n"
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell() stelt default_shell = %s in\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s slaapt gedurende 30 seconden..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "klaar met 30 seconden slapen.  Make gaat verder.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile op standaardinvoer is dubbel opgegeven."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (tijdelijk bestand)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (tijdelijk bestand)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Opnieuw instellen op enkele-taakmodus (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "*interne fout*: meerdere opties '--jobserver-fds'"
 
-#: main.c:1727
+#: main.c:1544
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"*interne fout*: kan taakserver-semafoor '%s' niet openen: (Fout %ld: %s)"
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Taakservercliënt (semafoor %s)\n"
+
+#: main.c:1551
+#, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "*interne fout*: ongeldige tekenreeks '%s' voor '--jobserver-fds'"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
 "Waarschuwing: '-jN' is afgedwongen in een deelproces: taakserver-modus "
 "uitgezet."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "dubbele taakserver"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
 "Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt.  Voeg '+' "
 "toe aan de ouderregel."
 
-#: main.c:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile op standaardinvoer is dubbel opgegeven."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (tijdelijk bestand)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (tijdelijk bestand)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Parallelle taken (-j) worden op dit platform niet ondersteund."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Opnieuw instellen op enkele-taakmodus (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Taakserver-plaatsen zijn beperkt tot %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "aanmaken van taakserver-semafoor: (Fout %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "maken van taken-pijp"
+msgstr "aanmaken van taken-pijp"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "initialiseren van taakserver-pijp"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr ""
 "Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
-msgstr "Bijwerken van makefiles...\n"
+msgstr "Bijwerken van Makefiles...\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Opnieuw maken van makefile '%s' is mislukt."
+msgid "Failed to remake makefile '%s'."
+msgstr "Opnieuw maken van Makefile '%s' is mislukt."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Ingesloten makefile '%s' is niet gevonden."
+msgid "Included makefile '%s' was not found."
+msgstr "Ingesloten Makefile '%s' is niet gevonden."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
+msgid "Makefile '%s' was not found"
 msgstr "Makefile '%s' is niet gevonden."
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Kan niet terugkeren naar oorspronkelijke map."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Opnieuw uitvoeren[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "verwijderen (van tijdelijk bestand): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL bevat meer dan één doel"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "Geen doelen opgegeven en geen makefile gevonden"
+msgstr "Geen doelen opgegeven en geen Makefile gevonden"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Geen doelen"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Bijwerken van doelen...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
 "Waarschuwing:  Klokafwijking geconstateerd.  Het maken is mogelijk "
 "onvolledig gebeurd."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Gebruik:  %s [OPTIES] [DOEL]...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Dit programma is gemaakt voor %s.\n"
+"Dit programma is gecompileerd voor %s.\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Dit programma is gemaakt voor %s (%s).\n"
+"Dit programma is gecompileerd voor %s (%s).\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
 "Rapporteer programmafouten aan <bug-make@gnu.org>,\n"
 "meld gebreken in de vertaling aan <vertaling@vrijschrift.org>.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, c-format
-msgid "the `%s%s' option requires a non-empty string 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:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "de optie '-%c' vereist een positief, geheel argument"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "de optie '-%c' vereist een positief geheel getal als argument"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
-msgstr "%sDit programma is gemaakt voor %s.\n"
+msgstr "%sDit programma is gecompileerd voor %s.\n"
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr "%sDit programma is gemaakt voor %s (%s).\n"
+msgstr "%sDit programma is gecompileerd voor %s (%s).\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1163,7 +1349,7 @@ msgstr ""
 "verspreiden.\n"
 "%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1172,7 +1358,7 @@ msgstr ""
 "\n"
 "# Make-gegevensbank, weergegeven op %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1181,107 +1367,107 @@ msgstr ""
 "\n"
 "# Make-gegevensbank voltooid op %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Onbekende fout %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "onvoldoende geheugen beschikbaar"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Toegang geïnitialiseerd"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Gebruikerstoegang"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make-toegang"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Dochterprocestoegang"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Een onbekende map wordt binnengegaan\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Een onbekende map wordt verlaten\n"
 
-#: main.c:3242
+#: output.c:133
 #, c-format
-msgid "%s: Entering directory `%s'\n"
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: Map '%s' wordt binnengegaan\n"
 
-#: main.c:3245
+#: output.c:135
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: Map '%s' wordt verlaten\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Een onbekende map wordt binnengegaan\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Een onbekende map wordt verlaten\n"
 
-#: main.c:3257
+#: output.c:144
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: Map '%s' wordt binnengegaan\n"
 
-#: main.c:3260
+#: output.c:146
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: Map '%s' wordt verlaten\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "schrijffout: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "schrijffout"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Gestopt.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Onbekende fout %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "onvoldoende geheugen beschikbaar"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "Toegang geïnitialiseerd"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Gebruikerstoegang"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Make-toegang"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Kindtoegang"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "schrijffout: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "schrijffout"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "Lezen van makefiles...\n"
+msgstr "Lezen van Makefiles...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Lezen van makefile '%s'"
+msgid "Reading makefile '%s'"
+msgstr "Lezen van Makefile '%s'"
 
 #: read.c:335
 #, c-format
@@ -1303,325 +1489,340 @@ msgstr " (maakt niet uit)"
 msgid " (no ~ expansion)"
 msgstr " (geen expansie van ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "UTF-8 BOM in Makefile '%s' wordt overgeslagen\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "UTF-8 BOM in Makefile-buffer wordt overgeslagen\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "ongeldige syntaxis in voorwaardelijk deel"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: laden is mislukt"
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr "recept begint voor eerste doel"
 
-#: read.c:940
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "ontbrekende regel voor recept"
+msgstr "ontbrekende regel vóór recept"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "ontbrekend scheidingsteken%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (bedoelde u TAB in plaats van 8 spaties?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "ontbrekend doelpatroon"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "meerdere doelpatronen"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
+msgid "target pattern contains no '%%'"
 msgstr "doelpatroon bevat geen '%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+msgid "missing 'endif'"
 msgstr "ontbrekende 'endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "lege naam van variabele"
 
-#: read.c:1367
-msgid "extraneous text after `define' directive"
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
 msgstr "extra tekst na 'define'-opdracht"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
 msgstr "ontbrekende 'endef', onafgemaakte 'define'"
 
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
 msgstr "extra tekst na 'endef'-opdracht"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
+msgid "extraneous text after '%s' directive"
 msgstr "extra tekst na '%s'-opdracht"
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
+msgid "extraneous '%s'"
 msgstr "extra '%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+msgid "only one 'else' per conditional"
 msgstr "slechts één 'else' per voorwaardelijk deel"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Onjuiste doelspecifieke variabele-definitie"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr "vereisten kunnen niet in recepten gedefinieerd worden"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "gemengde impliciete en statische patroonregels"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "gemengde impliciete en normale regels"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
+msgid "target '%s' doesn't match the target pattern"
 msgstr "doel '%s' komt niet overeen met doelpatroon"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
+msgid "target file '%s' has both : and :: entries"
 msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items"
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel."
+msgid "target '%s' given more than once in the same rule"
+msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel"
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "Waarschuwing: oud recept voor doel '%s' wordt genegeerd"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "Waarschuwing: NUL-teken gezien; de rest van de regel wordt genegeerd"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
+msgid "Nothing to be done for '%s'."
 msgstr "Er hoeft niets gedaan te worden voor '%s'."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "'%s' is bijgewerkt."
+msgid "'%s' is up to date."
+msgstr "'%s' is up-to-date."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Bijknippen van bestand '%s'.\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Snoeien van bestand '%s'.\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sEr is geen regel om doel '%s' te maken%s"
 
-#: remake.c:361
+#: remake.c:379
 #, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+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:413
 #, c-format
-msgid "Considering target file `%s'.\n"
+msgid "Considering target file '%s'.\n"
 msgstr "Doelbestand '%s' wordt overwogen.\n"
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "Bijwerken van bestand '%s' is recent geprobeerd en mislukt.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
+msgid "File '%s' was considered already.\n"
 msgstr "Bestand '%s' was al overwogen.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
+msgid "Still updating file '%s'.\n"
 msgstr "Bestand '%s' wordt nog bijgewerkt.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
+msgid "Finished updating file '%s'.\n"
 msgstr "Bijwerken van bestand '%s' is voltooid.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
+msgid "File '%s' does not exist.\n"
 msgstr "Bestand '%s' bestaat niet.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie "
 "tijdsstempel"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Impliciete regel voor '%s' gevonden.\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Geen impliciete regel voor '%s' gevonden.\n"
 
 #: remake.c:502
 #, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Standaardrecept wordt gebruikt voor '%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Circulaire afhankelijkheid %s <- %s is verworpen."
 
-#: remake.c:651
+#: remake.c:655
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "De vereisten van '%s' worden nu gemaakt.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
+msgid "Giving up on target file '%s'.\n"
 msgstr "Pogingen voor doelbestand '%s' worden gestaakt.\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
+msgid "Target '%s' not remade because of errors."
 msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "Vereiste '%s' is alleen-ordenen voor doel '%s'.\n"
 
-#: remake.c:732
+#: remake.c:736
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "Vereiste '%s' van doel '%s' bestaat niet.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n"
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "Vereiste '%s' is ouder dan doel '%s'.\n"
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr "Doel '%s' is dubbeldubbelpunts en heeft geen vereisten.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-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"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Er is geen recept voor '%s', en geen van de vereisten is veranderd.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
+msgid "No need to remake target '%s'"
 msgstr "Doel '%s' hoeft niet opnieuw gemaakt te worden"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
+msgid "; using VPATH name '%s'"
 msgstr "; VPATH-naam '%s' wordt gebruikt"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "'%s' moet opnieuw gemaakt worden.\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Doel '%s' moet opnieuw gemaakt worden.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  VPATH-naam '%s' wordt genegeerd.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "Recept van '%s' wordt nu uitgevoerd.\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Doelbestand '%s' is succesvol opnieuw gemaakt.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Doelbestand '%s' is met succes opnieuw gemaakt.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder '-q'.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
+msgid "Using default commands for '%s'.\n"
 msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst"
 
-#: remake.c:1370
+#: remake.c:1385
 #, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr ""
 "Waarschuwing: bestand '%s' heeft een wijzigingstijd %s seconden in de "
 "toekomst"
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS-element '%s' is geen patroon"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customs kan niet exporteren: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1629,7 +1830,7 @@ msgstr ""
 "\n"
 "# Impliciete regels"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1637,7 +1838,7 @@ msgstr ""
 "\n"
 "# Geen impliciete regels."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1646,246 +1847,271 @@ msgstr ""
 "\n"
 "# %u impliciete regels, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "PROGRAMMAFOUT: num_pattern_rules is verkeerd!  %u != %u"
+msgstr "PROGRAMMAFOUT: num_pattern_rules() is verkeerd!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "onbekend signaal"
 
-#: signame.c:94
+# Vroeger ging dit over het afsluiten van een modemverbinding,
+# tegenwoordig over het afsluiten van een pseudoterminal.
+#: signame.c:92
 msgid "Hangup"
 msgstr "Opgehangen"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Onderbroken"
 
-#: signame.c:100
+# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen.
+#: signame.c:98
 msgid "Quit"
 msgstr "Afgesloten"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Onjuiste bewerking"
+msgstr "Ongeldige instructie"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Traceer/breekpunt-instructie"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Afgebroken"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT-instructie"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT-instructie"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Drijvendekomma-berekeningsfout"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Geëlimineerd"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Busfout"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Segmentatiefout"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Onjuiste systeemaanroep"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Gebroken pijp"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Wekker"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Beëindigd"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Gebruikergedefinieerd signaal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Gebruikergedefinieerd signaal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
-msgstr "Dochter is afgesloten"
+msgstr "Dochterproces is afgesloten"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Stroomstoring"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Gepauzeerd"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Gepauzeerd (terminalinvoer)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Gepauzeerd (terminaluitvoer)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Gepauzeerd (signaal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Limiet op processortijd is overschreden"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Limiet op bestandsgrootte is overschreden"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Virtuele tijdopnemer is verlopen"
+msgstr "Virtuele timer is afgelopen"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Tijdopnemer voor analyse is verlopen"
+msgstr "Timer voor profilering is afgelopen"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Venster is veranderd"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Doorgegaan"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Urgente in-/uitvoertoestand"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "In-/uitvoer is mogelijk"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Hulpbron verloren"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Gevaarsignaal"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Verzoek om informatie"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Drijvendekomma-coprocessor is niet beschikbaar"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 "\n"
-"%s Aantal tekenreeksen in strcache: %d / lookups = %lu / treffers = %lu\n"
+"%s Geen 'strcache'-buffers\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-msgstr "%s Aantal strcache-buffers: %d (* %d bytes/buffer = %d bytes)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s 'strcache'-buffers: %lu (%lu) / strings = %lu / opslag = %lu B / "
+"gemiddeld = %lu B\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
+"%s huidig buffer: grootte = %hu B / gebruikt = %hu B / aantal = %hu / "
+"gemiddeld = %hu B\n"
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
-"%s Gebruikte strcache: totaal = %d (%d) / max = %d / min = %d / gemiddeld = %"
-"d\n"
+"%s andere gebruikte: totaal = %lu B / aantal = %lu / gemiddeld = %lu B\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
-"%s Vrije strcache: totaal = %d (%d) / max = %d / min = %d / gemiddeld = %d\n"
+"%s andere vrij: totaal = %lu B / max = %lu B / min = %lu B / gemiddeld = %hu "
+"B\n"
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# strcache-hashtabel-statistieken:\n"
+"%s 'strcache'-prestatie: lookups = %lu / treffersverhouding = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# hashtabel-statistieken van bestanden:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatisch"
+
+#: variable.c:1610
 msgid "default"
 msgstr "standaard"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "omgeving"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
-msgstr "makefile"
+msgstr "Makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "omgeving onder -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "opdrachtregel"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+msgid "'override' directive"
 msgstr "'override'-opdracht"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatisch"
-
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (van '%s', regel %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (uit '%s', regel %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# Statistieken van hashtabel van variabelenverzameling:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1893,7 +2119,7 @@ msgstr ""
 "\n"
 "# Variabelen\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1901,7 +2127,7 @@ msgstr ""
 "\n"
 "# Patroonspecifieke variabelewaarden"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1909,7 +2135,7 @@ msgstr ""
 "\n"
 "# Geen patroonspecifieke variabelewaarden"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1918,94 +2144,94 @@ msgstr ""
 "\n"
 "# %u patroonspecifieke variabelewaarden"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
+msgid "warning: undefined variable '%.*s'"
 msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search() is mislukt met afsluitwaarde %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Waarschuwing: lege omleiding\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
+msgid "internal error: '%s' command_state"
 msgstr "*interne fout*: '%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INGEBOUWD [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "INGEBOUWDE CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "INGEBOUWDE RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Onbekende ingebouwde opdracht '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fout: lege opdracht\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Invoer wordt omgeleid van %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Foutuitvoer wordt omgeleid naar %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
 msgstr "Uitvoer wordt toegevoegd aan %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Uitvoer wordt omgeleid naar %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr "Toevoegen van %.*s en opschoning\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "In plaats daarvan wordt %s uitgevoerd\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fout bij proces-start, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2013,37 +2239,64 @@ msgstr ""
 "\n"
 "# VPATH-zoekpaden\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
 msgstr "# Geen 'vpath'-zoekpaden."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u 'vpath'-zoekpaden.\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Geen algemeen zoekpad ('VPATH'-variabele)."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Algemeen zoekpad ('VPATH'-variabele):\n"
 "# "
 
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Ongeldige waarde in 'update_status'-onderdeel!"
+
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "onbekende trace-modus '%s'"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Fout 0x%x (genegeerd)"
+
+#~ 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"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Ingebouwd recept wordt aangeroepen om doel '%s' bij te werken.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s Aantal strcache-buffers: %d (* %d bytes/buffer = %d bytes)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# strcache-hashtabel-statistieken:\n"
+#~ "# "
+
 #~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
 #~ msgstr "process_easy() kan geen proces starten (e=%ld)\n"
 
index a054031..b0a83e8 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index e81ac11..785b182 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
 # Polish translation for GNU make.
-# Copyright (C) 1996, 2002, 2005, 2006, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013 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-2010.
+# Paweł Krawczyk <kravietz@ceti.pl>, 1996.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81.91\n"
+"Project-Id-Version: make 3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2010-07-25 22:15+0200\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 20:47+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"Language: pl\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "próba u¿ycia nieistniej±cej funkcji: `%s'"
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "próba użycia nieistniejącej funkcji: '%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "element biblioteki `touch' jest niedostêpny pod VMS"
+msgstr "element biblioteki `touch' jest niedostępny pod VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: Archiwum `%s' nie istnieje"
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Archiwum '%s' nie istnieje"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch: `%s' nie jest poprawnym archiwum"
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: '%s' nie jest poprawnym archiwum"
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "touch: Brak elementu `%s' w `%s'"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Brak elementu '%s' w '%s'"
 
-#: ar.c:166
+#: ar.c:164
 #, 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'"
+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
+#: arscan.c:67
 #, c-format
 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 = "
+"Uzyskanie informacji o module przez lnr$set_module() nie udało się, status = "
 "%d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control() nie powiod³o siê, status = %d"
+msgstr "lbr$ini_control() nie powiodło się, status = %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "b³±d otwarcia biblioteki `%s' podczas szukania elementu `%s'"
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "błąd otwarcia biblioteki '%s' podczas szukania elementu '%s'"
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Element `%s'%s: %ld bajtów pod %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Element '%s'%s: %ld bajtów pod %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
-msgstr " (nazwa mo¿e zostaæ okrojona)"
+msgstr " (nazwa może zostać okrojona)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Polecenia mają za dużo linii (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Przerwano.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, 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"
+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:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Element archiwum `%s' mo¿e byæ fa³szywy; nie usuniêty"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Element archiwum '%s' może być fałszywy; nie usunięty"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Kasujê plik `%s'"
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Kasuję plik '%s'"
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Kasujê plik `%s'"
+msgid "*** Deleting file '%s'"
+msgstr "*** Kasuję plik '%s'"
 
-#: commands.c:676
+#: commands.c:684
 msgid "#  recipe to execute"
 msgstr "#  polecenia do wykonania"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (wbudowane):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (z `%s', linia %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (z '%s', linia %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -126,221 +132,221 @@ msgstr ""
 "\n"
 "# Katalogi\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: stat() zwraca b³±d.\n"
+msgstr "# %s: stat() zwraca błąd.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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"
+msgstr "# %s (klucz %s, czas modyfikacji %d): otwarcie było niemożliwe.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): otwarcie było niemożliwe.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, 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"
+msgstr "# %s (urządzenie %ld, i-węzeł %ld): otwarcie było niemożliwe.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (klucz %s, czas modyfikacji %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (urz±dzenie %d, i-wêze³ [%d,%d,%d]): "
+msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (urz±dzenie %ld, i-wêze³ %ld): "
+msgstr "# %s (urządzenie %ld, i-węzeł %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Nie"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " pliki, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "nie"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " niemo¿liwo¶ci"
+msgstr " niemożliwości"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
-msgstr " jak dot±d."
+msgstr " jak dotąd."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " niemo¿liwo¶ci w %lu katalogach.\n"
+msgstr " niemożliwości w %lu katalogach.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Rekurencyjna zmienna `%s' wskazuje na sam± siebie"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Rekurencyjna zmienna '%s' wskazuje na samą siebie"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "niezakoñczone odwo³anie do zmiennej"
+msgstr "niezakończone odwołanie do zmiennej"
 
-#: file.c:267
+#: file.c:269
 #, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr "Polecenia dla pliku `%s' podano w %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Polecenia dla pliku '%s' podano w %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, c-format
-msgid "Recipe for file `%s' was 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,"
+"Polecenia dla pliku '%s' zostały wyznaczone na podstawie reguł standardowych,"
 
-#: file.c:275
+#: file.c:277
 #, 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'."
+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:278
+#: file.c:280
 #, c-format
-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'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Polecenia dla '%s' zostaną zignorowane na rzecz poleceń dla '%s'."
 
-#: file.c:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+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"
+"nie można przemianować '%s' z pojedynczym dwukropkiem na '%s' z podwójnym"
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+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"
+"nie można przemianować '%s' z podwójnym dwukropkiem na '%s' z pojedynczym"
 
-#: file.c:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Kasowanie pliku po¶redniego `%s'"
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Kasowanie pliku pośredniego '%s'"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "Kasowanie plików po¶rednich...\n"
+msgstr "Kasowanie plików pośrednich...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Oznaczenie czasu spoza zakresu; zast±piono %s"
+msgstr "%s: Oznaczenie czasu spoza zakresu; zastąpiono %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Aktualny czas"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# To nie jest obiekt:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  Cenny plik (zale¿no¶æ .PRECIOUS)."
+msgstr "#  Cenny plik (zależność .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  Obiekt niejawny (zale¿no¶æ .PHONY)."
+msgstr "#  Obiekt niejawny (zależność .PHONY)."
 
-#: file.c:933
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Obiekt podany w linii poleceñ."
+msgstr "#  Obiekt podany w linii poleceń."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Makefile domylny, wymieniony w MAKEFILES lub -include/sinclude."
+msgstr "#  Makefile domyślny, wymieniony w MAKEFILES lub -include/sinclude."
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Reguła wbudowana"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  Szukanie regu³ domy¶lnych zosta³o wykonane."
+msgstr "#  Szukanie reguł domyślnych zostało wykonane."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Szukanie regu³ domy¶lnych nie zosta³o wykonane."
+msgstr "#  Szukanie reguł domyślnych nie zostało wykonane."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Ga³±¼ wzorców domy¶lnych/statycznych: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Gałąź wzorców domyślnych/statycznych: '%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  Plik jest zale¿no¶ci± przej¶ciow±."
+msgstr "#  Plik jest zależnością przejściową."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Robi równie¿:"
+msgstr "#  Robi również:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "#  Czas modyfikacji nie by³ sprawdzany."
+msgstr "#  Czas modyfikacji nie był sprawdzany."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Plik nie istnieje."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Plik jest bardzo stary."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Ostatnio modyfikowany %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
-msgstr "#  Plik zosta³ uaktualniony."
+msgstr "#  Plik został uaktualniony."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
-msgstr "#  Plik nie zosta³ uaktualniony."
+msgstr "#  Plik nie został uaktualniony."
 
-#: file.c:968
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Aktualnie uruchamiane polecenia (TO JEST B£¡D)."
+msgstr "#  Aktualnie uruchamiane polecenia (TO JEST BŁĄD)."
 
-#: file.c:971
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Aktualnie uruchamiane polecenia zale¿no¶ci (TO JEST B£¡D)."
+msgstr "#  Aktualnie uruchamiane polecenia zależności (TO JEST BŁĄD)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "#  Uaktualnienie powiod³o siê."
+msgstr "#  Uaktualnienie powiodło się."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Powinien byæ uaktualniony (-q jest w³±czone)."
+msgstr "#  Powinien być uaktualniony (-q jest włączone)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
-msgstr "#  Uaktualnianie nie powiod³o siê."
-
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  B³êdna warto¶æ w elemencie `update_status'!"
+msgstr "#  Uaktualnianie nie powiodło się."
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  B³êdna warto¶æ w elemencie `command_state'!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Błędna wartość w elemencie 'command_state'!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -348,136 +354,190 @@ msgstr ""
 "\n"
 "# Pliki"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statystyki tablic haszuj±cych plików:\n"
+"# statystyki tablic haszujących plików:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "pierwszy argument funkcji `word' nie jest numeryczny"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Pole '%s' nie zapamiętane w pamięci podręcznej: %s"
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "pierwszy argument funkcji 'word' nie jest liczbowy"
 
-#: 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:747
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "pierwszy argument funkcji 'word' musi być większy od 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "pierwszy argument funkcji `wordlist' nie jest numeryczny"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "pierwszy argument funkcji 'wordlist' nie jest liczbowy"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "drugi argument funkcji `wordlist' nie jest numeryczny"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "drugi argument funkcji 'wordlist' nie jest liczbowy"
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "windows32_openpipe(): DuplicateHandle(In) nie powiod³o siê (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodło się (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, 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"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodło się (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() nie powiod³o siê (e=%ld)\n"
+msgstr "CreatePipe() nie powiodło się (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe(): process_init_fd() nie powiod³o siê\n"
+msgstr "windows32_openpipe(): process_init_fd() nie powiodło się\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "Czyszczê tymczasowy plik wsadowy %s\n"
+msgstr "Czyszczę tymczasowy plik wsadowy %s\n"
+
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "otwarcie: %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "zapis: %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Błędna operacja na pliku: %s"
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "niewystarczająca liczba argumentów (%d) dla funkcji '%s'"
 
-#: function.c:2150
+#: function.c:2291
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "niewystarczaj±ca liczba argumentów (%d) dla funkcji `%s'"
+msgid "unimplemented on this platform: function '%s'"
+msgstr "funkcja '%s' nie jest zaimplementowana na tej platformie"
 
-#: function.c:2162
+#: function.c:2354
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "funkcja `%s' nie jest zaimplementowana na tej platformie"
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "nie dokończone wywołanie funkcji '%s': brak '%c'"
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Błędna operacja na pliku: %s"
 
-#: function.c:2212
+#: function.c:2550
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "nie dokoñczone wywo³anie funkcji `%s': brak `%c'"
+msgid "Function name too long: %s\n"
+msgstr "Zbyt długa nazwa funkcji: %s\n"
 
-#: getopt.c:661
+#: function.c:2552
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: opcja `%s' jest niejednoznaczna\n"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Błędna minimalna liczba argumentów (%d) dla funkcji %s\n"
 
-#: getopt.c:685
+#: function.c:2555
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: opcja `--%s' nie przyjmuje argumentów\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Błędna maksymalna liczba argumentów (%d) dla funkcji %s\n"
 
-#: getopt.c:690
+#: getopt.c:659
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: opcja `%c%s' nie przyjmuje argumentów\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: opcja '%s' jest niejednoznaczna\n"
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:683
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: opcja `%s' wymaga argumentu\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n"
 
-#: getopt.c:736
+#: getopt.c:688
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: nierozpoznana opcja `--%s'\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: opcja '%c%s' nie może mieć argumentów\n"
 
-#: getopt.c:740
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: nierozpoznan opcja `%c%s'\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: opcja '%s' musi mieć argument\n"
 
-#: getopt.c:766
+#: getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: nieznana opcja '--%s'\n"
+
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: nieznana opcja '%c%s'\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: niedozwolona opcja -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: b³êdna opcja -- %c\n"
+msgstr "%s: błędna opcja -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: opcja wymaga argumentu -- %c\n"
+msgstr "%s: opcja musi mieć argument -- %c\n"
+
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
 
-#: getopt.c:846
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: opcja '-W %s' nie może mieć argumentów\n"
 
-#: getopt.c:864
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: opcja `-W %s' nie przyjmuje argumentów\n"
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Rozwijanie '%s'\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Wyliczanie '%s'\n"
 
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
 msgstr ""
-"nie mo¿na przydzieliæ %lu bajtów na tablicê haszuj±c±: pamiêæ wyczerpana"
+"nie można przydzielić %lu bajtów na tablicę haszującą: pamięć wyczerpana"
 
 #: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Wype³nienie=%ld/%ld=%.0f%%, "
+msgstr "Wypełnienie=%ld/%ld=%.0f%%, "
 
 #: hash.c:282
 #, c-format
@@ -489,280 +549,358 @@ msgstr "Przehaszowania=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Kolizje=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Szukanie standardowej regu³y dla `%s'.\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Szukanie standardowej reguły dla '%s'.\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "Szukanie standardowej regu³y typu archive-member dla `%s'.\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Szukanie standardowej reguły typu archive-member dla '%s'.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Pomijanie rekurencyjnego wywo³ania regu³y standardowej.\n"
+msgstr "Pomijanie rekurencyjnego wywołania reguły standardowej.\n"
+
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Gałąź zbyt długa: '%.*s'.\n"
 
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Próbowanie regu³y wzorcowej z ga³êzi± `%.*s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Próbowanie reguły wzorcowej z gałęzią '%.*s'.\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Odrzucenie niemo¿liwej zale¿no¶ci regu³y `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Odrzucenie niemożliwej zależności reguły '%s'.\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Odrzucenie niemo¿liwej 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:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Próbowanie zale¿no¶ci regu³y `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Próbowanie zależności reguły '%s'.\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Próbowanie zale¿no¶ci domy¶lnej `%s'.\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Próbowanie zależności domyślnej '%s'.\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Znaleziono zale¿no¶æ `%s' jako VPATH `%s'\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Szukanie regu³y zawieraj±cej plik przej¶ciowy `%s'.\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Szukanie reguły zawierającej plik przejściowy '%s'.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "Nie mo¿na utworzyæ pliku tymczasowego\n"
+msgstr "Nie można utworzyć pliku tymczasowego\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] B³±d 0x%x (zignorowany)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (zrzut pamięci)"
+
+#: job.c:487
+msgid " (ignored)"
+msgstr " (zignorowano)"
 
-#: job.c:450
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<wbudowane>"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] B³±d 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: polecenia dla obiektu '%s' nie powiodły się"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] B³±d %d (zignorowany)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Błąd 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] B³±d %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Błąd %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (zrzut pamiêci)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s]: %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Oczekiwanie na niezakoñczone zadania...."
+msgstr "*** Oczekiwanie na niezakończone zadania...."
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "¯yj±cy potomek %p (%s) PID %s %s\n"
+msgstr "Żyjący potomek %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (zdalne)"
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Zbieranie przegrywaj±cego potomka %p PID %s %s\n"
+msgstr "Zbieranie przegrywającego potomka %p PID %s %s\n"
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Zbieranie wygrywaj±cego potomka %p PID %s %s\n"
+msgstr "Zbieranie wygrywającego potomka %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n"
 
-#: job.c:861
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Czyszczenie tymczasowego pliku wsadowego %s nie powiodło się (%d)\n"
+
+#: job.c:949
 #, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "pisz±cy serwer zadañ"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "zwalnianie semafora serwera zadań: (Błąd %ld: %s)"
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "Zwolniony token dla potomka %p (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "piszący serwer zadań"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() nie móg³ uruchomiæ procesu (e=%ld)\n"
+msgstr "process_easy() nie mógł uruchomić procesu (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Naliczono %d parametrów nieudanego uruchomienia\n"
+"Naliczono %d parametrów nieudanego uruchomienia\n"
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "oczekiwanie na semafor lub proces potomny: (Błąd %ld: %s)"
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Otrzymano token dla potomka %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "strumieñ czytaj±cy zadania"
+msgstr "strumień czytający zadania"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr "Wykonywanie poleceñ z %s:%lu dla uaktualnienia obiektu `%s'.\n"
+msgid "%s: target '%s' does not exist"
+msgstr "%s: obiekt '%s' nie istnieje"
 
-#: job.c:1802
+#: job.c:2005
 #, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Wykonywanie wbudowanych poleceñ dla uaktualnienia obiektu `%s'.\n"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
-msgstr "niemo¿liwe wymuszenie limitów obci±¿enia w tym systemie"
+msgstr "niemożliwe wymuszenie limitów obciążenia w tym systemie"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "niemo¿liwe wymuszenie limitu obci±¿enia: "
+msgstr "niemożliwe wymuszenie limitu obciążenia: "
 
-#: job.c:1985
+#: job.c:2199
 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"
+msgstr "nie ma więcej uchwytów plików: nie można powielić stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 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"
+msgstr "nie ma więcej uchwytów plików: nie można powielić stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "nie ma więcej uchwytów plików: nie można powielić stderr\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr "Nie mo¿na odtworzyæ stdin\n"
+msgstr "Nie można odtworzyć stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr "Nie mo¿na odtworzyæ stdout\n"
+msgstr "Nie można odtworzyć stdout\n"
+
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Nie można odtworzyć stderr\n"
 
-#: job.c:2127
+#: job.c:2365
 #, 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"
+msgstr "make usunął potomka pid %s, nadal czeka na pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Polecenie nie znalezione"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s: Nie znaleziono programu pow³oki"
+msgstr "%s: Nie znaleziono programu powłoki"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: mog³o zabrakn±æ miejsca na ¶rodowisko"
+msgstr "spawnvpe: mogło zabraknąć miejsca na środowisko"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL siê zmieni³ (by³ `%s', jest `%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL się zmienił (był '%s', jest '%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Tworzenie tymczasowego pliku wsadowego %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Zawartość pliku wsadowego:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
-"Zawarto¶æ pliku wsadowego:%s\n"
+"Zawartość pliku wsadowego:%s\n"
 "\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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"
+msgstr "%s (linia %d) Zły kontekst powłoki (!unixy && !batch_mode_shell)\n"
+
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYP] (--output-sync[=TYP]) nie zostało skonfigurowane przy tym budowaniu."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Nie udało się otworzyć tablicy symboli globalnych: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Wczytany obiekt %s nie jest zadeklarowany jako kompatybilny z GPL"
 
-#: main.c:303
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Nie udało się wczytać symbolu %s z %s: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Pusta nazwa symbolu do wczytania: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Wczytywanie symbolu %s z %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Operacja 'load' nie jest obsługiwana na tej platformie"
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opcje:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      Ignorowane dla kompatybilnoci.\n"
+msgstr "  -b, -m                      Ignorowane dla kompatybilności.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
-"  -B, --always-make           Bezwarunkowe utworzenie wszystkich obiektów.\n"
+"  -B, --always-make           Bezwarunkowe utworzenie wszystkich obiektów.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C KATALOG, --directory=KATALOG\n"
-"                              Przejcie do KATALOGu przed robieniem\n"
+"                              Przejście do KATALOGu przed robieniem\n"
 "                              czegokolwiek.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          Wy¶wietla du¿o informacji diagnostycznych.\n"
+"  -d                          Wyświetla dużo informacji diagnostycznych.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
-"  --debug[=FLAGI]             Wy¶wietla ró¿ne rodzaje informacji\n"
+"  --debug[=FLAGI]             Wyświetla różne rodzaje informacji\n"
 "                              diagnostycznych.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Zmienne ¶rodowiska przykrywaj± makefile.\n"
+"                              Zmienne środowiska przykrywają makefile.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
-"  --eval=£AÑCUCH              Wyznacza £AÑCUCH jako instrukcjê pliku "
+"  --eval=ŁAŃCUCH              Wyznacza ŁAŃCUCH jako instrukcję pliku "
 "makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -770,67 +908,67 @@ msgstr ""
 "  -f PLIK, --file=PLIK, --makefile=PLIK\n"
 "                              Czyta PLIK jako makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr ""
-"  -h, --help                  Wy¶wietla ten komunikat i koñczy dzia³anie.\n"
+"  -h, --help                  Wyświetla ten komunikat i kończy działanie.\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Ignoruje b³êdy poleceñ.\n"
+msgstr "  -i, --ignore-errors         Ignoruje błędy poleceń.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I KATALOG, --include-dir=KATALOG\n"
-"                              Szuka do³±czanych makefile w KATALOGu.\n"
+"                              Szuka dołączanych makefile w KATALOGu.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          Dopuszcza N zadañ naraz; brak N oznacza brak\n"
-"                              ograniczeñ.\n"
+"  -j [N], --jobs[=N]          Dopuszcza N zadań naraz; brak N oznacza brak\n"
+"                              ograniczeń.\n"
 
-#: main.c:332
+#: main.c:341
 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"
+"  -k, --keep-going            Kontynuuj jeśli nie da się zrobić jakichś\n"
+"                              obiektów.\n"
 
-#: main.c:334
+#: main.c:343
 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"
-"                              Nie uruchamiaj wielu zadañ je¶li load nie "
+"                              Nie uruchamiaj wielu zadań jeśli load nie "
 "jest\n"
-"                              poni¿ej N.\n"
+"                              poniżej N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times   U¿ywanie ostatniego mtime miêdzy dowi±zaniem a "
+"  -L, --check-symlink-times   Używanie ostatniego mtime między dowiązaniem a "
 "celem.\n"
 
-#: main.c:339
+#: main.c:348
 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"
-"                              Nie wykonuje poleceñ; jedynie je wy¶wietla.\n"
+"                              Nie wykonuje poleceń; jedynie je wyświetla.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -841,93 +979,115 @@ msgstr ""
 "go\n"
 "                              ponownie.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[SPOSÓB], --output-sync[=SPOSÓB]\n"
+"                              Sposób synchronizacji wyjścia zadań "
+"równoległych.\n"
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
-msgstr "  -p, --print-data-base       Wy¶wietla wewnêtrzn± bazê danych make.\n"
+msgstr "  -p, --print-data-base       Wyświetla wewnętrzną bazę danych make.\n"
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -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"
+"  -q, --question              Nie uruchamia żadnych poleceń; status powrotu\n"
+"                              wskazuje aktualność.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr "  -r, --no-builtin-rules      Wy³±cza wbudowane regu³y standardowe.\n"
+msgstr "  -r, --no-builtin-rules      Wyłącza wbudowane reguły standardowe.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Wy³±cza ustawianie wbudowanych zmiennych.\n"
+"  -R, --no-builtin-variables  Wyłącza ustawianie wbudowanych zmiennych.\n"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       Nie wypisuje poleceñ.\n"
+msgstr "  -s, --silent, --quiet       Nie wypisuje poleceń.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              Wy³±cza -k.\n"
+"                              Wyłącza -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
-msgstr "  -t, --touch                 Uaktualnia obiekty zamiast je robiæ.\n"
+msgstr "  -t, --touch                 Uaktualnia obiekty zamiast je robić.\n"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Wypisywanie informacji ze śledzenia.\n"
+
+#: main.c:374
 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"
+"  -v, --version               Wyświetla wersję make i kończy działanie.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       Wywietla aktualny katalog.\n"
+msgstr "  -w, --print-directory       Wyświetla aktualny katalog.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        Wy³±cza -w, nawet je¶li by³o ono w³±czone\n"
-"                              domylnie.\n"
+"  --no-print-directory        Wyłącza -w, nawet jeśli było ono włączone\n"
+"                              domyślnie.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
 "  -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n"
-"                              Uznaje PLIK za nieskoñczenie nowy.\n"
+"                              Uznaje PLIK za nieskończenie nowy.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  Ostrzega przy odwo³aniach do "
+"  --warn-undefined-variables  Ostrzega przy odwołaniach do "
 "niezdefiniowanych\n"
 "                              zmiennych.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "pusty ³añcuch nie mo¿e byæ nazw± pliku"
+msgstr "pusty łańcuch nie może być nazwą pliku"
+
+#: main.c:734
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "nieznany poziom diagnostyki '%s'"
 
-#: main.c:650
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "nieznany poziom diagnostyki `%s'"
+msgid "unknown output-sync type '%s'"
+msgstr "nieznany sposób synchronizacji wyjścia '%s'"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "błąd wewnętrzny: wiele opcji --sync-mutex"
 
-#: main.c:690
+#: main.c:848
 #, 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"
+msgstr "%s: złapano przerwanie/wyjątek (kod = 0x%lx, adres = 0x%p)\n"
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -937,208 +1097,231 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Nieobs³ugiwany filtr wyj±tku wywo³any z programu %s\n"
+"Nieobsługiwany filtr wyjątku wywołany z programu %s\n"
 "ExceptionCode = %lx\n"
 "ExceptionFlags = %lx\n"
 "ExceptionAddress = 0x%p\n"
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Naruszenie praw dostêpu: zapis pod adresem 0x%p\n"
+msgstr "Naruszenie praw dostępu: zapis pod adresem 0x%p\n"
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Naruszenie praw dostêpu: odczyt spod adresu 0x%p\n"
+msgstr "Naruszenie praw dostępu: odczyt spod adresu 0x%p\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell() ustawia default_shell = %s\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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"
+msgstr "find_and_set_shell() ustawia ścieżkę wyszukiwania default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s jest zawieszony na 30 sekund..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "zakoñczono sleep(30). Kontynuacja.\n"
+msgstr "zakończono sleep(30). Kontynuacja.\n"
+
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "błąd wewnętrzny: wiele opcji --jobserver-fds"
+
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"błąd wewnętrzny: nie udało się otworzyć semafora serwera zadań '%s': (Błąd "
+"%ld: %s)"
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Klient serwera zadań (semafor %s)\n"
+
+#: main.c:1551
+#, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "błąd wewnętrzny: błędny łańcuch --jobserver-fds '%s'"
+
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Klient serwera zadań (fds %d,%d)\n"
 
-#: main.c:1501
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "uwaga: -jN wymuszone w podzadaniu: wyłączanie trybu serwera zadań."
+
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "duplikacja serwera zadań"
+
+#: main.c:1586
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr ""
+"uwaga: serwer zadań niedostępny: użycie -j1. Należy dodać `+' do nadrzędnej "
+"reguły make."
+
+#: main.c:1752
 msgid "Makefile from standard input specified twice."
-msgstr "Makefile ze standardowego wejcia podano dwukrotnie."
+msgstr "Makefile ze standardowego wejścia podano dwukrotnie."
 
-#: main.c:1539 vmsjobs.c:500
+#: main.c:1790 vmsjobs.c:496
 msgid "fopen (temporary file)"
 msgstr "fopen (plik tymczasowy)"
 
-#: main.c:1545
+#: main.c:1796
 msgid "fwrite (temporary file)"
 msgstr "fwrite (plik tymczasowy)"
 
-#: main.c:1703
+#: main.c:1984
 msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Równoleg³e zadania (-j) nie s± obs³ugiwane na tej platformie"
+msgstr "Równoległe zadania (-j) nie są obsługiwane na tej platformie"
 
-#: main.c:1704
+#: main.c:1985
 msgid "Resetting to single job (-j1) mode."
-msgstr "Prze³±czanie w tryb jednozadaniowy (-j1)."
-
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr "b³±d wewnêtrzny: wiele opcji --jobserver-fds"
+msgstr "Przełączanie w tryb jednozadaniowy (-j1)."
 
-#: main.c:1727
+#: main.c:2006
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "b³±d wewnêtrzny: b³êdny ³añcuch --jobserver-fds `%s'"
+msgid "Jobserver slots limited to %d\n"
+msgstr "Pojemność serwera zadań ograniczona do %d\n"
 
-#: main.c:1730
+#: main.c:2012
 #, 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ñ."
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "tworzenie semafora serwera zadań: (Błąd %ld: %s)"
 
-#: main.c:1750
-msgid "dup jobserver"
-msgstr "duplikacja serwera zadañ"
-
-#: 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:1777
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "tworzenie potoku zadañ"
+msgstr "tworzenie potoku zadań"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "inicjowanie potoku serwera zadañ"
+msgstr "inicjowanie potoku serwera zadań"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr "Dowi±zania symboliczne nie s± obs³ugiwane: wy³±czono -L."
+msgstr "Dowiązania symboliczne nie są obsługiwane: wyłączono -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
-msgstr "Uaktualnianie plików makefile....\n"
+msgstr "Uaktualnianie plików makefile....\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Makefile `%s' mo¿e siê zapêtliæ; nie przetwarzam go.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Plik makefile '%s' może się zapętlić; bez ponownego przetwarzania.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Nie uda³o siê zrobiæ makefile `%s'."
+msgid "Failed to remake makefile '%s'."
+msgstr "Nie udało się ponownie przetworzyć pliku makefile '%s'."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Nie znaleziono w³±czanych makefile `%s'."
+msgid "Included makefile '%s' was not found."
+msgstr "Nie znaleziono włączanego pliku makefile '%s'."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Nie znaleziono makefile `%s'"
+msgid "Makefile '%s' was not found"
+msgstr "Nie znaleziono pliku makefile '%s'"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "Niemo¿liwy powrót do katalogu startowego."
+msgstr "Niemożliwy powrót do katalogu startowego."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Ponowne uruchamianie[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (plik tymczasowy): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ".DEFAULT_GOAL zawiera wiêcej ni¿ jeden cel"
+msgstr ".DEFAULT_GOAL zawiera więcej niż jeden cel"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "Nie podano obiektów i nie znaleziono makefile"
+msgstr "Nie podano obiektów i nie znaleziono makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
-msgstr "Brak obiektów"
+msgstr "Brak obiektów"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "Uaktualnianie obiektów docelowych....\n"
+msgstr "Uaktualnianie obiektów docelowych....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
-msgstr "uwaga:  Wykryto przestawienie zegara. Budowanie mo¿e byæ niekompletne."
+msgstr "uwaga:  Wykryto przestawienie zegara. Budowanie może być niekompletne."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Sk³adnia: %s [opcje] [obiekt] ...\n"
+msgstr "Składnia: %s [opcje] [obiekt] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Ten program zosta³ zbudowany dla %s\n"
+"Ten program został zbudowany dla %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Ten program zosta³ zbudowany dla %s (%s)\n"
+"Ten program został zbudowany dla %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "B³êdy proszê zg³aszaæ na adres <bug-make@gnu.org>\n"
+msgstr "Błędy proszę zgłaszać na adres <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "opcja `%s%s' 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:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "opcja `-%c' wymaga argumentu ca³kowitego dodatniego"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "opcja '-%c' wymaga argumentu będącego liczbą całkowitą dodatnią"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
-msgstr "%sTen program zosta³ zbudowany dla systemu %s\n"
+msgstr "%sTen program został zbudowany dla systemu %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr "%sTen program zosta³ zbudowany dla systemu %s (%s)\n"
+msgstr "%sTen program został zbudowany dla systemu %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1148,730 +1331,766 @@ msgid ""
 msgstr ""
 "%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"
+"%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:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# Baza danych Make, wywietlana na %s"
+"# Baza danych Make, wyświetlana na %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Zakoñczono tworzenie bazy danych Make na %s\n"
+"# Zakończono tworzenie bazy danych Make na %s\n"
+
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Nieznany błąd %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "brak pamięci wirtualnej"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Zainicjalizowany dostęp"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Dostęp użytkownika"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Dostęp make"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Dostęp potomka"
 
-#: main.c:3237
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Wejcie do nieznanego katalogu\n"
+msgstr "%s: Wejście do nieznanego katalogu\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Opuszczenie nieznanego katalogu\n"
 
-#: main.c:3242
+#: output.c:133
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Wej¶cie do katalogu `%s'\n"
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Wejście do katalogu '%s'\n"
 
-#: main.c:3245
+#: output.c:135
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Opuszczenie katalogu `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Opuszczenie katalogu '%s'\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Wejcie do nieznanego katalogu\n"
+msgstr "%s[%u]: Wejście do nieznanego katalogu\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n"
 
-#: main.c:3257
+#: output.c:144
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Wejście do katalogu '%s'\n"
+
+#: output.c:146
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Wej¶cie do katalogu `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Opuszczenie katalogu '%s'\n"
 
-#: main.c:3260
+#: output.c:515
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Opuszczenie katalogu `%s'\n"
+msgid "write error: %s"
+msgstr "błąd zapisu: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "błąd zapisu"
 
-#: misc.c:316
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ". Stop.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nieznany b³±d %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "brak pamiêci wirtualnej"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "Zainicjalizowany dostêp"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Dostêp u¿ytkownika"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Dostêp make"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Dostêp potomka"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "b³±d zapisu: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "b³±d zapisu"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Czytanie makefile...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Czytanie makefile `%s'"
+msgid "Reading makefile '%s'"
+msgstr "Czytanie pliku makefile '%s'"
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (brak celu domylnego)"
+msgstr " (brak celu domyślnego)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (przeszukiwana ¶cie¿ka)"
+msgstr " (przeszukiwana ścieżka)"
 
 #: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (niewa¿ne)"
+msgstr " (nieważne)"
 
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
 msgstr " (brak rozszerzenia ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Pominięto BOM UTF-8 w pliku makefile '%s'\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Pominięto BOM UTF-8 w buforze pliku makefile\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "b³êdna sk³adnia wyra¿enia warunkowego"
+msgstr "błędna składnia wyrażenia warunkowego"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: nie udało się załadować"
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "polecenia zaczynaj± siê przed pierwszym obiektem"
+msgstr "polecenia zaczynają się przed pierwszym obiektem"
 
-#: read.c:940
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "brakuje regu³y przed poleceniami"
+msgstr "brakuje reguły przed poleceniami"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "brakuj±cy separator%s"
+msgstr "brakujący separator%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (czy¿by mia³ byæ TAB zamiast 8 spacji?)"
+msgstr " (czyżby miał być TAB zamiast 8 spacji?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "brakuj±cy wzorzec obiektu"
+msgstr "brakujący wzorzec obiektu"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "wielokrotne wzorce obiektu"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "wzorzec obiektu nie zawiera `%%'"
+msgid "target pattern contains no '%%'"
+msgstr "wzorzec obiektu nie zawiera '%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "brakuj±cy `endif'"
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "brakujący 'endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "pusta nazwa zmiennej"
 
-#: read.c:1367
-msgid "extraneous text after `define' directive"
-msgstr "nadmiarowy tekst po dyrektywie `define'"
+#: read.c:1465
+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:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "brakujący 'endef', niezakończone 'define'"
 
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
-msgstr "nadmiarowy tekst po dyrektywie `endef'"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "nadmiarowy tekst po dyrektywie 'endef'"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Niezwi±zany tekst po dyrektywie `%s'"
+msgid "extraneous text after '%s' directive"
+msgstr "niezwiązany tekst po dyrektywie '%s'"
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "niezwi±zany `%s'"
+msgid "extraneous '%s'"
+msgstr "nadmiarowy '%s'"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "tylko jedno `else' w wyra¿eniu warunkowym"
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "tylko jedno 'else' w wyrażeniu warunkowym"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "¬le sformu³owana definicja zmiennej dla celu"
+msgstr "Źle sformułowana definicja zmiennej dla celu"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr "wymagania nie mog± byæ definiowane w opisach poleceñ"
+msgstr "wymagania nie mogą być definiowane w opisach poleceń"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "pomieszane standardowe i statyczne regu³y wzorców"
+msgstr "pomieszane standardowe i statyczne reguły wzorców"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
-msgstr "pomieszane standardowe i normalne regu³y"
+msgstr "pomieszane standardowe i normalne reguły"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "obiekt `%s' nie pasuje do wzorca obiektu"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "obiekt '%s' nie pasuje do wzorca obiektu"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "plik obiektowy `%s' ma pozycje i : i ::"
+msgid "target file '%s' has both : and :: entries"
+msgstr "plik obiektu '%s' ma pozycje i : i ::"
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr "obiekt `%s' wyspecyfikowany wielokrotnie w tej samej regule"
+msgid "target '%s' given more than once in the same rule"
+msgstr "obiekt '%s' podany wielokrotnie w tej samej regule"
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "uwaga: polecenia zakrywaj±ce dla obiektu `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "uwaga: polecenia zakrywające dla obiektu '%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "uwaga: ignorujê stare polecenia dla obiektu `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "uwaga: ignoruję stare polecenia dla obiektu '%s'"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "uwaga: napotka³em na znak NUL; reszta linii zignorowana"
+msgstr "uwaga: napotkałem na znak NUL; reszta linii zignorowana"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Nie ma nic do zrobienia w `%s'."
+msgid "Nothing to be done for '%s'."
+msgstr "Nie ma nic do zrobienia w '%s'."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "`%s' jest aktualne."
+msgid "'%s' is up to date."
+msgstr "'%s' jest aktualne."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Czyszczenie pliku `%s'.\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Czyszczenie pliku '%s'.\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sBrak regu³ do wykonania obiektu `%s'%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sBrak reguł do wykonania obiektu '%s'%s"
 
-#: remake.c:361
+#: remake.c:379
 #, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%sBrak regu³ do zrobienia obiektu `%s', wymaganego przez `%s'%s"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sBrak reguł do zrobienia obiektu '%s', wymaganego przez '%s'%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Przetwarzanie pliku obiektowego `%s'.\n"
+msgid "Considering target file '%s'.\n"
+msgstr "Przetwarzanie pliku obiektowego '%s'.\n"
 
 #: 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"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Już bez powodzenia próbowałem uaktualnić plik '%s'.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Plik `%s' by³ ju¿ przetwarzany.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Plik '%s' był już przetwarzany.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Wci±¿ uaktualniam plik `%s'.\n"
+msgid "Still updating file '%s'.\n"
+msgstr "Wciąż uaktualniam plik '%s'.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Skoñczy³em uaktualniaæ plik `%s'.\n"
+msgid "Finished updating file '%s'.\n"
+msgstr "Skończyłem uaktualniać plik '%s'.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Plik `%s' nie istnieje.\n"
+msgid "File '%s' does not exist.\n"
+msgstr "Plik '%s' nie istnieje.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** Uwaga: plik .LOW_RESOLUTION_TIME `%s' ma du¿± rozdzielczo¶æ znacznika "
+"*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika "
 "czasu"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
-msgstr "Znaleziono standardow± regu³ê dla `%s'.\n"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Znaleziono standardową regułę dla '%s'.\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
-msgstr "Brak standardowych regu³ dla `%s'.\n"
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Brak standardowych reguł dla '%s'.\n"
 
 #: remake.c:502
 #, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Stosowanie standardowych poleceñ dla `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "Stosowanie standardowych poleceń dla '%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Okrê¿na dyrektywa %s <- %s porzucona."
+msgstr "Okrężna dyrektywa %s <- %s porzucona."
 
-#: remake.c:651
+#: remake.c:655
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Zakoñczono zale¿no¶ci pliku obiektu `%s'.\n"
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Zakończono zależności pliku obiektu '%s'.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Zale¿no¶ci `%s' s± wykonywane.\n"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Zależności '%s' są wykonywane.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Zaniechany plik obiektowy `%s'.\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Zaniechany plik obiektowy '%s'.\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "Obiekt `%s' nie zosta³ wykonany z powodu b³êdów."
+msgid "Target '%s' not remade because of errors."
+msgstr "Obiekt '%s' nie został ponownie wykonany z powodu błędów."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Zale¿no¶æ `%s' dotyczy tylko kolejno¶ci dla obiektu `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Zależność '%s' dotyczy tylko kolejności dla obiektu '%s'.\n"
 
-#: remake.c:732
+#: remake.c:736
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "Zale¿no¶æ `%s' obiektu `%s' nie istnieje.\n"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Zależność '%s' obiektu '%s' nie istnieje.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "Zale¿no¶æ `%s' jest nowsza od obiektu `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Zależność '%s' jest nowsza od obiektu '%s'.\n"
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "Zale¿no¶æ `%s' jest starsza od obiektu `%s'.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Zależność '%s' jest starsza od obiektu '%s'.\n"
 
-#: remake.c:758
+#: remake.c:762
 #, 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"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr ""
+"Obiekt '%s' jest z podwójnym dwukropkiem i nie ma żadnych zależności.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
-msgstr "Brak poleceñ dla `%s' i brak zmienionych zale¿no¶ci.\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:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Tworzenie `%s' z powodu flagi always-make.\n"
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Tworzenie '%s' z powodu flagi always-make.\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
-msgstr "Nie ma potrzeby przerabiaæ obiektu `%s'"
+msgid "No need to remake target '%s'"
+msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; u¿yto nazwy VPATH `%s'"
+msgid "; using VPATH name '%s'"
+msgstr "; użyto nazwy VPATH '%s'"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Konieczne przerobienie obiektu `%s'.\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Zignorowano nazwê VPATH `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Zignorowano nazwę VPATH '%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "Uruchomiono polecenia dla `%s'.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Uruchomiono polecenia dla '%s'.\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Przerabianie pliku obiektowego `%s' nie powiod³o siê.\n"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Ponowne tworzenie pliku obiektu '%s' nie powiodło się.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Przerabianie pliku obiektowego `%s' powiod³o siê.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Ponowne tworzenie pliku obiektu '%s' powiodło się.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Plik obiektowy `%s' powinien byæ przerobiony z opcj± -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Plik obiektu '%s' powinien być ponownie tworzony z opcją -q.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Stosowanie standardowych poleceñ dla `%s'.\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Stosowanie standardowych poleceń dla '%s'.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
-msgstr "Uwaga: Plik `%s' ma czas modyfikacji z przysz³o¶ci"
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Uwaga: Plik '%s' ma czas modyfikacji z przyszłości"
 
-#: remake.c:1370
+#: remake.c:1385
 #, c-format
-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"
+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:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "element .LIBPATTERNS `%s' nie jest wzorcem"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Element .LIBPATTERNS '%s' nie jest wzorcem"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Zasady nie eksportowane: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
 "\n"
-"# Regu³y stadardowe"
+"# Reguły stadardowe"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# Brak standardowych regu³."
+"# Brak standardowych reguł."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 "\n"
-"# %u standardowych regu³, %u"
+"# %u standardowych reguł, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "B£¡D: z³e num_pattern_rules! %u != %u"
+msgstr "BŁĄD: złe num_pattern_rules! %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
-msgstr "nieznany sygna³"
+msgstr "nieznany sygnał"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "Roz³±czenie"
+msgstr "Rozłączenie"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Przerwanie"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
-msgstr "Wyjcie"
+msgstr "Wyjście"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "B³êdna instrukcja"
+msgstr "Błędna instrukcja"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Pu³apka ¶ledzenia"
+msgstr "Pułapka śledzenia"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Przerwany"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
-msgstr "Pu³apka IOT"
+msgstr "Pułapka IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "Pu³apka EMT"
+msgstr "Pułapka EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Wyj±tek zmiennoprzecinkowy"
+msgstr "Wyjątek zmiennoprzecinkowy"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Zabity"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
-msgstr "B³±d szyny"
+msgstr "Błąd szyny"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
-msgstr "Naruszenie ochrony pamiêci"
+msgstr "Naruszenie ochrony pamięci"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
-msgstr "B³êdne wywo³anie systemowe"
+msgstr "Błędne wywołanie systemowe"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Przerwany potok"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Budzik"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
-msgstr "Zakoñczony"
+msgstr "Zakończony"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
-msgstr "Sygna³ u¿ytkownika 1"
+msgstr "Sygnał użytkownika 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
-msgstr "Sygna³ u¿ytkownika 2"
+msgstr "Sygnał użytkownika 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
-msgstr "Potomek powróci³"
+msgstr "Potomek powrócił"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Przerwa w zasilaniu"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Zatrzymany"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Zatrzymany (wejcie z tty)"
+msgstr "Zatrzymany (wejście z tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Zatrzymany (wyjcie na tty)"
+msgstr "Zatrzymany (wyjście na tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
-msgstr "Zatrzymany (sygna³)"
+msgstr "Zatrzymany (sygnał)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Przekroczony czas CPU"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Przekroczony limit wielkoci pliku"
+msgstr "Przekroczony limit wielkości pliku"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Wyczerpany stoper wirtualny"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Wyczerpany stoper profiluj±cy"
+msgstr "Wyczerpany stoper profilujący"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Zmienione okno"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Kontynuowany"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Nag³a sytuacja I/O"
+msgstr "Nagła sytuacja I/O"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "I/O mo¿liwe"
+msgstr "I/O możliwe"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Zaginione zasoby"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
-msgstr "Sygna³ niebezpieczeñstwa"
+msgstr "Sygnał niebezpieczeństwa"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
-msgstr "¯±danie informacji"
+msgstr "Żądanie informacji"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Koprocesor obliczeñ zmiennoprzecinkowych niedostêpny"
+msgstr "Koprocesor obliczeń zmiennoprzecinkowych niedostępny"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 "\n"
-"%s liczba ³añcuchów w strcache: %d / wyszukiwañ = %lu / trafieñ = %lu\n"
+"%s Brak buforów strcache\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-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"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s bufory strcache: %lu (%lu) / łańcuchów = %lu / miejsce = %lu B / śr = %lu "
+"B\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
-"%s rozmiar strcache: ca³kowity = %d (%d) / maks = %d / min = %d / ¶r = %d\n"
+"%s bieżący buf: rozmiar = %hu B / użyty = %hu B / liczba = %hu / śr = %hu B\n"
+
+#: strcache.c:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s pozostałe użyte: razem = %lu B / liczba = %lu / śr = %lu B\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
-"%s wolne strcache: ca³kowite = %d (%d) / maks = %d / min = %d / ¶r = %d\n"
+"%s pozostałe wolne: razem = %lu B / maks = %lu B / min = %lu B / śr = %hu B\n"
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# statystyki tablic haszuj±cych strcache:\n"
+"%s wydajność strcache: wyszukiwań = %lu / wsp. trafień = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# statystyki tablic haszujących:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatyczna"
+
+#: variable.c:1610
 msgid "default"
-msgstr "domylna"
+msgstr "domyślna"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
-msgstr "rodowiskowa"
+msgstr "środowiskowa"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "rodowisko pod -e"
+msgstr "środowisko pod -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
-msgstr "z linii poleceñ"
-
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "dyrektywa `override'"
+msgstr "z linii poleceń"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatyczna"
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "dyrektywa 'override'"
 
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (z `%s', linia %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (z '%s', linia %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# statystyki tablic haszuj±cych ustawionych zmiennych:\n"
+msgstr "# statystyki tablic haszujących ustawionych zmiennych:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1879,151 +2098,151 @@ msgstr ""
 "\n"
 "# Zmienne\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Wartoci zmiennych dla wzorca"
+"# Wartości zmiennych dla wzorca"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Brak wartoci zmiennych dla wzorca."
+"# Brak wartości zmiennych dla wzorca."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u wartoci zmiennych dla wzorca"
+"# %u wartości zmiennych dla wzorca"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "uwaga: niezdefiniowana zmienna `%.*s'"
+msgid "warning: undefined variable '%.*s'"
+msgstr "uwaga: niezdefiniowana zmienna '%.*s'"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search() nie powiod³o siê - %d\n"
+msgstr "sys$search() nie powiodło się - %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Uwaga: Puste przekierowanie\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
-msgstr "b³±d wewnêtrzny: `%s' command_state"
+msgid "internal error: '%s' command_state"
+msgstr "błąd wewnętrzny: command_state '%s'"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+msgstr "-uwaga, będzie trzeba ponownie umożliwić obsługę CTRL-Y z DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "WBUDOWANE [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "WBUDOWANE CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "WBUDOWANE RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Nieznane polecenie wbudowane '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
-msgstr "B³±d, puste polecenie\n"
+msgstr "Błąd, puste polecenie\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Przekierowane wejcie z %s\n"
+msgstr "Przekierowane wejście z %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "Przekierowane wyjcie diagnostyczne do %s\n"
+msgstr "Przekierowane wyjście diagnostyczne do %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
-msgstr "Do³±czanie wyj¶cia do %s\n"
+msgstr "Dołączanie wyjścia do %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Przekierowane wyjcie do %s\n"
+msgstr "Przekierowane wyjście do %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr "Do³±czanie %.*s i czyszczenie\n"
+msgstr "Dołączanie %.*s i czyszczenie\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Zamiast tego wykonywanie %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "B³±d podczas uruchamiania, %d\n"
+msgstr "Błąd podczas uruchamiania, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# ¦cie¿ki przeszukiwania VPATH\n"
+"# Ścieżki przeszukiwania VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Brak ¶cie¿ek przeszukiwania `vpath'"
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Brak ścieżek przeszukiwania 'vpath'"
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u ¶cie¿ek przeszukiwania `vpath'.\n"
+"# %u ścieżek przeszukiwania 'vpath'.\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Brak ogólnej (zmienna `VPATH') ¶cie¿ki przeszukiwania."
+"# Brak ogólnej (zmienna 'VPATH') ścieżki przeszukiwania."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Ogólna (zmienna `VPATH') ¶cie¿ka przeszukiwania:\n"
+"# Ogólna (zmienna 'VPATH') ścieżka przeszukiwania:\n"
 "# "
index 28ced11..c19c8c5 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index e734c06..95f25c9 100644 (file)
-# translation of make-3.80.po to portugues
 # Mensagem do GNU make em Português (Brasil)
-# 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.
+# Copyright (C) 2000 Free Software Foundation, Inc.
 #
+# This file is distributed under the same license as the make package.
 # Fábio Henrique F. Silva <fabiohfs@mail.com>, 2000.
-# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2008.
+# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2008, 2009, 2010, 2011, 2012, 2013.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: make-3.80\n"
+"Project-Id-Version: GNU make 3.82\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2008-01-22 00:45-0200\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-01-09 23:04-0300\n"
 "Last-Translator: Fábio Henrique F. Silva <fabiohfs@netscape.net>\n"
-"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
+"net>\n"
+"Language: pt_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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.5.4\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+# Caso você encontre alguma mensagem que não está bem traduzida, por
+# favor me informe dando sua sugestão.
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "característica não suportada: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "o touch não está disponível no VMS"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch: Arquivo `%s' não existe"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch: `%s' não é um arquivo válido"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch: O membro `%s' não existe em `%s'"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, 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
-#, fuzzy, c-format
+#: arscan.c:67
+#, 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"
+msgstr "o lbr$set_module() falhou ao obter informações do módulo, estado = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control falhou com estado = %d"
+msgstr "lbr$ini_control() falhou com estado = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Membro `%s'%s: %ld bytes de %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (o nome pode estar truncado)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Quebra.\n"
 
-#: 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"
+#: commands.c:630
+#, fuzzy, 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."
 
-#: 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"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "** O arquivo membro `%s' pode ser falso. Não foi apagado."
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "** [%s] Apagando arquivo `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "** [%s] Apagando arquivo `%s'"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
-msgstr "** Apagando arquivo `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
+msgstr "** Apagando arquivo `%s'"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "# comandos para executar"
+msgstr "# comandos a executar"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (embutido):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (de `%s', linha %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -130,222 +137,223 @@ msgstr ""
 "\n"
 "# Diretórios\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: não pôde ser estabelecido.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (chave %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Não"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " arquivos, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "não"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " impossibilidades"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " até agora."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " impossibilidades em %lu diretórios.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Variável recursiva `%s' faz referência a ela mesma (eventualmente)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "referência a uma variável não finalizada"
+msgstr "referência a variável não finalizada"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr "Comandos especificados para o arquivo `%s' em %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Os comandos especificados para o arquivo `%s' em %s:%lu,"
 
-#: file.c:272
+#: file.c:274
 #, 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,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr ""
+"Os comandos para o arquivo `%s' foram encontrados por uma regra implícita,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr "mas `%s' é considerado o mesmo arquivo que `%s'."
 
-#: file.c:278
+#: file.c:280
 #, 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'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Os comandos para `%s' serão ignorados em favor daqueles para `%s'."
 
-#: file.c:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, 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:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
-msgstr "não pôde renomear de dois-pontos duplos `%s' para dois-pontos `%s'"
-
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "** Apagando o arquivo intermediário `%s'"
+#: file.c:305
+#, fuzzy, 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'"
 
 #: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "** Apagando arquivo intermediário `%s'"
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Apagando arquivo intermediário...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Data/Hora fora de faixa; substituindo %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Hora atual"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Não é um alvo:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Arquivo importante (pre-requisito de .PRECIOUS)."
+msgstr "# Arquivo importante (prerequisito de .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "# Alvo Falso (pre-requisito de .PHONY)."
+msgstr "# Alvo Falso (prerequisito de .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
 msgstr "# Linha de Comando do Alvo."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Um Padrão ou arquivo MAKEFILES."
+msgstr "# Um Padrão, arquivo MAKEFILES ou -include/sinclude makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Faltam as regras implícitas."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "# A pesquisa por regra implícita foi concluida."
+msgstr "# Pesquisa por regra implícita concluida."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "# A pesquisa por regra implícita não foi concluida."
+msgstr "# Pesquisa por regra implícita não concluida."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "# Derivação padrão implícita/estática: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "# O arquivo é um pré-requisito intermediário."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "# Também faz:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "# O Período da modificação nunca foi verificado."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "# O Arquivo não existe."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "# O Arquivo está desatualizado."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "# Última modificação %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "# O Arquivo foi atualizado."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "# O Arquivo não foi atualizado."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "# Comandos em execução (ISTO É UMA FALHA)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "# Atualizado com sucesso."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "# Precisa ser atualizado (-q está definido)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "# Problemas com a atualização."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "# Valor inválido no membro `update_status' !"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "# Valor inválido no membro `command_state' !"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -353,7 +361,7 @@ msgstr ""
 "\n"
 "# Arquivos"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -363,121 +371,178 @@ msgstr ""
 "# tabela hash de arquivos:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "primeiro argumento não numérico para a função `word'"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "primeiro argumento não numérico para a função `wordlist'"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "segundo argumento não numérico para a função `wordlist'"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) falhou (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe(): DuplicateHandle(In) falhou (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Err) falhou (e=%d)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_open_pipe(): DuplicateHandle(Err) falhou (e=%ld)\n"
 
-#: function.c:1474
-#, fuzzy, c-format
+#: function.c:1490
+#, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() falhou (e=%d)\n"
+msgstr "CreatePipe() falhou (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() falhou\n"
+msgstr "windows32_openpipe(): process_init_fd() falhou\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Apagando o arquivo de lote temporário %s\n"
 
-#: function.c:2150
+#: function.c:2151
 #, 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'"
+msgid "open: %s: %s"
+msgstr "%s: %s"
 
-#: function.c:2162
+#: function.c:2158
 #, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "A função `%s' não foi implementada nesta plataforma"
+msgid "write: %s: %s"
+msgstr "Erro de gravação: %s"
 
-#: function.c:2212
+#: function.c:2164
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, 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:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "A função `%s' não foi implementada nesta plataforma "
+
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "Chamada não terminada para a função `%s': faltando `%c'"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: a opção `%s' é ambigua\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "O número de argumentos é insuficiente (%d) para a função `%s' "
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "O número de argumentos é insuficiente (%d) para a função `%s' "
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: a opção `%s' é ambigua\n"
+
+#: getopt.c:683
+#, fuzzy, 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:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, 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:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s: a opção `%s' requer um argumento\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: a opção é desconhecida `--%s'\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: a opção é desconhecida `%c%s'\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: a opção é ilegal -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: a opção é inválida -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opção requer um argumento -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: a opção `-W %s' é ambigua\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, 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"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
-#, fuzzy, c-format
+#, 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"
+msgstr "não foi possível alocar %lu bytes para a tabela hash: memória cheia"
 
 #: hash.c:280
 #, c-format
@@ -494,132 +559,156 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Colisões=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "Procurando por uma regra implícita para `%s'.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando recursão em regra implícita.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "Tentando padrão para regra com `%.*s'.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Rejeitando pré-requisito para regra `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Rejeitando pré-requisito para regra `%s'.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Rejeitando os pré-requisitos implícitos `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Rejeitando pré-requisitos implícitos `%s'.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Tentando o pré-requisito para a regra `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Tentanto pré-requisito para a regra `%s'.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Tentando pré-requisito implícito `%s'.\n"
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Tentando pré-requisito implícito `%s'.\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "O pré-requisito `%s' foi encontrado como VPATH `%s'\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Pré-requisito `%s' encontrado como VPATH `%s'\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, 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:335
-#, fuzzy
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (arquivo temporário)"
+msgstr "Não foi possível criar um arquivos temporário\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Erro 0x%x (ignorado)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Erro 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (arquivo core criado)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Erro %d (ignorado)"
 
-#: job.c:455
-#, c-format
-msgid "*** [%s] Error %d"
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (embutido):"
+
+#: job.c:501
+#, fuzzy, c-format
+msgid "%s: recipe for target '%s' failed"
+msgstr "aviso: sobreescrevendo os comandos para o alvo `%s'"
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Erro 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "** [%s] Erro %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (arquivo core criado)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Esperando que os outros processos terminem...."
+msgstr "** Esperando que outros processos terminem."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Filho ativo 0x%08lx (%s) PID %ld %s\n"
+msgstr "Filho ativo %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (remoto)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Descarregando processo filho 0x%08lx PID %ld %s\n"
+msgstr "Descarregando processo filho %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Descarregando processo filho 0x%08lx PID %ld %s\n"
+msgstr "Descarregando processo filho %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Apagando o arquivo de lote temporário: %s\n"
 
-#: job.c:861
+#: job.c:843
 #, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Apagando o arquivo de lote temporário: %s\n"
+
+#: job.c:949
+#, 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"
+msgstr "Removendo o processo filho %p PID %s%s da cadeia.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "gravar jobserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Liberado sinalizador para o processo filho 0x%08lx (%s).\n"
+msgstr "Liberado sinalizador para o processo filho %p (%s).\n"
 
-#: job.c:1453 job.c:2094
-#, fuzzy, c-format
+#: job.c:1023
+msgid "write jobserver"
+msgstr "gravar jobserver"
+
+#: job.c:1612 job.c:2332
+#, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() falhou ao executar o processo (e=%d)\n"
+msgstr "process_easy() falhou ao executar o processo (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -628,182 +717,243 @@ msgstr ""
 "\n"
 "Contados %d args na falha de execução\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Colocando o processo filho %p (%s) PID %s%s na cadeia.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Obtido o sinalizador para o processo filho 0x%08lx (%s).\n"
+msgstr "Obtido o sinalizador para o processo filho %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "tarefas canalizadas lidas"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch: Arquivo `%s' não existe"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Não é necessário reprocessar o alvo `%s'"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%sSem regra para processar o alvo `%s', necessário por `%s'%s"
 
-#: job.c:1910
+#: job.c:2118
 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:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "não pôde forçar a carga limite:"
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Não é possível restaurar stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Não é possível restaurar stdout\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Não é possível restaurar stdin\n"
+
+#: job.c:2365
+#, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
-msgstr "processo filho descarregado: pid %d, aguardando pelo pid %d\n"
+msgstr "processo filho descarregado: pid %s, aguardando pelo pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Comando não encontrado"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Interpretador de comandos não encontrado"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: o espaço de ambiente pode estar cheio"
 
-#: job.c:2461
+#: job.c:2709
 #, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL alterado (era `%s' e agora é `%s')"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL alterado (era `%s' e agora é `%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Criando arquivo de lote temporário %s\n"
 
-#: job.c:2963
+#: job.c:3148
+#, fuzzy
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Conteúdo do arquivo de lote:%s\n"
+"\t%s\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Conteúdo do arquivo de lote:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Opções:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr " -b, -m                      Ignorado para compatibilidade.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 " -B, --always-make           Processa todos os alvos incondicionalmente.\n"
 
-#: main.c:308
+#: main.c:317
 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:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr " -d                          Imprime muita informação de depuração.\n"
 
-#: main.c:313
+#: main.c:322
 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:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
-"  -e,--envrionment-overrides\n"
-"                              As variáveis de ambiente sobrescrevem os "
-"arquivos make.\n"
+" -e, --environment-overrides\n"
+"                              Assume os valores das variáveis de ambiente.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"  --eval=STRING               Avalia a STRING como uma declaração para um "
+"makefile.\n"
 
-#: main.c:320
+#: main.c:329
 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 com um arquivo make.\n"
+" -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n"
+"                              Lê o ARQUIVO como se fosse um arquivo make.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr " -h, --help                   Imprime esta mensagem e sai.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr " -i, --ignore-errors         Ignora os erros dos comandos.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
-".. -l DIRETÓRIO, --include-dir= DIRETÓRIO\n"
-"                              Procura no DIRETÓRIO por arquivos make.\n"
+" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n"
+"                              Pesquisa o DIRETÒRIO por arquivos make a "
+"incluir.\n"
 
-#: main.c:330
+#: main.c:339
 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 ou várias sem o "
-"argumento.\n"
+" -j [N], --jobs[=N]          Permite N tarefas de uma vez; tarefas infinitas "
+"sem argumentos.\n"
 
-#: main.c:332
+#: main.c:341
 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:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -813,14 +963,15 @@ msgstr ""
 "                              Não inicia múltiplas tarefas a menos que a "
 "carga seja menor que N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"-L, --check-symlink-times  Usa o tempo mais antigo entre o vínculo simbólico "
+"e o alvo.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
@@ -830,87 +981,95 @@ msgstr ""
 "                              Não executa quaisquer comandos; apenas imprime-"
 "os.\n"
 
-#: main.c:342
+#: main.c:351
 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 muito velho e não o "
-"refaz.\n"
+" -o ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n"
+"                              Considera o ARQUIVO como muito antigo e não "
+"reprocessá-o.\n"
+
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
 
-#: main.c:345
+#: main.c:357
 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:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"  -q, --question               Executa sem comandos, o código de saída "
-"informa se está atualizado.\n"
+" -q, --question              Não executa os comandos; O código de saida "
+"indica se está atualizado.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr ""
-"  -r, --no-builtin-rules       Desabilita as regras implícitas embutidas.\n"
+msgstr " -r, --no-builtin-rules      Desabilita as regras implícitas.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
-"  -R, --no-builtin-variables  Desabilita as configurações das variávies "
+" -R, --no-builtin-variables  Desabilita a configuração das variáveis "
 "embutidas.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr " -s, --silent, --quiet       Não ecoa os comandos.\n"
 
-#: main.c:355
+#: main.c:367
 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:358
+#: main.c:370
 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:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr " -d                          Imprime muita informação de depuração.\n"
+
+#: main.c:374
 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:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr " -w, --print-directory       Imprime o diretório atual.\n"
 
-#: main.c:364
+#: main.c:378
 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 tenha sido "
-"ativada implicitamente.\n"
+" --no-print-directory        Desativa a opção -w, mesmo que ela esteja "
+"implicitamente ativada.\n"
 
-#: main.c:366
+#: main.c:380
 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 muito novo.\n"
+" -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n"
+"                              Considera o ARQUIVO infinitamente novo.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -918,22 +1077,32 @@ msgstr ""
 " --warn-undefined-variables  Avisa quando um variável não definida for "
 "referenciada.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "nível de depuração desconhecido: `%s'"
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "erro interno: múltiplas opções --jobserver-fds"
+
+#: main.c:848
+#, c-format
 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"
+msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -943,162 +1112,184 @@ msgid ""
 msgstr ""
 "\n"
 "Não pôde tratar o filtro de exceção chamado por %s\n"
-"CódigoExceção = %x\n"
-"SinalExceção = %x\n"
-"EndereçoExceção = %x\n"
+"CódigoExceção = %lx\n"
+"SinalExceção = %lx\n"
+"EndereçoExceção = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Violação de acesso: operação de escrita no endereço %x\n"
+msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Violação de acesso: operação de leitura no endereço %x\n"
+msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell definiu o default_shell = %s\n"
+msgstr "find_and_set_shell() definiu o default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "find_and_set_shell(), caminho de pesquisa do default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspenso por 30 segundos..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) concluido. Continuando.\n"
 
-#: main.c:1501
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "erro interno: múltiplas opções --jobserver-fds"
+
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, fuzzy, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Cliente Jobserver (fds %d,%d)\n"
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "erro interno: valor `%s' inválido para --jobserver-fds"
+
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Cliente Jobserver (fds %d,%d)\n"
+
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "aviso: -jN forçado no submake: desabilitando o modo jobserver."
+
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "dup jobserver"
+
+#: main.c:1586
+#, fuzzy
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr "aviso: jobserver indisponível: usando -j1. Inclua `+' na regra pai."
+
+#: main.c:1752
 msgid "Makefile from standard input specified twice."
 msgstr "Makefile na entrada padrão especificado duas vezes."
 
-#: main.c:1539 vmsjobs.c:500
+#: main.c:1790 vmsjobs.c:496
 msgid "fopen (temporary file)"
 msgstr "fopen (arquivo temporário)"
 
-#: main.c:1545
+#: main.c:1796
 msgid "fwrite (temporary file)"
 msgstr "fwrite (arquivo temporário)"
 
-#: main.c:1703
+#: main.c:1984
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
 
-#: main.c:1704
+#: main.c:1985
 msgid "Resetting to single job (-j1) mode."
 msgstr "Reiniciando no modo de tarefa única (-j1)."
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr "erro interno: múltiplas opções --jobserver-fds"
-
-#: 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:2006
+#, fuzzy, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Cliente Jobserver (fds %d,%d)\n"
 
-#: main.c:1730
+#: main.c:2012
 #, c-format
-msgid "Jobserver client (fds %d,%d)\n"
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 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:1750
-msgid "dup jobserver"
-msgstr "dup jobserver"
-
-#: 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:1777
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "criando canalização de tarefas"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "inicializando a canalização do jobserver"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Vínculos simbólicos não são suportados: desabilite -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Atualizando os arquivos makefiles ...\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, 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:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "Problemas ao reprocessar o arquivo `%s'."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "O arquivo `%s' incluído não foi encontrado."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "Arquivo `%s' incluido não foi encontrado."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
-msgstr "O arquivo `%s' não foi encontrado"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
+msgstr "O arquivo `%s' não foi encontrado."
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Não foi possível voltar ao diretório original."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "Re-executando:"
+msgstr "Re-executando[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "desvinculado (arquivos temporário): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ". DEFAULT_GOAL contém mais do que um alvo"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Sem alvo"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Atualizando os objetivos finais...\n"
 
-#: main.c:2306
+#: main.c:2550
 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:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uso: %s [opções] [alvo] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1107,7 +1298,7 @@ msgstr ""
 "\n"
 "Este programa foi compilado para %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1116,163 +1307,163 @@ msgstr ""
 "\n"
 "Este programa foi compilado para %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Informe os problemas para <bug-make@gnu.org>.\n"
 
-#: main.c:2562
-#, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "a opção `-%c' requer um argumento inteiro positivo"
-
-#: 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:3054
-#, fuzzy, c-format
-msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"Este programa foi compilado para %s\n"
-
-#: main.c:3056
-#, fuzzy, c-format
-msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"Este programa foi compilado para %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 ""
-
-#: main.c:3086
-#, c-format
-msgid ""
-"\n"
-"# Make data base, printed on %s"
-msgstr ""
-"\n"
-"# Banco de dados do Make, impresso em %s"
-
-#: main.c:3096
-#, c-format
-msgid ""
-"\n"
-"# Finished Make data base on %s\n"
-msgstr ""
-"\n"
-"# Banco de dados do Make finalizado em %s\n"
-
-#: main.c:3237
+#: main.c:2810
 #, fuzzy, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Entrando em um diretório desconhecido"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "a opção `%s%s' requer um argumento não vazio"
 
-#: main.c:3239
+#: main.c:2864
 #, fuzzy, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Saindo de um diretório desconhecido"
-
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Entrando no diretório `%s'\n"
-
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Saindo do diretório `%s'\n"
-
-#: main.c:3250
-#, fuzzy, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Entrando em um diretório desconhecido"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "a opção `-%c' requer um argumento inteiro positivo"
 
 #: 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:3257
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Entrando no diretório `%s'\n"
+msgid "%sBuilt for %s\n"
+msgstr "%sCompilado para %s\n"
 
-#: main.c:3260
+#: main.c:3255
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Saindo do diretório `%s'\n"
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sCompilado para %s (%s)\n"
 
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ".  Pare.\n"
+#: main.c:3266
+#, 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 ""
+"%sLicença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sIsto é um aplicativo livre: você pode alterá-lo e redistribui-lo "
+"livremente.\n"
+"%sNÃO HÁ GARANTIAS, exceto o que for permitido por lei.\n"
 
-#: misc.c:337
+#: main.c:3287
 #, c-format
-msgid "Unknown error %d"
-msgstr "Erro desconhecido %d"
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Banco de dados do Make, impresso em %s"
 
-#: misc.c:347
+#: main.c:3297
 #, c-format
-msgid "%s%s: %s"
-msgstr "%s%s: %s"
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Banco de dados do Make finalizado em %s\n"
 
-#: misc.c:355
+#: misc.c:201
 #, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
+msgid "Unknown error %d"
+msgstr "Erro desconhecido %d"
 
-#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
 msgid "virtual memory exhausted"
 msgstr "A memória virtual encheu"
 
-#: misc.c:708
+#: misc.c:522
 #, 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:729
+#: misc.c:543
 msgid "Initialized access"
 msgstr "Acesso inicializado"
 
-#: misc.c:808
+#: misc.c:622
 msgid "User access"
 msgstr "Acesso do usuário"
 
-#: misc.c:856
+#: misc.c:670
 msgid "Make access"
 msgstr "Acesso do make"
 
-#: misc.c:890
+#: misc.c:704
 msgid "Child access"
 msgstr "Acesso filho"
 
-#: misc.c:954
+#: output.c:128
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Entrando em um diretório desconhecido\n"
+
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Saindo de um diretório desconhecido\n"
+
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Entrando no diretório `%s'\n"
+
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Saindo do diretório `%s'\n"
+
+#: output.c:139
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Entrando em um diretório desconhecido\n"
+
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Saindo de um diretório desconhecido\n"
+
+#: output.c:144
 #, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Entrando no diretório `%s'\n"
+
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Saindo do diretório `%s'\n"
+
+#: output.c:515
+#, c-format
 msgid "write error: %s"
-msgstr "Erro redirecionado para %s\n"
+msgstr "Erro de gravação: %s"
 
-#: misc.c:956
-#, fuzzy
+#: output.c:517
 msgid "write error"
-msgstr "gravar jobserver"
+msgstr "erro de gravação"
+
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Pare.\n"
 
-#: read.c:179
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Lendo arquivos makefile ...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "Lendo arquivos makefile `%s'"
 
 #: read.c:335
@@ -1295,328 +1486,343 @@ msgstr " (sem import
 msgid " (no ~ expansion)"
 msgstr " (sem expansão ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "síntaxe inválida na condicional"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr "comandos começam antes do primeiro alvo"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "falta regra antes dos comandos"
+msgstr "falta uma regra antes dos comandos"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "faltando o separador%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (você pensou em TAB ao invés de 8 espaços?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "faltando o padrão dos alvos"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "múltiplos padrões para o alvo"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "padrão para o alvo não contém `%%'"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "faltando `endif'"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "nome de variável vazio"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "Texto estranho depois da diretiva `endef'"
+msgid "extraneous text after 'define' directive"
+msgstr "Texto estranho depois da diretiva `define'"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "faltando `endef', `define' não terminado"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Texto estranho depois da diretiva `endef'"
+msgid "extraneous text after 'endef' directive"
+msgstr "Texto estranho depois da diretiva `endef"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "Texto estranho depois da diretiva `%s'"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "`%s' estranho"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "use apenas um `else' por condicional"
 
-#: read.c:1797
-#, fuzzy
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Definição de variável por alvo mau formada"
+msgstr "Definição de variável para o alvo mau formada"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr ""
+msgstr "os pré-requisitos não podem ser definidos no comando"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "As regras implícitas e de padrão estático misturadas"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "As regras implícitas e normais misturadas"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "O alvo `%s' não coincide com o padrão"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "O arquivo alvo `%s' tem entradas : e ::"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, 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:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "aviso: impondo comandos para o alvo `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "aviso: sobreescrevendo os comandos para o alvo `%s'"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "aviso: ignorando comandos antigos para o alvo `%s'"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "aviso: caractere NUL detectado; o resto da linha foi ignorado"
+msgstr "aviso: caracter NUL detetado; o resto da linha foi ignorado"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "Nada a ser feito para `%s'."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "`%s' está atualizado."
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Atualizando o arquivo `%s'.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%s Sem regra para processar o alvo `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sSem regra para processar o alvo `%s'%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%s Sem regra para processar o alvo `%s', necessário por `%s'%s"
+#: remake.c:379
+#, fuzzy, 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"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "Considerando o arquivo alvo `%s'.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "Tentativa de atualizar o arquivo `%s' falhou.\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "O arquivo `%s' já foi considerado.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "Ainda está atualizando o arquivo `%s'.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Atualização do arquivo `%s' concluída.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Atualização do arquivo `%s' concluida.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "O arquivo `%s' não existe.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** Aviso: arquivo .LOW_RESOLUTION_TIME `%s' tem uma etiqueta de tempo de "
 "alta resolução"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "Regra implícita encontrada para `%s'.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "Nenhuma regra implícita encontrada para `%s'.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "Usando os comandos padrões para `%s'.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Dependência circular %s <- %s abandonada."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Pré-requisitos do alvo `%s' concluído.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Pré-requisitos do alvo `%s' concluido.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "Pré-requisitos do `%s' estão sendo criados.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "Desistindo do arquivo `%s'.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "O alvo `%s' não foi reprocessado por causa de erros."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, 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:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, 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:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, 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:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, 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:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+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:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Processando `%s' devido a opção always-make.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Não é necessário reprocessar o alvo `%s'"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; usando o nome VPATH `%s'"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "O alvo `%s' deve ser reprocessado.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  Ignorando o nome VPATH `%s'.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "Os comandos de `%s' estão rodando.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Falha ao reprocessar o alvo `%s'.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Alvo `%s' reprocessado com sucesso.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "O alvo `%s' precisa ser reprocessado sob -q.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "** Aviso: O arquivo `%s' está com a hora adiantada"
 
-#: remake.c:1370
+#: remake.c:1385
 #, 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"
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "** Aviso: O arquivo `%s' está com a hora %s s adiantada"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr "O elemento .LIBPATTERNS `%s' não é um padrão"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customizações não exportadas: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1624,7 +1830,7 @@ msgstr ""
 "\n"
 "# Regras implícitas."
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1632,7 +1838,7 @@ msgstr ""
 "\n"
 "# Faltam as regras implícitas."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1641,242 +1847,261 @@ msgstr ""
 "\n"
 "# %u regras implícitas, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "ERRO: num_pattern_rules errada! %u != %u"
+msgstr "ERRO: num_pattern_rules errada!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "sinal desconhecido"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Desconectar"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Interrupção"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Sair"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Instrução ilegal"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Aviso Trace/breakpoint"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Abortado"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Aviso IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Aviso EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Exceção de ponto flutuante"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Finalizado"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Erro de barramento"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Falha de segmentação"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Chamada de sistema inválida"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Canalização interrompida"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Despertador"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Terminado"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Sinal 1 definido pelo usuário"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Sinal 2 definido pelo usuário"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "O Filho saiu"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Falha na Energia Elétrica"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Parado"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Parado (entrada tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Parado (saída tty)"
+msgstr "Parado (saida tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Parado (sinal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Tempo de CPU excedido"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Tamanho do arquivo excedido"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Temporizador virtual expirou"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Temporizador de perfil expirou"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Janela alterada"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Continuação"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Condição de E/S urgente"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "Possível E/S"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Recurso perdido"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Sinal perigoso"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Solicitação de informação"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Co-processador aritmético indisponível"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 
-#: strcache.c:237
-#, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-msgstr ""
+#: strcache.c:266
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr "%s strcache usado: total = %d (%d) / max = %d / min = %d / med = %d\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
 
-#: strcache.c:241
-#, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, fuzzy, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s strcache usado: total = %d (%d) / max = %d / min = %d / med = %d\n"
+
+#: strcache.c:283
+#, fuzzy, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr "%s strcache livres: total = %d (%d) / max = %d / min = %d / med = %d\n"
+
+#: strcache.c:287
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
+"\n"
+"%s # de cadeias em strcache: %d / pesquisados = %lu / encontrados = %lu\n"
 
-#: strcache.c:244
+#: strcache.c:289
 #, fuzzy
 msgid ""
-"\n"
-"# strcache hash-table stats:\n"
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# tabela hash de arquivos:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "automático"
+
+#: variable.c:1610
 msgid "default"
 msgstr "padrão"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "ambiente"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "ambiente sob -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "linha de comando"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "diretiva `override'"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "automático"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (de `%s', linha %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# tabela hash do conjunto de variávies:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1884,8 +2109,7 @@ msgstr ""
 "\n"
 "# Variáveis\n"
 
-#: variable.c:1627
-#, fuzzy
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1893,7 +2117,7 @@ msgstr ""
 "\n"
 "# Valores da variável de padrões específicos"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1901,7 +2125,7 @@ msgstr ""
 "\n"
 "# Faltam valores para variável de padrões específicos"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1910,92 +2134,92 @@ msgstr ""
 "\n"
 "# %u valores para variável de padrões específicos"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr ""
-
-#: vmsfunctions.c:92
+#: variable.h:224
 #, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "aviso: variável indefinida `%.*s'"
+
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search falhou com %d\n"
+msgstr "sys$search() falhou com %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Aviso: Redireção vazia\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "erro interno: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "EMBUTIDO [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "CD EMBUTIDO %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "RM EMBUTIDO %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Comandos embutidos desconhecidos `%s'.\n"
+msgstr "Comando embutido desconhecido `%s'.\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Erro, comando vazio\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada de %s redirecionada\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erro redirecionado para %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Saída redirecionada para %s\n"
+msgstr "Saida redirecionada para %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Saída redirecionada para %s\n"
+msgstr "Saida redirecionada para %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Acrescentado %.*s e limpo\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Executando %s ao invés de\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erro de execução, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2003,51 +2227,66 @@ msgstr ""
 "\n"
 "# Caminho VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# Sem caminho `vpath'."
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u caminhos `vpath'.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Sem caminho genérico (variável `VPATH')."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Caminho genérico (variável `VPATH'):\n"
 "# "
 
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Erro de sintaxe dentro de '\"'\n"
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "# Valor inválido no membro `update_status' !"
 
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\n"
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Erro 0x%x (ignorado)"
 
-#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Chamando os comandos de %s:%lu para atualizar o alvo `%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 "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Chamando comandos internos para atualizar o alvo `%s'.\n"
 
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "Reiniciando o make para o modo de trabalho único."
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # de buffers strcache: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# tabela hash de arquivos:\n"
+#~ "#"
+
+#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
+#~ msgstr "process_easy() falhou ao executar o processo (e=%ld)\n"
 
 #~ msgid ""
 #~ "%sThis is free software; see the source for copying conditions.\n"
@@ -2059,7 +2298,7 @@ msgstr ""
 #~ "%sFUNÇÃO EM PARTICULAR.\n"
 
 #~ msgid "extraneous `endef'"
-#~ msgstr "`endef' estranho"
+#~ msgstr "`endef' extranho"
 
 #~ msgid "empty `override' directive"
 #~ msgstr "diretiva `override' vazia"
@@ -2067,8 +2306,30 @@ msgstr ""
 #~ msgid "invalid `override' directive"
 #~ msgstr "diretiva `override' inválida"
 
+#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
+
+#~ msgid "Syntax error, still inside '\"'\n"
+#~ msgstr "Erro de sintaxe dentro de '\"'\n"
+
+#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
+#~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\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 o pré-requisito padrão vazio"
+#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio"
+
+#~ msgid ""
+#~ "\n"
+#~ "# No files."
+#~ msgstr ""
+#~ "\n"
+#~ "# Nenhum arquivo."
index d868841..6aaf94b 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index 10c18bf..790c4e9 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
 #
 # Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>, 1998.
 # Denis Perchine <dyp@perchine.com>, 2001, 2002.
-# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2013.
 # Pavel Maryanov <acid_jack@ukr.net>, 2009.
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81.91\n"
+"Project-Id-Version: make 3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2010-07-21 21:46+0400\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 19:25+0400\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 1.0\n"
+"X-Generator: Lokalize 1.4\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "попытка использования неподдерживаемого средства: `%s'"
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "попытка использования неподдерживаемого средства: «%s»"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "обновление времени изменения члена архива невозможно в системе VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "обновление времени изменения: Архив `%s' не существует"
+msgid "touch: Archive '%s' does not exist"
+msgstr "обновление времени изменения: Архив «%s» не существует"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "обновление времени изменения: Неверный архив: `%s'"
+msgid "touch: '%s' is not a valid archive"
+msgstr "обновление времени изменения: Неверный архив: «%s»"
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "обновление времени изменения: Элемент `%s' не содержится в `%s'"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "обновление времени изменения: Элемент «%s» не содержится в «%s»"
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
 "обновление времени изменения: Функция ar_member_touch вернула\n"
-"ошибочное значение для `%s'"
+"ошибочное значение для «%s»"
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_module() не смогла извлечь информацию о модуле, статус = %d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$init_control() вернула код ошибки %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "Ошибка открытия библиотеки `%s' для поиска элемента `%s'"
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "Ошибка открытия библиотеки «%s» для поиска элемента «%s»"
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Элемент `%s'%s: %ld байт по адресу %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Элемент «%s»%s: %ld байт по адресу %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (имя может быть усечено)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Дата %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, mode = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "В способе слишком много строк (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Останов.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] Элемент архива `%s', кажется, недействителен; не удалён"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Элемент архива «%s», кажется, недействителен; не удалён"
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Элемент архива `%s', кажется, недействителен; не удалён"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Элемент архива «%s», кажется, недействителен; не удалён"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Удаляется файл `%s'"
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Удаляется файл «%s»"
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Удаляется файл `%s'"
+msgid "*** Deleting file '%s'"
+msgstr "*** Удаляется файл «%s»"
 
-#: commands.c:676
+#: commands.c:684
 msgid "#  recipe to execute"
 msgstr "#  способ, который следует применить"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (встроенные):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr "  (из `%s', строка %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr "  (из «%s», строка %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -131,222 +137,222 @@ msgstr ""
 "\n"
 "# Каталоги\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: невозможно получить сведения вызовом stat.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (ключ %s, время модификации %d): невозможно открыть.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (устройство %d, inode [%d,%d,%d]): невозможно открыть.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (устройство %ld, inode %ld): невозможно открыть.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (ключ %s, время модификации %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (устройство %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (устройство %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Нет"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " файлов,"
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "нет"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " недостижимых целей"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " на текущий момент."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " недостижимых целей в %lu каталогах.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Рекурсивная переменная `%s' ссылается сама на себя (в результате)"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Рекурсивная переменная «%s» ссылается сама на себя (в результате)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "незавершённая ссылка на переменную"
 
-#: file.c:267
+#: file.c:269
 #, c-format
-msgid "Recipe was 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:272
+#: file.c:274
 #, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
-msgstr "Способ для файла `%s' был найден из неявного правила,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Способ для файла «%s» был найден из неявного правила,"
 
-#: file.c:275
+#: file.c:277
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
-msgstr "но `%s' и `%s' теперь считаются одним и тем же файлом. "
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "но «%s» и «%s» теперь считаются одним и тем же файлом."
 
-#: file.c:278
+#: file.c:280
 #, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr ""
-"Способ для `%s' игнорируется, вместо него будет использован способ для `%s'."
+"Способ для «%s» игнорируется, вместо него будет использован способ для «%s»."
 
-#: file.c:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
-"невозможно переименовать `%s' с одним двоеточием в `%s' с двумя двоеточиями"
+"невозможно переименовать «%s» с одним двоеточием в «%s» с двумя двоеточиями"
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
-"невозможно переименовать `%s' с двумя двоеточиями в `%s' с одним двоеточием"
+"невозможно переименовать «%s» с двумя двоеточиями в «%s» с одним двоеточием"
 
-#: file.c:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Удаление промежуточного файла `%s'"
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Удаление промежуточного файла «%s»"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Удаление промежуточных файлов...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Временной штамп выходит за пределы диапазона; подставляем %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Текущее время"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Не является целью:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Ценный файл (зависимость .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Псевдоцель (зависимость от .PHONY)."
 
-#: file.c:933
+#: file.c:958
 msgid "#  Command line target."
 msgstr "#  Цель, вызываемая из командной строки."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  По умолчанию, MAKEFILES, или -include/sinclude makefile."
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "# Встроенное правило"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Производился поиск неявных правил."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Поиск неявных правил не производился."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Основа неявного или статического образца: `%s'\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Основа неявного или статического образца: «%s»\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  Файл — промежуточная зависимость."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Собирает также:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Время изменения ни разу не проверялось."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Файл не существует."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Файл очень старый."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Время последнего изменения %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Файл был обновлён."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Файл не был обновлён."
 
-#: file.c:968
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  В данный момент уже применяется некий способ (ЭТО ОШИБКА)."
 
-#: file.c:971
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr ""
 "#  В данный момент уже применяется некий способ по зависимостям (ЭТО ОШИБКА)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Успешно обновлено."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Должно быть обновлено (задан ключ -q)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Попытка обновления безуспешна."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Неверное значение члена `update_status'!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Неверное значение члена «command_state»!"
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Неверное значение члена `command_state'!"
-
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -354,7 +360,7 @@ msgstr ""
 "\n"
 "# Файлы"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -364,119 +370,171 @@ msgstr ""
 "# состояние файлов хеш-таблицы:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "нечисловой первый аргумент функции `word'"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Поле «%s» не кешировано: %s"
+
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "нечисловой первый аргумент функции «word»"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
-msgstr "первый аргумент функции `word' должен быть больше нуля"
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "первый аргумент функции «word» должен быть больше нуля"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "нечисловой первый аргумент функции `wordlist'"
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "нечисловой первый аргумент функции «wordlist»"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "нечисловой второй аргумент функции `wordlist'"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "нечисловой второй аргумент функции «wordlist»"
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "windows32_openpipe(): DuplicateHandle(In) вернула код ошибки (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr ""
-"windows32_open_pipe(): DuplicateHandle(Err) вернула код ошибки (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() вернула код ошибки (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe(): process_init_fd() завершилась неудачно\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Очищаю временный пакетный файл %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "открытие: %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "запись: %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Некорректная операция с файлом: %s"
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "недостаточно аргументов (всего %d) функции «%s»"
+
+#: function.c:2291
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "не реализовано на этой платформе: функция «%s»"
+
+#: function.c:2354
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "незавершённый вызов функции «%s»: пропущено «%c»"
+
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Некорректная операция с файлом: %s"
+
+#: function.c:2550
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "недоÑ\81Ñ\82аÑ\82оÑ\87но Ð°Ñ\80гÑ\83менÑ\82ов (вÑ\81его %d) Ñ\84Ñ\83нкÑ\86ии `%s'"
+msgid "Function name too long: %s\n"
+msgstr "СлиÑ\88ком Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ\8f Ñ\84Ñ\83нкÑ\86ии: %s\n"
 
-#: function.c:2162
+#: function.c:2552
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "не Ñ\80еализовано Ð½Ð° Ñ\8dÑ\82ой Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80ме: Ñ\84Ñ\83нкÑ\86иÑ\8f `%s'"
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Ð\9dекоÑ\80Ñ\80екÑ\82ное Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñ\8cное Ñ\87иÑ\81ло Ð°Ñ\80гÑ\83менÑ\82ов (вÑ\81его %d) Ñ\84Ñ\83нкÑ\86ии %s\n"
 
-#: function.c:2212
+#: function.c:2555
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "незавеÑ\80Ñ\88Ñ\91ннÑ\8bй Ð²Ñ\8bзов Ñ\84Ñ\83нкÑ\86ии `%s': Ð¿Ñ\80опÑ\83Ñ\89ено `%c'"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Ð\9dекоÑ\80Ñ\80екÑ\82ное Ð¼Ð°ÐºÑ\81ималÑ\8cное Ñ\87иÑ\81ло Ð°Ñ\80гÑ\83менÑ\82ов (вÑ\81его %d) Ñ\84Ñ\83нкÑ\86ии %s\n"
 
 # Сообщения getopt исключены, т.к. они относятся к уже
 # устаревшей версии этой библиотеки, и исчезнут в следующей версии make
-#
-#: getopt.c:661
+#: getopt.c:659
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: ключ `%s' не однозначен\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: ключ «%s» не однозначен\n"
 
-#: getopt.c:685
+#: getopt.c:683
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: ключ `--%s' не имеет аргумента\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: ключ «--%s» должен использоваться без аргумента\n"
 
-#: getopt.c:690
+#: getopt.c:688
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: ключ `%c%s' не имеет аргумента\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: ключ «%c%s» должен использоваться без аргумента\n"
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: ключ `%s' требует аргумент\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: ключу «%s» требуется аргумент\n"
 
-#: getopt.c:736
+#: getopt.c:734
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: неизвестный ключ `--%s'\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: неизвестный ключ «--%s»\n"
 
-#: getopt.c:740
+#: getopt.c:738
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: неизвестный ключ `%c%s'\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: неизвестный ключ «%c%s»\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: недопустимый ключ -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: неверный ключ -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ключ требует аргумент -- %c\n"
 
-#: getopt.c:846
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: ключ «-W %s» неоднозначен\n"
+
+#: getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: ключ «-W %s» должен использоваться без аргумента\n"
+
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: ключ `-W %s' неоднозначен\n"
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: расширяется «%s»\n"
 
-#: getopt.c:864
+#: guile.c:71
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: ключ `-W %s' не имеет аргумента\n"
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: вычисляется «%s»\n"
 
 #: hash.c:49
 #, c-format
@@ -498,131 +556,154 @@ msgstr "Переформулировано=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Противоречий=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Поиск неявного правила для `%s'.\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Поиск неявного правила для «%s».\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "Поиск неявного правила для элемента архива `%s'.\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Поиск неявного правила для элемента архива «%s».\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Избежание рекурсивного вызова неявного правила.\n"
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Слишком длинный образец: «%.*s».\n"
+
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Попытка применения правила с образцом, основа `%.*s'.\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Попытка применения правила с образцом «%.*s».\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Отвержение невозможной зависимости правила `%s'.\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Отвержение невозможной зависимости правила «%s».\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Отвержение невозможной неявной зависимости `%s'.\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Отвержение невозможной неявной зависимости «%s».\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Попытка применения правила зависимости `%s'.\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Попытка применения правила зависимости «%s».\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Попытка применения неявной зависимости `%s'.\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Попытка применения неявной зависимости «%s».\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Обнаружена зависимость `%s' в виде VPATH `%s'\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Обнаружена зависимость «%s» в виде VPATH «%s»\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Поиск правила с промежуточным файлом `%s'.\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Поиск правила с промежуточным файлом «%s».\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Не удалось создать временный файл\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Ошибка 0x%x (игнорирована)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (сделан дамп памяти)"
+
+#: job.c:487
+msgid " (ignored)"
+msgstr " (игнорирование)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<встроенное>"
 
-#: job.c:450
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Ошибка 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: ошибка выполнения рецепта для цели «%s»"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Ошибка %d (игнорирована)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Ошибка 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Ошибка %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Ошибка %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (сделан дамп памяти)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Ожидание завершения заданий..."
+msgstr "*** Ожидание завершения заданий"
 
-#: job.c:579
+#: job.c:639
 #, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "Незавершённый потомок %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (удалённый)"
 
-#: job.c:758
+#: job.c:829
 #, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "Подбирается неудачно завершившийся  потомок %p PID %s %s\n"
 
-#: job.c:759
+#: job.c:830
 #, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "Подбирается удачно завершившийся потомок %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Подчищаю временный пакетный файл %s\n"
 
-#: job.c:861
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Очистка временного пакетного файла %s завершилась с ошибкой (%d)\n"
+
+#: job.c:949
 #, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "Удаляется потомок %p PID %s%s из цепочки.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "пишу в сервер задач"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "освобождение семафора сервера заданий: (ошибка %ld: %s)"
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Освобождается токен для потомка %p (%s).\n"
+msgstr "Освобождён токен для потомка %p (%s).\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "запись сервера заданий"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() не смогла запустить процесс (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -631,84 +712,105 @@ msgstr ""
 "\n"
 "При неудачном запуске сосчитано %d аргументов\n"
 
-#: job.c:1525
+#: job.c:1685
 #, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
 msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n"
 
-#: job.c:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "ожидание семафора или процесса-потомка: (ошибка %ld: %s)"
+
+#: job.c:1967
 #, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "Получен токен для потомка %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "читаю задачи из потока"
+msgstr "чтение потока заданий"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr "Применяется способ из %s:%lu для обновления цели `%s'.\n"
+msgid "%s: target '%s' does not exist"
+msgstr "%s: цель «%s» не существует"
 
-#: job.c:1802
+#: job.c:2005
 #, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Выполняется встроенный способ для обновления цели `%s'.\n"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: обновление цели «%s» из-за: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "эта операционная система не позволяет устанавливать пределы загрузки"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "невозможно установить пределы загрузки: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Не удалось восстановить stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Не удалось восстановить stdout\n"
 
-#: job.c:2127
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Не удалось восстановить stderr\n"
+
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "make нашла завершившегося потомка pid %s, всё ещё ожидает pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Команда не найдена"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Командный процессор не найден"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: вероятно, закончилось место под окружение"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "Переменная $SHELL изменилась (было '%s', теперь '%s')\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "Переменная $SHELL изменилась (было «%s», теперь «%s»)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Создаётся временный пакетный файл %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Содержимое файла пакетных заданий:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
@@ -717,26 +819,59 @@ msgstr ""
 "Содержимое файла пакетных заданий:%s\n"
 "\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr ""
 "%s (строка %d) Плохой контекст командного процессора (!unixy && !"
 "batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[ТИП] (--output-sync[=ТИП]) не настроен в данной сборке."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Не удалось открыть глобальную таблицу символов: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Загруженный объект %s не объявлено как совместимый с GPL"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Не удалось загрузить символ %s из %s: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Пустое имя символа для загрузки: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Загружается символ %s из %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Операция «load» не поддерживается на этой платформе."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Ключи:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Игнорируется для совместимости.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           Без условий отрабатывать все цели.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
@@ -744,18 +879,18 @@ msgstr ""
 "  -C КАТАЛОГ, --directory=КАТАЛОГ\n"
 "                              Перейти в КАТАЛОГ перед выполнением действий.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          Выводить массу отладочных сообщений.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=ФЛАГИ]             Выводить различные типы отладочной "
 "информации.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -764,13 +899,13 @@ msgstr ""
 "                              Переменные окружения заменяют значения "
 "makefile.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 "  --eval=СТРОКА               Вычислить СТРОКУ как предложение makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -778,15 +913,15 @@ msgstr ""
 "  -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n"
 "                              Использовать ФАЙЛ в качестве makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Показать эту справку и выйти.\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Игнорировать ошибки способов.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -794,7 +929,7 @@ msgstr ""
 "  -I КАТАЛОГ, --include-dir=КАТАЛОГ\n"
 "                              Искать включаемые make-файлы в КАТАЛОГЕ.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -803,14 +938,14 @@ msgstr ""
 "                              если N не указано, число заданий "
 "неограничено.\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
 "  -k, --keep-going            Продолжать работу, даже если некоторые цели\n"
 "                              не могут быть достигнуты.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -819,7 +954,7 @@ msgstr ""
 "  -l [N], --load-average[=N], --max-load[=N]         Не запускать\n"
 "                               несколько заданий, если загрузка больше N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -827,7 +962,7 @@ msgstr ""
 "  -L, --check-symlink-times   Использовать последнее mtime при выборе между\n"
 "                              символическими ссылками и целью.\n"
 
-#: main.c:339
+#: main.c:348
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Don't actually run any recipe; just print "
@@ -837,7 +972,7 @@ msgstr ""
 "                              Не применять способ на самом деле; просто\n"
 "                              напечатать его.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -847,12 +982,21 @@ msgstr ""
 "                              Считать ФАЙЛ очень старым и не переделывать "
 "его.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[ТИП], --output-sync[=ТИП]\n"
+"                              Синхронизировать вывод параллельных\n"
+"                              заданий с типом ТИП.\n"
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr ""
 "  -p, --print-data-base       Напечатать внутреннюю базу данных make.\n"
 
-#: main.c:347
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
@@ -861,23 +1005,23 @@ msgstr ""
 "                              код завершения показывает, всё ли уже "
 "сделано.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Не использовать встроенные неявные правила.\n"
 
 # Что такое "variable settings"?
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables   Выключить установку встроенных\n"
 "                              значений переменных.\n"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet        Не показывать сами способы.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -885,22 +1029,26 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              Отменить ключ -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Установить время доступа целей в текущее,\n"
 "                              а не пересобирать их.\n"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Выводить трассировочную информацию.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               Показать информацию о версии и выйти.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Напечатать текущий каталог.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -908,7 +1056,7 @@ msgstr ""
 "  --no-print-directory        Отменить ключ -w, даже если он был явно "
 "указан.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -916,7 +1064,7 @@ msgstr ""
 "  -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n"
 "                              Считать ФАЙЛ всегда новым.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -924,21 +1072,30 @@ msgstr ""
 "  --warn-undefined-variables  Выдавать предупреждение при ссылке\n"
 "                              на неопределённую переменную.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "пустая строка недопустима в качестве имени файла"
 
-#: main.c:650
+#: main.c:734
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "задан неизвестный уровень отладки «%s»"
+
+#: main.c:777
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "неизвеÑ\81Ñ\82нÑ\8bй Ñ\81поÑ\81об Ð·Ð°Ð´Ð°Ð½Ð¸Ñ\8f Ñ\83Ñ\80овнÑ\8f Ð¾Ñ\82ладки `%s'"
+msgid "unknown output-sync type '%s'"
+msgstr "неизвеÑ\81Ñ\82нÑ\8bй Ñ\82ип output-sync Â«%s»"
 
-#: main.c:690
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "внутренняя ошибка: несколько ключей --sync-mutex"
+
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s: поймано прерывание или исключение (код = 0x%lx, адрес = 0x%p)\n"
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -953,162 +1110,185 @@ msgstr ""
 "Флаги исключения = %lx\n"
 "Адрес исключения = 0x%p\n"
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Нарушение доступа: операция записи по адресу 0x%p\n"
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Нарушение доступа: операция чтения адреса 0x%p\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell() устанавливает default_shell = %s\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s приостанавливается на 30 секунд..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) завершён. Продолжаем.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile из стандартного ввода указан дважды."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (временный файл)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (временный файл)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Параллельные задачи (-j) не поддерживаются на этой платформе."
-
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Возвращается режим одиночной задачи (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "внутренняя ошибка: несколько ключей --jobserver-fds"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"внутренняя ошибка: не удалось открыть семафор сервера заданий «%s»: (ошибка "
+"%ld: %s)"
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Клиент сервера заданий (семафор %s)\n"
+
+#: main.c:1551
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "внутренняя ошибка: неправильная строка --jobserver-fds: `%s'"
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "внутренняя ошибка: неправильная строка --jobserver-fds «%s»"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr "Клиент сервера заданий (fds %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
-"предупреждение: в суб-Makefile принудительно задан -jN; режим сервера задач "
-"запрещён"
+"предупреждение: в суб-Makefile принудительно задан -jN; режим сервера "
+"заданий Ð·Ð°Ð¿Ñ\80еÑ\89Ñ\91н"
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
-msgstr "создаю копию сервера задач"
+msgstr "создаю копию сервера заданий"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
-"предупреждение: сервер задач недоступен: используется -j1.\n"
-"Добавьте `+' к правилу в родительском make."
+"предупреждение: сервер заданий недоступен: используется -j1. Добавьте «+» к "
+"правилу в родительском make."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile из стандартного ввода указан дважды."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (временный файл)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (временный файл)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Параллельные задания (-j) не поддерживаются на этой платформе."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Возвращается режим одиночного задания (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Количество слотов сервера заданий ограничено %d\n"
 
-#: main.c:1777
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "создание семафора сервера заданий: (ошибка %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "Ñ\81оздаÑ\8e ÐºÐ°Ð½Ð°Ð» Ð·Ð°Ð´Ð°Ñ\87"
+msgstr "Ñ\81оздаÑ\91Ñ\82Ñ\81Ñ\8f ÐºÐ°Ð½Ð°Ð» Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "начальная настройка сервера задач"
+msgstr "начальная настройка сервера заданий"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Символические ссылки не поддерживаются: отменяется ключ -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Обновление make-файлов....\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Make-файл `%s', возможно, зациклен, он не будет пересобираться.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Make-файл «%s», возможно, зациклен, он не будет пересобираться.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Попытка пересобрать make-файл `%s' завершилась неудачно."
+msgid "Failed to remake makefile '%s'."
+msgstr "Попытка пересобрать make-файл «%s» завершилась неудачно."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Включаемый make-файл `%s' не найден."
+msgid "Included makefile '%s' was not found."
+msgstr "Включаемый make-файл «%s» не найден."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Make-файл `%s' не найден"
+msgid "Makefile '%s' was not found"
+msgstr "Make-файл «%s» не найден"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Невозможно перейти в первоначальный каталог."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Повторное выполнение[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (временный файл)"
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL содержит более одной цели"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Не заданы цели и не найден make-файл"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Нет целей"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Обновление целей результата...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "предупреждение: Неправильный ход часов.  Сборка может быть неполной."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1117,7 +1297,7 @@ msgstr ""
 "\n"
 "Эта программа собрана для %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1126,32 +1306,32 @@ msgstr ""
 "\n"
 "Эта программа собрана для %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "Сообщайте об ошибках по адресу <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "для ключа `%s%s' нужно указать аргументом непустую строку"
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "для ключа «%s%s» нужно указать аргументом непустую строку"
 
-#: main.c:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "ключ `-%c' должен использоваться с целым положительным аргументом"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "ключ «-%c» должен использоваться с целым положительным аргументом"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
 msgstr "%sЭта программа собрана для %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr "%sЭта программа собрана для %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1164,7 +1344,7 @@ msgstr ""
 "%sЭто свободное программное обеспечение: вы можете свободно изменять его и\n"
 "%sраспространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1173,7 +1353,7 @@ msgstr ""
 "\n"
 "# База данных Make, напечатана %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1182,109 +1362,109 @@ msgstr ""
 "\n"
 "# Печать базы данных Make завершена %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Неизвестная ошибка %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "закончилась виртуальная память"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr ""
+"%s: пользователь %lu (действительный %lu),\n"
+"группа %lu (действительная %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Доступ инициализации"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Доступ пользователя"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Доступ make"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Доступ потомка"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: Вход в неизвестный каталог\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: Выход из неизвестного каталога\n"
 
-#: main.c:3242
+#: output.c:133
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Ð\92Ñ\85од Ð² ÐºÐ°Ñ\82алог `%s'\n"
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Ð²Ñ\85од Ð² ÐºÐ°Ñ\82алог Â«%s»\n"
 
-#: main.c:3245
+#: output.c:135
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Ð\92Ñ\8bÑ\85од Ð¸Ð· ÐºÐ°Ñ\82алога `%s'\n"
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Ð²Ñ\8bÑ\85од Ð¸Ð· ÐºÐ°Ñ\82алога Â«%s»\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Ð\92ход в неизвестный каталог\n"
+msgstr "%s[%u]: Ð²ход в неизвестный каталог\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Ð\92ыход из неизвестного каталога\n"
+msgstr "%s[%u]: Ð²ыход из неизвестного каталога\n"
 
-#: main.c:3257
+#: output.c:144
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Ð\92Ñ\85од Ð² ÐºÐ°Ñ\82алог `%s'\n"
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Ð²Ñ\85од Ð² ÐºÐ°Ñ\82алог Â«%s»\n"
 
-#: main.c:3260
+#: output.c:146
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Ð\92Ñ\8bÑ\85од Ð¸Ð· ÐºÐ°Ñ\82алога `%s'\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Ð²Ñ\8bÑ\85од Ð¸Ð· ÐºÐ°Ñ\82алога Â«%s»\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "ошибка записи: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "ошибка записи"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Останов.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Неизвестная ошибка %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "закончилась виртуальная память"
-
-#: misc.c:708
-#, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr ""
-"%s: пользователь %lu (действительный %lu),\n"
-"группа %lu (действительная %lu)\n"
-
-#: misc.c:729
-msgid "Initialized access"
-msgstr "Доступ инициализации"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Доступ пользователя"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Доступ make"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Доступ потомка"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "ошибка записи: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "ошибка записи"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Чтение make-файлов...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Чтение make-файла `%s'"
+msgid "Reading makefile '%s'"
+msgstr "Чтение make-файла «%s»"
 
 #: read.c:335
 #, c-format
@@ -1306,323 +1486,338 @@ msgstr " (игнорировать ошибки)"
 msgid " (no ~ expansion)"
 msgstr " (не раскрывать символ `~') "
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Пропуск UTF-8 BOM в make-файле «%s»\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Пропуск UTF-8 BOM в буфере make-файла\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "неверный синтаксис в условном выражении"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: не удалось загрузить"
+
+#: read.c:987
 msgid "recipe commences before first target"
 msgstr "обнаружен способ до первого определения цели"
 
-#: read.c:940
+#: read.c:1036
 msgid "missing rule before recipe"
 msgstr "перед способом отсутствует правило"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "пропущен разделитель%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr "(не имели ли вы в виду TAB вместо восьми пробелов?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "пропущен образец цели"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "несколько образцов цели"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "образец цели не содержит `%%'"
+msgid "target pattern contains no '%%'"
+msgstr "образец цели не содержит «%%»"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "пÑ\80опÑ\83Ñ\89ена `endif'"
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "оÑ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вÑ\83еÑ\82 Â«endif»"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "пустое имя переменной"
 
-#: read.c:1367
-msgid "extraneous text after `define' directive"
-msgstr "излишний текст после директивы `define'"
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
+msgstr "излишний текст после директивы «define»"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "пÑ\80опÑ\83Ñ\89ена `endif', Ð½ÐµÐ·Ð°Ð²ÐµÑ\80Ñ\88Ñ\91ннаÑ\8f `define'"
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "оÑ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вÑ\83еÑ\82 Â«endif», Ð½ÐµÐ·Ð°Ð²ÐµÑ\80Ñ\88Ñ\91ннаÑ\8f Â«define»"
 
-#: read.c:1420
-msgid "extraneous text after `endef' directive"
-msgstr "излишний текст после директивы `endef'"
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "излишний текст после директивы «endef»"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Излишний текст после директивы `%s'"
+msgid "extraneous text after '%s' directive"
+msgstr "Излишний текст после директивы «%s»"
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "излишняя `%s'"
+msgid "extraneous '%s'"
+msgstr "излишняя «%s»"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "в условном выражении возможна только одна `else'"
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "в условном выражении возможна только одна «else»"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Неправильный формат задания переменной цели"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
 msgstr "в способах не могут задаваться зависимости"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "смешаны неявные правила и правила со статическими образцами"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "смешаны неявные и обычные правила"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "цель `%s' не соответствует образцу целей"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "цель «%s» не соответствует образцу целей"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "целевой файл `%s' имеет вхождения и с `:', и с `::' "
+msgid "target file '%s' has both : and :: entries"
+msgstr "целевой файл «%s» имеет вхождения и с :, и с ::"
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr "цель `%s' указана несколько раз в одном правиле"
+msgid "target '%s' given more than once in the same rule"
+msgstr "цель «%s» указана несколько раз в одном правиле"
 
-#: read.c:2006
+#: read.c:2114
 #, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "предупреждение: переопределение способа для цели `%s'"
+msgid "warning: overriding recipe for target '%s'"
+msgstr "предупреждение: переопределение способа для цели «%s»"
 
-#: read.c:2009
+#: read.c:2117
 #, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "предупреждение: старый способ для цели `%s' игнорируются"
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "предупреждение: старый способ для цели «%s» игнорируются"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "предупреждение: встречен символ NUL; игнорируется до конца строки"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Цель `%s' не требует выполнения команд."
+msgid "Nothing to be done for '%s'."
+msgstr "Цель «%s» не требует выполнения команд."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "`%s' не требует обновления."
+msgid "'%s' is up to date."
+msgstr "«%s» не требует обновления."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Обрезается файл `%s'.\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Обрезается файл «%s».\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sНет правила для сборки цели `%s'%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sНет правила для сборки цели «%s»%s"
 
-#: remake.c:361
+#: remake.c:379
 #, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%sНет правила для сборки цели `%s', требуемой для `%s'%s"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sНет правила для сборки цели «%s», требуемой для «%s»%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Обработка целевого файла `%s'.\n"
+msgid "Considering target file '%s'.\n"
+msgstr "Обработка целевого файла «%s».\n"
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "Предыдущая попытка обновить файл `%s' завершилась неудачно.\n"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Предыдущая попытка обновить файл «%s» завершилась неудачно.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Файл `%s' уже был обработан.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Файл «%s» уже был обработан.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Файл `%s' обновляется в данный момент.\n"
+msgid "Still updating file '%s'.\n"
+msgstr "Файл «%s» обновляется в данный момент.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Обновление файла `%s' завершено.\n"
+msgid "Finished updating file '%s'.\n"
+msgstr "Обновление файла «%s» завершено.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Файл `%s' не существует.\n"
+msgid "File '%s' does not exist.\n"
+msgstr "Файл «%s» не существует.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
-"*** Предупреждение: у файла `%s' параметр .LOW_RESOLUTION_TIME содержит "
-"меÑ\82кÑ\83 Ð²Ñ\80емени Ñ\81 Ð²Ñ\8bÑ\81окой Ñ\82оÑ\87ноÑ\81Ñ\82Ñ\8cÑ\8e"
+"*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME содержит метку "
+"времени с высокой точностью"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
-msgstr "Найдено неявное правило для `%s'.\n"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Найдено неявное правило для «%s».\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
-msgstr "Не найдено неявного правила для `%s'.\n"
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Не найдено неявного правила для «%s».\n"
 
 #: remake.c:502
 #, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Использование способа по умолчанию для `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
+msgstr "Использование способа по умолчанию для «%s».\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Циклическая зависимость %s <- %s пропущена."
 
-#: remake.c:651
+#: remake.c:655
 #, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "Обновление целей, от которых зависит целевой файл `%s', завершено.\n"
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "Цели, от которых зависит `%s', в настоящий момент собираются.\n"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Цели, от которых зависит «%s», в настоящий момент собираются.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Аварийный останов на целевом файле `%s'.\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Аварийный останов на целевом файле «%s».\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "Цель `%s' не была пересобрана из-за ошибок."
+msgid "Target '%s' not remade because of errors."
+msgstr "Цель «%s» не была пересобрана из-за ошибок."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr "Зависимость `%s' только для цели `%s'.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Зависимость «%s» для цели «%s» зависит от порядка.\n"
 
-#: remake.c:732
+#: remake.c:736
 #, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "Зависимость `%s' цели `%s' не существует.\n"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Зависимость «%s» цели «%s» не существует.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "Зависимость `%s' новее, чем цель `%s'.\n"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Зависимость «%s» новее, чем цель «%s».\n"
 
-#: remake.c:740
+#: remake.c:744
 #, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "Зависимость `%s' старее, чем цель `%s'.\n"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Зависимость «%s» старее, чем цель «%s».\n"
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "Цель `%s' объявлена с двумя двоеточиями и не имеет зависимостей.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Цель «%s» объявлена с двумя двоеточиями и не имеет зависимостей.\n"
 
-#: remake.c:765
+#: remake.c:769
 #, c-format
-msgid "No recipe 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:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Пересборка `%s' из-за установленного ключа always-make.\n"
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Пересборка «%s» из-за установленного флага always-make.\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
-msgstr "Нет необходимости пересобирать цель `%s'."
+msgid "No need to remake target '%s'"
+msgstr "Нет необходимости пересобирать цель «%s»"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; используется VPATH-имя `%s'"
+msgid "; using VPATH name '%s'"
+msgstr "; используется VPATH-имя «%s»"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Необходимо пересобрать цель `%s'.\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Необходимо пересобрать цель «%s».\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Игнорируется VPATH-имя `%s'.\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Игнорируется VPATH-имя «%s».\n"
 
-#: remake.c:815
+#: remake.c:819
 #, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "В настоящее время применяется способ `%s'.\n"
+msgid "Recipe of '%s' is being run.\n"
+msgstr "В настоящее время применяется способ «%s».\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Не удалось пересоздать файл цели `%s'.\n"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Не удалось пересоздать файл цели «%s».\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Целевой файл `%s' успешно пересоздан.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Целевой файл «%s» успешно пересоздан.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Целевой файл `%s' требует пересоздания с ключом -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Целевой файл «%s» требует пересоздания с ключом -q.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Использование команд по умолчанию для `%s'.\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Использование команд по умолчанию для «%s».\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
-msgstr "Ð\9fÑ\80едÑ\83пÑ\80еждение: Ð\92Ñ\80емÑ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ñ\84айла `%s' находится в будущем"
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Ð\9fÑ\80едÑ\83пÑ\80еждение: Ð²Ñ\80емÑ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ñ\84айла Â«%s» находится в будущем"
 
-#: remake.c:1370
+#: remake.c:1385
 #, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
-msgstr "Ð\9fÑ\80едÑ\83пÑ\80еждение: Ð\92Ñ\80емÑ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ñ\84айла `%s' находится в будущем (%s)"
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Ð\9fÑ\80едÑ\83пÑ\80еждение: Ð²Ñ\80емÑ\8f Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ñ\84айла Â«%s» находится в будущем (%s)"
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr "Элемент .LIBPATTERNS `%s' не является образцом"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Элемент .LIBPATTERNS «%s» не является образцом"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Не экспортируемые настройки: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1630,7 +1825,7 @@ msgstr ""
 "\n"
 "# Неявные правила"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1638,7 +1833,7 @@ msgstr ""
 "\n"
 "# Неявных правил нет."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1647,245 +1842,268 @@ msgstr ""
 "\n"
 "# Неявных правил: %u, терминальных: %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " терминал."
 
-#: rule.c:534
+#: rule.c:531
 #, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "ОШИБКА: неверное значение num_pattern_rules! %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "неизвестный сигнал"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Обрыв терминальной линии"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Прерывание"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Аварийное прерывание"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Недопустимая инструкция"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Прерывание на контрольной точке"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Прервано"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Ошибка IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Ошибка эмуляции"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Ошибка операции с плавающей точкой"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Уничтожение"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Неверное обращение к памяти"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Нарушение прав доступа к памяти"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Неправильный системный вызов"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Обрыв канала"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Сигнал по таймеру"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Завершение"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Определяемый пользователем сигнал 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Определяемый пользователем сигнал 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Потомок завершил работу"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Отказ питания"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Останов"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Останов (ввод с терминала) "
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Останов (вывод на терминал)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Останов (сигнал)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "Превышен предел процессорного времени"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Превышен предел размера файла"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Виртуальное время истекло"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Время профилирования истекло"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Окно изменено"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Возобновление"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Условия экстренного ввода/вывода"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "Возможен ввод/вывод"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Ресурс потерян"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Сигнал опасности"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Запрос информации"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Сопроцессор с плавающей точкой недоступен"
 
-#: strcache.c:235
+#: strcache.c:236
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s без буферов strcache\n"
+
+#: strcache.c:266
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
 "\n"
-"%s # строк в strcache: %d / lookups = %lu / hits = %lu\n"
+"%s буферы strcache: %lu (%lu) / строк = %lu / хранилище = %lu Б / сред = %lu "
+"Б\n"
 
-#: strcache.c:237
+#: strcache.c:270
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-msgstr "%s # буферов strcache: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
+"%s текущий buf: размер = %hu Б / используется = %hu Б / кол-во = %hu / сред "
+"= %hu Б\n"
 
-#: strcache.c:239
+#: strcache.c:280
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr ""
-"%s размер strcache: всего = %d (%d) / макс = %d / мин = %d / сред = %d\n"
+"%s для другого используется: всего = %lu Б / кол-во = %lu / сред = %lu Б\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
-"%s свободно в strcache: всего = %d (%d) / макс = %d / мин = %d / сред = %d\n"
+"%s для другого свободно: всего = %lu Б / макс. = %lu Б / мин. = %lu Б / "
+"сред. = %hu Б\n"
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# состояние хеш-таблицы strcache:\n"
+"%s производительность strcache: поисков = %lu / найдено = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# состояние хеш-таблицы:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "автоматическая"
+
+#: variable.c:1610
 msgid "default"
 msgstr "по умолчанию"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "определена в среде"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
-msgstr "Make-файл"
+msgstr "make-файл"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "задан ÐºÐ»Ñ\8eÑ\87 -e"
+msgstr "окÑ\80Ñ\83жение Ñ\81 -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "определена в командной строке"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "Директива `override'"
-
-#: variable.c:1559
-msgid "automatic"
-msgstr "автоматическая"
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "Директива «override»"
 
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (из `%s', строка %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (из «%s», строка %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# состояние переменных в хеш-таблице:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1893,7 +2111,7 @@ msgstr ""
 "\n"
 "# Переменные\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1901,7 +2119,7 @@ msgstr ""
 "\n"
 "# Значения переменных особенные для маски"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1909,7 +2127,7 @@ msgstr ""
 "\n"
 "# Нет значений переменных особенных для маски."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1918,94 +2136,94 @@ msgstr ""
 "\n"
 "# %u значений переменных особенных для маски"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "предупреждение: неопределённая переменная `%.*s'"
+msgid "warning: undefined variable '%.*s'"
+msgstr "предупреждение: неопределённая переменная «%.*s»"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search() вернула код ошибки %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Предупреждение: Пустое перенаправление\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
-msgstr "внутренняя ошибка: `%s' command_state"
+msgid "internal error: '%s' command_state"
+msgstr "внутренняя ошибка: «%s» command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
 "-предупреждение, возможно вам потребуется повторно разрешить\n"
 "обработку CTRL-Y из DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "ВСТРОЕННЫЙ [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "ВСТРОЕННЫЙ CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "ВСТРОЕННЫЙ RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Неизвестная встроенная команда '%s'\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Ошибка, пустая команда\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Стандартный ввод перенаправлен из %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Поток ошибок перенаправлен в %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
 msgstr "Стандартный вывод добавлен в %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Стандартный вывод перенаправлен в %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr "Добавить %.*s и очистить\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Вместо заданного выполняется %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Ошибка порождения процесса, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2013,37 +2231,64 @@ msgstr ""
 "\n"
 "# Пути поиска VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Не определён путь поиска `vpath'."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Не определён путь поиска «vpath»."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u путей поиска по `vpath'\n"
+"# %u путей поиска по «vpath»\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Не определён общий (переменная `VPATH') путь поиска."
+"# Не определён общий (переменная «VPATH») путь поиска."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Общий (переменная `VPATH') путь поиска:\n"
+"# Общий (переменная «VPATH») путь поиска:\n"
 "# "
 
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Неверное значение члена «update_status»!"
+
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "неизвестный режим трассировки «%s»"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Ошибка 0x%x (игнорирована)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Применяется способ из %s:%lu для обновления цели `%s'.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Выполняется встроенный способ для обновления цели `%s'.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # буферов strcache: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# состояние хеш-таблицы strcache:\n"
+#~ "# "
+
 #~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
 #~ msgstr "process_easy() не смогла запустить процесс (e=%ld)\n"
 
index ec5fbf5..5dccff3 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index d183e01..8386679 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
 # Swedish messages translation of make
-# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copyright © 2002, 2007, 2011, 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
 # Tomas Gradin <tg@df.lth.se>, 1996-2002.
 # Christer Andersson <klamm@comhem.se>, 2007.
+# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2013.
 #
+# $Id: make.po,v 1.11 2013-10-01 22:03:56+02 göran Exp $
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81\n"
+"Project-Id-Version: make 3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-01 22:03+0200\n"
+"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "försök att använda en funktion som inte stöds: \"%s\""
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "försök att använda en funktion som inte stöds: ”%s”"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "nydatering av arkivmedlem är inte tillgängligt i VMS"
+msgstr "att nudda en arkivmedlem är inte tillgängligt i VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "nydatera: Arkivet \"%s\" finns inte"
+msgid "touch: Archive '%s' does not exist"
+msgstr "nudda: Arkivet ”%s” finns inte"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "nydatera: \"%s\" är inte något giltigt arkiv"
+msgid "touch: '%s' is not a valid archive"
+msgstr "nudda: ”%s” är inte något giltigt arkiv"
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "nydatera: medlemmen \"%s\" finns inte i \"%s\""
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "nudda: medlemmen ”%s” finns inte i ”%s”"
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
-msgstr "nydatera: Felaktig returkod från ar_member_touch på \"%s\""
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "nudda: Felaktig returkod från ar_member_touch på ”%s”"
 
-#: arscan.c:69
-#, fuzzy, c-format
+#: arscan.c:67
+#, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr ""
-"lbr$set_module misslyckades med att extrahera modulinformation, status = %d"
+"lbr$set_module() misslyckades med att extrahera modulinformation, status = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control misslyckades och gav status = %d"
+msgstr "lbr$ini_control() misslyckades och gav status = %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, 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\""
+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:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Medlem \"%s\"%s: %ld byte vid %ld (%ld).\n"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Medlem ”%s”%s: %ld byte vid %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (namnet kan vara avkortat)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Datum %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, flaggor = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Receptet har för många rader (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Avbrott.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr "*** [%s] Arkivmedlemmen \"%s\" kan vara felaktig; ej borttagen"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Arkivmedlemmen ”%s” kan vara felaktig; ej borttagen"
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr "*** Arkivmedlemmen \"%s\" kan vara felaktig; ej borttagen"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Arkivmedlemmen ”%s” kan vara felaktig; ej borttagen"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Tar bort filen \"%s\""
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Tar bort filen ”%s”"
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Tar bort filen \"%s\""
+msgid "*** Deleting file '%s'"
+msgstr "*** Tar bort filen ”%s”"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  kommandon att utföra"
+msgstr "#  recept att utföra"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (inbyggd):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (från \"%s\", rad %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (från ”%s”, rad %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,225 +133,221 @@ msgstr ""
 "\n"
 "# Kataloger\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: kunde inte ta status.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (nyckel %s, mtid %d): kunde inte öppnas.\n"
+msgstr "# %s (nyckel %s, mtid %d): kunde inte öppnas.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (enhet %d, inod [%d,%d,%d]): kunde inte öppnas.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n"
+msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (nyckel %s, mtid %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (enhet %d, inod [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (enhet %ld, inod %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Inga"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " filer, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "inga"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " omöjligheter"
+msgstr " omöjligheter"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " hittills."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " omöjligheter i %lu kataloger.\n"
+msgstr " omöjligheter i %lu kataloger.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Den rekursiva variabeln \"%s\" hänvisar till sig själv (så småningom)"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Den rekursiva variabeln ”%s” hänvisar till sig själv (så småningom)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "oavslutad variabelreferens"
 
-#: 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:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Recept angavs för filen ”%s” på %s:%lu,"
 
-#: 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:274
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Recept för filen ”%s” hittades genom sökning efter implicit regel,"
 
-#: file.c:275
+#: file.c:277
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
-msgstr "men \"%s\" anses nu vara samma fil som \"%s\"."
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "men ”%s” anses nu vara samma fil som ”%s”."
 
-#: file.c:278
-#, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+#: file.c:280
+#, 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\"."
+"Kommer att bortse från recept för ”%s” till förmån för det som gäller ”%s”."
 
-#: file.c:298
+#: file.c:300
 #, 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\""
+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:303
+#: file.c:305
 #, 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\""
+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:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Tar bort övergångsfilen \"%s\""
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Tar bort mellanfilen ”%s”"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "Tar bort övergångsfiler...\n"
+msgstr "Tar bort mellanfiler …\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Tidsvärde utanför gränser; ersätter med %s"
+msgstr "%s: Tidsvärde utanför gränser; ersätter med %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Nuvarande tid"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# Inte ett mål:"
+msgstr "# Inte ett mål:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  Värdefull fil (nödvändig för .PRECIOUS)."
+msgstr "#  Värdefull fil (nödvändig för .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  Låtsasmål (nödvändig för .PHONY)."
+msgstr "#  Låtsasmål (nödvändig för .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  Kommandoradsmål."
+msgstr "#  Kommandoradsmål."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr ""
 "#  En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-"
 "makefil."
 
-#: file.c:937
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Inbyggd regel"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  Implicit regelsökning har genomförts."
+msgstr "#  Implicit regelsökning har genomförts."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  Implicit regelsökning har inte genomförts."
+msgstr "#  Implicit regelsökning har inte genomförts."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  Implicit/statisk mönsterstam: \"%s\"\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Implicit/statisk mönsterstam: ”%s”\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  Filen är ett övergående beroende."
+msgstr "#  Filen är ett övergående beroende."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  Skapar också:"
+msgstr "#  Skapar också:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "#  Ändringstiden har inte kontrollerats."
+msgstr "#  Ändringstiden har inte kontrollerats."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Filen finns inte."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
-msgstr "#  Filen är mycket gammal."
+msgstr "#  Filen är mycket gammal."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  Senast ändrad %s\n"
+msgstr "#  Senast ändrad %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Filen har uppdaterats."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Filen har inte uppdaterats."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  Kommandokörning pågår (DETTA ÄR ETT FEL)."
+msgstr "#  Recept körs just nu (DETTA ÄR ETT FEL)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  Beroendekommandon körs (DETTA ÄR ETT FEL)."
+msgstr "#  Beroenderecept körs (DETTA ÄR ETT FEL)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  Uppdateringen lyckades."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  Behöver uppdateras (-q har angivits)."
+msgstr "#  Behöver uppdateras (-q har angivits)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Uppdateringen misslyckades."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  Ogiltigt värde i medlem av \"update_status\"!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  Ogiltigt värde i medlem av \"command_state\"!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Ogiltigt värde i medlemmen ”command_state”!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -351,131 +355,184 @@ msgstr ""
 "\n"
 "# Filer"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# statistik för filhashtabell:\n"
+"# statistik för filhashtabell:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "icke-numeriskt första argument till funktionen \"word\""
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Fältet ”%s” cachas inte: %s"
 
-#: 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:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "icke-numeriskt första argument till funktionen ”word”"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "icke-numeriskt första argument till funktionen \"wordlist\""
+#: function.c:747
+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
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "icke-numeriskt andra argument till funktionen \"wordlist\""
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "icke-numeriskt första argument till funktionen ”wordlist”"
 
-#: function.c:1458
-#, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(In) misslyckades (e=%ld)\n"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "icke-numeriskt andra argument till funktionen ”wordlist”"
 
-#: function.c:1469
-#, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: DuplicateHandle(Fel) misslyckades (e=%ld)\n"
+#: function.c:1460
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%ld)\n"
+
+#: function.c:1483
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() misslyckades (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): process_init_fd() misslyckades\n"
+msgstr "windows32_openpipe(): process_init_fd() misslyckades\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
-msgstr "Städar bort tillfällig omgångsfil %s\n"
+msgstr "Städar bort tillfällig satsfil %s\n"
+
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "öppna: %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "skriv: %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Felaktig filåtgärd: %s"
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "otillräckligt antal argument (%d) till funktionen ”%s”"
+
+#: function.c:2291
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "ej implementerat på denna plattform: funktionen ”%s”"
 
-#: function.c:2150
+#: function.c:2354
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "otillräckligt antal argument (%d) till funktionen \"%s\""
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "oavslutat funktionsanrop ”%s”: ”%c” saknas"
 
-#: function.c:2162
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Felaktig filåtgärd: %s"
+
+#: function.c:2550
+#, c-format
+msgid "Function name too long: %s\n"
+msgstr "Funktionsnamnet är för långt: %s\n"
+
+#: function.c:2552
 #, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "ej implementerat på denna plattform: funktionen \"%s\""
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Felaktigt minsta antal argument (%d) till funktionen ”%s”\n"
 
-#: function.c:2212
+#: function.c:2555
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "oavslutat funktionsanrop \"%s\": \"%c\" saknas"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Felaktigt största antal argument (%d) till funktionen ”%s”\n"
 
-#: getopt.c:661
+#: getopt.c:659
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: flaggan \"%s\" är tvetydig\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: flaggan ”%s” är tvetydig\n"
 
-#: getopt.c:685
+#: getopt.c:683
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"--%s\" tar inget argument\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: flaggan ”--%s” tar inget argument\n"
 
-#: getopt.c:690
+#: getopt.c:688
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: flaggan ”%c%s” tar inget argument\n"
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: flaggan \"%s\" kräver ett argument\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: flaggan ”%s” kräver ett argument\n"
 
-#: getopt.c:736
+#: getopt.c:734
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: okänd flagga \"--%s\"\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: okänd flagga ”--%s”\n"
 
-#: getopt.c:740
+#: getopt.c:738
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: okänd flagga \"%c%s\"\n"
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: okänd flagga ”%c%s”\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: otillåten flagga -- %c\n"
+msgstr "%s: otillåten flagga -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ogiltig flagga -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: flaggan kräver ett argument -- %c\n"
+msgstr "%s: flaggan kräver ett argument -- %c\n"
 
-#: getopt.c:846
+#: getopt.c:844
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: flaggan ”-W %s” är tvetydig\n"
 
-#: getopt.c:864
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: flaggan ”-W %s” tar inget argument\n"
+
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Expanderar ”%s”\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Evaluerar ”%s”\n"
 
 #: hash.c:49
-#, fuzzy, c-format
+#, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "kan inte allokera %ld byte för hashtabell: minnet slut"
+msgstr "kan inte allokera %lu byte för hashtabell: minnet slut"
 
 #: hash.c:280
 #, c-format
@@ -492,411 +549,499 @@ msgstr "Omhash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Kollisioner=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Letar efter en implicit regel för \"%s\".\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Letar efter en implicit regel för ”%s”.\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "Letar efter en implicit regel för arkivmedlemmen \"%s\".\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Letar efter en implicit regel för arkivmedlemmen ”%s”.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Undviker rekursion orsakad av implicit regel.\n"
 
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Stammen är för lång: ”%.*s”.\n"
+
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "Prövar mönsterregel med stammen \"%.*s\".\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Prövar mönsterregel med stammen ”%.*s”.\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "Avvisar det omöjliga regelbaserade beroendet \"%s\".\n"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Avvisar den omöjliga regelförutsättningen ”%s”.\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "Avvisar det omöjliga implicita beroendet \"%s\".\n"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Avvisar den omöjliga implicita förutsättningen ”%s”.\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Prövar det regelbaserade beroendet \"%s\".\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Prövar det regelförutsättningen ”%s”.\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Prövar det implicita beroendet \"%s\".\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Prövar den implicita förutsättningen ”%s”.\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr "Hittade den nödvändiga \"%s\" som VPATH \"%s\"\n"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "Letar efter en regel med övergångsfilen \"%s\".\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Letar efter en regel med mellanfilen ”%s”.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "Kan inte skapa en temporärfil\n"
+msgstr "Kan inte skapa en temporärfil\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Fel 0x%x (ignoreras)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (minnesdump)"
 
-#: job.c:450
+#: job.c:487
+msgid " (ignored)"
+msgstr " (ignoreras)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<inbyggd>"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Fel 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: receptet för målet ”%s” misslyckades"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Fel %d (ignoreras)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Fel 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Fel %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Fel %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (minnesdump)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s]: %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Inväntar oavslutade jobb..."
+msgstr "*** Inväntar oavslutade jobb..."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Levande barnprocess 0x%08lx (%s) PID %ld %s\n"
+msgstr "Levande barnprocess %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
-msgstr " (fjärr)"
+msgstr " (fjärr)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Inhöstar misslyckad barnprocess: 0x%08lx PID %ld %s\n"
+msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Inhöstar lyckad barnprocess: 0x%08lx PID %ld %s\n"
+msgstr "Inhöstar lyckad barnprocess: %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "Städar bort tillfällig omgångsfil %s\n"
+msgstr "Städar bort tillfällig satsfil %s\n"
 
-#: job.c:861
-#, fuzzy, c-format
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Bortstädning av tillfällig satsfil %s misslyckades (%d)\n"
+
+#: job.c:949
+#, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Tar bort barnprocessen 0x%08lx PID %ld%s från kedjan.\n"
+msgstr "Tar bort barnprocessen %p PID %s%s från kedjan.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "skriver till jobbserver"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "släpp jobbserversemafor: (Fel %ld: %s)"
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "Frigjorde symbol för barnprocessen 0x%08lx (%s).\n"
+msgstr "Frigjorde symbol för barnprocessen %p (%s).\n"
+
+#: job.c:1023
+msgid "write jobserver"
+msgstr "skriver till jobbserver"
 
-#: job.c:1453 job.c:2094
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() misslyckades med processtart (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Räknade till %d argument vid misslyckad start\n"
+"Räknade till %d argument vid misslyckad start\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "För upp barnprocessen %p (%s) PID %s%s på kedjan.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "väntan på semafor eller barnprocess: (Fel %ld: %s)"
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "Erhöll symbol för barnprocessen 0x%08lx (%s).\n"
+msgstr "Erhöll symbol för barnprocessen %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "läser från jobbledning"
+msgstr "läser från jobbledning"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+msgid "%s: target '%s' does not exist"
+msgstr "%s: målet ”%s” finns inte"
 
-#: 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:2005
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: uppdatera målet ”%s” på grund av: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
-msgstr "kan inte upprätthålla lastbegränsningar i detta operativsystem"
+msgstr "kan inte upprätthålla lastbegränsningar i detta operativsystem"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "kan inte upprätthålla lastbegränsning: "
+msgstr "kan inte upprätthålla lastbegränsning: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr "inga fler filhandtag: kunde inte duplicera stdin\n"
+msgstr "inga fler filhandtag: kunde inte duplicera standard in\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr "inga fler filhandtag: kunde inte duplicera stdout\n"
+msgstr "inga fler filhandtag: kunde inte duplicera standard ut\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "inga fler filhandtag: kunde inte duplicera standard fel\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr "Kunde inte återställa stdin\n"
+msgstr "Kunde inte återställa standard in\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr "Kunde inte återställa stdout\n"
+msgstr "Kunde inte återställa standard ut\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Kunde inte återställa standard fel\n"
+
+#: job.c:2365
+#, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
-msgstr "make inhöstade barnprocessen pid %ld, inväntar pid %ld\n"
+msgstr "make inhöstade barn-pid %s, inväntar fortfarande pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Kommandot hittades inte"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Skalprogrammet hittades inte"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: miljöutrymmet kanske är slut"
+msgstr "spawnvpe: miljöutrymmet kanske är slut"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ändrades (var \"%s\", är nu \"%s\")\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL ändrades (var ”%s”, är nu ”%s”)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "Skapar tillfällig omgångsfil %s\n"
+msgstr "Skapar tillfällig satsfil %s\n"
+
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Satsfilinnehåll:\n"
+"\t@echo off\n"
 
-#: job.c:2963
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Satsfilinnehåll:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TYP] (--output-sync[=TYP]) är inte konfigurerat för detta bygge."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Misslyckades att öppna den globala symboltabellen: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Laddat objekt %s är inte deklarerat att vara GPL-kompatibelt"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Misslyckades att ladda symbolen %s från %s: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Tomt symbolnamn för laddning: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Laddar symbol %s från %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Operationen ”load” stödjs inte på denna plattform."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Flaggor:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      Ignoreras av kompatibilitetsskäl.\n"
+msgstr "  -b, -m                      Ignoreras av kompatibilitetsskäl.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr "  -B, --always-make           Bygg ovillkorligen alla mål.\n"
+msgstr "  -B, --always-make           Bygg ovillkorligen alla mål.\n"
 
-#: main.c:308
+#: main.c:317
 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"
+"                              Byt katalog till KATALOG innan något görs.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr ""
-"  -d                          Skriv ut massor av felsökningsinformation.\n"
+"  -d                          Skriv ut massor av felsökningsinformation.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
 "  --debug[=FLAGGOR]           Skriv ut olika sorters "
-"felsökningsinformation.\n"
+"felsökningsinformation.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Miljövariabler åsidosätter makefiler.\n"
+"                              Miljövariabler åsidosätter makefiler.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
-msgstr ""
+msgstr "  --eval=STRÄNG               Evaluera STRÄNG som en makefile-sats.\n"
 
-#: main.c:320
+#: main.c:329
 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"
+"                              Använd FIL som makefil.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Skriv ut detta meddelande och avsluta.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
-msgstr "  -i, --ignore-errors         Ignorera kommandofel.\n"
+msgstr "  -i, --ignore-errors         Ignorera fel från recept.\n"
 
-#: main.c:327
+#: main.c:336
 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"
+"                              Genomsök KATALOG efter inkluderade makefiler.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          Tillåt N samtidiga jobb; oändligt många om "
+"  -j [N], --jobs[=N]          Tillåt N samtidiga jobb; oändligt många om "
 "inget antal anges.\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
-"  -k, --keep-going            Fortsätt även om vissa mål inte kan skapas.\n"
+"  -k, --keep-going            Fortsätt även om vissa mål inte kan skapas.\n"
 
-#: main.c:334
+#: main.c:343
 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 "
+"                              Påbörja fler jobb endast om lasten understiger "
 "N.\n"
 
-#: main.c:337
+#: main.c:346
 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"
+"  -L, --check-symlink-times   Använd den senaste av mtiderna för symboliska "
+"länkar eller mål.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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"
-"                              Kör inte kommandona, skriv bara ut dem.\n"
+"                              Kör inte något recept, skriv bara ut dem.\n"
 
-#: main.c:342
+#: main.c:351
 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 "
+"                              Betrakta FIL som mycket gammal och återskapa "
 "den inte.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+"  -O[TYP], --output-sync[=TYP]\n"
+"                              Synkronisera utmatningen av parallella jobb\n"
+"                              enligt TYP.\n"
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       Skriv ut makes interna databas.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
 msgstr ""
-"  -q, --question              Kör inga kommandon; slutstatus visar "
-"färskheten.\n"
+"  -q, --question              Kör inga recept; slutstatus visar om det är "
+"aktuellt.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr ""
 "  -r, --no-builtin-rules      Inaktivera de inbyggda implicita reglerna.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr ""
 "  -R, --no-builtin-variables  Inaktivera de inbyggda "
-"variabelinställningarna.\n"
+"variabelinställningarna.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr "  -s, --silent, --quiet       Återge inte kommandon.\n"
+msgstr "  -s, --silent, --quiet       Återge inte recept.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
 "  -S, --no-keep-going, --stop\n"
-"                              Stäng av -k.\n"
+"                              Stäng av -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
-"  -t, --touch                 Nydatera mål i stället för att återskapa dem.\n"
+"  -t, --touch                 Nydatera mål i stället för att återskapa dem.\n"
 
-#: main.c:360
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Skriv spårningsinformation.\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr ""
 "  -v, --version               Skriv ut makes versionsnummer och avsluta.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Skriv ut aktuell katalog.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
-"  --no-print-directory        Stäng av -w, även om det är implicit "
-"påslaget.\n"
+"  --no-print-directory        Stäng av -w, även om det är implicit "
+"påslaget.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -904,30 +1049,39 @@ msgstr ""
 "  -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n"
 "                              Betrakta FIL som hur ny som helst.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables  Varna vid användning av en odefinierad "
+"  --warn-undefined-variables  Varna vid användning av en odefinierad "
 "variabel.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "en tom sträng är ett ogiltigt filnamn"
+msgstr "en tom sträng är ett ogiltigt filnamn"
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "okänd felsökningsnivå \"%s\" angiven"
+msgid "unknown debug level specification '%s'"
+msgstr "okänd felsökningsnivå ”%s” angiven"
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "okänd typ av utmatningssynkronisering ”%s”"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "internt fel: flera flaggor ”--sync-mutex”"
+
+#: main.c:848
+#, c-format
 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"
+msgstr "%s: Avbrott/Undantag fångat (kod = 0x%lx, adress = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -936,215 +1090,232 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\n"
-"Ett ohanterat undantagsfilter anropades från programmet %s\n"
+"Ett ohanterat undantagsfilter anropades från programmet %s\n"
 "Undantagskod = %lx\n"
 "Undantagsflaggor = %lx\n"
-"Undantagsadress = %lx\n"
+"Undantagsadress = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Åtkomstförseelse: skrivinstruktion på adressen %lx\n"
+msgstr "Åtkomstförseelse: skrivinstruktion på adressen 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Åtkomstförseelse: läsinstruktion på adressen %lx\n"
+msgstr "Åtkomstförseelse: läsinstruktion på adressen 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell ger default_shell = %s\n"
+msgstr "find_and_set_shell() ger default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "sökvägen för find_and_set_shell() gav default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s suspenderas i 30 sekunder..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "färdig med sleep(30). Fortsätter.\n"
-
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefil från standard in angavs dubbelt."
+msgstr "färdig med sleep(30). Fortsätter.\n"
 
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (temporärfil)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (temporärfil)"
-
-#: 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:1704
-msgid "Resetting to single job (-j1) mode."
-msgstr "Återställer till enkeljobbsläge (-j1)."
-
-#: main.c:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "internt fel: flera \"--jobserver-fds\"-flaggor"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr "Internt fel: kan inte öppna jobbserversemaforen ”%s”: (Fel %ld: %s)"
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "internt fel: ogiltig \"--jobserver-fds\"-sträng \"%s\""
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Jobbserverklient (semafor %s)\n"
 
-#: main.c:1730
+#: main.c:1551
+#, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "internt fel: ogiltig sträng ”--jobserver-fds” ”%s”"
+
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Jobbserverklient (fb %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "varning: -jN framtvingat i del-make: inaktiverar jobbserverläge."
+msgstr "varning: -jN framtvingat i del-make: inaktiverar jobbserverläge."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "duplicerar jobbserver"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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."
+"varning: jobbserver otillgänglig: använder -j1. Lägg till ”+” i "
+"föräldraregeln."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefil från standard in angavs dubbelt."
 
-#: main.c:1777
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (temporärfil)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (temporärfil)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Parallella jobb (-j) stöds inte på denna plattform."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Återställer till enkeljobbsläge (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Jobbserfacj begränsat till %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "skapar jobbserversemafor: (Fel %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "skapar jobbledning"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "iordningställer ledning till jobbserver"
+msgstr "iordningställer ledning till jobbserver"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr "Symboliska länkar stöds inte: inaktiverar -L."
+msgstr "Symboliska länkar stöds inte: inaktiverar -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "Uppdaterar makefiler...\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Makefilen \"%s\" torde loopa; återskapas inte.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Makefilen ”%s” kan loopa; återskapas inte.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "Misslyckades med att återskapa makefilen \"%s\"."
+msgid "Failed to remake makefile '%s'."
+msgstr "Misslyckades med att återskapa makefilen ”%s”."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Den inkluderade makefilen \"%s\" hittades inte."
+msgid "Included makefile '%s' was not found."
+msgstr "Den inkluderade makefilen ”%s” fanns inte."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Makefilen \"%s\" hittades inte"
+msgid "Makefile '%s' was not found"
+msgstr "Makefilen ”%s” fanns inte"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "Kunde inte återgå till ursprungskatalogen."
+msgstr "Kunde inte återgå till ursprungskatalogen."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
-msgstr "Utför på nytt[%u]:"
+msgstr "Utför på nytt[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
-msgstr "avlänka (temporärfil): "
+msgstr "avlänka (temporärfil): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ".DEFAULT_GOAL innehåller fler än ett mål"
+msgstr ".DEFAULT_GOAL innehåller fler än ett mål"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "Inga mål angavs och ingen makefil hittades"
+msgstr "Inga mål angavs och ingen makefil hittades"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
-msgstr "Inga mål"
+msgstr "Inga mål"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "Uppdaterar slutmål...\n"
+msgstr "Uppdaterar slutmål...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
-"varning:  Klockförskjutning upptäckt.  Bygget kan ha blivit ofullständigt."
+"varning:  Klockförskjutning upptäckt.  Bygget kan ha blivit ofullständigt."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Användning: %s [flaggor] [mål] ...\n"
+msgstr "Användning: %s [flaggor] [mål] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Detta program byggdes för %s\n"
+"Detta program byggdes för %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Detta program byggdes för %s (%s)\n"
+"Detta program byggdes för %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr ""
-"Anmäl fel till <bug-make@gnu.org>.\n"
-"Skicka synpunkter på översättningen till <sv@li.org>.\n"
+"Anmäl fel till <bug-make@gnu.org>.\n"
+"Skicka synpunkter på översättningen till <sv@li.org>.\n"
 
-#: main.c:2562
-#, fuzzy, c-format
-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:2810
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "flaggan ”%s%s” kräver ett strängargument som inte är tomt"
 
-#: main.c:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "flaggan \"-%c\" kräver ett positivt heltal som argument"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "flaggan ”-%c” kräver ett positivt heltal som argument"
 
-#: main.c:3054
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"%sDetta program byggdes för %s\n"
+msgstr "%sByggt för %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"%sDetta program byggdes för %s (%s)\n"
+msgstr "%sByggt för %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1152,8 +1323,12 @@ msgid ""
 "%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 ""
+"%sLicens GPLv3+: GNU GPL version 3 eller senare <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sDetta är fri programvara. du får lov att ändra och vidaredistribuera den.\n"
+"%sDet finns INGEN GARANTI, så långt lagen tillåter.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1162,126 +1337,126 @@ msgstr ""
 "\n"
 "# Make-databas, utskriven %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Färdigställde Make-databas %s\n"
+"# Färdigställde Make-databas %s\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Okänt fel %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "virtuellt minne uttömt"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Åtkomst inledd"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Användaråtkomst"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make-åtkomst"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Barnåtkomst"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Går till en okänd katalog\n"
+msgstr "%s: Går till en okänd katalog\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Lämnar en okänd katalog\n"
+msgstr "%s: Lämnar en okänd katalog\n"
 
-#: main.c:3242
+#: output.c:133
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Går till katalogen \"%s\"\n"
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Går till katalogen ”%s”\n"
 
-#: main.c:3245
+#: output.c:135
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Lämnar katalogen \"%s\"\n"
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Lämnar katalogen ”%s”\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Går till en okänd katalog\n"
+msgstr "%s[%u]: Går till en okänd katalog\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Lämnar en okänd katalog\n"
+msgstr "%s[%u]: Lämnar en okänd katalog\n"
 
-#: main.c:3257
+#: output.c:144
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Går till katalogen \"%s\"\n"
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Går till katalogen ”%s”\n"
 
-#: main.c:3260
+#: output.c:146
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Lämnar katalogen \"%s\"\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Lämnar katalogen ”%s”\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "skrivfel: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "skrivfel"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Stannar.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Okänt fel %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "virtuellt minne uttömt"
-
-#: misc.c:708
-#, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n"
-
-#: misc.c:729
-msgid "Initialized access"
-msgstr "Åtkomst inledd"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Användaråtkomst"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Make-åtkomst"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Barnåtkomst"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "skrivfel: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "skrivfel"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "Läser makefiler...\n"
+msgstr "Läser makefiler...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Läser makefil \"%s\""
+msgid "Reading makefile '%s'"
+msgstr "Läser makefilen ”%s”"
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (inget standardmål)"
+msgstr " (inget standardmål)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (sökväg)"
+msgstr " (sökväg)"
 
 #: read.c:339
 #, c-format
@@ -1293,329 +1468,337 @@ msgstr " (oviktigt)"
 msgid " (no ~ expansion)"
 msgstr " (ingen ~-expansion)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Hoppar över UTF-8-BOM i makefilen ”%s”\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Hoppar över UTF-8-BOM i makefile-buffert\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "ogiltig syntax i villkorssats"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: misslyckades att ladda"
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "kommandon inleds före första målet"
+msgstr "recept inleds före första målet"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "regel saknas före kommandon"
+msgstr "regel saknas före recept"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "separator saknas%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr " (var avsikten TAB i stället för 8 mellanslag?)"
+msgstr " (var avsikten TAB i stället för 8 mellanslag?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "målmönster saknas"
+msgstr "målmönster saknas"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "flera målmönster"
+msgstr "flera målmönster"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "målmönstret innehåller inget \"%%\""
+msgid "target pattern contains no '%%'"
+msgstr "målmönstret innehåller inget ”%%”"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "\"endif\" saknas"
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "”endif” saknas"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 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:1465
+msgid "extraneous text after 'define' directive"
+msgstr "överflödig text efter direktivet ”define”"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "\"endef\" saknas, oavslutat \"define\""
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "”endef” saknas, oavslutad ”define”"
 
-#: read.c:1420
-#, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "Överflödig text efter direktivet \"endef\""
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "överflödig text efter direktivet ”endef”"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Överflödig text efter direktivet \"%s\""
+msgid "extraneous text after '%s' directive"
+msgstr "överflödig text efter direktivet ”%s”"
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "överflödigt \"%s\""
+msgid "extraneous '%s'"
+msgstr "överflödigt ”%s”"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "endast ett \"else\" per villkor"
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "endast ett ”else” per villkor"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Felformad målberoende variabeldefinition"
+msgstr "Felformad målberoende variabeldefinition"
 
-#: read.c:1855
-#, fuzzy
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr "beroenden kan inte definieras i kommandoskript"
+msgstr "beroenden kan inte definieras i recept"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "blandade implicita regler och statiska mönsterregler"
+msgstr "blandade implicita regler och statiska mönsterregler"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "blandade implicita regler och normala regler"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "målet \"%s\" motsvarar inte målmönstret"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "målet ”%s” motsvarar inte målmönstret"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "målfilen \"%s\" har både poster med : och ::"
+msgid "target file '%s' has both : and :: entries"
+msgstr "målfilen ”%s” har både poster med : och ::"
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr "målet \"%s\" anges flera gånger i samma regel."
+msgid "target '%s' given more than once in the same rule"
+msgstr "målet ”%s” anges flera gånger i samma regel"
 
-#: 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:2114
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "varning: åsidosätter recept för målet ”%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:2117
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "varning: ignorerar gammalt recept för målet ”%s”"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "varning: NUL-tecken upptäckt, bortser från resten av raden"
+msgstr "varning: NUL-tecken upptäckt, bortser från resten av raden"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Inget behöver göras för \"%s\"."
+msgid "Nothing to be done for '%s'."
+msgstr "Inget behöver göras för ”%s”."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "\"%s\" är färsk."
+msgid "'%s' is up to date."
+msgstr "”%s” är aktuell."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Beskär filen \"%s\".\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Beskär filen ”%s”.\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sIngen regel för att skapa målet \"%s\"%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sIngen regel för att skapa målet ”%s”%s"
 
-#: remake.c:361
+#: remake.c:379
 #, 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"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sIngen regel för att skapa målet ”%s”, som behövs av ”%s”%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Överväger målfilen \"%s\".\n"
+msgid "Considering target file '%s'.\n"
+msgstr "Överväger målfilen ”%s”.\n"
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "Misslyckades nyligen med att uppdatera filen \"%s\".\n"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Misslyckades nyligen med att uppdatera filen ”%s”.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Filen \"%s\" har redan övervägts.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Filen ”%s” har redan övervägts.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "Uppdaterar fortfarande filen \"%s\".\n"
+msgid "Still updating file '%s'.\n"
+msgstr "Uppdaterar fortfarande filen ”%s”.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Slutförde uppdaterandet av filen \"%s\".\n"
+msgid "Finished updating file '%s'.\n"
+msgstr "Slutförde uppdaterandet av filen ”%s”.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Filen \"%s\" finns inte.\n"
+msgid "File '%s' does not exist.\n"
+msgstr "Filen ”%s” finns inte.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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"
+"*** Varning: .LOW_RESOLUTION_TIME-filen ”%s” har en högupplöst tidsstämpel"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
-msgstr "Hittade en implicit regel för \"%s\".\n"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Hittade en implicit regel för ”%s”.\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
-msgstr "Hittade ingen implicit regel för \"%s\".\n"
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Hittade ingen implicit regel för ”%s”.\n"
 
 #: remake.c:502
-#, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "Använder standardkommandon för \"%s\".\n"
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Använder standardrecept för ”%s”.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Det cirkulära beroendet %s <- %s släpptes."
+msgstr "Det cirkulära beroendet %s <- %s släpptes."
 
-#: remake.c:651
+#: remake.c:655
 #, 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"
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Avslutade förutsättningarna för målfilen ”%s”.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, 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"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Förutsättningarna för ”%s” skapas.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Ger upp med målfilen \"%s\".\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Ger upp med målfilen ”%s”.\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "Målet \"%s\" återskapades inte på grund av fel."
+msgid "Target '%s' not remade because of errors."
+msgstr "Målet ”%s” återskapades inte på grund av fel."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr ""
-"Den nödvändiga förutsättningen \"%s\" för målet \"%s\" är endast-ordning.\n"
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Förutsättningen ”%s” för målet ”%s” är endast ordning.\n"
 
-#: remake.c:732
+#: remake.c:736
 #, 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"
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Förutsättningen ”%s” för målet ”%s” finns inte.\n"
 
-#: remake.c:737
+#: remake.c:741
 #, 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"
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Förutsättningen ”%s” är nyare än målet ”%s”.\n"
 
-#: remake.c:740
+#: remake.c:744
 #, 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"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Förutsättningen ”%s” är äldre än målet ”%s”.\n"
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "Målet \"%s\" är dubbelkolon och har inga beroenden.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Målet ”%s” är dubbelkolon och har inga förutsättningar.\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:769
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Inget recept för ”%s” och inga förutsättningar har förändrats.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr "Skapar \"%s\" på grund av flaggan always-make.\n"
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Skapar ”%s” på grund av flaggan always-make.\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
-msgstr "Målet \"%s\" behöver inte återskapas"
+msgid "No need to remake target '%s'"
+msgstr "Inget behov att återskapa målet ”%s”"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; använder VPATH-namnet \"%s\""
+msgid "; using VPATH name '%s'"
+msgstr "; använder VPATH-namnet ”%s”"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Måste återskapa målet \"%s\".\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Måste återskapa målet ”%s”.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Bortser från VPATH-namnet \"%s\".\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Bortser från VPATH-namnet ”%s”.\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:819
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Receptet för ”%s” körs.\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "Misslyckades med att återskapa målfilen \"%s\".\n"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Misslyckades med att återskapa målfilen ”%s”.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Målfilen \"%s\" återskapades.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Återskapade målfilen ”%s”.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "Målfilen \"%s\" behöver återskapas med -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Målfilen ”%s” behöver återskapas med -q.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Använder standardkommandon för \"%s\".\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Använder standardkommandon för ”%s”.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
-msgstr "Varning: Filen \"%s\" har ett ändringsdatum i framtiden."
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Varning: Filen ”%s” har ett ändringstid i framtiden"
 
-#: remake.c:1370
-#, fuzzy, c-format
-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:1385
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Varning: Filen ”%s” har en ändringstid %s s i framtiden"
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr ".LIBPATTERNS-elementet \"%s\" är inte något mönster"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr ".LIBPATTERNS-elementet ”%s” är inte ett mönster"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Customs kommer inte att exportera %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1623,7 +1806,7 @@ msgstr ""
 "\n"
 "# Implicita regler"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1631,7 +1814,7 @@ msgstr ""
 "\n"
 "# Inga implicita regler."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1640,244 +1823,266 @@ msgstr ""
 "\n"
 "# %u implicita regler, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " slutregler."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "FEL: num_pattern_rules felaktigt!  %u != %u"
+msgstr "FEL: num_pattern_rules är felaktigt!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
-msgstr "okänd signal"
+msgstr "okänd signal"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Avringd"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Avbrott"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Avslutad"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Otillåten instruktion"
+msgstr "Otillåten instruktion"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "Spårningsfälla"
+msgstr "Spårningsfälla"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Avbruten"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
-msgstr "IO-fälla"
+msgstr "IO-fälla"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "Emulatorfälla"
+msgstr "Emulatorfälla"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Flyttalsundantag"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
-msgstr "Dödad"
+msgstr "Dödad"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Bussfel"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Segmenteringsfel"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Felaktigt systemanrop"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Ledningsbrott"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarmklocka"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Avslutad"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
-msgstr "Användarsignal 1"
+msgstr "Användarsignal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
-msgstr "Användarsignal 2"
+msgstr "Användarsignal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Barn avslutades"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Strömavbrott"
+msgstr "Strömavbrott"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Stoppades"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Stoppades (tty-läsning)"
+msgstr "Stoppades (tty-läsning)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Stoppades (tty-utskrift)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Stoppades (signal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "CPU-tidsgräns överskreds"
+msgstr "CPU-tidsgräns överskreds"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Filstorleksgräns överskreds"
+msgstr "Filstorleksgräns överskreds"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Virtuellt tidur löpte ut"
+msgstr "Virtuellt tidur löpte ut"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "Profileringstidur löpte ut"
+msgstr "Profileringstidur löpte ut"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "Fönster ändrat"
+msgstr "Fönster ändrat"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Fortsatte"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Brådskande I/O-läge"
+msgstr "Brådskande I/O-läge"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "I/O-tillfälle"
+msgstr "I/O-tillfälle"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Miste resurs"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Farosignal"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
-msgstr "Informationsbegäran"
+msgstr "Informationsbegäran"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Flyttalsprocessor inte tillgänglig"
+msgstr "Flyttalsprocessor inte tillgänglig"
 
-#: strcache.c:235
-#, fuzzy, c-format
+#: strcache.c:236
+#, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 "\n"
-"%s antal strängar i strcache: %d\n"
+"%s Inga strcache-buffertar\n"
 
-#: 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:266
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s strcache-buffertar: totalt = %lu (%lu) / strängar = %lu / lagring = %lu "
+"B / snitt = %lu B\n"
 
-#: 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:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
+"%s aktuell buf: storlek = %hu B / använt = %hu B / antal = %hu / snitt = %hu "
+"B\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:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s annat använt: totalt = %lu B / antal = %lu / snitt = %lu B\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s annat ledigt: totalt = %lu B / max = %lu B / min = %lu B / snitt = %hu B\n"
+
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# statistik för filhashtabell:\n"
+"%s strcache-prestanda: uppslagningar = %lu / träffsäkerhet = %lu %%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
+msgstr ""
+"# statistik för hashtabell:\n"
+"# "
+
+#: variable.c:1607
+msgid "automatic"
+msgstr "automatisk"
 
-#: variable.c:1541
+#: variable.c:1610
 msgid "default"
 msgstr "normal"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
-msgstr "miljö"
+msgstr "miljö"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefil"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "miljö enligt -e"
+msgstr "miljö enligt -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "kommandorad"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "\"override\"-direktiv"
-
-#: variable.c:1559
-msgid "automatic"
-msgstr "automatisk"
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "”override”-direktiv"
 
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (från \"%s\", rad %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (från ”%s”, rad %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# statistik för variabelmängd-hashtabell:\n"
+msgstr "# statistik för variabelmängd-hashtabell:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1885,272 +2090,151 @@ msgstr ""
 "\n"
 "# Variabler\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Mönsterspecifika variabelvärden"
+"# Mönsterspecifika variabelvärden"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Inga mönsterspecifika variabelvärden."
+"# Inga mönsterspecifika variabelvärden."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u mönsterspecifika variabelvärden"
+"# %u mönsterspecifika variabelvärden"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "varning: odefinierad variabel \"%.*s\""
+msgid "warning: undefined variable '%.*s'"
+msgstr "varning: odefinierad variabel ”%.*s”"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, c-format
 msgid "sys$search() failed with %d\n"
-msgstr "sys$search misslyckades och gav %d\n"
+msgstr "sys$search() misslyckades med %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Varning: Tom omdirigering\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
-msgstr "internt fel: \"%s\" command_state"
+msgid "internal error: '%s' command_state"
+msgstr "internt fel: ”%s” command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+msgstr "-varning, CTRL-Y-hantering kanske behöver återställas från DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "INBYGGT [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "INBYGGT CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "INBYGGT RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Okänt inbyggt kommando \"%s\"\n"
+msgstr "Okänt inbyggt kommando \"%s\"\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Fel, tomt kommando\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Inkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Felkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Utkanal omdirigerad till %s\n"
+msgstr "Lägg till utdata till %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Utkanal omdirigerad till %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Lägg till %.*s och rensa upp\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "Utför %s i stället\n"
+msgstr "Utför %s i stället\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Fel vid avknoppning, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# VPATH-sökvägar\n"
+"# VPATH-sökvägar\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Inga \"vpath\"-sökvägar."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Inga ”vpath”-sökvägar."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u \"vpath\"-sökvägar.\n"
+"# %u ”vpath”-sökvägar.\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Ingen allmän sökväg (enligt \"VPATH\"-variabeln)."
+"# Ingen allmän sökväg (enligt ”VPATH”-variabeln)."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Allmän sökväg (enligt \"VPATH\"-variabeln):\n"
+"# 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."
-#~ msgstr ""
-#~ "\n"
-#~ "# Inga filer."
-
-#~ msgid ""
-#~ "\n"
-#~ "# %u files in %u hash buckets.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "# %u filer i %u hashbehållare.\n"
-
-#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr ""
-#~ "# i genomsnitt %.3f filer per behållare, högst %u filer i samma "
-#~ "behållare.\n"
-
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Syntaxfel, är fortfarande innanför '\"'\n"
-
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ msgstr "Erhöll SIGCHLD; %u kvarvarande barnprocesser.\n"
-
-#~ msgid "DIRECTORY"
-#~ msgstr "KATALOG"
-
-#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "Byt till KATALOG först"
-
-#~ msgid "FLAGS"
-#~ msgstr "FLAGGOR"
-
-#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Suspendera processen för att möjliggöra anslutning av felsökare"
-
-#~ msgid "Environment variables override makefiles"
-#~ msgstr "Miljövariabler åsidosätter makefiler"
-
-#~ msgid "FILE"
-#~ msgstr "FIL"
-
-#~ msgid "Read FILE as a makefile"
-#~ msgstr "Använd FIL som makefil"
-
-#~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "Genomsök KATALOG efter inkluderade makefiler"
-
-#~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "Påbörja flera jobb endast om lasten understiger N"
-
-#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "Kör inte kommandona, skriv bara ut dem"
-
-#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "Betrakta FIL som mycket gammal och återskapa den inte"
-
-#~ msgid "Don't echo commands"
-#~ msgstr "Återge inte kommandon"
-
-#~ msgid "Turns off -k"
-#~ msgstr "Stänger av -k"
-
-#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Betrakta FIL som hur ny som helst"
-
-#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Ange inte -j eller --jobs om sh.exe inte finns tillgänglig."
-
-#~ msgid "Resetting make for single job mode."
-#~ msgstr "Återställer make för enkeljobbsläge."
-
-#~ msgid "Entering"
-#~ msgstr "Går till"
-
-#~ msgid "Leaving"
-#~ msgstr "Lämnar"
-
-#~ msgid "no file name for `%sinclude'"
-#~ msgstr "inget filnamn till \"%sinclude\""
-
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "målet \"%s\" har ett tomt beroendemönster"
-
-#~ msgid "# No variables."
-#~ msgstr "# Inga variabler."
-
-#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr ""
-#~ "# i genomsnitt %1.f variabler per behållare, högst %u i samma behållare.\n"
-
-#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr ""
-#~ "# i genomsnitt %d.%d variabler per behållare, högst %u i samma "
-#~ "behållare.\n"
index 002a950..1646492 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index 441e10c..6f7f32a 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,118 +6,124 @@ 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"
+"POT-Creation-Date: 2013-10-09 02:12-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"
+"Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.9.1\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ar.c:48
-#, c-format
-msgid "attempt to use unsupported feature: `%s'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "desteklenmeyen özelliği kullanmaya çalışıyor: `%s'"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "VMS'de işe yaramayan arşiv üyesine dokunup geçiyor"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "Dokunulup geçildi: Arşiv `%s' yok"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "Dokunulup geçildi: `%s' geçerli bir arşiv değil"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "Dokunulup geçildi: Üye `%s', `%s' içinde yok"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, 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
+#: arscan.c:67
 #, 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:175
+#: arscan.c:173
 #, 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:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, 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:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Üye `%s'%s: %ld bayt  %ld 'de (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr "(isim kırpılmış olmalı)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Tarih %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  Kull-kim = %d, Grup-kim = %d, kip = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** Bırakıldı.\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] Arşiv üyesi `%s' sahte olabilir; silinmedi"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** Arşiv üyesi `%s' sahte olabilir; silinmedi"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] `%s' dosyası siliniyor"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** `%s' dosyası siliniyor"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  çalıştırma komutları"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (paket içinde):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (`%s'den, satır %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,224 +131,228 @@ msgstr ""
 "\n"
 "# Dizin\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: durumlanamadı.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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:1016
+#: dir.c:1009
 #, 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:1021
+#: dir.c:1014
 #, 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:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d):"
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):"
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (aygıt %ld, i-düğüm %ld):"
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Hayır"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " dosyaları,"
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "hayır"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr "olanaksızlıklar"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " çok uzak."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " %lu dizinde olanaksızlıklar.\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "Çevrimsel değişken `%s' tekrar kendine bağıntılı (sonuçta)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "sonlandırılmamış değişken bağıntısı"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+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:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, 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:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+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:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, 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:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, 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:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** Aracı dosya `%s' siliniyor"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "Aracı dosyalar siliniyor...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "Şu an"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# Bir hedef değil:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Kıymetli dosya (.PRECIOUS  önceden gerekliliği)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Sahte hedef (.PHONY önceden gerekliliği)."
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  Komut-satırı hedefi."
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  Bir öntanımlı,MAKEFILES veya -include/sinclude makefile."
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# Örtük kural yok."
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  Örtük kural araştırması yapılmıştı."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Örtük kural araştırması yapılmamıştı."
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  Örtük/değişmeyen kalıp kökü: `%s'\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr ""
 "#  Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara "
 "aracılık eden dosya)"
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  Oluştursa da:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  Değişiklik zamanı hiç kontrol edilmedi."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  Dosya yok."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  Dosya çok eski."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Son değişiklik tarihi %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  Dosya güncelleştirilmişti."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  Dosya güncelleştirilmemişti."
 
-#: file.c:968
+#: file.c:995
 #, 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:971
+#: file.c:998
 #, 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:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#   Tamamen güncellendi."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#   Güncellenmiş olması gerekir (-q verildi)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  Güncellenmiş olamadı."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  `update_status' üyesinde geçersiz değer!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  `command_state' üyesinde geçersiz değer!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -350,7 +360,7 @@ msgstr ""
 "\n"
 "# Dosyalar"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -360,117 +370,175 @@ msgstr ""
 "# dosyaların hash tablosu durumları:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "`word' işlevinde sayısal olmayan ilk argüman"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+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:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "`wordlist' işlevinde sayısal olmayan ilk argüman"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\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
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "create_child_process: DuplicateHandle(Err) başarısız (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() başarısız (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe (): process_init_fd() başarısız\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "yazma hatası: %s"
+
+#: function.c:2164
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
 
-#: function.c:2162
-#, c-format
-msgid "unimplemented on this platform: function `%s'"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
 msgstr "bu platformda gerçekleştirilmemiş: işlev `%s'"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "`%s' işlemine çağrı sonlandırılmamış: `%c' kayıp"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: `%s' seçeneği belirsiz\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: `%s' seçeneği belirsiz\n"
+
+#: getopt.c:683
+#, fuzzy, 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:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, 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:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, 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:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s: `--%s' seçeneği bilinmiyor\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: kuraldışı seçenek -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: geçersiz seçenek -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s: `-W %s' seçeneği belirsiz\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, 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"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, fuzzy, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -491,131 +559,156 @@ msgstr "Rehash=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "Çakışmalar=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "`%s' için bir örtük kural arıyor.\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, 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:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Örtük kural çevrimi görmezden geliniyor.\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "Kural önceden gerekliliği `%s' deneniyor.\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, 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"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "Aracı dosya `%s' ile bir kural arıyor.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "Bir geçici dosya oluşturulamıyor\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Hata 0x%x (yoksayıldı)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Hata 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (bellek kopyası - core dosyası - diske yazıldı)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] Hata %d (yoksayıldı)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (paket içinde):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] Hata 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] Hata %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (bellek kopyası - core dosyası - diske yazıldı)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** Bitmemiş işler için bekliyor...."
 
-#: job.c:579
+#: job.c:639
 #, 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:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (karşıdan)"
 
-#: job.c:758
+#: job.c:829
 #, 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:759
+#: job.c:830
 #, 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:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "Geçici komut-listesi dosyası %s temizleniyor\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Geçici komut-listesi dosyası %s temizleniyor\n"
+
+#: job.c:949
 #, 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:920
-msgid "write jobserver"
-msgstr "iş-sunucusu yazıyor"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, 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:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "iş-sunucusu yazıyor"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "Süreci başlatacak process_easy() başarısız oldu (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -624,137 +717,194 @@ msgstr ""
 "\n"
 "Sayılan %d argüman ile başarısız oldu\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, 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:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "görev listesi okunuyor"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "Dokunulup geçildi: Arşiv `%s' yok"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok"
+msgid "%s: update target '%s' due to: %s"
+msgstr ""
+"%sHedef `%s' i derlemek için  hiçbir kural yok, `%s' tarafından gereksinim "
+"duyuluyor%s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "işletim sisteminde yük sınırlarına ulaşılamadı "
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "ulaşılamayan yük sınırı: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "başka dosya tutucu yok: standart çıktı kopyalanamadı\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "Standart girdi eski haline getirilemedi\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "Standart çıktı eski haline getirilemedi\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "Standart girdi eski haline getirilemedi\n"
+
+#: job.c:2365
 #, fuzzy, c-format
 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:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Komut bulunamadı"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Kabuk uygulaması bulunamadı"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: ortam alanı tükenmiş olabilir"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL değişti (`%s' idi, şimdi `%s')\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "%s geçici komut-liste dosyasını oluşturuyor\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Bu platformda paralel işler (-j) desteklenmiyor."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Seçenekler:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      Uyumluluk için yoksayıldı.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr ""
 "  -B, --always-make           Tüm hedefler koşulsuz olarak oluşturulur.\n"
 
-#: main.c:308
+#: main.c:317
 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:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -b, -m                      Bir sürü hata ayıklama bilgisi basar.\n"
 
-#: main.c:313
+#: main.c:322
 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:315
+#: main.c:324
 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:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -762,16 +912,16 @@ msgstr ""
 "  -f DOSYA, --file=DOSYA, --makefile=DOSYA\n"
 "                              DOSYAyı bir makefile olarak okur.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  Bu iletiyi basar ve çıkar.\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         Komutların ürettiği hataları yoksayar.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -779,7 +929,7 @@ msgstr ""
 "  -I DİZİN, --include-dir=DİZİN\n"
 "                              Eklenecek makefile'ları DİZİNde arar.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
@@ -787,13 +937,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:332
+#: main.c:341
 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:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -803,7 +953,7 @@ msgstr ""
 "                              Yük N'den az olmadıkça çoklu işler "
 "başlatılmaz.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
@@ -811,7 +961,7 @@ msgstr ""
 "  -L, --check-symlink-times   sembolik bağlarla hedef arasında en son mtime\n"
 "                              kullanılır\n"
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -821,7 +971,7 @@ msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              Gerçekte komutlar çalıştırılmaz, gösterilir.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -831,11 +981,17 @@ msgstr ""
 "                              DOSYAnın çok eski olduğu varsayılır ve\n"
 "                              yeniden işlem yapılmaz.\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 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:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -843,44 +999,49 @@ msgid ""
 msgstr ""
 "  -q, --question              Komut çalıştırmaz; güncelse çıkışta belirtir\n"
 
-#: main.c:349
+#: main.c:361
 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:351
+#: main.c:363
 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:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet     Komutlar işlenirken gösterilmez.\n"
 
-#: main.c:355
+#: main.c:367
 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:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
 "  -t, --touch                 Yeniden derlemek yerine hedeflere bakıp "
 "geçer.\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  -b, -m                      Bir sürü hata ayıklama bilgisi basar.\n"
+
+#: main.c:374
 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:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       Kullanılan dizini basar.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
@@ -888,7 +1049,7 @@ msgstr ""
 "  --no-print-directory        Dolaylı olarak açılmış olsa bile -w 'yi "
 "kapatır\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -896,7 +1057,7 @@ msgstr ""
 "  -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n"
 "                              DOSYA sonsuz yeni varsayılır.\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
@@ -904,21 +1065,31 @@ msgstr ""
 "  --warn-undefined-variables  Atanmamış bir değişkene bağıntı yapıldığında\n"
 "                              uyarır.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "dosyaismi olarak boş dizge geçersiz"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "Hata ayıklama düzeyi özelliği `%s' bilinmiyor"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "içsel hata: çok sayıda --jobserver-fds seçeneği"
+
+#: main.c:848
 #, fuzzy, c-format
 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:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -933,161 +1104,183 @@ msgstr ""
 "OlağandışılıkBayrakları = %lx\n"
 "OlağandışılıkAdresi = %lx\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "Erişim uyumsuzluğu: %lx adresinde yazma işlemi\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "Erişim uyumsuzluğu: %lx adresinde okuma işlemi\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, 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:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s 30 saniyeliğine askıya alınıyor..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "sleep(30) bitti. Devam ediliyor.\n"
 
-#: main.c:1501
-msgid "Makefile from standard input specified twice."
-msgstr "Makefile standart girdiden iki kez belirtildi."
-
-#: main.c:1539 vmsjobs.c:500
-msgid "fopen (temporary file)"
-msgstr "fopen (geçici dosya)"
-
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (geçici dosya)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Bu platformda paralel işler (-j) desteklenmiyor."
-
-#: 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:1719
+#: main.c:1534
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "içsel hata: çok sayıda --jobserver-fds seçeneği"
 
-#: main.c:1727
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
 msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
 msgstr ""
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
 msgstr "çift iş sunucusu"
 
-#: main.c:1753
+#: main.c:1586
+#, fuzzy
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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:1777
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile standart girdiden iki kez belirtildi."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (geçici dosya)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (geçici dosya)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Bu platformda paralel işler (-j) desteklenmiyor."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Tek iş kipi (-j1) için make'i başlatma konumuna alıyor"
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr ""
+
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "işleri yaratıyor"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "işleri hazırlıyor"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "Sembolik bağlar desteklenmiyor: -L iptal ediliyor"
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "makefile'ları güncelliyor...\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "`%s' make dosyası yeniden derlenemiyor."
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "İçerilen make dosyası `%s' bulunamadı."
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "`%s' make dosyası bulunamadı"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "Geriye, özgün dizine geçilemiyor."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "Yeniden çalıştırılıyor[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "unlink (geçici dosya): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "Hedefler belirtilmediğinden make dosyası yok"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Hedef yok"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "Amaçlanan hedefler güncelleniyor...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "uyarı:  Clock skew saptandı. Derleme tamamlanamayabilir."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Kullanım: %s [seçenekler] [hedef] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1096,7 +1289,7 @@ msgstr ""
 "\n"
 "Bu program %s için kurgulanmış\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1105,38 +1298,38 @@ msgstr ""
 "\n"
 "Bu program %s için kurgulanmış (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, 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@belgeler.org> adresine bildiriniz.\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+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:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%sBu program %s için derlenmiş\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%sBu program %s için derlenmiş (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1145,7 +1338,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1154,7 +1347,7 @@ msgstr ""
 "\n"
 "# Make veri tabanı, %s üzerine basıldı"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1163,106 +1356,106 @@ msgstr ""
 "\n"
 "# %s üzerindeki Make veri tabanı tamamlandı\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Bilinmeyen hata %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "sanal bellek tükendi"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "İlklendirilmiş erişim"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Kullanıcı erişimi"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make erişimi"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Asta erişim"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: bilinmeyen bir dizine giriliyor\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: bilinmeyen dizinden çıkılıyor\n"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: `%s' dizine giriliyor\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: `%s' dizininden çıkılıyor\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]:`%s' dizinine giriliyor\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: `%s' dizininden çıkılıyor\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "yazma hatası: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "yazma hatası"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ". Durdu.\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "Bilinmeyen hata %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "sanal bellek tükendi"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "İlklendirilmiş erişim"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Kullanıcı erişimi"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Make erişimi"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Asta erişim"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "yazma hatası: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "yazma hatası"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "Makefile'lar okunuyor...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "`%s' make dosyası okunuyor"
 
 #: read.c:335
@@ -1285,330 +1478,348 @@ msgstr " (umurunda değil)"
 msgid " (no ~ expansion)"
 msgstr "( ~ uzantısı yok)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "şartlı ifade de yazılış hatası"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "komutlar ilk hedeften önce başlıyor"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "komutlardan önceki kural kayıp"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "kayıp ayraç%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr "(8 boşluğu TAB'mı zannettiniz?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "hedef kalıp kayıp"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "çok sayıda hedef kalıp"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "hedef kalıp `%%' içermiyor"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "`endif' kayıp"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "boş değişken ismi"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "`endef' yönergesinden sonraki metin yersiz"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "`endef' kayıp, `define' sonlandırılmamış"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "`endef' yönergesinden sonraki metin yersiz"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "`%s' yönergesinden sonraki metin yersiz"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "`%s' yersiz"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "her şartlı ifade de sadece bir `else'"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "Hedefe özgü değişken tanımı bozuk"
 
-#: read.c:1855
+#: read.c:1951
 #, fuzzy
 msgid "prerequisites cannot be defined in recipes"
 msgstr "öngereksinimler komut betiklerinde tanımlanamaz"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "örtük ve durağan kalıp kuralları karışmış"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "örtük ve normal kurallar karışmış"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "hedef `%s' hedef kalıpla eşleşmiyor"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "hedef dosya `%s'hem : hem de :: girdilerine sahip"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "hedef `%s' aynı kuralda birden fazla belirtilmiş."
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "uyarı: hedef `%s' için eski komutlar yoksayılıyor"
 
-#: read.c:2392
+#: read.c:2530
 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:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "`%s' için hiçbir şey yapılmadı."
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "`%s' güncel"
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "Budanmış dosya `%s'.\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%sHedef `%s' i derlemek için  hiçbir kural yok%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, 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:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "hedef dosya `%s' hesaba katılıyor.\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, 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:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "`%s' dosyası zaten hesaba katıldı.\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "`%s' dosyası hala güncelleniyor.\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "`%s' dosyasının güncellenmesi tamamlandı.\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "`%s' dosyası yok.\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
 "*** Uyarı: .LOW_RESOLUTION_TIME dosyası `%s' yüksek çözünürlüklü bir zaman "
 "damgası içeriyor"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "`%s' için bir örtük kural bulundu.\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "`%s' için bir örtük kural yok.\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi."
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "`%s' için önceden gereklilikler derlenmeye devam ediyor.\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "`%s' hedef dosyasında umut kesiliyor.\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "Hedef `%s' hatalardan dolayı yeniden derlenemez."
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' için şart.\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, 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:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' den daha yeni.\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "Önceden gerekli `%s' hedef `%s' den daha eski.\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, 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:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+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:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "Daima derle seçeneğinden dolayı `%s' derleniyor.\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr "; VPATH ismi `%s' kullanılıyor"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "Hedef `%s' yeniden derlenmeli.\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr " VPATH ismi `%s' yoksayılıyor.\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "`%s' nin komutları çalışmaya devam ediyor.\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "Hedef dosya `%s' yeniden derlenirken hata oluştu.\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "Hedef dosya `%s' yeniden derlenmesi başarıyla tamamlandı.\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "`%s' hedef dosyasının -q ile yeniden derlenmesi gerekir.\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, 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:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+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:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS elemanı `%s' bir kalıp değil"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "Özelleştirilmiş olanlar dışarı aktarılmayacak: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1616,7 +1827,7 @@ msgstr ""
 "\n"
 "# Örtük Kurallar"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1624,7 +1835,7 @@ msgstr ""
 "\n"
 "# Örtük kural yok."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1633,244 +1844,259 @@ msgstr ""
 "\n"
 "# %u örtük kural, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " terminal."
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "YAZILIM HATASI: num_pattern_rules yanlış!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "bilinmeyen sinyal"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "Tıkanma"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Kesme"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Çık"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "Yönergeler uygun değil"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "İzleme/kesmenoktası yakalayıcı"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "İptal edildi"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT tuzağı"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT tuzağı"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "Gerçek sayı olağandışı durumu"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Süreç durduruldu"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "Veri yolu hatası"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Parçalama arızası"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "Sistem çağrısı hatalı"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "Veri alınamıyor"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Alarm saati"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "Sonlandırıldı"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Kullanıcı tanımlı sinyal 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Kullanıcı tanımlı sinyal 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Ast bıraktı"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "Güç kesilmesi"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Durduruldu"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "Durduruldu (konsol girdisi)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "Durduruldu (konsol çıktısı)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Durduruldu (sinyal)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU zaman sınırı aşıldı"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "Dosya uzunluğu sınırı aşıldı"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "Sanal süreölçer kullanım süresi doldu"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "Tanıtım süreölçer kullanım süresi doldu"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "Pencere boyutları değiştirildi"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Devam ediliyor"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "Acil G/Ç koşulu"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "G/Ç mümkün"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Kaynak kaybı"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Tehlike sinyali"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Bilgi isteği"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "Aritmetik işlemci kullanılabilir değil"
 
-#: strcache.c:235
+#: strcache.c:236
 #, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
-msgstr ""
-"\n"
-"%s dizge belleğindeki dizgelerin sayısı: %d\n"
+"%s No strcache buffers\n"
+msgstr "%s dizge belleği tamponlarının sayısı: %d\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, 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"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr "%s dizge belleği boş: toplam = %d / max = %d / min = %d / ort = %d\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr "%s dizge belleği boyu: toplam = %d / max = %d / min = %d / ort = %d\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr "%s dizge belleği boş: toplam = %d / max = %d / min = %d / ort = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# dosyaların hash tablosu durumları:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "otomatik"
+
+#: variable.c:1610
 msgid "default"
 msgstr "öntanımlı"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "çevre"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "derleme dosyası"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "çevre -e altında"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "komut satırı"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "`override' yönergesi"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "otomatik"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (`%s'den, satır %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# değişken kümesi hash tablosunun durumu:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1878,7 +2104,7 @@ msgstr ""
 "\n"
 "# Değişkenler\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1886,7 +2112,7 @@ msgstr ""
 "\n"
 "# Kalıba özgü Değişken Değerleri"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1894,7 +2120,7 @@ msgstr ""
 "\n"
 "# Örneğe duyarlı değişken değeri yok."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1903,94 +2129,94 @@ msgstr ""
 "\n"
 "# %u örneğe duyarlı değişken değeri"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "uyarı: `%.*s' değişkeni atanmamış"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search %d ile başarısız\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "Uyarı: Boş yönlendirme\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "içsel hata: `%s' command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "OLUŞUMİÇİ [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "OLUŞUMİÇİ CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "OLUŞUMİÇİ RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Oluşumiçi komut '%s' bilinmiyor\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "Hata, boş komut\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "%s den yönlendirilmiş girdi\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "%s e yönlendirilmiş hata\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "%s e yönlendirilmiş çıktı\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "%s e yönlendirilmiş çıktı\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "%s yerine çalıştırılıyor\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "doğum hatası, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1998,37 +2224,46 @@ msgstr ""
 "\n"
 "# VPATH Arama yolu\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# `vpath' arama yolları yok"
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u `vpath' arama yolu.\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# Genel arama yolu (`VPATH' çevre değişkeni) yok."
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# Genel (`VPATH' çevre değişkeni) arama yolu:\n"
 "# "
 
+#~ msgid "#  Invalid value in `update_status' member!"
+#~ msgstr "#  `update_status' üyesinde geçersiz değer!"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Hata 0x%x (yoksayıldı)"
+
 #~ 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"
 
@@ -2052,6 +2287,13 @@ msgstr ""
 #~ msgid "invalid `override' directive"
 #~ msgstr "`override' yönergesi geçersiz"
 
+#~ msgid ""
+#~ "\n"
+#~ "%s # of strings in strcache: %d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s dizge belleğindeki dizgelerin sayısı: %d\n"
+
 #~ 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"
 
index e24a088..212214b 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index ebf1fd6..7bb31f0 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
-# ðÅÒÅËÌÁÄ make ÎÁ ÕËÒÁ§ÎÓØËÕ.
+# Переклад make українською.
 # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2001-2002.
+# This file is distributed under the same license as the make package.
 #
+# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2001-2012.
+# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.80\n"
+"Project-Id-Version: make 3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2002-12-05 20:07+0200\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 07:20+0300\n"
 "Last-Translator: Volodymyr M. Lisivka <lvm@mystery.lviv.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=koi8-u\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.5\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "ÓÐÒÏÂÁ ×ÖÉÔÉ ÍÏÖÌÉצÓÔØ, ÑËÁ ÎŠЦÄÔÒÉÍÕ¤ÔØÓÑ: \"%s\""
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "спроба вжити можливість, яка не підтримується: \"%s\""
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ ÞÌÅÎÁ ÁÒȦ×Õ ÎÅÍÏÖÌÉ×Ï Õ ÓÉÓÔÅͦ VMS"
+msgstr "оновлення часу зміни члена архіву неможливо у системі VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: áÒȦנ\"%s\" ÎÅ ¦ÓÎÕ¤"
+msgid "touch: Archive '%s' does not exist"
+msgstr "оновлення часу зміни: Архів \"%s\" не існує"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: îÅצÒÎÉÊ ÁÒȦ×: \"%s\""
+msgid "touch: '%s' is not a valid archive"
+msgstr "оновлення часу зміни: Невірний архів: \"%s\""
 
-#: ar.c:159
+#: ar.c:157
 #, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: þÌÅΠ\"%s\" ÎŠͦÓÔÉÔØÓÑ Õ \"%s\""
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "оновлення часу зміни: Член \"%s\" не міститься у \"%s\""
 
-#: ar.c:166
+#: ar.c:164
 #, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr ""
-"ÏÎÏ×ÌÅÎÎÑ ÞÁÓÕ ÚͦÎÉ: æÕÎËæѠar_member_touch ÐÏ×ÅÒÎÕÌÁ\n"
-"ÐÏÇÁÎÉÊ ËÏĠצÄÐÏצĦ ÄÌÑ \"%s\""
+"оновлення часу зміни: Функція ar_member_touch повернула\n"
+"поганий ÐºÐ¾Ð´ Ð²Ñ\96дповÑ\96дÑ\96 Ð´Ð»Ñ\8f \"%s\""
 
-#: arscan.c:69
+#: arscan.c:67
 #, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
-msgstr ""
+msgstr "lbr$set_module() не вдалося видобути дані модуля, стан = %d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr ""
+msgstr "Помилка lbr$ini_control() з повідомленням стану = %d"
 
-#: arscan.c:187
-#, fuzzy, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
-msgstr "ðÏÍÉÌËÁ ×¦ÄËÒÉ×ÁÎÎѠ¦Â̦ÏÔÅËÉ %s ÄÌÑ ÐÏÛÕËÕ ÞÌÅÎÁ %s; %d\n"
+#: arscan.c:185
+#, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "не вдалося відкрити бібліотеку «%s» для пошуку елемента «%s»"
 
-#: arscan.c:850
+#: arscan.c:847
 #, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr ""
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Елемент «%s»%s: %ld байтів з %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
-msgstr " (¦Í'Ñ ÍÏÖÅ ÂÕÔÉ ÕÓ¦ÞÅÎÅ)"
+msgstr " (ім'я може бути обрізано)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
-msgstr "  äÁÔÁ %s"
+msgstr "  Дата %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
-msgstr ""
+msgstr "  uid = %d, gid = %d, режим = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "У рецепті забагато рядків (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
-msgstr ""
+msgstr "*** Зупинка.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
-msgstr ""
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Елемент архіву, «%s», можливо є фіктивним; не вилучено"
 
-#: commands.c:625
+#: commands.c:633
 #, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
-msgstr ""
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Елемент архіву, «%s», можливо є фіктивним; не вилучено"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] ÷ÉÄÁÌÅÎÎÑ ÆÁÊÌÕ \"%s\""
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Вилучаємо файл \"%s\""
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** ÷ÉÄÁÌÅÎÎÑ ÆÁÊÌÕ \"%s\""
+msgid "*** Deleting file '%s'"
+msgstr "*** Вилучаємо файл \"%s\""
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "#  ËÏÍÁÎÄÉ ÄÏ ×ÉËÏÎÁÎÎÑ"
+msgstr "#  спосіб, який слід застосувати"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
-msgstr " (×ÂÕÄÏ×ÁÎÅ):"
+msgstr " (вбудоване):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (Ú \"%s\", ÒÑÄÏË %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (з \"%s\", рядок %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
 msgstr ""
 "\n"
-"# ëÁÔÁÌÏÇÉ\n"
+"# Каталоги\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: ÎÅÍÏÖÌÉ×Ï ÏÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ (stat).\n"
+msgstr "# %s: неможливо отримати інформацію (stat).\n"
 
-#: dir.c:1012
-#, fuzzy, c-format
+#: dir.c:1005
+#, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
-msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
+msgstr "# %s (клÑ\8eÑ\87 %s, Ñ\87аÑ\81 Ð·Ð¼Ñ\96ни %d): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð²Ñ\96дкÑ\80иÑ\82и.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ [%d,%d,%d]): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
+msgstr "# %s (пÑ\80иÑ\81Ñ\82Ñ\80Ñ\96й %d, Ñ\96вÑ\83зол [%d,%d,%d]): Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ñ\96дкÑ\80иÑ\82и.\n"
 
-#: dir.c:1021
-#, fuzzy, c-format
+#: dir.c:1014
+#, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
+msgstr "# %s (пÑ\80иÑ\81Ñ\82Ñ\80Ñ\96й %ld, Ñ\96вÑ\83зол %ld): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð²Ñ\96дкÑ\80иÑ\82и.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (ËÌÀÞ %s, ÞÁÓ ÍÏÄÉƦËÁ槠%d): "
+msgstr "# %s (ключ %s, час модифікації %d): "
 
-#: dir.c:1052
-#, fuzzy, c-format
+#: dir.c:1045
+#, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ [%d,%d,%d]): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
+msgstr "# %s (пÑ\80иÑ\81Ñ\82Ñ\80Ñ\96й %d, Ñ\96вÑ\83зол [%d,%d,%d]): "
 
-#: dir.c:1057
-#, fuzzy, c-format
+#: dir.c:1050
+#, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (ÐÒÉÓÔҦʠ%d, ¦×ÕÚÏÌ %d): ÎÅÍÏÖÌÉ×ϠצÄËÒÉÔÉ.\n"
+msgstr "# %s (пÑ\80иÑ\81Ñ\82Ñ\80Ñ\96й %ld, Ñ\96вÑ\83зол %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
-msgstr "î¦"
+msgstr "Ні"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
-msgstr " ÆÁÊ̦×, "
+msgstr " файлів, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
-msgstr "Φ"
+msgstr "ні"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " ÎÅÄÏÓÑÖÎÉȠæÌÅÊ"
+msgstr " недосяжних цілей"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
-msgstr " ÎÁ ÐÏÔÏÞÎÉÊ ÍÏÍÅÎÔ."
+msgstr " на поточний момент."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " ÎÅÄÏÓÑÖÎÉȠæÌÅÊ Õ %lu ËÁÔÁÌÏÇÁÈ.\n"
+msgstr " недосяжних цілей у %lu каталогах.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "òÅËÕÒÓÉ×ÎÁ ÚͦÎÎÁ \"%s\" ÐÏÓÉÌÁ¤ÔØÓÑ ÓÁÍÁ ÎÁ ÓÅÂÅ (Õ ÒÅÚÕÌØÔÁÔ¦)"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Рекурсивна змінна \"%s\" посилається сама на себе (у результаті)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÁ ÐÏÓÉÌÁÎÎÑ ÎÁ ÚͦÎÎÕ"
+msgstr "незавершена посилання на змінну"
 
-#: file.c:267
-#, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
-msgstr "ëÏÍÁÎÄÉ ÄÌÑ ÆÁÊÌÕ \"%s\" ÂÕÌÉ ÚÁÄÁΦ %s:%u,"
+#: file.c:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Спосіб для файла «%s» було задано %s:%lu,"
 
-#: file.c:272
-#, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
-msgstr "ëÏÍÁÎÄÉ ÄÌÑ ÆÁÊÌÕ \"%s\" ÂÕÌÉ ÚÎÁÊÄÅΦ Ú ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ,"
+#: file.c:274
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr ""
+"Спосіб для файла «%s» було знайдено за допомогою пошуку неявних правил,"
 
-#: file.c:275
+#: file.c:277
 #, c-format
-msgid "but `%s' is now considered the same file as `%s'."
-msgstr "ÁÌÅ \"%s\" ¦ \"%s\" ÔÅÐÅÒ ××ÁÖÁÀÔØÓÑ ÏÄÎÉÍ ¦ ÔÉÍ ÖÅ Ö ÆÁÊÌÏÍ. "
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "але \"%s\" і \"%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:280
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Спосіб для «%s» буде проігноровано на користь способу для «%s»."
 
-#: file.c:298
+#: file.c:300
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr ""
-"ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÊÍÅÎÕ×ÁÔÉ \"%s\" Ú ÏÄΦ¤À Ä×ÏËÒÁÐËÏÀ Õ \"%s\" Ú Ä×ÏÍÁ "
-"Ä×ÏËÒÁÐËÁÍÉ"
+"неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома "
+"двокрапками"
 
-#: file.c:303
+#: file.c:305
 #, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr ""
-"ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÊÍÅÎÕ×ÁÔÉ \"%s\" Ú Ä×ÏÍÁ Ä×ÏËÒÁÐËÁÍÉ Õ \"%s\" Ú ÏÄΦ¤À "
-"Ä×ÏËÒÁÐËÏÀ"
+"неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією "
+"двокрапкою"
 
-#: file.c:392
+#: file.c:396
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** ÷ÉÄÁÌÅÎÎÑ ÐÒÏͦÖÎÏÇÏ ÆÁÊÌÕ \"%s\""
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Вилучаємо проміжний файл «%s»"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "÷ÉÄÁÌÑÀ ÐÒÏͦÖΦ ÆÁÊÌÉ...\n"
+msgstr "Видаляю проміжні файли...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
-msgstr ""
+msgstr "%s: часова позначка поза допустимим діапазоном; замінюємо на %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
-msgstr ""
+msgstr "Поточний час"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# îÅ ¤ ÍÅÔÏÀ:"
+msgstr "# Не є метою:"
 
-#: file.c:929
-#, fuzzy
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "#  ëÏÛÔÏ×ÎÉÊ ÆÁÊÌ (ÚÁÌÅÖΦÓÔØ .PRECIOUS)."
+msgstr "#  Вартісний файл (залежність .PRECIOUS)."
 
-#: file.c:931
-#, fuzzy
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "#  ðÓÅ×ÄÏæÌØ (ÚÁÌÅÖΦÓÔؠצĠ.PHONY)."
+msgstr "#  Псевдоціль (залежність .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "#  ã¦ÌØ ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÁ."
+msgstr "#  Мета, що викликається з командного рядка."
 
-#: file.c:935
-#, fuzzy
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "#  Makefile ÚÁ ÚÁÍÏ×ÞÕ×ÁÎÎÑÍ ÁÂÏ Ú MAKEFILES."
+msgstr "#  Типово, MAKEFILES, або -include/sinclude makefile."
+
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Вбудоване правило"
 
-#: file.c:937
-#, fuzzy
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "#  ðÏÛÕË ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ%s ÚÁ×ÅÒÛÉ×ÓÑ.\n"
+msgstr "#  Пошук неявних правил виконано."
 
-#: file.c:938
-#, fuzzy
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "#  ðÏÛÕË ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ%s ÚÁ×ÅÒÛÉ×ÓÑ.\n"
+msgstr "#  Пошук неявних правил не було виконано."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "#  ïÓÎÏ×Á ÎÅÑ×ÎÏÇÏ ÁÂÏ ÓÔÁÔÉÞÎÏÇÏ ÛÁÂÌÏÎÕ: \"%s\"\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Основа неявного або статичного шаблону: \"%s\"\n"
 
-#: file.c:942
-#, fuzzy
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "#  æÁÊÌ -- ÐÒÏͦÖÎÁ ÚÁÌÅÖΦÓÔØ."
+msgstr "#  Файл є проміжною залежністю."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "#  úÂÉÒÁ¤ ÔÁËÏÖ:"
+msgstr "#  Збирає також:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "#  þÁÓ ÚͦÎɠΦËÏÌÉ ÎÅ ÐÅÒÅצÒÑ×ÓÑ."
+msgstr "#  Час зміни ніколи не перевірявся."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
-msgstr "#  æÁÊÌ ÎÅ ¦ÓÎÕ¤."
+msgstr "#  Файл не існує."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
-msgstr "#  æÁÊÌ ÄÕÖÅ ÓÔÁÒÉÊ."
+msgstr "#  Файл дуже старий."
 
-#: file.c:961
-#, fuzzy, c-format
+#: file.c:988
+#, c-format
 msgid "#  Last modified %s\n"
-msgstr "#  þÁÓ ÏÓÔÁÎÎØϧ ÚͦÎÉ %.24s (%ld)\n"
+msgstr "#  Востаннє оновлено %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
-msgstr "#  æÁÊÌ ÂÕ× ÏÎÏ×ÌÅÎÉÊ."
+msgstr "#  Файл був оновлений."
 
-#: file.c:964
-#, fuzzy
+#: file.c:991
 msgid "#  File has not been updated."
-msgstr "#  æÁÊÌ%s ÏÎÏ×ÌÅÎÏ.\n"
+msgstr "#  Файл не було оновлено."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "#  úÁÐÕÝÅΦ ÚÁÒÁÚ ËÏÍÁÎÄÉ (ãå ðïíéìëá)."
+msgstr "#  Виконується обробка (ЦЕ ПОМИЛКА)"
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "#  úÁÐÕÝÅΦ ÚÁÒÁÚ ËÏÍÁÎÄÉ ÄÅÑËϧ ÚÁÌÅÖÎÏÓÔ¦ (ãå ðïíéìëá)."
+msgstr "#  Ці залежності вже обробляються (ЦЕ ПОМИЛКА)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "#  õÓЦÛÎÏ ÏÎÏ×ÌÅÎÏ."
+msgstr "#  Успішно оновлено."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  ðÏ×ÉÎÎÏ ÂÕÔÉ ÏÎÏ×ÌÅÎÏ (×ÓÔÁÎÏ×ÌÅÎÉÊ ËÌÀÞ -q)."
+msgstr "#  Повинно бути оновлено (встановлений ключ -q)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
-msgstr "#  óÐÒÏÂÁ ÏÎÏ×ÌÅÎÎÑ ÂÅÚÕÓЦÛÎÁ."
+msgstr "#  Спроба оновлення безуспішна."
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  îÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÞÌÅÎÁ \"update_status\"!"
+#: file.c:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Некоректне значення члена \"command_state\"!"
 
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
-msgstr "#  îÅצÒÎÅ ÚÎÁÞÅÎÎÑ ÞÌÅÎÁ \"command_state\"!"
-
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
 msgstr ""
 "\n"
-"# æÁÊÌÉ"
+"# Файли"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
+"\n"
+"# статистика щодо таблиці хешів файлів:\n"
+"# "
+
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: поле «%s» не кешовано: %s"
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
-msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
+#: function.c:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "не числовий перший аргумент для функції \"word\""
 
-#: function.c:763
-#, fuzzy
-msgid "first argument to `word' function must be greater than 0"
-msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
+#: function.c:747
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "першим аргументом функції «word» має бути число, більше за 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
-msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"wordlist\""
+#: function.c:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "не числовий перший аргумент для функції \"wordlist\""
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
-msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÄÒÕÇÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"wordlist\""
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "не числовий другий аргумент для функції \"wordlist\""
 
-#: function.c:1458
+#: function.c:1460
 #, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
-msgstr ""
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr ""
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr ""
+msgstr "Помилка CreatePipe() (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr ""
+msgstr "windows32_openpipe(): помилка process_init_fd()\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
+msgstr "Спорожнюємо тимчасовий пакетний файл %s\n"
+
+#: function.c:2151
+#, c-format
+msgid "open: %s: %s"
+msgstr "open: %s: %s"
+
+#: function.c:2158
+#, c-format
+msgid "write: %s: %s"
+msgstr "write: %s: %s"
+
+#: function.c:2164
+#, c-format
+msgid "Invalid file operation: %s"
+msgstr "Некоректна дія над файлом: %s"
+
+#: function.c:2279
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "недостатня кількість аргументів (%d) функції «%s»"
+
+#: function.c:2291
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "не реалізовано на цій платформі: функція «%s»"
+
+#: function.c:2354
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\""
+
+#: function.c:2546
+msgid "Empty function name\n"
 msgstr ""
 
-#: function.c:2150
+#: function.c:2548
 #, fuzzy, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "ÎÅ ÞÉÓÌÏ×ÉÊ ÐÅÒÛÉÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎË槠\"word\""
+msgid "Invalid function name: %s\n"
+msgstr "Некоректна дія над файлом: %s"
 
-#: function.c:2162
-#, fuzzy, c-format
-msgid "unimplemented on this platform: function `%s'"
-msgstr "îÅ ÒÅÁ̦ÚÏ×ÁÎÏ ÎÁ Ã¦Ê ÐÌÁÔÆÏÒͦ: ÆÕÎËæѠ\"%s\""
+#: function.c:2550
+#, c-format
+msgid "Function name too long: %s\n"
+msgstr "Назва функції є задовгою: %s\n"
 
-#: function.c:2212
+#: function.c:2552
 #, c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÉÊ ×ÉËÌÉË ÆÕÎË槠\"%s\"; ÐÒÏÐÕÝÅÎÏ \"%c\""
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "Некоректна мінімальна кількість аргументів (%d) функції %s\n"
 
-#: getopt.c:661
+#: function.c:2555
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒ \"%s\" - ÎÅÏÄÎÏÚÎÁÞÎÉÊ\n"
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "Некоректна максимальна кількість аргументів (%d) функції %s\n"
 
-#: getopt.c:685
+#: getopt.c:659
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒ \"--%s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Â«%s» Ð½Ðµ Ñ\94 Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ\87ним\n"
 
-#: getopt.c:690
+#: getopt.c:683
 #, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒ \"%c%s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ð°Ñ\80гÑ\83менÑ\82Ñ\96в Ð´Ð¾ Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Â«--%s» Ð½Ðµ Ð¿ÐµÑ\80едбаÑ\87ено\n"
 
-#: getopt.c:707 getopt.c:880
+#: getopt.c:688
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒÕ \"%s\" ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ð°Ñ\80гÑ\83менÑ\82Ñ\96в Ð´Ð¾ Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Â«%c%s» Ð½Ðµ Ð¿ÐµÑ\80едбаÑ\87ено\n"
 
-#: getopt.c:736
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: ÎÅ ÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ \"--%s\"\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: до параметра «%s» слід додати аргумент\n"
 
-#: getopt.c:740
+#: getopt.c:734
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: ÎÅ ÒÏÚЦÚÎÁÎÉÊ ÐÁÒÁÍÅÔÒ \"%c%s\"\n"
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: невідомий параметр «--%s»\n"
 
-#: getopt.c:766
+#: getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: невідомий параметр «%c%s»\n"
+
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
+msgstr "%s: невірний параметр -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: ÎÅצÒÎÉÊ ÐÁÒÁÍÅÔÒ -- %c\n"
+msgstr "%s: невірний параметр -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒÕ ÎÅÏÂȦÄÎÉÊ ÁÒÇÕÍÅÎÔ -- %c\n"
+msgstr "%s: параметру необхідний аргумент -- %c\n"
+
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: параметр «-W %s» не є однозначним\n"
 
-#: getopt.c:846
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒ \"-W %s\" ÎÅÏÄÎÏÚÎÁÞÎÉÊ\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ð°Ñ\80гÑ\83менÑ\82Ñ\96в Ð´Ð¾ Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Â«-W %s» Ð½Ðµ Ð¿ÐµÑ\80едбаÑ\87ено\n"
 
-#: getopt.c:864
+#: guile.c:55
 #, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
-msgstr "%s: ÐÁÒÁÍÅÔÒ \"-W %s\" ÎÅ ÍÏÖÅ ÍÁÔÉ ÁÒÇÕÍÅÎÔ¦×\n"
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: розгортаємо «%s»\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: обчислюємо «%s»\n"
 
 #: hash.c:49
 #, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr ""
+msgstr "не вдалося розмістити %lu байтів для таблиці хешів: вичерпано пам’ять"
 
 #: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr ""
+msgstr "Завантаження=%ld/%ld=%.0f%%, "
 
 #: hash.c:282
 #, c-format
 msgid "Rehash=%d, "
-msgstr ""
+msgstr "Повторне хешування=%d, "
 
 #: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr ""
+msgstr "Збіги=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "ðÏÛÕË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ \"%s\".\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Пошук неявного правила для \"%s\".\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "ðÏÛÕË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ ÞÌÅÎÁ ÁÒȦ×Õ \"%s\".\n"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Пошук неявного правила для члена архіву \"%s\".\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "úÁÐϦÇÁÎÎÑ ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÉËÌÉËÕ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ.\n"
+msgstr "Запобігання рекурсивного виклику неявного правила.\n"
+
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Занадто довгий шаблон: «%.*s».\n"
 
 #: implicit.c:491
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "óÐÒÏÂÁ ÚÁÓÔÏÓÕ×ÁÎÎÑ ÐÒÁ×ÉÌÁ Ú¦ ÚÒÁÚËÏÍ, ÏÓÎÏ×Á \"%.*s\".\n"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Спроба застосування правила зі зразком, основа \"%.*s\".\n"
 
-#: implicit.c:674
-#, fuzzy, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
-msgstr "÷¦ÄËÉÄÁÎÎÑ ÎÅÍÏÖÌÉ×ϧ %s ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
+#: implicit.c:697
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Відкидання неможливої залежності правила «%s».\n"
 
-#: implicit.c:675
-#, fuzzy, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
-msgstr "÷¦ÄËÉÄÁÎÎÑ ÎÅÍÏÖÌÉ×ϧ %s ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
+#: implicit.c:698
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Відкидання неможливої неявної залежності «%s».\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "ðÒÏÂÕÀ ÚÁÌÅÖΦÓÔØ ÐÒÁ×ÉÌÏ \"%s\".\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Пробую залежність правило \"%s\".\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "ðÒÏÂÕÀ ÎÅÑ×Φ ÚÁÌÅÖÎÏÓÔ¦ \"%s\".\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Пробую неявні залежності \"%s\".\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
-msgstr ""
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Виявлено залежність «%s» у форматі VPATH «%s»\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
-msgstr "ðÏÛÕË ÐÒÁ×ÉÌÁ Ú ÐÒÏͦÖÎÉÍ ÆÁÊÌÏÍ \"%s\".\n"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Пошук правила з проміжним файлом \"%s\".\n"
 
-#: job.c:335
-#, fuzzy
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "fwrite (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
+msgstr "Не вдалося створити тимчасовий файл\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "[%s] ðÏÍÉÌËÁ 0x%x (ÐÒϦÇÎÏÒÏ×ÁÎÁ)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (зроблений дамп пам'яті)"
+
+#: job.c:487
+msgid " (ignored)"
+msgstr " (ігнорується)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<вбудований>"
 
-#: job.c:450
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] ðÏÍÉÌËÁ 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: спроба виконання рецепта для мети «%s» зазнала невдачі"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] ðÏÍÉÌËÁ %d (¦ÇÎÏÒÏ×ÁÎÁ)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Помилка 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] ðÏÍÉÌËÁ %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Помилка %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (ÚÒÏÂÌÅÎÉÊ ÄÁÍРÐÁÍ'ÑÔ¦)"
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** ïÞ¦ËÕ×ÁÎÎÑ ÚÁ×ÅÒÛÅÎÎÑ ÚÁ×ÄÁÎØ..."
+msgstr "*** Очікування завершення завдань..."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "îÅÚÁ×ÅÒÛÅÎÉÊ ÎÁÝÁÄÏË 0x%08lx (%s) PID %ld %s\n"
+msgstr "Незавершений дочірній процес %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
-msgstr " (צÄÄÁÌÅÎÉÊ)"
+msgstr " (віддалений)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, c-format
 msgid "Reaping losing child %p PID %s %s\n"
-msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
+msgstr "Підбираємо невдалий дочірній процес з PID %p %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, c-format
 msgid "Reaping winning child %p PID %s %s\n"
-msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
+msgstr "Підбираємо вдалий дочірній процес з PID %p %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
-msgstr "úÎÉÝÅÎÎÑ ÔÉÍÞÁÓÏ×ÏÇÏ ËÏÍÁÎÄÎÏÇÏ ÆÁÊÌÕ %s\n"
+msgstr "Знищення тимчасового командного файла %s\n"
 
-#: job.c:861
-#, fuzzy, c-format
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr ""
+"Спроба витикання тимчасового файла пакетної обробки %s зазнала невдачі (%d)\n"
+
+#: job.c:949
+#, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "÷ÉÄÁÌÅÎÎÑ ÎÁÝÁÄËÁ 0x%08lx PID %d%s Ú ÌÁÎÃÀÖËÁ ÁËÔÉ×ÎÉÈ ÎÁÝÁÄ˦×.\n"
+msgstr "Вилучаємо PID дочірнього процесу %p %s%s з ланцюжка.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr ""
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "спускаємо семафор сервера завдань: (Помилка %ld: %s)"
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, c-format
 msgid "Released token for child %p (%s).\n"
-msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
+msgstr "Звільнено символ для дочірнього процесу %p (%s).\n"
+
+#: job.c:1023
+msgid "write jobserver"
+msgstr "запис до сервера завдань"
 
-#: job.c:1453 job.c:2094
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr ""
+msgstr "process_easy() не вдалося запустити процес (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
+"\n"
+"Під час невдалого запуску кількість аргументів дорівнювала %d\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, c-format
 msgid "Putting child %p (%s) PID %s%s on the chain.\n"
-msgstr "÷ÓÔÁ×ÌÑÀ ÎÁÝÁÄËÁ 0x%08lx PID %d%s Õ ÌÁÎÃÀÖÏË ÁËÔÉ×ÎÉÈ ÎÁÝÁÄ˦×.\n"
+msgstr "Додаємо дочірній процес з PID %p (%s) %s%s до ланцюжка.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "очіккування семафора або дочірнього процесу: (помилка %ld: %s)"
+
+#: job.c:1967
+#, c-format
 msgid "Obtained token for child %p (%s).\n"
-msgstr "ïÂÒÏÂËÁ ÒÅÚÕÌØÔÁԦנ%s ÐÒÁæ ÎÁÝÁÄËÁ 0x%08lx PID %d%s\n"
+msgstr "Отримано символ для дочірнього процесу %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr ""
+msgstr "читаємо записи з потоку завдань"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+msgid "%s: target '%s' does not exist"
+msgstr "%s: мети «%s» не існує"
 
-#: job.c:1802
-#, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "îÅÍÁ ÎÅÏÂȦÄÎÏÓÔ¦ ÐÅÒÅÚÂÉÒÁÔɠæÌØ \"%s\".\n"
+#: job.c:2005
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: оновлення мети «%s» з такої причини: %s"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr ""
-"ÃÑ ÏÐÅÒÁæÊÎÁ ÓÉÓÔÅÍÁ ÎÅ ÄÏÚ×ÏÌѤ ×ÓÔÁÎÏ×ÌÀ×ÁÔÉ ÏÂÍÅÖÅÎÎÑ ÎÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ"
+"ця операційна система не дозволяє встановлювати обмеження на завантаження"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "ÎÅÍÏÖÌÉ×Ï ×ÓÔÁÎÏ×ÉÔÉ ÏÂÍÅÖÅÎÎÑ ÎÁ ÚÁ×ÁÎÔÁÖÅÎÎÑ: "
+msgstr "неможливо встановити обмеження на завантаження: "
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
-msgstr ""
+msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdin\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
-msgstr ""
+msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdout\n"
 
-#: job.c:2015
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stderr\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr ""
+msgstr "Не вдалося відновити stdin\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr ""
+msgstr "Не вдалося відновити stdout\n"
+
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Не вдалося відновити stderr\n"
 
-#: job.c:2127
+#: job.c:2365
 #, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr ""
+"make підібрано дочірній процес з pid %s, який все ще чекає на завершення "
+"процесу з pid %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s: ëÏÍÁÎÄÁ ÎÅ ÚÎÁÊÄÅÎÁ"
+msgstr "%s: Команда не знайдена"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
-msgstr "%s: ëÏÍÁÎÄÎÉÊ ÐÒÏÃÅÓÏÒ ÎÅ ÚÎÁÊÄÅÎÉÊ"
+msgstr "%s: Командний процесор не знайдений"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
-msgstr ""
+msgstr "spawnvpe: ймовірно, завершилося місце у середовищі"
 
-#: job.c:2461
-#, fuzzy, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL ÚͦÎÅÎÏ (ÂÕÌÏ \"%s\", ÔÅÐÅÒ \"%s\")"
+#: job.c:2709
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL змінено (було «%s», тепер «%s»)\n"
 
-#: job.c:2951
-#, fuzzy, c-format
+#: job.c:3140 job.c:3325
+#, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
+msgstr "Створюємо тимчасовий пакетний файл %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Вміст файла пакетної обробки:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Вміст пакетного файла:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
-msgstr "%s (ÒÑÄÏË %d) ðÏÇÁÎÉÊ ËÏÎÔÅËÓÔ ÏÂÏÌÎÉË (!unixy && !batch_mode_shell)\n"
+msgstr ""
+"%s (рядок %d) Поганий контекст оболонки (!unixy && !batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[ТИП] (--output-sync[=ТИП]) для цього сеансу збирання не налаштовано."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Не вдалося відкрити таблицю загальних символів: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Завантажений об’єкт %s не оголошено як сумісний з GPL"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Не вдалося завантажити символ %s з %s: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Порожня назва символу для завантаження: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Завантажуємо символ %s з %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "На цій платформі виконання дії «load» не передбачено."
+
+#: main.c:312
 msgid "Options:\n"
-msgstr "ëÌÀÞ¦:\n"
+msgstr "Ключі:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr ""
+msgstr "  -b, -m                      Ігнорується, для сумісності.\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
-msgstr ""
+msgstr "  -B, --always-make           безумовно обробляти всі записи мети.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
+"  -C КАТАЛОГ, --directory=КАТАЛОГ\n"
+"                              Перейти до каталогу до виконання будь-яких "
+"дій.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr ""
+msgstr "  -d                          Вивести діагностичні повідомлення.\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr ""
+"  --debug[=ПРАПОРЦІ]          Вивести діагностичні повідомлення вказаних "
+"типів.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
+"  -e, --environment-overrides\n"
+"                              Змінні середовища мають вищий пріоритет за "
+"змінні makefile.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
-msgstr ""
+msgstr "  --eval=РЯДОК                Обробити РЯДОК як інструкцію makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
+"  -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n"
+"                              Використати ФАЙЛ як makefile.\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
-msgstr ""
+msgstr "  -h, --help                  Вивести це повідомлення і вийти.\n"
 
-#: main.c:325
+#: main.c:334
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr ""
+"  -i, --ignore-errors         Ігнорувати помилки від способів збирання.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
+"  -I КАТАЛОГ, --include-dir=КАТАЛОГ\n"
+"                              Виконати пошук включених makefile у каталозі.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
+"  -j [N], --jobs[=N]          Виконувати одночасно N завдань; якщо не "
+"вказано — необмежену кількість.\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr ""
+"  -k, --keep-going            Продовжувати роботу, якщо збирання якоїсь мети "
+"неможливе.\n"
 
-#: main.c:334
+#: main.c:343
 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:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
+"  -L, --check-symlink-times   Використовувати новіший час зміни з часів "
+"зміни посилання і мети.\n"
 
-#: main.c:339
+#: main.c:348
 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"
+"                              Не застосовувати способів збирання, просто "
+"вивести назви способів.\n"
 
-#: main.c:342
+#: main.c:351
 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:345
-msgid "  -p, --print-data-base       Print make's internal database.\n"
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
 msgstr ""
+"  -O[ТИП], --output-sync[=ТИП]\n"
+"                              синхронізувати виведені дані паралельних "
+"завдань за ТИПом.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:357
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "  -p, --print-data-base       Вивести внутрішню базу даних make.\n"
+
+#: main.c:359
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
 "date.\n"
-msgstr "îÅ ×ÉËÏÎÕ×ÁÔÉ ËÏÍÁÎÄÉ, ËÏÄ ÚÁ×ÅÒÛÅÎÎÑ ÐÏËÁÖÅ ÞÉ ÏÎÏ×ÌÅÎÏ"
+msgstr ""
+"  -q, --question              не застосовувати жодних "
+"способів;                               код завершення показує, чи все вже "
+"зроблено.\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
-msgstr ""
+msgstr "  -r, --no-builtin-rules      Вимкнути вбудовані неявні правила.\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
-msgstr ""
+msgstr "  -R, --no-builtin-variables  Вимкнути вбудовані параметри змінних.\n"
 
-#: main.c:353
+#: main.c:365
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
-msgstr ""
+msgstr "  -s, --silent, --quiet       Не виводити способи збирання.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
+"  -S, --no-keep-going, --stop\n"
+"                              Вимкнути -k.\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr ""
+"  -t, --touch                 Змінювати час доступу до мети замість її "
+"повторного збирання.\n"
+
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Вивести дані щодо трасування.\n"
 
-#: main.c:360
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
-msgstr ""
+msgstr "  -v, --version               Вивести дані щодо версії make і вийти.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr ""
+msgstr "  -w, --print-directory       Виводити дані щодо поточного каталогу.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr ""
+"  --no-print-directory        Вимкнути -w, навіть якщо вмикання було "
+"виконано неявним чином.\n"
 
-#: main.c:366
+#: main.c:380
 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:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
+"  --warn-undefined-variables  Попереджати про посилання на невизначену "
+"змінну.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "ÐÏÒÏÖΦʠÒÑÄÏË ÎÅÐÒÉÐÕÓÔÉÍÉÊ Õ ÑËÏÓÔ¦ ¦ÍÅΦ ÆÁÊÌÕ"
+msgstr "поÑ\80ожнÑ\96й Ñ\80Ñ\8fдок Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ð½Ð°Ð·Ð²Ð¾Ñ\8e Ñ\84айла"
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr ""
+msgid "unknown debug level specification '%s'"
+msgstr "невідома специфікація рівня діагностики, «%s»"
+
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "невідомий тип синхронізації виведених даних, «%s»"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "внутрішня помилка: вказано декілька параметрів --sync-mutex"
 
-#: main.c:690
+#: main.c:848
 #, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr ""
+msgstr "%s: сталося переривання або виключення (код = 0x%lx, адреса = 0x%p)\n"
 
-#: main.c:697
+#: main.c:855
 #, c-format
 msgid ""
 "\n"
@@ -897,199 +1100,237 @@ msgid ""
 "ExceptionFlags = %lx\n"
 "ExceptionAddress = 0x%p\n"
 msgstr ""
+"\n"
+"З програми %s викликано фільтр непридатних до обробки виключень\n"
+"Код виключення = %lx\n"
+"Прапорці виключення = %lx\n"
+"Адреса виключення = 0x%p\n"
 
-#: main.c:705
+#: main.c:863
 #, c-format
 msgid "Access violation: write operation at address 0x%p\n"
-msgstr ""
+msgstr "Порушення правил доступу: дія з запису за адресою 0x%p\n"
 
-#: main.c:706
+#: main.c:864
 #, c-format
 msgid "Access violation: read operation at address 0x%p\n"
-msgstr ""
+msgstr "Порушення правил доступу: дія з читання за адресою 0x%p\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr ""
+msgstr "find_and_set_shell() встановлює default_shell = %s\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr ""
+msgstr "%s призупиняється на 30 секунд..."
 
-#: main.c:1275
+#: main.c:1449
 #, 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 "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
+msgstr "виконано sleep(30). Продовжуємо.\n"
 
-#: main.c:1545
-msgid "fwrite (temporary file)"
-msgstr "fwrite (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
-
-#: main.c:1703
-msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr ""
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "внутрішня помилка: вказано декілька ключів --jobserver-fds"
 
-#: main.c:1704
-msgid "Resetting to single job (-j1) mode."
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
 msgstr ""
+"внутрішня помилка: не вдалося відкрити семафор сервера завдань «%s»: "
+"(помилка %ld: %s)"
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr ""
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Клієнт сервера завдань (семафор %s)\n"
 
-#: main.c:1727
+#: main.c:1551
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr ""
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "внутрішня помилка: некоректний рядок --jobserver-fds, «%s»"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Клієнт сервера завдань (fd %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr ""
+"попередження: у вкладеному файлів збирання вказано -jN: вимикаємо режим "
+"сервера завдань."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
-msgstr ""
+msgstr "дублюємо сервер завдань"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
 msgstr ""
+"попередження: сервер завдань недоступний: використовуємо -j1. Додайте «+» до "
+"батьківського правила збирання."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile зі стандартного джерела вхідних даних вказано двічі."
 
-#: main.c:1777
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (тимчасовий файл)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (тимчасовий файл)"
+
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "На цій платформі паралельної обробки завдань (-j) не передбачено."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Повертаємося до режиму єдиного завдання (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Слоти сервера завдань обмежено значенням %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "створюємо семафор сервера завдань: (помилка %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr ""
+msgstr "створюємо канал завдань"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr ""
+msgstr "ініціалізуємо канал сервера завдань"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
-msgstr ""
+msgstr "Підтримки символічних посилань не передбачено: вимикаємо -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
-msgstr "ïÎÏ×ÌÅÎÎÑ make-ÆÁÊ̦×...\n"
+msgstr "Оновлення make-файлів...\n"
 
-#: main.c:1917
+#: main.c:2174
 #, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
-msgstr "Make-ÆÁÊÌ \"%s\", ÍÏÖÌÉ×Ï, ÚÁÃÉËÌÅÎÉÊ, ×¦Î ÎÅ ÐÅÒÅÚÂÉÒÁÔÉÍÅÔØÓÑ.\n"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметься.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, c-format
-msgid "Failed to remake makefile `%s'."
-msgstr "óÐÒÏÂÁ ÐÅÒÅÚ¦ÂÒÁÔÉ make-ÆÁÊÌ \"%s\" ÂÅÚÕÓЦÛÎÁ."
+msgid "Failed to remake makefile '%s'."
+msgstr "Спроба перезібрати make-файл \"%s\" безуспішна."
 
-#: main.c:2013
+#: main.c:2270
 #, c-format
-msgid "Included makefile `%s' was not found."
-msgstr "Make-ÆÁÊÌ \"%s\", ÑËÉÊ ×ËÌÀÞÁ¤ÔØÓÑ, ÎÅ ÂÕÌÏ ÚÎÁÊÄÅÎÏ."
+msgid "Included makefile '%s' was not found."
+msgstr "Make-файл \"%s\", який включається, не було знайдено."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Make-ÆÁÊÌ \"%s\" ÎÅ ÂÕÌÏ ÚÎÁÊÄÅÎÏ"
+msgid "Makefile '%s' was not found"
+msgstr "Make-файл \"%s\" не було знайдено"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "îÅÍÏÖÌÉ×Ï ÐÅÒÅÊÔÉ Õ ÐÅÒצÓÎÉÊ ËÁÔÁÌÏÇ."
+msgstr "Неможливо перейти у первісний каталог."
 
-#: main.c:2102
-#, fuzzy, c-format
+#: main.c:2354
+#, c-format
 msgid "Re-executing[%u]:"
-msgstr "ðÏ×ÔÏÒÎÅ ×ÉËÏÎÁÎÎÑ:"
+msgstr "Повторне виконання[%u]:"
 
-#: main.c:2215
-#, fuzzy
+#: main.c:2463
 msgid "unlink (temporary file): "
-msgstr "fopen (ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ)"
+msgstr "unlink (тимчасовий файл): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ""
+msgstr ".DEFAULT_GOAL містить декілька записів мети"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
-msgstr "îÅ ÚÁÄÁΦ Ã¦Ì¦ ¦ ÎÅ ÚÎÁÊÄÅÎÉÊ make-ÆÁÊÌ"
+msgstr "Не задані цілі і не знайдений make-файл"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
-msgstr "îÅÍÁ Ã¦ÌÅÊ"
+msgstr "Нема цілей"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "ïÎÏ×ÌÅÎÎѠæÌÅÊ ÍÅÔÉ...\n"
+msgstr "Оновлення цілей мети...\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr ""
+"попередження: виявлено відхилення показів годинника. Збирання може бути "
+"неповним."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ: %s [ëìàþ¶]... [ã¶ìø]...\n"
+msgstr "Використання: %s [КЛЮЧІ]... [ЦІЛЬ]...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
+"\n"
+"Цю програму зібрано для %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
+"\n"
+"Цю програму зібрано для %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "ðÏצÄÏÍÌÀÊÔÅ ÐÒÏ ÐÏÍÉÌËÉ ÄÏ <bug-make@gnu.org>\n"
+msgstr "Повідомлюйте про помилки до <bug-make@gnu.org>\n"
 
-#: main.c:2562
-#, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
-msgstr "ËÌÀÞ \"-%c\" ÐÏ×ÉÎÅΠ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉÓѠڠæÌÉÍ ÐÏÚÉÔÉ×ÎÉÍ ÁÒÇÕÍÅÎÔÏÍ"
+#: main.c:2810
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "разом з «%s%s» мало бути вказано непорожній рядковий аргумент"
 
-#: main.c:2617
+#: main.c:2864
 #, c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "ËÌÀÞ \"-%c\" ÐÏ×ÉÎÅΠ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉÓѠڠæÌÉÍ ÐÏÚÉÔÉ×ÎÉÍ ÁÒÇÕÍÅÎÔÏÍ"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "ключ \"-%c\" повинен використовуватися з цілим додатним аргументом"
 
-#: main.c:3054
+#: main.c:3253
 #, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
+msgstr "%sЗібрано для %s\n"
 
-#: main.c:3056
+#: main.c:3255
 #, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
+msgstr "%sЗібрано для %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1097,1067 +1338,928 @@ msgid ""
 "%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:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# âÁÚÁ ÄÁÎÉÈ Make, ÎÁÄÒÕËÏ×ÁÎÁ %s"
+"# База даних Make, надрукована %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# äÒÕË ÂÁÚÉ ÄÁÎÉÈ Make ÚÁ×ÅÒÛÅÎÏ %s\n"
+"# Друк бази даних Make завершено %s\n"
 
-#: main.c:3237
-#, fuzzy, c-format
-msgid "%s: Entering an unknown directory\n"
-msgstr "%s: ÷ÈÏÖÕ Õ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Невідома помилка %d"
 
-#: main.c:3239
-#, fuzzy, c-format
-msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: úÁÌÉÛÁÀ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "віртуальна пам'ять вичерпана"
 
-#: main.c:3242
+#: misc.c:522
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: ÷ÈÏÖÕ Õ ËÁÔÁÌÏÇ \"%s\"\n"
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: користувач %lu (насправді %lu), група %lu (насправді %lu)\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: úÁÌÉÛÁÀ ËÁÔÁÌÏÇ \"%s\"\n"
+#: misc.c:543
+msgid "Initialized access"
+msgstr "Ініціалізований доступ"
 
-#: main.c:3250
-#, fuzzy, c-format
-msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: ÷ÈÏÖÕ Õ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ "
+#: misc.c:622
+msgid "User access"
+msgstr "Доступ користувача"
 
-#: main.c:3253
-#, fuzzy, c-format
-msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: úÁÌÉÛÁÀ ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
+#: misc.c:670
+msgid "Make access"
+msgstr "Доступ make"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: ÷ÈÏÖÕ Õ ËÁÔÁÌÏÇ \"%s\"\n"
+#: misc.c:704
+msgid "Child access"
+msgstr "Доступ дочірнього процесу"
 
-#: main.c:3260
+#: output.c:128
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: úÁÌÉÛÁÀ ËÁÔÁÌÏÇ \"%s\"\n"
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: входимо до невідомого каталогу\n"
 
-#: misc.c:316
-msgid ".  Stop.\n"
-msgstr ".  úÕÐÉÎËÁ.\n"
+#: output.c:130
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: виходимо з невідомого каталогу\n"
 
-#: misc.c:337
+#: output.c:133
 #, c-format
-msgid "Unknown error %d"
-msgstr "îÅצÄÏÍÁ ÐÏÍÉÌËÁ %d"
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: входимо до каталогу «%s»\n"
 
-#: misc.c:347
+#: output.c:135
 #, c-format
-msgid "%s%s: %s"
-msgstr "%s%s: %s"
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Залишаю каталог \"%s\"\n"
 
-#: misc.c:355
+#: output.c:139
 #, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: входимо до невідомого каталогу\n"
 
-#: misc.c:376 misc.c:387 misc.c:402 misc.c:419 misc.c:438 read.c:3118
-msgid "virtual memory exhausted"
-msgstr "צÒÔÕÁÌØÎÁ ÐÁÍ'ÑÔØ ×ÉÞÅÒÐÁÎÁ"
+#: output.c:141
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: залишаємо невідомий каталог\n"
 
-#: misc.c:708
+#: output.c:144
 #, c-format
-msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr ""
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: входимо до каталогу «%s»\n"
 
-#: misc.c:729
-msgid "Initialized access"
-msgstr ""
+#: output.c:146
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Залишаю каталог \"%s\"\n"
 
-#: misc.c:808
-msgid "User access"
-msgstr "äÏÓÔÕРËÏÒÉÓÔÕ×ÁÞÁ"
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "помилка запису: %s"
 
-#: misc.c:856
-msgid "Make access"
-msgstr ""
+#: output.c:517
+msgid "write error"
+msgstr "помилка запису"
 
-#: misc.c:890
-msgid "Child access"
-msgstr ""
+#: output.c:740
+msgid ".  Stop.\n"
+msgstr ".  Зупинка.\n"
 
-#: misc.c:954
-#, fuzzy, c-format
-msgid "write error: %s"
-msgstr "ËÁÔÁÌÏÇ \"%s\"\n"
+#: output.c:751
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
 
-#: misc.c:956
-#, fuzzy
-msgid "write error"
-msgstr "ðÏÍÉÌËÁ ÎÁ ÛÉΦ"
+#: output.c:759
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
 
-#: read.c:179
-#, fuzzy
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "þÉÔÁÎÎÑ make-ÆÁÊ̦×..."
+msgstr "Читання make-файлів...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "þÉÔÁÎÎÑ make-ÆÁÊÌÕ \"%s\""
+msgid "Reading makefile '%s'"
+msgstr "Читання make-файла \"%s\""
 
 #: read.c:335
 #, c-format
 msgid " (no default goal)"
-msgstr " (ÎÅÍÁ¤ ÍÅÔÉ ÚÁ ÚÁÍÏ×ÞÕ×ÁÎÎÑÍ)"
+msgstr " (немає типової мети)"
 
 #: read.c:337
 #, c-format
 msgid " (search path)"
-msgstr " (ÛÌÑÈ ÐÏÛÕËÕ)"
+msgstr " (шлях пошуку)"
 
 #: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (ÎÅ Ú×ÁÖÁÔÉ)"
+msgstr " (не зважати)"
 
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (ÎÅ ÒÏÚÛÉÒÀ×ÁÔÉ ~)"
+msgstr " (не розширювати ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Пропускаємо мітку UTF-8 у файлі makefile «%s»\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Пропускаємо мітку UTF-8 у буфері файла makefile\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "ÎÅצÒÎÉÊ ÓÉÎÔÁËÓÉÓ Õ ÕÍÏ×ÎÏÍÕ ×ÉÒÁÖÅÎΦ"
+msgstr "невірний синтаксис у умовному вираженні"
 
-#: read.c:891
-#, fuzzy
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: не вдалося завантажити"
+
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "ËÏÍÁÎÄÉ ÚÕÓÔÒ¦ÎÕÔ¦ ÄÏ ÐÅÒÛÏÇÏ ×ÉÚÎÁÞÅÎÎѠæ̦"
+msgstr "визначення способу збирання розпочинається до визначення першої мети"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "ÐÅÒÅÄ ËÏÍÁÎÄÁÍÉ ÐÒÏÐÕÝÅÎÅ ÐÒÁ×ÉÌÏ"
+msgstr "пÑ\80опÑ\83Ñ\89ено Ð¿Ñ\80авило Ð´Ð¾ Ñ\81поÑ\81обÑ\83"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "ÐÒÏÐÕÝÅÎÉÊ ÒÏÚĦÌÀ×ÁÞ%s"
+msgstr "пÑ\80опÑ\83Ñ\89ений Ñ\80оздÑ\96лÑ\8eваÑ\87%s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
-msgstr ""
+msgstr " (ви хотіли ввести TAB замість 8 пробілів?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
-msgstr "ÐÒÏÐÕÝÅÎÉÊ ÛÁÂÌÏΠæ̦"
+msgstr "пÑ\80опÑ\83Ñ\89ений Ñ\88аблон Ñ\86Ñ\96лÑ\96"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
-msgstr "ÎÅ ÏÄÉΠÛÁÂÌÏΠæ̦"
+msgstr "не один шаблон цілі"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "ÛÁÂÌÏΠæ̦ ÎŠͦÓÔÉÔØ \"%%\""
+msgid "target pattern contains no '%%'"
+msgstr "шаблон цілі не містить \"%%\""
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "ÐÒÏÐÕÝÅÎÁ \"endif\""
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "пÑ\80опÑ\83Ñ\89ена \"endif\""
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
-msgstr "ÐÏÒÏÖΤ ¦Í'Ñ ÚͦÎÎϧ"
+msgstr "поÑ\80ожнÑ\94 Ñ\96м'Ñ\8f Ð·Ð¼Ñ\96нноÑ\97"
 
-#: read.c:1367
-#, fuzzy
-msgid "extraneous text after `define' directive"
-msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"endef\""
+#: read.c:1465
+msgid "extraneous text after 'define' directive"
+msgstr "зайвий текст після директиви «define»"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "ÐÒÏÐÕÝÅÎÁ \"endif\", ÎÅÚÁ×ÅÒÛÅÎÁ \"define\""
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "пÑ\80опÑ\83Ñ\89ена \"endif\", Ð½ÐµÐ·Ð°Ð²ÐµÑ\80Ñ\88ена \"define\""
 
-#: read.c:1420
-#, fuzzy
-msgid "extraneous text after `endef' directive"
-msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"endef\""
+#: read.c:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "зайвий текст після директиви «endef»"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "úÁÊ×ÉÊ ÔÅËÓԠЦÓÌÑ ÄÉÒÅËÔÉ×É \"%s\""
+msgid "extraneous text after '%s' directive"
+msgstr "зайвий текст після директиви \"%s\""
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "ÚÁÊ×Á \"%s\""
+msgid "extraneous '%s'"
+msgstr "зайва \"%s\""
 
-#: read.c:1518
-msgid "only one `else' per conditional"
-msgstr "× ÕÍÏ×ÎÏÍÕ ×ÉÒÁÚ¦ ÍÏÖÌÉ×Á ÌÉÛÅ ÏÄÎÁ ÄÉÒÅËÔÉ×Á `else'"
+#: read.c:1617
+msgid "only one 'else' per conditional"
+msgstr "в умовному виразі можлива лише одна директива `else'"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr ""
+msgstr "Помилкове форматування специфічного для мети визначення змінної"
 
-#: read.c:1855
+#: read.c:1951
 msgid "prerequisites cannot be defined in recipes"
-msgstr ""
+msgstr "у способах збирання не можна вказувати залежностей"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
-msgstr "ÚͦÛÁΦ ÎÅÑ×Φ ÐÒÁ×ÉÌÁ ¦ ÐÒÁ×ÉÌÁ Ú¦ ÓÔÁÔÉÞÎÉÍÉ ÚÒÁÚËÁÍÉ"
+msgstr "змішані неявні правила і правила зі статичними зразками"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
-msgstr "ÚͦÛÁΦ ÎÅÑ×Φ ¦ Ú×ÉÞÁÊΦ ÐÒÁ×ÉÌÁ"
+msgstr "змішані неявні і звичайні правила"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "æÌØ \"%s\" ÎŠצÄÐÏצÄÁ¤ ÚÒÁÚËՠæÌÅÊ"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "ціль \"%s\" не відповідає зразку цілей"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, c-format
-msgid "target file `%s' has both : and :: entries"
-msgstr "æÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÍÁ¤ ×ÈÏÄÖÅÎÎÑ ¦ Ú \":\", ¦ Ú \"::\" "
+msgid "target file '%s' has both : and :: entries"
+msgstr "цільовий файл \"%s\" має входження і з \":\", і з \"::\" "
 
-#: read.c:1997
+#: read.c:2105
 #, c-format
-msgid "target `%s' given more than once in the same rule."
-msgstr "æÌØ \"%s\" ÚÁÚÎÁÞÅÎÁ ÄÅ˦ÌØËÁ ÒÁÚ × ÏÄÎÏÍÕ ÐÒÁ×É̦"
+msgid "target '%s' given more than once in the same rule"
+msgstr "ціль \"%s\" зазначено декілька разів у одному правилі"
 
-#: read.c:2006
-#, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
-msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÐÅÒÅËÒÉÔÔÑ ËÏÍÁÎÄ ÄÌѠæ̦ \"%s\""
+#: read.c:2114
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "попеÑ\80едженнÑ\8f: Ð·Ð°Ð¼Ñ\96нÑ\8eÑ\94мо Ñ\81поÑ\81Ñ\96б Ð´Ð»Ñ\8f Ð¼ÐµÑ\82и Â«%s»"
 
-#: read.c:2009
-#, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
-msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ¦ÇÎÏÒÕ×ÁÎÎÑ ÓÔÁÒÉÈ ËÏÍÁÎÄ ÄÌѠæ̦ \"%s\""
+#: read.c:2117
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "попеÑ\80едженнÑ\8f: Ñ\96гноÑ\80Ñ\83Ñ\94мо Ð·Ð°Ñ\81Ñ\82аÑ\80Ñ\96лий Ñ\81поÑ\81Ñ\96б Ð´Ð»Ñ\8f Ð¼ÐµÑ\82и Â«%s»"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
-msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÚÕÓÔÒ¦ÎÕÔÉÊ ÓÉÍ×ÏÌ NUL; ¦ÇÎÏÒÕ¤ÔØÓÑ ÄϠ˦ÎÃÑ ÒÑÄËÉ"
+msgstr "попеÑ\80едженнÑ\8f: Ð·Ñ\83Ñ\81Ñ\82Ñ\80Ñ\96нÑ\83Ñ\82ий Ñ\81имвол NUL; Ñ\96гноÑ\80Ñ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ð´Ð¾ ÐºÑ\96нÑ\86Ñ\8f Ñ\80Ñ\8fдки"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "ã¦ÌØ \"%s\" ÎÅ ×ÉÍÁÇÁ¤ ×ÉËÏÎÁÎÎÑ ËÏÍÁÎÄ."
+msgid "Nothing to be done for '%s'."
+msgstr "Ціль \"%s\" не вимагає виконання команд."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "\"%s\" ÎÅ ×ÉÍÁÇÁ¤ ÏÎÏ×ÌÅÎÎÑ."
+msgid "'%s' is up to date."
+msgstr "\"%s\" не вимагає оновлення."
 
-#: remake.c:306
-#, fuzzy, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "÷ÓÅ ÝÅ ÏÎÏ×ÌÀ¤ÔØÓÑ ÆÁÊÌ \"%s\".\n"
+#: remake.c:305
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "Обрізаємо файл «%s».\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sîÅÍÁ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÔ×ÏÒÅÎÎѠæ̦ \"%s\"%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sНема правила для створення цілі \"%s\"%s"
 
-#: remake.c:361
+#: remake.c:379
 #, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
-msgstr "%sîÅÍÁ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÔ×ÏÒÅÎÎѠæ̦ \"%s\", ÎÅÏÂȦÄÎϧ ÄÌÑ \"%s\"%s"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sНема правила для створення цілі \"%s\", необхідної для \"%s\"%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "ïÂÒÏÂËÁ Ã¦ÌØÏ×ÏÇÏ ÆÁÊÌÕ \"%s\".\n"
+msgid "Considering target file '%s'.\n"
+msgstr "Обробка цільового файла \"%s\".\n"
 
 #: remake.c:420
 #, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
-msgstr "ðÏÐÅÒÅÄÎÑ ÓÐÒÏÂÁ ÏÎÏ×ÉÔÉ ÆÁÊÌ \"%s\" ÚÁ×ÅÒÛÉÌÁÓÑ ÂÅÚÕÓЦÛÎÏ.\n"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Попередня спроба оновити файл \"%s\" завершилася безуспішно.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "æÁÊÌ \"%s\" ×ÖÅ ÂÕÌÏ ÏÂÒÏÂÌÅÎÏ.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Файл \"%s\" вже було оброблено.\n"
 
 #: remake.c:442
 #, c-format
-msgid "Still updating file `%s'.\n"
-msgstr "÷ÓÅ ÝÅ ÏÎÏ×ÌÀ¤ÔØÓÑ ÆÁÊÌ \"%s\".\n"
+msgid "Still updating file '%s'.\n"
+msgstr "Все ще оновлюється файл \"%s\".\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "ïÎÏ×ÌÅÎÎÑ ÆÁÊÌÕ \"%s\" ÚÁ×ÅÒÛÅÎÏ.\n"
+msgid "Finished updating file '%s'.\n"
+msgstr "Оновлення файла \"%s\" завершено.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "æÁÊÌ \"%s\" ÎÅ ¦ÓÎÕ¤.\n"
+msgid "File '%s' does not exist.\n"
+msgstr "Не виявлено файла з назвою «%s».\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr ""
+"*** Попередження: файл .LOW_RESOLUTION_TIME «%s» має часову позначку високої "
+"точності"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, c-format
-msgid "Found an implicit rule for `%s'.\n"
-msgstr "úÎÁÊÄÅÎÏ ÎÅÑ×ÎÅ ÐÒÁ×ÉÌÏ ÄÌÑ \"%s\".\n"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Знайдено неявне правило для \"%s\".\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, c-format
-msgid "No implicit rule found for `%s'.\n"
-msgstr "îÅ ÚÎÁÊÄÅÎÏ ÎÅÑ×ÎÉÈ ÐÒÁ×ÉÌ ÄÌÑ \"%s\".\n"
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Не знайдено неявних правил для \"%s\".\n"
 
 #: remake.c:502
-#, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ËÏÍÁÎÄ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ ÄÌÑ \"%s\".\n"
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Використовуємо типовий спосіб для «%s».\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "ãÉË̦ÞÎÁ ÚÁÌÅÖΦÓÔØ %s <- %s ÐÒÏÐÕÝÅÎÁ."
+msgstr "Циклічна залежність %s <- %s пропущена."
 
-#: remake.c:651
-#, fuzzy, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
-msgstr "ïÎÏ×ÌÅÎÎѠæÌÅÊ, ×¦Ä ÑËÉÈ ÚÁÌÅÖÉÔؠæÌØÏ×ÉÊ ÆÁÊÌ \"%s\", ÄÏ×ÅÒÛÅÎÏ.\n"
+#: remake.c:655
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Завершено обробку попередніх залежностей файла мети «%s».\n"
 
-#: remake.c:657
+#: remake.c:661
 #, c-format
-msgid "The prerequisites of `%s' are being made.\n"
-msgstr "ã¦Ì¦, ×¦Ä ÑËÉÈ ÚÁÌÅÖÉÔØ \"%s\", ÚÂÉÒÁÀÔØÓÑ.\n"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Цілі, від яких залежить \"%s\", збираються.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "á×ÁÒ¦ÊÎÉÊ ÚÕÐÉÎËÁ ÎÁ Ã¦ÌØÏ×ÏÍÕ ÆÁÊ̦ \"%s\".\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Аварійний зупинка на цільовому файлі \"%s\".\n"
 
-#: remake.c:675
+#: remake.c:679
 #, c-format
-msgid "Target `%s' not remade because of errors."
-msgstr "ã¦ÌØ \"%s\" ÎÅ ÂÕÌÁ ÐÅÒÅÚ¦ÂÒÁÎÁ ÞÅÒÅÚ ÐÏÍÉÌËÉ."
+msgid "Target '%s' not remade because of errors."
+msgstr "Ціль \"%s\" не була перезібрана через помилки."
 
-#: remake.c:727
+#: remake.c:731
 #, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
-msgstr ""
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Залежність «%s» визначено для мети «%s» лише порядком збирання.\n"
 
-#: remake.c:732
-#, fuzzy, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
-msgstr "æÁÊÌ \"%s\" ÎÅ ¦ÓÎÕ¤.\n"
+#: remake.c:736
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Залежності «%s» мети «%s» не існує.\n"
 
-#: remake.c:737
-#, fuzzy, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
-msgstr "úÁÌÅÖÎÁ Ã¦ÌØ \"%s\" ÏÎÏ×ÌÑÌÁÓÑ %s Î¦Ö ÚÁÌÅÖÎÁ ×¦Ä Îŧ \"%s\".\n"
+#: remake.c:741
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Залежність «%s» є новішою за мету «%s».\n"
 
-#: remake.c:740
-#, fuzzy, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
-msgstr "úÁÌÅÖÎÁ Ã¦ÌØ \"%s\" ÏÎÏ×ÌÑÌÁÓÑ %s Î¦Ö ÚÁÌÅÖÎÁ ×¦Ä Îŧ \"%s\".\n"
+#: remake.c:744
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Залежність «%s» є старішою за мету «%s».\n"
 
-#: remake.c:758
+#: remake.c:762
 #, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
-msgstr "ã¦ÌØ \"%s\" ÏÇÏÌÏÛÅÎÁ Ú Ä×ÏÍÁ Ä×ÏËÒÁÐËÁÍÉ ¦ ÎÅ ÍÁ¤ ÚÁÌÅÖÎÏÓÔÅÊ.\n"
+msgid "Target '%s' is double-colon and has no prerequisites.\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:769
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Немає способу збирання «%s», всі попередні залежності не змінено.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, c-format
-msgid "Making `%s' due to always-make flag.\n"
-msgstr ""
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Збираємо «%s» через встановлення ключа always-make.\n"
 
-#: remake.c:778
-#, fuzzy, c-format
-msgid "No need to remake target `%s'"
-msgstr "îÅÍÁ ÎÅÏÂȦÄÎÏÓÔ¦ ÐÅÒÅÚÂÉÒÁÔɠæÌØ \"%s\".\n"
+#: remake.c:782
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "Потреби у повторному збиранні мети «%s» немає"
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr ""
+msgid "; using VPATH name '%s'"
+msgstr "; використовуємо назву VPATH «%s»"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "îÅÏÂȦÄÎÏ ÐÅÒÅÚ¦ÂÒÁÔɠæÌØ \"%s\".\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Необхідно перезібрати ціль \"%s\".\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr ""
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Ігноруємо назву VPATH «%s».\n"
 
-#: remake.c:815
-#, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "ëÏÍÁÎÄÉ ÄÌÑ \"%s\" ÚÁÒÁÚ ×ÉËÏÎÕÀÔØÓÑ.\n"
+#: remake.c:819
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Застосовуємо спосіб «%s».\n"
 
-#: remake.c:822
+#: remake.c:826
 #, c-format
-msgid "Failed to remake target file `%s'.\n"
-msgstr "óÐÒÏÂÁ ÐÅÒÅÚ¦ÂÒÁÔɠæÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÂÅÚÕÓЦÛÎÁ.\n"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Спроба перезібрати цільовий файл \"%s\" безуспішна.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "ã¦ÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ÕÓЦÛÎÏ ÐÅÒÅÚ¦ÂÒÁÎÉÊ.\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Цільовий файл \"%s\" успішно перезібраний.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, c-format
-msgid "Target file `%s' needs remade under -q.\n"
-msgstr "ã¦ÌØÏ×ÉÊ ÆÁÊÌ \"%s\" ×ÉÍÁÇÁ¤ ÐÅÒÅÚ¦ÒËÉ Ú ËÌÀÞÏÍ -q.\n"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Цільовий файл \"%s\" вимагає перезбирання з ключем -q.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ËÏÍÁÎÄ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ ÄÌÑ \"%s\".\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Використання типових команд для «%s».\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, c-format
-msgid "Warning: File `%s' has modification time in the future"
-msgstr "õ×ÁÇÁ: æÁÊÌ \"%s\" ÍÁ¤ ÍÁÊÂÕÔΦʠÞÁÓ ÚͦÎÉ"
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Увага: Файл \"%s\" має майбутній час зміни"
 
-#: remake.c:1370
-#, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
-msgstr "õ×ÁÇÁ: æÁÊÌ \"%s\" ÍÁ¤ ÞÁÓ ÚͦÎÉ %.2g Ó × ÍÁÊÂÕÔÎØÏÍÕ"
+#: remake.c:1385
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Увага: час зміни файла «%s» перебуває на %s с у майбутньому"
 
-#: remake.c:1569
+#: remake.c:1583
 #, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
-msgstr ""
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Елемент .LIBPATTERNS «%s» не є зразком"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr ""
+msgstr "Неекспортовні налаштування: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
 msgstr ""
+"\n"
+"# Неявні правила"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
 msgstr ""
 "\n"
-"# îÅÑ×ÎÉÈ ÐÒÁ×ÉÌ ÎÅÍÁ."
+"# Неявних правил нема."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
 "# %u implicit rules, %u"
 msgstr ""
 "\n"
-"# îÅÑ×ÎÉÈ ÐÒÁ×ÉÌ: %u, ÔÅÒͦÎÁÌØÎÉÈ: %u"
+"# Неявних правил: %u, термінальних: %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr "."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
-msgstr "ðïíéìëá: ÎÅצÒÎÅ ÚÎÁÞÅÎÎÑ num_pattern_rules! %u != %u"
+msgstr "ПОМИЛКА: значення num_pattern_rules є помилковим!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
-msgstr "ÎÅצÄÏÍÉÊ ÓÉÇÎÁÌ"
+msgstr "невідомий сигнал"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "ïÂÒÉ×"
+msgstr "Обрив"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
-msgstr "ðÅÒÅÒÉ×ÁÎÎÑ"
+msgstr "Переривання"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
-msgstr "÷ÉȦÄ"
+msgstr "Вихід"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "îÅÐÒÉÐÕÓÔÉÍÁ ¦ÎÓÔÒÕËæÑ"
+msgstr "Неприпустима інструкція"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
-msgstr "ðÁÓÔËÁ ÔÒÁÓÕ×ÁÎÎÑ ÞÉ ÔÏÞËÉ ÚÕÐÉÎËÉ"
+msgstr "Пастка трасування чи точки зупинки"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
-msgstr "ðÒÉÐÉÎÅÎÏ"
+msgstr "Припинено"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
-msgstr "ðÁÓÔËÁ IOT"
+msgstr "Пастка IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
-msgstr "ðÁÓÔËÁ EMT"
+msgstr "Пастка EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "ðÏÍÉÌËÁ ÏÐÅÒÁ槠ڠËÒÁÐËÏÀ, ÝÏ ÐÌÁ×Á¤"
+msgstr "Помилка операції з крапкою, що плаває"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
-msgstr "úÎÉÝÅÎÎÑ"
+msgstr "Знищення"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
-msgstr "ðÏÍÉÌËÁ ÎÁ ÛÉΦ"
+msgstr "Помилка на шині"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
-msgstr "ú¦ʠÓÅÇÍÅÎÔÁæ§"
+msgstr "Збій сегментації"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
-msgstr "ðÏÇÁÎÉÊ ÓÉÓÔÅÍÎÉÊ ×ÉËÌÉË"
+msgstr "Поганий системний виклик"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
-msgstr "ïÂÒÉ× ËÁÎÁÌÕ"
+msgstr "Обрив каналу"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
-msgstr "óÉÇÎÁÌ ÐÏ ÔÁÊÍÅÒÕ"
+msgstr "Сигнал по таймеру"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
-msgstr "úÁ×ÅÒÛÅÎÏ"
+msgstr "Завершено"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
-msgstr "ïÂÕÍÏ×ÌÅÎÉÊ ËÏÒÉÓÔÕ×ÁÞÅÍ ÓÉÇÎÁÌ 1"
+msgstr "Обумовлений користувачем сигнал 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
-msgstr "ïÂÕÍÏ×ÌÅÎÉÊ ËÏÒÉÓÔÕ×ÁÞÅÍ ÓÉÇÎÁÌ 2"
+msgstr "Обумовлений користувачем сигнал 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
-msgstr "îÁÝÁÄÏË ÚÁ×ÅÒÛÉ× ÒÏÂÏÔÕ"
+msgstr "Нащадок завершив роботу"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "ú¦ʠÖÉ×ÌÅÎÎÑ"
+msgstr "Збій живлення"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
-msgstr "úÕÐÉÎÅÎÏ"
+msgstr "Зупинено"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "úÕÐÉÎÅÎÏ (×צĠڠÔÅÒͦÎÁÌÁ) "
+msgstr "Зупинено (ввід з термінала) "
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "úÕÐÉÎÅÎÏ (×ÉצĠÎÁ ÔÅÒͦÎÁÌ)"
+msgstr "Зупинено (вивід на термінал)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
-msgstr "úÕÐÉÎÅÎÏ (ÓÉÇÎÁÌ)"
+msgstr "Зупинено (сигнал)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
-msgstr "ðÅÒÅ×ÉÝÅÎÅ ÏÂÍÅÖÅÎÎÑ ÎÁ ÐÒÏÃÅÓÏÒÎÉÊ ÞÁÓ"
+msgstr "Перевищене обмеження на процесорний час"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "ðÅÒÅ×ÉÝÅÎÉÊ ÍÅÖÁ ÒÏÚͦÒÕ ÆÁÊÌÕ"
+msgstr "Перевищений межа розміру файла"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "÷¦ÒÔÕÁÌØÎÉÊ ÞÁÓ ÍÉÎÕ×"
+msgstr "Віртуальний час минув"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
-msgstr "þÁÓ ÐÒÏƦÌÀ×ÁÎÎÑ ÍÉÎÕ×"
+msgstr "Час профілювання минув"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "÷¦ËÎÏ ÚͦÎÅÎÏ"
+msgstr "Вікно змінено"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
-msgstr "ðÒÏÄÏ×ÖÅÎÏ"
+msgstr "Продовжено"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "õÍÏ×Á ÅËÓÔÒÅÎÏÇÏ ××ÏÄÕ/×É×ÏÄÕ"
+msgstr "Умова екстреного вводу/виводу"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "íÏÖÌÉ×ÉÊ ×צÄ/×ÉצÄ"
+msgstr "Можливий ввід/вивід"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
-msgstr "òÅÓÕÒÓ ×ÔÒÁÞÅÎÏ"
+msgstr "Ресурс втрачено"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
-msgstr "óÉÇÎÁÌ ÎÅÂÅÚÐÅËÉ"
+msgstr "Сигнал небезпеки"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
-msgstr "úÁÐÉÔ ¦ÎÆÏÒÍÁæ§"
+msgstr "Запит інформації"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr ""
+msgstr "Допоміжний процесор для обчислень з рухомою комою недоступний"
 
-#: strcache.c:235
+#: strcache.c:236
 #, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
+"\n"
+"%s немає буферів strcache\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
 msgstr ""
+"\n"
+"Буфери strcache %s: %lu (%lu) / рядків = %lu / сховище = %lu Б / сер = %lu "
+"Б\n"
 
-#: strcache.c:239
+#: strcache.c:270
 #, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
+"Поточний буфер %s: розмір = %hu Б / використано = %hu Б / кількість = %hu / "
+"сер = %hu Б\n"
+
+#: strcache.c:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "Інше використане %s: загалом = %lu B / кількість = %lu / сер = %lu Б\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
+"Інше вільне %s: загалом = %lu Б / макс = %lu Б / мін = %lu Б / сер = %hu Б\n"
 
-#: strcache.c:244
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"Швидкодія strcache %s: циклів пошуку = %lu / відсоток знайденого = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
+"# статистика щодо таблиці хешів:\n"
+"# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "автоматична"
+
+#: variable.c:1610
 msgid "default"
-msgstr "ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ"
+msgstr "типовий"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
-msgstr "×ÉÚÎÁÞÅÎÁ Õ ÓÅÒÅÄÏ×Éݦ"
+msgstr "визначена у середовищі"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
-msgstr "ÆÁÊÌ make"
+msgstr "файл make"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "ÚÁÄÁÎÉÊ ËÌÀÞ -e"
+msgstr "заданий ключ -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
-msgstr "×ÉÚÎÁÞÅÎÁ Õ ËÏÍÁÎÄÎÏÍÕ ÒÑÄËÕ"
+msgstr "визначена у командному рядку"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "äÉÒÅËÔÉ×Á `override'"
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "Директива «override»"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "Á×ÔÏÍÁÔÉÞÎÁ"
-
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (Ú \"%s\", ÒÑÄÏË %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (з \"%s\", рядок %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr ""
+msgstr "# стан змінних у хеш-таблиці:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
 msgstr ""
 "\n"
-"# úͦÎΦ\n"
+"# Змінні\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
+"\n"
+"# Специфічні для зразка значення змінних"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
+"\n"
+"# Немає специфічних для зразка значень змінних."
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
+"\n"
+"# %u специфічних для зразка значень змінних"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "ÐÏÐÅÒÅÄÖÅÎÎÑ: ÎÅ×ÉÚÎÁÞÅÎÁ ÚͦÎÎÁ \"%.*s\""
+msgid "warning: undefined variable '%.*s'"
+msgstr "попеÑ\80едженнÑ\8f: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ\87ена Ð·Ð¼Ñ\96нна \"%.*s\""
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, c-format
 msgid "sys$search() failed with %d\n"
-msgstr ""
+msgstr "sys$search() повернуто код помилки %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr ""
+msgstr "Попередження: порожнє переспрямування\n"
 
-#: vmsjobs.c:184
-#, fuzzy, c-format
-msgid "internal error: `%s' command_state"
-msgstr "×ÎÕÔÒ¦ÛÎÑ ÐÏÍÉÌËÁ: \"%s\" command_state %d Õ child_handler"
+#: vmsjobs.c:178
+#, c-format
+msgid "internal error: '%s' command_state"
+msgstr "внутрішня помилка: «%s» command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr ""
+"-попередження, ймовірно, вам варто повторно увімкнути обробку CTRL-Y з DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
-msgstr ""
+msgstr "ВБУДОВАНИЙ [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
-msgstr ""
+msgstr "ВБУДОВАНИЙ CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
-msgstr ""
+msgstr "ВБУДОВАНИЙ RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "îÅצÄÏÍÁ ×ÂÕÄÏ×ÁÎÁ ËÏÍÁÎÄÁ \"%s\".\n"
+msgstr "Невідома вбудована команда \"%s\".\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
-msgstr ""
+msgstr "Помилка, порожня команда\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr ""
+msgstr "Переспрямоване виведення з %s\n"
 
-#: vmsjobs.c:513
-#, fuzzy, c-format
+#: vmsjobs.c:509
+#, c-format
 msgid "Redirected error to %s\n"
-msgstr "ËÁÔÁÌÏÇ \"%s\"\n"
+msgstr "Повідомлення про помилку переспрямовано до %s\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, c-format
 msgid "Append output to %s\n"
-msgstr ""
+msgstr "Дописати виведенні дані до %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr ""
+msgstr "Переспрямовуємо виведення до %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Дописати %.*s і спорожнити\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "úÁͦÓÔØ ÚÁÄÁÎÏÇÏ ×ÉËÏÎÕ¤ÔØÓÑ %s\n"
+msgstr "Замість заданого виконується %s\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "ðÏÍÉÌËÁ ÐÏÒÏÄÖÅÎÎÑ ÐÒÏÃÅÓÕ, %d\n"
+msgstr "Помилка породження процесу, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
 msgstr ""
 "\n"
-"# ûÌÑÈÉ ÐÏÛÕËÕ VPATH\n"
+"# Шляхи пошуку VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# îÅ ×ÉÚÎÁÞÅÎÉÊ ÛÌÑÈ ÐÏÛÕËÕ \"vpath\"."
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Не визначено шлях пошуку \"vpath\"."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u \"vpath\" ÛÌÑÈÉ ÐÏÛÕËÕ.\n"
+"# %u шляхи пошуку \"vpath\".\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# îÅ ×ÉÚÎÁÞÅÎÉÊ ÚÁÇÁÌØÎÉÊ (ÚͦÎÎÁ \"VPATH\") ÛÌÑÈ ÐÏÛÕËÕ."
+"# Не визначено загальний шлях пошуку (змінна \"VPATH\")."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# úÁÇÁÌØÎÉÊ (ÚͦÎÎÁ \"VPATH\") ÛÌÑÈ ÐÏÛÕËÕ:\n"
+"# Загальний шлях пошуку (змінна \"VPATH\"):\n"
 "# "
 
-#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "óÉÎÔÁËÓÉÞÎÁ ÐÏÍÉÌËÁ, ×ÓÅ ÝÅ ×ÓÅÒÅÄÉΦ '\"'\n"
-
-#, fuzzy
-#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
-#~ 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\""
-
-#, fuzzy
-#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "æÌØ \"%s\" ÎŠצÄÐÏצÄÁ¤ ÚÒÁÚËՠæÌÅÊ"
-
-#~ msgid " impossibilities in %u directories.\n"
-#~ msgstr " ÎÅÄÏÓÑÖÎÉȠæÌÅÊ Õ %u ËÁÔÁÌÏÇÁÈ.\n"
-
-#~ msgid "# %u variables in %u hash buckets.\n"
-#~ msgstr "# %u ÚͦÎÎÉÈ Õ %u ÏÓÅÒÅÄËÁÈ ÈÅÛ-ÔÁÂÌÉæ.\n"
-
-#~ msgid "# No variables."
-#~ msgstr "# úͦÎÎÉÈ ÎÅÍÁ."
-
-#, fuzzy
-#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
-#~ msgstr ""
-#~ "# Õ ÓÅÒÅÄÎØÏÍÕ %.1f ÆÁÊ̦נՠÏÓÅÒÅÄËÕ, ÍÁËÓ. %u ÆÁÊ̦נՠÏÄÎÏÍÕ "
-#~ "ÏÓÅÒÅÄËÕ.\n"
-
-#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-#~ msgstr ""
-#~ "# Õ ÓÅÒÅÄÎØÏÍÕ %.1f ÚͦÎÎÉÈ × ÏÓÅÒÅÄËÕ, ÍÁËÓ. %u × ÏÄÎÏÍÕ ÏÓÅÒÅÄËÕ.\n"
-
-#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-#~ msgstr ""
-#~ "# Õ ÓÅÒÅÄÎØÏÍÕ %d.%d ÚͦÎÎÉÈ × ÏÓÅÒÅÄËÕ, ÍÁËÓ. %u × ÏÄÎÏÍÕ ÏÓÅÒÅÄËÕ.\n"
-
-#, fuzzy
-#~ msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n"
-#~ msgstr ""
-#~ "ðÒÁ×Á ÄÏÓÔÕÐÕ ÄÏ %s: ËÏÒÉÓÔÕ×ÁÞ %d (ĦÊÓÎÉÊ %d), ÇÒÕÐÁ %d (ĦÊÓÎÁ %d)\n"
-
-#~ msgid "*** Warning: File `%s' has modification time in the future (%s > %s)"
-#~ msgstr "*** õ×ÁÇÁ: ÆÁÊÌ \"%s\" ÍÁ¤ ÞÁÓ ÚͦÎÉ Õ ÍÁÊÂÕÔÎØÏÍÕ (%s > %s)"
-
-#~ 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      Free Software Foundation, Inc.\n"
-#~ "%sãŠצÌØÎÁ ÐÒÏÇÒÁÍÁ; ÐÏÄÒÏÂÉæ ÐÒÏ ÕÍÏ×ÁÈ ÐÏÛÉÒÅÎÎÑ ÄÉצÔØÓÑ\n"
-#~ "%sÕ ×ÉȦÄÎÏÍÕ ÔÅËÓÔ¦.  íÉ îå ÎÁÄÁ¤ÍÏ ÇÁÒÁÎÔ¦Ê; ÎÁצÔØ ÇÁÒÁÎÔ¦Ê\n"
-#~ "%sëïíåòã¶êîï· ã¶îîïóô¶ ÁÂÏ ðòéäáôîïóô¶ äìñ ëïîëòåôîï· ã¶ì¶.\n"
-#~ "\n"
-#~ "%sðÏצÄÏÍÌÑÊÔÅ ÐÒÏ ÐÏÍÉÌËÉ <bug-make@gnu.org>.\n"
-
-#~ msgid "Allow N jobs at once; infinite jobs with no arg"
-#~ msgstr ""
-#~ "úÁÐÕÓËÁÔÉ ÏÄÎÏÞÁÓÎÏ ÄÏ î ÚÁ×ÄÁÎØ; ÑËÝÏ ÁÒÇÕÍÅÎÔ ÎÅ ÚÁÄÁÎÉÊ,\n"
-#~ "  ÞÉÓÌÏ ÚÁ×ÄÁÎØ ÎÅÏÂÍÅÖÅÎÏ"
-
-#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "ðÅÒÅÊÔÉ Õ ëáôáìïç ÐÅÒÅÄ ÐÏÞÁÔËÏÍ ÐÒÁæ"
-
-#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "÷×ÁÖÁÔÉ æáêì ÎÅÏÂÍÅÖÅÎÏ ÎÏ×ÉÍ"
-
-#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "÷×ÁÖÁÔÉ æáêì ÄÕÖÅ ÓÔÁÒÉÍ ¦ ÎÅ ÐÅÒÅÚÂÉÒÁÔÉ ÊÏÇÏ"
-
-#~ msgid "DIRECTORY"
-#~ msgstr "ëáôáìïç"
-
-#~ msgid "Disable the built-in implicit rules"
-#~ msgstr "îÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ×ÂÕÄÏ×ÁΦ ÎÅÑ×Φ ÐÒÁ×ÉÌÁ"
-
-#, fuzzy
-#~ msgid "Disable the built-in variable settings"
-#~ msgstr "îÅ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ ×ÂÕÄÏ×ÁΦ ÎÅÑ×Φ ÐÒÁ×ÉÌÁ"
-
-#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "îÅ ×ÉËÏÎÕ×ÁÔÉ ËÏÍÁÎÄÉ, ÐÒÏÓÔÏ ÎÁÄÒÕËÕ×ÁÔÉ §È"
-
-#~ msgid "Don't echo commands"
-#~ msgstr "îÅ ×É×ÏÄÉÔÉ ËÏÍÁÎÄÉ"
-
-#~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr ""
-#~ "îÅ ÚÁÐÕÓËÁÔÉ ÐÁÒÁÌÅÌØΦ ÚÁ×ÄÁÎÎÑ ÐÏËÉ ÚÁ×ÁÎÔÁÖÅÎÎÑ ÎÅ ÚÎÉÚÉÔØÓÑ ÄÏ N"
-
-#~ msgid "Entering"
-#~ msgstr "÷ÈÏÖÕ Õ"
-
-#~ msgid "Environment variables override makefiles"
-#~ msgstr "úͦÎΦ ÓÅÒÅÄÏ×ÉÝÁ ÐÅÒÅËÒÉ×ÁÀÔØ ÚͦÎΦ, ×ÉÚÎÁÞÅΦ Õ make-ÆÁÊ̦"
-
-#~ msgid "FILE"
-#~ msgstr "æáêì"
-
-#~ msgid "FLAGS"
-#~ msgstr "ïúîáëé"
-
-#~ msgid "Ignore errors from commands"
-#~ msgstr "¶ÇÎÏÒÕ×ÁÔÉ ÐÏÍÉÌËÉ ËÏÍÁÎÄ"
-
-#~ msgid "Ignored for compatibility"
-#~ msgstr "¶ÇÎÏÒÏ×ÁÎÏ ÄÌÑ ÓÕͦÓÎÏÓÔ¦"
-
-#~ msgid "Initialized"
-#~ msgstr "¶Î¦Ã¦Á̦ÚÏ×ÁÎÉÊ"
-
-#~ msgid "Keep going when some targets can't be made"
-#~ msgstr "ðÒÏÄÏ×ÖÕ×ÁÔÉ ÒÏÂÏÔÕ, ÎÁצÔØ ÑËÝÏ ÄÅÑ˦ Ã¦Ì¦ ÎÅ ÄÏÓÑÇÎÕÔ¦"
-
-#~ msgid "Leaving"
-#~ msgstr "úÁÌÉÛÁÀ"
-
-#~ msgid "Print lots of debugging information"
-#~ msgstr "÷É×ÏÄÉÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÄÌѠצÄÌÁÇÏÄÖÅÎÎÑ"
-
-#~ msgid "Print make's internal database"
-#~ msgstr "îÁÄÒÕËÕ×ÁÔÉ ×ÎÕÔÒ¦ÛÎÀ ÂÁÚÕ ÄÁÎÉÈ make"
-
-#~ msgid "Print the current directory"
-#~ msgstr "îÁÄÒÕËÕ×ÁÔÉ ÐÏÔÏÞÎÉÊ ËÁÔÁÌÏÇ"
-
-#~ msgid "Print the version number of make and exit"
-#~ msgstr "ðÏËÁÚÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ×ÅÒÓ¦§ ¦ ×ÉÊÔÉ"
-
-#~ msgid "Print this message and exit"
-#~ msgstr "ðÏËÁÚÁÔÉ ÃÀ ÄÏצÄËÕ ¦ ×ÉÊÔÉ"
-
-#, fuzzy
-#~ msgid "Print various types of debugging information"
-#~ msgstr "÷É×ÏÄÉÔÉ ÐÏצÄÏÍÌÅÎÎÑ ÄÌѠצÄÌÁÇÏÄÖÅÎÎÑ"
-
-#~ msgid "Read FILE as a makefile"
-#~ msgstr "ðÒÏÞÉÔÁÔÉ æáêì ÑË make-ÆÁÊÌ"
-
-#~ msgid "Search DIRECTORY for included makefiles"
-#~ msgstr "ûÕËÁÔÉ make-ÆÁÊÌÉ, Ñ˦ ÎÅÏÂȦÄÎÏ ×ËÌÀÞÉÔÉ, Õ ÃØÏÍÕ ëáôáìïú¶"
-
-#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "ðÒÉÚÕÐÉÎÉÔÉ ÐÒÏÃÅÓÉ ÄÌÑ ÐÒɤÄÎÁÎÎѠצÄÌÁÇÏÄÖÕ×ÁÞÁ"
-
-#~ msgid "Touch targets instead of remaking them"
-#~ msgstr "ðÏÎÏ×ÉÔÉ ÞÁÓ ÓÔ×ÏÒÅÎÎѠæÌÅÊ, Á ÎÅ ÐÅÒÅÚÂÉÒÁÔÉ §È"
-
-#~ msgid "Turn off -w, even if it was turned on implicitly"
-#~ msgstr "÷¦ÄͦÎÉÔÉ ËÌÀÞ -w, ÎÁצÔØ ÑËÝÏ ÊÏÇÏ ÂÕÌÏ Ñ×ÎÏ ÚÁÚÎÁÞÅÎÏ"
-
-#~ msgid "Turns off -k"
-#~ msgstr "÷¦ÄͦÎÉÔÉ ËÌÀÞ -k"
-
-#~ msgid "Warn when an undefined variable is referenced"
-#~ msgstr "÷ÉÄÁ×ÁÔÉ ÐÏÐÅÒÅÄÖÅÎÎÑ ÐÒÉ ÐÏÓÉÌÁÎΦ ÎÁ ÎÅ×ÉÚÎÁÞÅÎÕ ÚͦÎÎÕ"
-
-#~ msgid ""
-#~ "\n"
-#~ "# %u files in %u hash buckets.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "# %u ÆÁÊ̦ננ%u ÏÓÅÒÅÄËÁÈ ÈÅÛ-ÔÁÂÌÉæ.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "# No files."
-#~ msgstr ""
-#~ "\n"
-#~ "# æÁÊ̦נÎÅÍÁ."
-
-#~ msgid "an unknown directory"
-#~ msgstr "ÎÅצÄÏÍÉÊ ËÁÔÁÌÏÇ"
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Некоректне значення члена \"update_status\"!"
 
-#~ msgid "directory `%s'\n"
-#~ msgstr "ËÁÔÁÌÏÇ \"%s\"\n"
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "невідомий режим трасування «%s»"
index acfdd46..ad334ae 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index 94b3402..ee0fea5 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.
+# Copyright © 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Clytie Siddall <clytie@riverland.net.au>, 2006-2010.
+# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2012.
+# Trần Ngọc Quân <vnwildman@gmail.com>, 2012-2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81\n"
+"Project-Id-Version: make 3.99.93\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\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"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-10-02 07:35+0700\n"
+"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
+"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
+"Language: vi\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"
+"Team-Website: <http://translationproject.org/team/vi.html>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 1.5.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Poedit-Language: Vietnamese\n"
+"X-Poedit-Country: VIET NAM\n"
 
-#: ar.c:48
+#: ar.c:46
 #, c-format
-msgid "attempt to use unsupported feature: `%s'"
-msgstr "đã cố sử dụng tính năng không được hỗ trợ « %s »"
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "đã dùng tính năng chưa được hỗ trợ: “%s”"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
-msgstr "bộ phạn kho touch chưa sẵn sàng trên VMS"
+msgstr "“touch” thành viên kho không có trên VMS"
 
-#: ar.c:149
+#: ar.c:147
 #, c-format
-msgid "touch: Archive `%s' does not exist"
-msgstr "touch: kho « %s » không tồn tại"
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Kho “%s” không tồn tại"
 
-#: ar.c:152
+#: ar.c:150
 #, c-format
-msgid "touch: `%s' is not a valid archive"
-msgstr "touch: « %s » không phải là một kho hợp lệ"
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: “%s” không phải là kho hợp lệ"
 
-#: ar.c:159
+#: ar.c:157
 #, 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 »"
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Thành viên “%s” không tồn tại trong “%s”"
 
-#: ar.c:166
+#: ar.c:164
 #, 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 »"
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: Gặp mã trả lại sai từ ar_member_touch trên “%s”"
 
-#: arscan.c:69
-#, fuzzy, c-format
+#: arscan.c:67
+#, 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"
+msgstr ""
+"lbr$set_module() đã không giải nén thông tin về mô-đun, trạng thái = %d"
 
-#: arscan.c:175
-#, fuzzy, c-format
+#: arscan.c:173
+#, c-format
 msgid "lbr$ini_control() failed with status = %d"
-msgstr "« lbr$ini_control » bị lỗi với trạng thái = %d"
+msgstr "lbr$ini_control() bị lỗi với trạng thái = %d"
 
-#: arscan.c:187
+#: arscan.c:185
 #, 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 »"
+msgid "unable to open library '%s' to lookup member '%s'"
+msgstr "không thể mở thư viện “%s” để tra tìm thành viên “%s”"
 
-#: arscan.c:850
+#: arscan.c:847
 #, 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"
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Thành viên “%s”%s: %ld byte tại %ld (%ld).\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
-msgstr " (có lẽ tên bá»\8b cụt)"
+msgstr " (có lẽ tên bá»\8b cắt ngắn)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  Ngày %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, chế độ = 0%o.\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Công thức có quá nhiều dòng (%ud)"
+
+#: commands.c:507
 msgid "*** Break.\n"
-msgstr "*** Ngắt\n"
+msgstr "*** Ngắt.\n"
 
-#: commands.c:622
+#: commands.c:630
 #, 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ỏ"
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Thành phần kho “%s” có thể là giả; chưa bị xóa bỏ"
 
-#: commands.c:625
+#: commands.c:633
 #, 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ỏ"
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Thành phần kho “%s” có thể là giả; chưa bị xóa bỏ"
 
-#: commands.c:638
+#: commands.c:646
 #, c-format
-msgid "*** [%s] Deleting file `%s'"
-msgstr "*** [%s] Đang xóa bỏ tập tin « %s »..."
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Đang xoá tập tin “%s”"
 
-#: commands.c:640
+#: commands.c:648
 #, c-format
-msgid "*** Deleting file `%s'"
-msgstr "*** Đang xóa bỏ tập tin « %s »..."
+msgid "*** Deleting file '%s'"
+msgstr "*** Đang xoá tập tin “%s”"
 
-#: commands.c:676
-#, fuzzy
+#: commands.c:684
 msgid "#  recipe to execute"
-msgstr "# các lệnh cần thi hành"
+msgstr "#  công thức cần thực hiện"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
-msgstr " (sẵn có):"
+msgstr " (dựng-sẵn):"
 
-#: commands.c:681
+#: commands.c:689
 #, c-format
-msgid " (from `%s', line %lu):\n"
-msgstr " (từ « %s », dòng %lu):\n"
+msgid " (from '%s', line %lu):\n"
+msgstr " (từ “%s”, dòng %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,228 +138,219 @@ msgstr ""
 "\n"
 "# Thư mục\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, 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"
+msgstr "# %s: không thể lấy thống kê.\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, 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"
+msgstr "# %s (khoá %s, mtime %d): không thể mở.\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, 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"
+msgstr "# %s (thiết bị %d, nút thông tin [%d,%d,%d]): không thể mở.\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, 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"
+msgstr "# %s (thiết bị %ld, nút thông tin %ld): không thể mở.\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
-msgstr "# %s (khóa %s, giờ_m %d): "
+msgstr "# %s (khoá %s, mtime %d): "
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (thiết bị %d, nút thông tin [%d,%d,%d]): "
+msgstr "# %s (thiết bị %d, inode [%d,%d,%d]): "
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (thiết bị %ld, nút thông tin %ld): "
+msgstr "# %s (thiết bị %ld, inode %ld): "
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "Không"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " tập tin, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "không"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
-msgstr " điều không thể"
+msgstr " không thể"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
-msgstr " cho đến đây."
+msgstr " cho đến giờ."
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
-msgstr " điều không thể trong %lu thư mục.\n"
+msgstr " việc không thể làm được trong %lu thư mục.\n"
 
-#: expand.c:127
+#: expand.c:125
 #, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
-msgstr "Biến đệ qui « %s » tham chiếu chính nó (cuối cùng)"
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Biến đệ quy “%s” (cuối cùng) lại tham chiếu đến chính nó"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
-msgstr "tham chiếu biến chưa có kết thúc"
+msgstr "tham chiếu biến chưa chấm dứt"
 
-#: 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: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:269
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Công thức được chỉ định cho tập tin “%s” tại %s:%lu,"
 
-#: file.c:275
+#: file.c:274
 #, 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 »."
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Tìm thấy công thức cho tập tin “%s” nhờ quy tắc tìm kiếm ngầm,"
 
-#: 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:277
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "nhưng “%s” bây giờ được cũng được xem là cùng tập tin “%s”."
 
-#: file.c:298
+#: file.c:280
 #, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+msgid "Recipe for '%s' will be ignored in favor of the one for '%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 »"
+"Công thức cho “%s” sẽ bị bỏ qua trong sự chấp thuận của một cái cho “%s”."
 
-#: file.c:303
+#: file.c:300
 #, 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 »"
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "không thể đổi tên “%s” hai chấm đơn thành “%s” hai chấm đôi"
 
-#: file.c:392
+#: file.c:305
 #, c-format
-msgid "*** Deleting intermediate file `%s'"
-msgstr "*** Đang xóa bỏ tập tin trung cấp « %s »..."
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "không thể đổi tên “%s” hai chấm đôi thành “%s” hai chấm đơn"
 
 #: file.c:396
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Đang xoá tập tin trung gian “%s”"
+
+#: file.c:400
 msgid "Removing intermediate files...\n"
-msgstr "Đang gỡ bỏ các tập tin trung cấp...\n"
+msgstr "Xoá các tập tin trung gian...\n"
 
-#: file.c:803
+#: file.c:808
 #, 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"
+msgstr "%s: Thời gian của tập tin ở ngoài phạm vi nên thay thế bằng %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
-msgstr "Giờ hiện thời"
+msgstr "Giờ hiện ti"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
-msgstr "# Không phải là đĩch:"
+msgstr "# Không phải là đích:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Tập tin qúy (điều kiện tiên quyết của .PRECIOUS)."
+msgstr "#  Tập tin giá trị (điều kiện tiên quyết của .PRECIOUS)."
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
-msgstr "# Đích giả (điều kiện tiên quyết của .PHONY)."
+msgstr "#  Đích giả (điều kiện tiên quyết của .PHONY)."
 
-#: file.c:933
-#, fuzzy
+#: file.c:958
 msgid "#  Command line target."
-msgstr "# Đích dòng lệnh."
+msgstr "#  Đích dòng lệnh."
 
-#: file.c:935
+#: file.c:960
 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 »."
+msgstr "#  Mặc định, MAKEFILES, hoặc makefile kiểu -include/sinclude."
+
+#: file.c:962
+msgid "#  Builtin rule"
+msgstr "#  Quy tắc dựng sẵn"
 
-#: file.c:937
+#: file.c:964
 msgid "#  Implicit rule search has been done."
-msgstr "# Mới tìm kiếm kiểu quy tắc ngầm."
+msgstr "#  Hoàn tất tìm quy tắc ngầm."
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
-msgstr "# Chưa tìm kiếm kiểu quy tắc ngầm."
+msgstr "#  Chưa hoàn tất tìm quy tắc ngầm."
 
-#: file.c:940
+#: file.c:967
 #, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
-msgstr "# Cuống mẫu ngầm/tĩnh: « %s »\n"
+msgid "#  Implicit/static pattern stem: '%s'\n"
+msgstr "#  Cuống mẫu ngầm/tĩnh: “%s”\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
-msgstr "# Tập tin là điều kiện tiên quyết trung cấp."
+msgstr "#  Tập tin là một điều kiện tiên quyết trung gian."
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
-msgstr "# Cũng tạo :"
+msgstr "#  Cũng tạo:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
-msgstr "# Chưa bao giờ kiểm tra giờ sửa đổi."
+msgstr "#  Chưa kiểm tra giờ sửa đổi."
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
-msgstr "# Tập tin không tồn tại."
+msgstr "#  Tập tin không tồn tại."
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
-msgstr "# Tập tin rất cũ."
+msgstr "#  Tập tin rất cũ."
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
-msgstr "# Sửa đổi cuối cùng %s\n"
+msgstr "#  Lần sửa cuối cùng %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
-msgstr "# Tập tin đã được cập nhật."
+msgstr "#  Tập tin đã được cập nhật."
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
-msgstr "# Tập tin chưa được cập nhật."
+msgstr "#  Tập tin chưa được cập nhật."
 
-#: file.c:968
-#, fuzzy
+#: file.c:995
 msgid "#  Recipe currently running (THIS IS A BUG)."
-msgstr "# Các lệnh đang chạy (ĐÂY LÀ LỖI)."
+msgstr "#  Công thức đang chạy (ĐÂY LÀ MỘT LỖI)."
 
-#: file.c:971
-#, fuzzy
+#: file.c:998
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
-msgstr "# Các lệnh phụ thuộc đang chạy (ĐÂY LÀ LỖI)."
+msgstr "#  Công thức phụ thuộc đang chạy (ĐÂY LÀ MỘT LỖI)."
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
-msgstr "# Đã được cập nhật."
+msgstr "#  Cập nhật thành công."
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
-msgstr "# Cần thiết cập nhật (« -q » đã lập)."
+msgstr "#  Cần được cập nhật (-q được đặt)."
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
-msgstr "# Việc cập nhật bị lỗi."
+msgstr "#  Gặp lỗi khi cập nhật."
 
-#: 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)!"
-
-#: 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:1019
+msgid "#  Invalid value in 'command_state' member!"
+msgstr "#  Gặp giá trị sai trong thành phần “command_state”!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -354,142 +358,190 @@ msgstr ""
 "\n"
 "# Tập tin"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
-"# thống kê bảng băm các tập tin:\n"
+"# thống kê bảng băm tập tin:\n"
 "# "
 
-#: 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ừ)"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Trường “%s” chưa được nhớ đệm: %s"
 
-#: 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:742
+msgid "non-numeric first argument to 'word' function"
+msgstr "đối số thứ nhất không phải dạng số cho hàm “word”"
 
-#: 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:747
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "đối số thứ nhất cho hàm “word” phải lớn hơn 0"
 
-#: 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:767
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "đối số thứ nhất không phải số cho hàm “wordlist”"
 
-#: function.c:1458
-#, fuzzy, c-format
-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=%ld)\n"
+#: function.c:769
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "đối số thứ hai không phải số cho hàm “wordlist”"
 
-#: function.c:1469
-#, fuzzy, c-format
-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=%ld)\n"
+#: function.c:1460
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) gặp lỗi (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1483
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) gặp lỗi (e=%ld)\n"
+
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "Việc « CreatePipe() » (tạo ống dẫn) bị lỗi (e=%ld)\n"
+msgstr "CreatePipe() bị lỗi (e=%ld)\n"
 
-#: function.c:1479
-#, fuzzy
+#: function.c:1498
 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"
+msgstr "windows32_openpipe(): process_init_fd() gặp lỗi\n"
 
-#: function.c:1728
+#: function.c:1792
 #, 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"
+msgstr "Dọn dẹp tập tin bó tạm %s\n"
 
-#: function.c:2150
+# Variable: do not translate/ biến: đừng dịch
+#: function.c:2151
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
-msgstr "Không có đủ đối số (%d) tới hàm « %s »"
+msgid "open: %s: %s"
+msgstr "mở: %s: %s"
 
-#: function.c:2162
+#: function.c:2158
 #, 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 »"
+msgid "write: %s: %s"
+msgstr "ghi: %s: %s"
 
-#: function.c:2212
+#: function.c:2164
 #, 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 »"
+msgid "Invalid file operation: %s"
+msgstr "Thao tác tập tin không hợp lệ: %s"
 
-#: getopt.c:661
+#: function.c:2279
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: tùy chọn « %s » là mơ hồ\n"
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "không đủ số đối số (%d) cho hàm “%s”"
 
-#: getopt.c:685
+#: function.c:2291
 #, 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"
+msgid "unimplemented on this platform: function '%s'"
+msgstr "chưa được viết mã thi hành trên hệ thống này: hàm “%s”"
 
-#: getopt.c:690
+#: function.c:2354
 #, 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"
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "cuộc gọi chưa được chấm dứt cho hàm “%s”: thiếu “%c”"
 
-#: getopt.c:707 getopt.c:880
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
+#, fuzzy, c-format
+msgid "Invalid function name: %s\n"
+msgstr "Thao tác tập tin không hợp lệ: %s"
+
+#: function.c:2550
+#, c-format
+msgid "Function name too long: %s\n"
+msgstr "Tên hàm quá dài: %s\n"
+
+#: function.c:2552
+#, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "số lượng đối số tối thiểu (%d) là không hợp lệ cho hàm “%s”\n"
+
+#: function.c:2555
+#, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "số lượng đối số tối đa (%d) là không hợp lệ cho hàm “%s”\n"
+
+#: getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: tùy chọn “%s” chưa rõ ràng\n"
+
+#: getopt.c:683
 #, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: tùy chọn « %s » cần đến đối số\n"
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn “--%s” không nhận một đối số\n"
 
-#: getopt.c:736
+#: getopt.c:688
 #, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: không nhận ra tùy chọn « --%s »\n"
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn “%c%s” không nhận một đối số\n"
 
-#: getopt.c:740
+#: getopt.c:705 getopt.c:878
 #, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: không nhận ra tùy chọn « %c%s »\n"
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: tùy chọn “%s” cần một đối số\n"
 
-#: getopt.c:766
+#: getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: không nhận ra tùy chọn “--%s”\n"
+
+#: getopt.c:738
+#, 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:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
-msgstr "%s: không cho phép tùy chọn « -- %c »\n"
+msgstr "%s: tùy chọn không hợp lệ -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
-msgstr "%s: tùy chọn không hợp lệ « -- %c »\n"
+msgstr "%s: tùy chọn không hợp lệ -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: tùy chọn cần đến đối số « -- %c »\n"
+msgstr "%s: tùy chọn cần một đối số -- %c\n"
+
+#: getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n"
 
-#: getopt.c:846
+#: getopt.c:862
 #, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: tùy chọn « -W %s » là mơ hồ\n"
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: tùy chọn “-W %s” không nhận một đối số\n"
 
-#: getopt.c:864
+#: guile.c:55
 #, 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"
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Đang khai triển “%s”\n"
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Đang định giá “%s”\n"
 
 #: hash.c:49
-#, fuzzy, c-format
+#, 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"
+msgstr "không thể cấp phát %lu byte cho bảng băm: hết bộ nhớ"
 
 #: hash.c:280
 #, c-format
 msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Trọng tải=%ld/%ld=%.0f%%, "
+msgstr "Tải =%ld/%ld=%.0f%%, "
 
 #: hash.c:282
 #, c-format
@@ -499,464 +551,531 @@ msgstr "Băm lại=%d, "
 #: hash.c:283
 #, c-format
 msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Xung đột=%ld/%ld=%.0f%%"
+msgstr "Xung đột  =%ld/%ld=%.0f%%"
 
-#: implicit.c:40
+#: implicit.c:38
 #, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
-msgstr "Đang tìm quy tắc nguầm cho « %s ».\n"
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Tìm quy tắc ngầm cho “%s”.\n"
 
-#: implicit.c:56
+#: implicit.c:54
 #, 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"
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Tìm quy tắc ngầm về thành phần kho cho “%s”.\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
-msgstr "Đang tránh sự đệ qui quy tắc ngầm.\n"
+msgstr "Tránh quy tắc ngầm đệ quy.\n"
+
+#: implicit.c:486
+#, c-format
+msgid "Stem too long: '%.*s'.\n"
+msgstr "Stem quá dài: “%.*s”.\n"
 
 #: 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"
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Thử quy tắc mẫu với cuống “%.*s”.\n"
 
-#: implicit.c:674
+#: implicit.c:697
 #, 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"
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Từ chối điều kiện tiên quyết không thể thỏa “%s”.\n"
 
-#: implicit.c:675
+#: implicit.c:698
 #, 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"
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Từ chối điều kiện tiên quyết ngầm không thể “%s”.\n"
 
-#: implicit.c:688
+#: implicit.c:711
 #, c-format
-msgid "Trying rule prerequisite `%s'.\n"
-msgstr "Đang thử điều kiện tiên quyết quy tắc « %s ».\n"
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Thử điều kiện tiên quyết quy tắc “%s”.\n"
 
-#: implicit.c:689
+#: implicit.c:712
 #, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
-msgstr "Đang thử điều kiện tiên quyết ngầm « %s ».\n"
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Thử điều kiện tiên quyết ngầm “%s”.\n"
 
-#: implicit.c:728
+#: implicit.c:751
 #, 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"
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Tìm thấy điều kiện tiên quyết “%s” làm VPATH “%s”\n"
 
-#: implicit.c:742
+#: implicit.c:765
 #, 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"
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Tìm quy tắc có tập tin trung gian “%s”.\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
-msgstr "Không thể tạo tên tập tin tạm thời\n"
+msgstr "Không thể tạo tập tin tạm\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] Lỗi 0x%x (bị bỏ qua)"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (đổ lõi)"
 
-#: job.c:450
+#: job.c:487
+msgid " (ignored)"
+msgstr " (bỏ qua)"
+
+#: job.c:491 job.c:1994
+msgid "<builtin>"
+msgstr "<dựng-sẵn>"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] Lỗi 0x%x"
+msgid "%s: recipe for target '%s' failed"
+msgstr "%s: công thức cho đích “%s” gặp lỗi"
 
-#: job.c:454
+#: job.c:510
 #, c-format
-msgid "[%s] Error %d (ignored)"
-msgstr "[%s] Lỗi %d (bị bỏ qua)"
+msgid "%s[%s] Error 0x%x%s"
+msgstr "%s[%s] Lỗi 0x%x%s"
 
-#: job.c:455
+#: job.c:513
 #, c-format
-msgid "*** [%s] Error %d"
-msgstr "*** [%s] Lỗi %d"
+msgid "%s[%s] Error %d%s"
+msgstr "%s[%s] Lỗi %d%s"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (lõi bị đổ)"
+# Variable: don't translate / Biến: đừng dịch
+#: job.c:517
+#, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s[%s] %s%s%s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Đang đợi các việc chưa xong..."
+msgstr "*** Đang đợi những công việc chưa hoàn tất..."
 
-#: job.c:579
-#, fuzzy, c-format
+#: job.c:639
+#, c-format
 msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Điều con động 0x%08lx (%s) PID %ld %s\n"
+msgstr "Tiến trình con còn sống %p (%s) PID %s %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
-msgstr " (từ xa)"
+msgstr " (máy chủ)"
 
-#: job.c:758
-#, fuzzy, c-format
+#: job.c:829
+#, 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"
+msgstr "Đang mất tiến trình con %p PID %s %s\n"
 
-#: job.c:759
-#, fuzzy, c-format
+#: job.c:830
+#, 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"
+msgstr "Đang thắng lại tiến trình con %p PID %s %s\n"
 
-#: job.c:763
+#: job.c:837
 #, 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"
+msgstr "Dọn dẹp tập tin bó tạm %s\n"
 
-#: job.c:861
-#, fuzzy, c-format
+#: job.c:843
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "Dọn dẹp tập tin bó tạm %s gặp lỗi (%d)\n"
+
+#: job.c:949
+#, 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"
+msgstr "Bỏ tiến trình con %p PID %s%s khỏi xâu.\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "ghi trình phục vụ công việc"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "giải phóng tín hiệu jobserver: (Lỗi %ld: %s)"
 
-#: job.c:922
-#, fuzzy, c-format
+#: job.c:1011 job.c:1025
+#, 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"
+msgstr "Đã giải phóng thẻ bài cho tiến trình con %p (%s).\n"
+
+#: job.c:1023
+msgid "write jobserver"
+msgstr "ghi lại trình phục vụ công việc"
 
-#: job.c:1453 job.c:2094
+#: job.c:1612 job.c:2332
 #, 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="
-"%ld)\n"
+msgstr "process_easy() gặp lỗi khi chạy tiến trình (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
 "Counted %d args in failed launch\n"
 msgstr ""
 "\n"
-"Đã đếm %d đối số trong việc khởi chạy bị lỗi\n"
+"Đếm được %d đối số trong lần khởi chạy bị lỗi\n"
 
-#: job.c:1525
-#, fuzzy, c-format
+#: job.c:1685
+#, 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"
+msgstr "Đặt tiến trình con %p (%s) PID %s%s vào xâu.\n"
 
-#: job.c:1778
-#, fuzzy, c-format
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "chờ tín hiệu hay tiến trình con: (Lỗi %ld: %s)"
+
+#: job.c:1967
+#, 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"
+msgstr "Đã lấy thẻ bài cho điều con  %p (%s).\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
-msgstr "đọc ống dẫn của các cộng việc"
+msgstr "đọc ống dẫn công việc"
 
-#: job.c:1798
+#: job.c:2003
 #, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+msgid "%s: target '%s' does not exist"
+msgstr "%s: đích “%s” không tồn tại"
 
-#: 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:2005
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: cập nhật đích “%s”, cần bởi: %s"
 
-#: job.c:1910
+#: job.c:2118
 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"
+msgstr "không thể buộc giới hạn tải trên hệ điều hành này"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
-msgstr "không thể buộc hạn chế trọng tải: "
+msgstr "không thể buộc giới hạn tải: "
 
-#: job.c:1985
+#: job.c:2199
 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"
+"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu vào chuẩn\n"
 
-#: job.c:1987
+#: job.c:2210
 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"
+"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra chuẩn\n"
+
+#: job.c:2223
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra lỗi chuẩn\n"
 
-#: job.c:2015
+#: job.c:2238
 msgid "Could not restore stdin\n"
-msgstr "Không thể phục hồi thiết bị nhập chuẩn\n"
+msgstr "Không thể phục hồi đầu vào chuẩn\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
-msgstr "Không thể phục hồi thiết bị xuất chuẩn\n"
+msgstr "Không thể phục hồi đầu ra chuẩn\n"
 
-#: job.c:2127
-#, fuzzy, c-format
+#: job.c:2254
+msgid "Could not restore stderr\n"
+msgstr "Không thể phục hồi đầu ra lỗi tiêu chuẩn\n"
+
+#: job.c:2365
+#, c-format
 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"
+msgstr "đặt điều con đã bắt là PID %s, vẫn còn đợi PID %s\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
-msgstr "%s: Không tìm thấy lệnh."
+msgstr "%s: Không tìm thấy lệnh"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Không tìm thấy chương trình hệ vỏ"
 
-#: job.c:2237
+#: job.c:2472
 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"
+msgstr "spawnvpe: cạn không gian dành cho biến môi trường"
 
-#: job.c:2461
+#: job.c:2709
 #, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
-msgstr "$SHELL đã thay đổi (đã « %s », là « %s »)\n"
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL thay đổi (trước là “%s”, giờ là “%s”)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
-msgstr "Đang tạo tập tin bó tạm thời: %s\n"
+msgstr "Tạo tập tin bó lệnh tạm: %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Nội dung tập tin bó lệnh:\n"
+"\t@echo off\n"
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
+"Nội dung tập tin bó lệnh:%s\n"
+"\t%s\n"
 
-#: job.c:3065
+#: job.c:3444
 #, 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"
+msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n"
 
-#: main.c:303
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[KIỂU] (--output-sync[=KIỂU]) chưa được cấu hình cho lần dịch này."
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Gặp lỗi khi mở bảng ký hiệu toàn cục: %s"
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Đối tượng %s đã được tải không được công bố là tương thích GPL"
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Gặp lỗi khi tải ký hiệu %s từ %s: %s"
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Tên ký hiệu là trống rỗng cho việc tải: %s"
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Đang tải ký hiệu %s từ %s\n"
+
+#: load.c:229
+msgid "The 'load' operation is not supported on this platform."
+msgstr "không hỗ trợ thao tác “load” trên hệ thống này."
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "Tùy chọn:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
-msgstr "  -b, -m                      Bá»\8b bá»\8f qua Ä\91á»\83 tÆ°Æ¡ng thích.\n"
+msgstr "  -b, -m                      Bỏ qua để tương thích.\n"
 
-#: main.c:306
+#: main.c:315
 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"
+msgstr "  -B, --always-make           Tạo mọi đích vô điều kiện.\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C THƯ_MỤC, --directory=THƯ_MỤC\n"
-"                              Chuyển đổi sang thư mục này, trước hết.\n"
+"                              Chuyển sang THƯ MỤC này trước khi làm.\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
-msgstr "  -d                          In ra rất nhiều thông tin _gỡ lỗi_.\n"
+msgstr "  -d                          In rất nhiều thông tin gỡ rối.\n"
 
-#: main.c:313
+#: main.c:322
 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"
+"  --debug[=CỜ...]             In nhiều loại thông tin gỡ rối khác nhau.\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
 msgstr ""
 "  -e, --environment-overrides\n"
-"                              Các biến _môi trường có quyền cao hơn_\n"
-"\t\t\t\t\tcác tập tin tạo (makefile).\n"
+"                              Biến môi trường đè tập tin makefile.\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
+"  --eval=CHUỖI                Định lượng CHUỖI như một lệnh makefile.\n"
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
 msgstr ""
-"  -f TẬP_TIN, --file=TẬP_TIN, --makefile=TẬP_TIN\n"
-"                              Đọc tập tin này dạng tập tin tạo (makefile).\n"
+"  -f TẬP-TIN, --file=TẬP-TIN, --makefile=TẬP-TIN\n"
+"                              Đọc TẬP-TIN dạng makefile.\n"
 
-#: main.c:323
+#: main.c:332
 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"
+msgstr "  -h, --help                  Hiển thị trợ giúp này và thoát.\n"
 
-#: main.c:325
-#, fuzzy
+#: main.c:334
 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"
+msgstr "  -i, --ignore-errors         Bỏ qua lỗi từ công thức.\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
 msgstr ""
 "  -I THƯ_MỤC, --include-dir=THƯ_MỤC\n"
-"                              Tìm kiếm tập tin tạo (makefile) đã _bao gồm_\n"
-"\t\t\t\t\ttrong _thư mục_ này.\n"
+"                              Quét THƯ-MỤC này tìm makefile con.\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
-"  -j [N], --jobs[=N]          Cho phép N (số) _công việc_ đồng thời;\n"
-"\t\t\t\t\t\tvô hạn khi không có đối số\n"
+"  -j [N], --jobs[=N]          Cho phép N công việc đồng thời; không có đối "
+"số thì vô hạn.\n"
 
-#: main.c:332
+#: main.c:341
 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"
+msgstr "  -k, --keep-going            Cứ tiếp tục khi không thể tạo đích.\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
 "N.\n"
 msgstr ""
-"  -l [N], --load-average[=N], --max-load[=N]\n"
-"                       Đừng khởi chạy nhiều công việc, trừ trọng tải dưới N "
-"(số).\n"
+"  -l [SỐ], --load-average[=N], --max-load[=N]\n"
+"                              Chỉ chạy nhiều công việc nếu tải dưới N.\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
-"  -L, --check-symlink-times\n"
-"\t\t\tDùng giờ_m cuối cùng giữa liên kết tượng trưng và đích.\n"
-"\t(_kiểm tra giờ liên kết tượng trưng_)\n"
+"  -L, --check-symlink-times   Dùng mtime mới nhất giữa liên kết và đích.\n"
 
-#: main.c:339
-#, fuzzy
+#: main.c:348
 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"
-"                             Đừ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"
+"                              Không chạy công thức; chỉ in chúng ra.\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
 "it.\n"
 msgstr ""
-"  -o TẬP_TIN, --old-file=TẬP_TIN, --assume-old=TẬP_TIN\n"
-"                             Xem tập tin này là rất cũ nên đừng tạo lại nó.\n"
-"\t(_cũ, tập tin cũ, giả sử cũ_)\n"
+"  -o TẬP-TIN, --old-file=TẬP-TIN, --assume-old=TẬP-TIN\n"
+"                              Coi TẬP-TIN là rất cũ và không tạo lại.\n"
 
-#: main.c:345
-msgid "  -p, --print-data-base       Print make's internal database.\n"
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
 msgstr ""
-"  -p, --print-data-base      _In ra cơ sở dữ liệu_ nội bộ của trình make.\n"
+"  -O[KIỂU], --output-sync[=KIỂU]\n"
+"                              Đồng bộ hóa kết xuất công việc song song theo "
+"KIỂU.\n"
 
-#: main.c:347
-#, fuzzy
+#: main.c:357
+msgid "  -p, --print-data-base       Print make's internal database.\n"
+msgstr "  -p, --print-data-base       In cơ sở dữ liệu nội bộ của make.\n"
+
+#: main.c:359
 msgid ""
 "  -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"
+"  -q, --question              Không chạy; mã thoát là \"đã cập nhật\".\n"
 
-#: main.c:349
+#: main.c:361
 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"
+msgstr "  -r, --no-builtin-rules      Tắt quy tắc ngầm dựng sẵn.\n"
 
-#: main.c:351
+#: main.c:363
 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"
+msgstr "  -R, --no-builtin-variables  Tắt đặt biến dựng sẵn.\n"
 
-#: main.c:353
-#, fuzzy
+#: main.c:365
 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"
+msgstr "  -s, --silent, --quiet       Không in lại công thức.\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
 msgstr ""
-"  -S, --no-keep-going, --stop\t\tTắt « -k ».\n"
-"\t(không cứ làm, dừng)\n"
+"  -S, --no-keep-going, --stop\n"
+"                              Tắt -k.\n"
 
-#: main.c:358
+#: main.c:370
 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"
+msgstr "  -t, --touch                 Sờ đích thay vì tạo lại.\n"
+
+#: main.c:372
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --trace                     Hiển thị thông tin dấu vết.\n"
 
-#: main.c:360
+#: main.c:374
 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"
+msgstr "  -v, --version               Hiển thị phiên bản make và thoát.\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
-msgstr "  -w, --print-directory       _In ra thư mục_ hiện thời.\n"
+msgstr "  -w, --print-directory       Hiển thị thư mục hiện thời.\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
-msgstr ""
-"  --no-print-directory        Tắt « -w », dù khi nó được bật ngầm\n"
-"\t(_không in ra thư mục_)\n"
+msgstr "  --no-print-directory        Tắt -w, thậm chí nếu được bật ngầm.\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
 msgstr ""
-"  -W TẬP_TIN\n"
-"  --what-if=TẬP_TIN\n"
-"  --new-file=TẬP_TIN\n"
-"  --assume-new=TẬP_TIN\n"
-"                              \t\t\tXem là tập tin này là mới vô hạn.\n"
-"\t(_gì nếu, tập tin mới, giả sử mới_)\n"
-
-#: main.c:369
+"  -W TẬP-TIN, --what-if=TẬP-TIN, --new-file=TẬP-TIN, --assume-new=TẬP-TIN\n"
+"                              Giả định TẬP-TIN là mới vô hạn.\n"
+
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr ""
-"  --warn-undefined-variables\n"
-"\t\t_Cảnh báo_ khi tham chiếu một _biến chưa được định nghĩa_.\n"
+"  --warn-undefined-variables  Cảnh báo tham chiếu đến biến chưa xác định.\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
-msgstr "chuỗi rỗng không hợp lệ dạng tên tập tin"
+msgstr "chuỗi rỗng không hợp lệ làm tên tập tin"
 
-#: main.c:650
+#: main.c:734
 #, c-format
-msgid "unknown debug level specification `%s'"
-msgstr "không biết đặc tả cấp gỡ lỗi « %s »"
+msgid "unknown debug level specification '%s'"
+msgstr "không rõ đặc tả cấp gỡ rối “%s”"
 
-#: main.c:690
-#, fuzzy, c-format
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "không hiểu kiểu output-sync “%s”"
+
+#: main.c:787
+msgid "internal error: multiple --sync-mutex options"
+msgstr "lỗi nội bộ: có nhiều tùy chọn --sync-mutex"
+
+#: main.c:848
+#, c-format
 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%lx, địa chỉ = 0x%"
-"lx)\n"
+msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n"
 
-#: main.c:697
-#, fuzzy, c-format
+#: main.c:855
+#, c-format
 msgid ""
 "\n"
 "Unhandled exception filter called from program %s\n"
@@ -965,228 +1084,233 @@ msgid ""
 "ExceptionAddress = 0x%p\n"
 msgstr ""
 "\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"
+"Bộ lọc ngoại lệ không quản lý được gọi từ chương trình %s\n"
+"ExceptionCode (mã ngoại lệ) = %lx\n"
+"ExceptionFlags (các cờ ngoại lệ) = %lx\n"
+"ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n"
 
-#: main.c:705
-#, fuzzy, c-format
+#: main.c:863
+#, c-format
 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"
+msgstr "Vi phạm truy cập: thao tác ghi tại địa chỉ 0x%p\n"
 
-#: main.c:706
-#, fuzzy, c-format
+#: main.c:864
+#, c-format
 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"
+msgstr "Vi phạm truy cập: thao tác đọc tại địa chỉ 0x%p\n"
 
-#: main.c:781 main.c:792
-#, fuzzy, c-format
+#: main.c:940 main.c:955
+#, 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"
+msgstr "find_and_set_shell() đang đặt default_shell = %s\n"
 
-#: main.c:834
-#, fuzzy, c-format
+#: main.c:1008
+#, 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"
+msgstr "find_and_set_shell() đã quét đường dẫn thì đặt default_shell = %s\n"
 
-#: main.c:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
-msgstr "%s đang ngưng được 30 giây..."
+msgstr "%s đang ngưng trong 30 giây..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
-msgstr "đã ngủ(30). Đang tiếp tục.\n"
-
-#: 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."
+msgstr "đã ngủ(30). Tiếp tục.\n"
 
-#: 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:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "lỗi nội bộ: có nhiều tùy chọn --jobserver-fds"
 
-#: main.c:1545
-msgid "fwrite (temporary file)"
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
 msgstr ""
-"fwrite (tập tin tạm thời)\n"
-"  (_ghi tập tin_)"
+"lỗi nội tại: không thể mở cờ hiệu máy phục vụ công việc “%s”: (Lỗi %ld: %s)"
 
-#: 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: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: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:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Ứng dụng khách jobserver (cờ hiệu %s)\n"
 
-#: main.c:1727
+#: main.c:1551
 #, 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 »."
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "lỗi nội bộ: gặp chuỗi --jobserver-fds “%s” không hợp lệ"
 
-#: main.c:1730
+#: main.c:1554
 #, c-format
 msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Ứng dụng khách jobserver (fds %d,%d)\n"
 
-#: main.c:1740
+#: main.c:1567
 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)."
+msgstr "cảnh báo: -jN bị ép buộc trong make con: tắt chế độ jobserver."
 
-#: main.c:1750
+#: main.c:1583
 msgid "dup jobserver"
-msgstr "dup jobserver (sao lục trình phục vụ công việc)"
+msgstr "dup jobserver"
 
-#: main.c:1753
+#: main.c:1586
 msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+"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 jobserver không sẵn sàng: dùng -j1. Thêm “+” vào quy tắc "
+"make cha."
+
+#: main.c:1752
+msgid "Makefile from standard input specified twice."
+msgstr "Tập tin makefile từ đầu vào chuẩn được ghi hai lần."
+
+#: main.c:1790 vmsjobs.c:496
+msgid "fopen (temporary file)"
+msgstr "fopen (tập tin tạm)"
+
+#: main.c:1796
+msgid "fwrite (temporary file)"
+msgstr "fwrite (tập tin tạm)"
 
-#: main.c:1777
+#: main.c:1984
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Không hỗ trợ công việc song song (-j) trên hệ thống này."
+
+#: main.c:1985
+msgid "Resetting to single job (-j1) mode."
+msgstr "Đặt lại thành chế độ công việc đơn (-j1)."
+
+#: main.c:2006
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Khe jobserver bị giới hạn thành %d\n"
+
+#: main.c:2012
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "đang tạo tín hiệu jobserver: (Lỗi %ld: %s)"
+
+#: main.c:2019
 msgid "creating jobs pipe"
-msgstr "đang tạo ống dẫn công việc"
+msgstr "tạo ống dẫn công việc"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
-msgstr "init jobserver pipe (sở khởi ống dẫn trình phục vụ công việc)"
+msgstr "init jobserver pipe"
 
-#: main.c:1812
+#: main.c:2064
 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 »."
+msgstr "Không hỗ trợ liên kết mềm: tắt -L."
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
-msgstr "Đạng cập nhật các tập tin tạo (makefile)...\n"
+msgstr "Cập nhật makefile...\n"
 
-#: main.c:1917
+#: main.c:2174
 #, 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"
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Makefile “%s” bị lặp; không tạo lại nó.\n"
 
-#: main.c:1996
+#: main.c:2253
 #, 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."
+msgid "Failed to remake makefile '%s'."
+msgstr "Gặp lỗi khi làm lại makefile “%s”."
 
-#: main.c:2013
+#: main.c:2270
 #, 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 »."
+msgid "Included makefile '%s' was not found."
+msgstr "Không tìm thấy makefile bao gồm “%s”."
 
-#: main.c:2018
+#: main.c:2275
 #, c-format
-msgid "Makefile `%s' was not found"
-msgstr "Không tìm thấy tập tin tạo (makefile) « %s »."
+msgid "Makefile '%s' was not found"
+msgstr "Không tìm thấy makefile “%s”."
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
-msgstr "Không thể chuyển đổi về thư mục gốc."
+msgstr "Không thể chuyển về thư mục gốc."
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
-msgstr "Đang thực hiện lại[%u]:"
+msgstr "Thực hiện lại[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
-msgstr "unlink (bỏ liên kết) (tập tin tạm thời): "
+msgstr "unlink (bỏ liên kết tập tin tạm): "
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
-msgstr "« .DEFAULT_GOAL » (đích mặc định) chứa nhiều đích."
+msgstr ".DEFAULT_GOAL chứa nhiều đích"
 
-#: main.c:2270
+#: main.c:2518
 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"
+msgstr "Chưa xác định đích, và không tìm thấy makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "Không có đích"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
-msgstr "Đạng cập nhật các đích mục tiêu...\n"
+msgstr "Cập nhật đích mục tiêu...\n"
 
-#: main.c:2306
+#: main.c:2550
 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."
+"cảnh báo: Phát hiện lệch giờ. Bản dịch của bạn có thể không hoàn thiện."
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
-msgstr "Cách sử dụng: %s [tùy_chọn...] [đích] ...\n"
+msgstr "Cách dùng: %s [các_tùy_chọn] [đích] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
 "This program built for %s\n"
 msgstr ""
 "\n"
-"Chương trình này đã được xây dụng cho %s\n"
+"Chương trình này đã được dịch cho %s\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
 "This program built for %s (%s)\n"
 msgstr ""
 "\n"
-"Chương trình này đã được xây dụng cho %s (%s)\n"
+"Chương trình này đã được dịch cho %s (%s)\n"
 
-#: main.c:2481
+#: main.c:2729
 #, 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"
+msgstr ""
+"Hãy thông báo lỗi cho <bug-make@gnu.org>\n"
+"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\n"
 
-#: 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:2810
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "tùy chọn “%s%s” cần một đối số là chuỗi khác rỗng"
 
-#: main.c:2617
+#: main.c:2864
 #, 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"
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "tùy chọn “-%c” cần một đối số số nguyên dương"
 
-#: main.c:3054
-#, fuzzy, c-format
+#: main.c:3253
+#, c-format
 msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"%sChương trình này đã được xây dụng cho %s\n"
+msgstr "%sĐược dịch cho %s\n"
 
-#: main.c:3056
-#, fuzzy, c-format
+#: main.c:3255
+#, c-format
 msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"%sChương trình này đã được xây dụng cho %s (%s)\n"
+msgstr "%sĐược dịch cho %s (%s)\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1194,128 +1318,132 @@ msgid ""
 "%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 ""
+"%sGiấy phép GPL pb3+: Giấy phép Công cộng GNU phiên bản 3 hay sau <http://"
+"gnu.org/licenses/gpl.html>\n"
+"%sĐây là phần mềm tự do: bạn có quyền sửa đổi và phát hành lại nó.\n"
+"%sKHÔNG CÓ BẢO HÀNH GÌ CẢ, với điều khiển được pháp luật cho phép.\n"
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
 "# Make data base, printed on %s"
 msgstr ""
 "\n"
-"# Cơ sở dữ liệu Make, được in ra vào %s"
+"# Cơ sở dữ liệu Make, in lúc %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
 "# Finished Make data base on %s\n"
 msgstr ""
 "\n"
-"# Mới xong cơ sở dữ liệu Make vào %s\n"
+"# Hoàn tất cơ sở dữ liệu Make lúc %s\n"
+
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "Lỗi lạ %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "hết bộ nhớ ảo"
+
+#: misc.c:522
+#, 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:543
+msgid "Initialized access"
+msgstr "Truy cập đã được khởi tạo"
+
+#: misc.c:622
+msgid "User access"
+msgstr "Truy cập người dùng"
 
-#: main.c:3237
+#: misc.c:670
+msgid "Make access"
+msgstr "Truy cập Make"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "Truy cập con"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Đang vào một thư mục lạ\n"
+msgstr "%s: Vào thư mục lạ\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Đang rời khỏi một thư mục lạ\n"
+msgstr "%s: Rời khỏi thư mục lạ\n"
 
-#: main.c:3242
+#: output.c:133
 #, c-format
-msgid "%s: Entering directory `%s'\n"
-msgstr "%s: Đang vào thư mục « %s »\n"
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Vào thư mục “%s”\n"
 
-#: main.c:3245
+#: output.c:135
 #, c-format
-msgid "%s: Leaving directory `%s'\n"
-msgstr "%s: Đang rời khỏi thư mục « %s »\n"
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Rời thư mục “%s”\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Đang vào một thư mục lạ\n"
+msgstr "%s[%u]: Vào thư mục lạ\n"
 
-#: main.c:3253
+#: output.c:141
 #, 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"
+msgstr "%s[%u]: Rời thư mục lạ\n"
 
-#: main.c:3257
+#: output.c:144
 #, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
-msgstr "%s[%u]: Đang vào thư mục « %s »\n"
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Vào thư mục “%s”\n"
 
-#: main.c:3260
+#: output.c:146
 #, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
-msgstr "%s[%u]: Đang rời khỏi thư mục « %s »\n"
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Rời thư mục “%s”\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "lỗi ghi: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "lỗi ghi"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr ".  Dừng.\n"
 
-#: 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:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
 # Variable: do not translate/ biến: đừng dịch
-#: misc.c:355
+#: output.c:759
 #, 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 "hết bộ nhớ ảo hoàn toàn"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "Truy cấp đã sở khởi"
-
-#: misc.c:808
-msgid "User access"
-msgstr "Truy cập người dùng"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Truy cập Make"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "Truy cập điều con"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "lỗi ghi: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "lỗi ghi"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
-msgstr "Ä\90ạng Ä\91á»\8dc các tập tin tạo (makefile)...\n"
+msgstr "Ä\90á»\8dc makefile...\n"
 
 #: read.c:333
 #, c-format
-msgid "Reading makefile `%s'"
-msgstr "Ä\90ạng Ä\91á»\8dc tập tin tạo (makefile) Â« %s Â»..."
+msgid "Reading makefile '%s'"
+msgstr "Ä\90á»\8dc makefile â\80\9c%sâ\80\9d"
 
 #: read.c:335
 #, c-format
@@ -1330,338 +1458,346 @@ msgstr " (đường dẫn tìm kiếm)"
 #: read.c:339
 #, c-format
 msgid " (don't care)"
-msgstr " (cũng được)"
+msgstr " (không quan tâm)"
 
 #: read.c:341
 #, c-format
 msgid " (no ~ expansion)"
-msgstr " (không mở rộng ~)"
+msgstr " (không nối thêm ~)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "Bỏ qua UTF-8 BOM trong makefile “%s”\n"
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "Bỏ qua UTF-8 BOM trong bộ đệm makefile\n"
+
+#: read.c:786
 msgid "invalid syntax in conditional"
-msgstr "gặp cú pháp không hợp lệ trong đồ điều kiện"
+msgstr "cú pháp không hợp lệ trong biểu thức điều kiện"
+
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: gặp lỗi khi tải"
 
-#: read.c:891
-#, fuzzy
+#: read.c:987
 msgid "recipe commences before first target"
-msgstr "lệnh bắt đầu trước đích thứ nhất"
+msgstr "công thức bắt đầu trước đích thứ nhất"
 
-#: read.c:940
-#, fuzzy
+#: read.c:1036
 msgid "missing rule before recipe"
-msgstr "thiếu quy tắc trÆ°á»\9bc các lá»\87nh"
+msgstr "thiếu quy tắc trÆ°á»\9bc công thức"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
-msgstr "thiếu bộ phân cách%s"
+msgstr "thiếu dấu cách%s"
 
-#: read.c:1029
+#: read.c:1125
 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ứ?)"
+msgstr " (bạn đã định dùng TAB thay vì 8 khoảng trắng phải không?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "thiếu mẫu đích"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "nhiều mẫu đích"
 
-#: read.c:1169
+#: read.c:1269
 #, c-format
-msgid "target pattern contains no `%%'"
-msgstr "mẫu đích không chứa « %% »"
+msgid "target pattern contains no '%%'"
+msgstr "mẫu đích không chứa “%%”"
 
-#: read.c:1293
-msgid "missing `endif'"
-msgstr "thiếu « endif »"
+#: read.c:1391
+msgid "missing 'endif'"
+msgstr "thiếu “endif”"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 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:1465
+msgid "extraneous text after 'define' directive"
+msgstr "gặp các ký tự thừa đằng sau chỉ thị “define”"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
-msgstr "thiếu « endef », « define » (định nghĩa) chưa kết thúc"
+#: read.c:1490
+msgid "missing 'endef', unterminated 'define'"
+msgstr "thiếu “endef”, chỉ thị “define” chưa hoàn tất"
 
-#: 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:1518
+msgid "extraneous text after 'endef' directive"
+msgstr "gặp các ký tự thừa đằng sau chỉ thị “endef”"
 
-#: read.c:1490
+#: read.c:1589
 #, c-format
-msgid "Extraneous text after `%s' directive"
-msgstr "Gặp chuỗi chữ bắt nguồn ở ngoài sau chi thị « %s »"
+msgid "extraneous text after '%s' directive"
+msgstr "gặp các ký tự thừa đằng sau chỉ thị “%s”"
 
-#: read.c:1499 read.c:1513
+#: read.c:1598 read.c:1612
 #, c-format
-msgid "extraneous `%s'"
-msgstr "gặp « %s » bắt nguồn ở ngoài"
+msgid "extraneous '%s'"
+msgstr "gặp “%s” thừa"
 
-#: 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:1617
+msgid "only one 'else' per conditional"
+msgstr "chỉ cho phép một “else” cho mỗi biểu thức điều kiện"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
-msgstr "Lời định nghĩa biến đặc trưng cho đích dạng sai"
+msgstr "Định nghĩa biến đích riêng biệt bị hỏng"
 
-#: read.c:1855
-#, fuzzy
+#: read.c:1951
 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"
+msgstr "không thể định nghĩa điều kiện tiên quyết cho công thức"
 
-#: read.c:1908
+#: read.c:2009
 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"
+msgstr "trộn lẫn quy tắc ngầm và mẫu tĩnh"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 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"
+msgstr "trộn quy tắc ngầm và thường"
 
-#: read.c:1976
+#: read.c:2084
 #, c-format
-msgid "target `%s' doesn't match the target pattern"
-msgstr "đích « %s » không khớp với mẫu đích"
+msgid "target '%s' doesn't match the target pattern"
+msgstr "đích “%s” không tương ứng với mẫu đích"
 
-#: read.c:1991 read.c:2036
+#: read.c:2099 read.c:2144
 #, 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"
+msgid "target file '%s' has both : and :: entries"
+msgstr "tập tin đích “%s” có cả hai mục nhập : và ::"
 
-#: read.c:1997
+#: read.c:2105
 #, 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"
+msgid "target '%s' given more than once in the same rule"
+msgstr "đích “%s” có nhiều hơn một trong cùng một quy tắc"
 
-#: 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:2114
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "cảnh báo: đè công thức cho đích “%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:2117
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "cảnh báo: bỏ qua công thức cũ cho đích “%s”"
 
-#: read.c:2392
+#: read.c:2530
 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 đó"
+msgstr "cảnh báo: thấy ký tự NUL; bỏ qua phần còn lại của dòng"
 
-#: remake.c:234
+#: remake.c:232
 #, c-format
-msgid "Nothing to be done for `%s'."
-msgstr "Không có gì cần làm cho « %s »."
+msgid "Nothing to be done for '%s'."
+msgstr "Không cần làm gì cho “%s”."
 
-#: remake.c:235
+#: remake.c:233
 #, c-format
-msgid "`%s' is up to date."
-msgstr "« %s » là hiện thời."
+msgid "'%s' is up to date."
+msgstr "Đã cập nhật “%s”."
 
-#: remake.c:306
+#: remake.c:305
 #, c-format
-msgid "Pruning file `%s'.\n"
-msgstr "Đang xén bớt tập tin « %s ».\n"
+msgid "Pruning file '%s'.\n"
+msgstr "Xén bớt tập tin “%s”.\n"
 
-#: remake.c:359
+#: remake.c:377
 #, c-format
-msgid "%sNo rule to make target `%s'%s"
-msgstr "%sKhông có quy tắc tới đích make « %s »%s"
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sKhông có quy tắc để tạo đích “%s”%s"
 
-#: remake.c:361
+#: remake.c:379
 #, 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"
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sKhông có quy tắc để tạo đích “%s”, cần bởi “%s”%s"
 
 #: remake.c:413
 #, c-format
-msgid "Considering target file `%s'.\n"
-msgstr "Đang suy nghĩ tập tin đích « %s ».\n"
+msgid "Considering target file '%s'.\n"
+msgstr "Coi tập tin đích “%s”.\n"
 
 #: 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"
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Vừa thử và thất bại khi cập nhật “%s”.\n"
 
 #: remake.c:432
 #, c-format
-msgid "File `%s' was considered already.\n"
-msgstr "Tập tin « %s » đã được suy nghĩ.\n"
+msgid "File '%s' was considered already.\n"
+msgstr "Coi tập tin “%s” là đã sẵn sàng rồi.\n"
 
 #: 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"
+msgid "Still updating file '%s'.\n"
+msgstr "Vẫn đang cập nhật tập tin “%s”.\n"
 
 #: remake.c:445
 #, c-format
-msgid "Finished updating file `%s'.\n"
-msgstr "Mới cập nhật xong tập tin « %s ».\n"
+msgid "Finished updating file '%s'.\n"
+msgstr "Hoàn tất cập nhật tập tin “%s”.\n"
 
 #: remake.c:474
 #, c-format
-msgid "File `%s' does not exist.\n"
-msgstr "Tập tin « %s » không tồn tại.\n"
+msgid "File '%s' does not exist.\n"
+msgstr "Tập tin “%s” không tồn tại.\n"
 
 #: remake.c:481
 #, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** 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 “%s” có nhãn thời gian độ phân "
+"giải cao"
 
-#: remake.c:494 remake.c:1016
+#: remake.c:494 remake.c:1019
 #, 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"
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Tìm thấy quy tắc ngầm cho “%s”.\n"
 
-#: remake.c:496 remake.c:1018
+#: remake.c:496 remake.c:1021
 #, 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"
+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: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"
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Dùng công thức mặc định cho “%s”.\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
-msgstr "Cách phụ thuộc vòng tròn « %s ← %s » bị gỡ bỏ."
+msgstr "Bỏ phụ thuộc vòng tròn %s <- %s."
 
-#: remake.c:651
+#: remake.c:655
 #, 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"
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Hoàn tất điều kiện tiên quyết của tập tin đích “%s”.\n"
 
-#: remake.c:657
+#: remake.c:661
 #, 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"
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Đang tạo điều kiện tiên quyết của “%s”.\n"
 
-#: remake.c:670
+#: remake.c:674
 #, c-format
-msgid "Giving up on target file `%s'.\n"
-msgstr "Đang chịu thua về tập tin đích « %s ».\n"
+msgid "Giving up on target file '%s'.\n"
+msgstr "Chịu thua tập tin đích “%s”.\n"
 
-#: remake.c:675
+#: remake.c:679
 #, 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."
+msgid "Target '%s' not remade because of errors."
+msgstr "Đích “%s” không được tạo lại do lỗi."
 
-#: remake.c:727
+#: remake.c:731
 #, 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"
+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:732
+#: remake.c:736
 #, 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"
+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:737
+#: remake.c:741
 #, 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"
+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:740
+#: remake.c:744
 #, 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"
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Điều kiện tiên quyết “%s” cũ hơn đích “%s” .\n"
 
-#: remake.c:758
+#: remake.c:762
 #, 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"
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Đích “%s” là hai chấm đôi và không có điều kiện tiên quyết.\n"
 
-#: remake.c:765
-#, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+#: remake.c:769
+#, 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ó công thức cho “%s” và chưa thay đổi điều kiện tiên quyết nào.\n"
 
-#: remake.c:770
+#: remake.c:774
 #, 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"
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Tạo “%s” do cờ always-make.\n"
 
-#: remake.c:778
+#: remake.c:782
 #, c-format
-msgid "No need to remake target `%s'"
-msgstr "Không cần tạo lại đích « %s »."
+msgid "No need to remake target '%s'"
+msgstr "Không cần tạo lại đích “%s”."
 
-#: remake.c:780
+#: remake.c:784
 #, c-format
-msgid "; using VPATH name `%s'"
-msgstr "; đang dùng tên VPATH (đường dẫn V) « %s »"
+msgid "; using VPATH name '%s'"
+msgstr "; dùng tên VPATH “%s”"
 
-#: remake.c:800
+#: remake.c:804
 #, c-format
-msgid "Must remake target `%s'.\n"
-msgstr "Phải tạo lại đích « %s ».\n"
+msgid "Must remake target '%s'.\n"
+msgstr "Phải tạo lại đích “%s”.\n"
 
-#: remake.c:806
+#: remake.c:810
 #, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
-msgstr "  Đang bỏ qua tên đường dẫn VPATH « %s ».\n"
+msgid "  Ignoring VPATH name '%s'.\n"
+msgstr "  Bỏ qua tên VPATH “%s”.\n"
 
-#: remake.c:815
-#, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
-msgstr "Ä\90ang chạy các lá»\87nh của Â« %s Â».\n"
+#: remake.c:819
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Ä\90ang chạy công thức của â\80\9c%sâ\80\9d.\n"
 
-#: remake.c:822
+#: remake.c:826
 #, 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"
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Gặp lỗi khi tạo lại được tập tin đích “%s”.\n"
 
-#: remake.c:825
+#: remake.c:829
 #, c-format
-msgid "Successfully remade target file `%s'.\n"
-msgstr "Mới  tạo lại tập tin đích « %s ».\n"
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Tạo lại thành công tập tin đích “%s”.\n"
 
-#: remake.c:828
+#: remake.c:832
 #, 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"
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Tập tin đích “%s” cần được tạo lại dưới tùy chọn “-q”.\n"
 
-#: remake.c:1024
+#: remake.c:1027
 #, c-format
-msgid "Using default commands for `%s'.\n"
-msgstr "Đang dùng các lệnh mặc định cho « %s ».\n"
+msgid "Using default commands for '%s'.\n"
+msgstr "Dùng lệnh mặc định cho “%s”.\n"
 
-#: remake.c:1357
+#: remake.c:1372
 #, 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."
+msgid "Warning: File '%s' has modification time in the future"
+msgstr "Cảnh báo: Tập tin “%s” có giờ sửa đổi ở thì tương lai."
 
-#: 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:1385
+#, 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 %s giây trong thì tương lai."
 
-#: remake.c:1569
+#: remake.c:1583
 #, 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"
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Phần tử .LIBPATTERNS “%s” không phải là một mẫu"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
-msgstr "Thuế quan không xuất được: %s\n"
+msgstr "Customs không xuất được: %s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1669,7 +1805,7 @@ msgstr ""
 "\n"
 "# Quy tắc ngầm"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1677,7 +1813,7 @@ msgstr ""
 "\n"
 "# Không có quy tắc ngầm."
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1686,248 +1822,269 @@ msgstr ""
 "\n"
 "# %u quy tắc ngầm, %u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
-msgstr " thiết bị cuối"
+msgstr " thiết bị cuối."
 
-#: rule.c:534
-#, fuzzy, c-format
+#: rule.c:531
+#, 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"
+msgstr "LỖI: num_pattern_rules không đúng!  %u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "tín hiệu lạ"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
-msgstr "Ngừng nói"
+msgstr "Treo"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "Ngắt"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "Thoát"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
-msgstr "Lệnh cấm"
+msgstr "Chỉ lệnh không hợp lệ"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "Bẫy vết/điểm ngắt"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "Bị hủy bỏ"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "Bẫy IOT"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "Bẫy EMT"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
-msgstr "Ngoại lệ điểm phù động"
+msgstr "Ngoại lệ dấu chấm động"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "Bị buộc kết thúc"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
-msgstr "Lỗi mạch nối"
+msgstr "Lỗi bus"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "Lỗi phân đoạn"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
-msgstr "Cuộc gọi hệ thống sai"
+msgstr "Lệnh gọi hệ thống sai"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
-msgstr "Ống dẫn bị ngắt"
+msgstr "Ống dẫn hỏng"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "Đồng hồ báo động"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
-msgstr "Bị kết thúc"
+msgstr "Đã chấm dứt"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "Tín hiệu tự định nghĩa 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "Tín hiệu tự định nghĩa 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "Tiến trình con đã thoát"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
-msgstr "Bị cúp điện đột ngột"
+msgstr "Mất điện đột ngột"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "Bị ngừng"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
-msgstr "Bị ngừng (kết nhập tty)"
+msgstr "Bị ngừng (đầu vào tty)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
-msgstr "Bị ngừng (kết xuất tty)"
+msgstr "Bị ngừng (đầu ra tty)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "Bị ngừng (tín hiệu)"
 
-#: signame.c:173
+#: signame.c:171
 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á"
+msgstr "Vượt giới hạn thời gian CPU"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
-msgstr "Giới hạn kích cỡ tập tin bị vượt quá"
+msgstr "Vượt giới hạn kích cỡ tập tin"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
-msgstr "Bộ đếm thời gian ảo đã mãn hạn"
+msgstr "Bộ đếm thời gian ảo đã hết hạn"
 
-#: signame.c:182
+#: signame.c:180
 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"
+msgstr "Hết hạn đếm thời gian khi theo dõi cách sử dụng tiềm năng hệ thống"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
-msgstr "Cửa sổ đã thay đổi"
+msgstr "Cửa sổ bị thay đổi"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "Đã tiếp tục"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
-msgstr "Tình trạng I/O (nhập/xuất) khẩn cấp"
+msgstr "Điều kiện I/O khẩn cấp"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
-msgstr "I/O (nhập/xuất) có thể"
+msgstr "I/O có thể"
 
 # Literal: don't translate / Nghĩa chữ: đừng dịch
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
 # Literal: don't translate / Nghĩa chữ: đừng dịch
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "Tài nguyên bị mất"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "Tín hiệu nguy hiểm"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "Yêu cầu thông tin"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
-msgstr "Không có sẵn sàng bộ đồng xử lý điểm phù động"
+msgstr "Không có bộ đồng xử lý số thực dấu chấm động"
 
-#: strcache.c:235
-#, fuzzy, c-format
+#: strcache.c:236
+#, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
+"%s No strcache buffers\n"
 msgstr ""
 "\n"
-"%s # chuỗi trong bộ nhớ tạm chuỗi : %d\n"
+"%s Không có bộ đệm strcache\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:266
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s bộ đệm strcache:  %lu (%lu) / chuỗi   = %lu / lưu     = %lu B / t.bình = "
+"%lu B\n"
 
-#: strcache.c:239
-#, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
 msgstr ""
-"%s cỡ bộ nhớ tạm chuỗi: tổng = %d / đa = %d / thiểu = %d / tbình = %d\n"
+"%s đệm hiện tại: kcỡ = %hu B / đã dùng = %hu B / slượng = %hu / tbình = %hu "
+"B\n"
 
-#: strcache.c:241
-#, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+#: strcache.c:280
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s được dùng khác: tổng = %lu B / s.lượng = %lu / t.bình = %lu B\n"
+
+#: strcache.c:283
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr ""
-"%s rảnh bộ nhớ tạm chuỗi: tổng = %d / đa = %d / thiểu = %d / tbình = %d\n"
+"%s trống khác:  tổng = %lu B / tđa = %lu B / t.thiểu = %lu B / t.bình = %hu "
+"B\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
-"# "
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
 msgstr ""
 "\n"
-"# thống kê bảng băm các tập tin:\n"
+"%s hiệu năng strcache:   tra cứu = %lu / tỷ lệ trúng = %lu%%\n"
+
+#: strcache.c:289
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# thống kê bảng băm tập tin:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "tự động"
+
+#: variable.c:1610
 msgid "default"
 msgstr "mặc định"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "môi trường"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
-msgstr "tập tin tạo"
+msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
-msgstr "môi trường dưới « -e »"
+msgstr "môi trường với -e"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "dòng lệnh"
 
-#: variable.c:1556
-msgid "`override' directive"
-msgstr "chỉ thị « override » (đè)"
-
-#: variable.c:1559
-msgid "automatic"
-msgstr "tự động"
+#: variable.c:1625
+msgid "'override' directive"
+msgstr "chỉ thị “override”"
 
-#: variable.c:1570
+#: variable.c:1636
 #, c-format
-msgid " (from `%s', line %lu)"
-msgstr " (từ « %s », dòng %lu)"
+msgid " (from '%s', line %lu)"
+msgstr " (từ “%s”, dòng %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
-msgstr "# thống kê bảng băm lập biến:\n"
+msgstr "# thống kê bảng băm biến được đặt:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1935,118 +2092,117 @@ msgstr ""
 "\n"
 "# Biến\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
 msgstr ""
 "\n"
-"# Giá trị biến đặc trưng cho mẫu"
+"# Giá trị biến đặc t cho mẫu"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
 msgstr ""
 "\n"
-"# Không có giá trị biến đặc trưng cho mẫu"
+"# Không có giá trị biến đặc t cho mẫu"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
 "# %u pattern-specific variable values"
 msgstr ""
 "\n"
-"# %u giá trị biến đặc trưng cho mẫu"
+"# %u giá trị biến đặc t cho mẫu"
 
-#: variable.h:219
+#: variable.h:224
 #, c-format
-msgid "warning: undefined variable `%.*s'"
-msgstr "cảnh báo : chưa định nghĩa biến « %.*s »"
+msgid "warning: undefined variable '%.*s'"
+msgstr "cảnh báo: biến “%.*s” chưa được định nghĩa"
 
-#: vmsfunctions.c:92
-#, fuzzy, c-format
+#: vmsfunctions.c:91
+#, 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"
+msgstr "sys$search() gặp lỗi với %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
-msgstr "Cảnh báo : việc chuyển hướng rỗng\n"
+msgstr "Cảnh báo: Chuyển hướng trống rỗng\n"
 
-#: vmsjobs.c:184
+#: vmsjobs.c:178
 #, c-format
-msgid "internal error: `%s' command_state"
-msgstr "lỗi nội bộ : tính trạng lệnh « %s »"
+msgid "internal error: '%s' command_state"
+msgstr "lỗi nội bộ: command_state “%s”"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, 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"
+msgstr "-warning, có lẽ bạn cần phải bật lại xử lý CTRL-Y từ DCL.\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
-msgstr "Không biết lệnh builtin (có sẵn) « %s »\n"
+msgstr "Không hiểu lệnh dựng sẵn “%s”\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
-msgstr "Lỗi, lệnh rỗng\n"
+msgstr "Lỗi, lệnh trống rỗng\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
-msgstr "Kết nhập đã được chuyển hướng từ %s\n"
+msgstr "Đã chuyển hướng đầu vào từ %s\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
-msgstr "Lỗi đã được chuyển hướng đến %s\n"
+msgstr "Đã chuyển hướng lỗi tới %s\n"
 
-#: vmsjobs.c:523
-#, fuzzy, c-format
+#: vmsjobs.c:518
+#, c-format
 msgid "Append output to %s\n"
-msgstr "Kết xuất đã được chuyển hướng đến %s\n"
+msgstr "Nối thêm đầu ra vào %s\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
-msgstr "Kết xuất đã được chuyển hướng đến %s\n"
+msgstr "Đã chuyển hướng đầu ra tới %s\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Nối thêm %.*s và dọn dẹp\n"
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
-msgstr "Đang thực hiện %s thay thế\n"
+msgstr "Thực hiện %s để thay thế\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
-msgstr "Gặp lỗi khi tạo và thực hiện (spawn), %d\n"
+msgstr "Gặp lỗi sản sinh tiến trình, %d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -2054,41 +2210,68 @@ msgstr ""
 "\n"
 "# Đường dẫn tìm kiếm VPATH\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
-msgstr "# Không có đường dẫn tìm kiếm VPATH nào"
+#: vpath.c:600
+msgid "# No 'vpath' search paths."
+msgstr "# Không có đường dẫn tìm kiếm “vpath”."
 
-#: vpath.c:605
+#: vpath.c:602
 #, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
-"# %u Ä\90Æ°á»\9dng dẫn tìm kiếm Â« vpath Â».\n"
+"# %u Ä\91Æ°á»\9dng dẫn tìm kiếm â\80\9cvpathâ\80\9d.\n"
 
-#: vpath.c:608
+#: vpath.c:605
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
-"# Không có đường dẫn tìm kiếm chung (biến « VPATH »)."
+"# Không có đường dẫn tìm kiếm chung (biến “VPATH”)."
 
-#: vpath.c:614
+#: vpath.c:611
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
-"# Đường dẫn tìm kiếm chung (biến « VPATH »).\n"
+"# Đường dẫn tìm kiếm chung (biến “VPATH”):\n"
 "# "
 
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  Gặp giá trị sai trong thành phần “update_status”!"
+
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "không hiểu chế độ theo vết “%s”"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] Lỗi 0x%x (bỏ qua)"
+
+#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
+#~ msgstr "Gọi công thức từ %s:%lu để cập nhật đích “%s”.\n"
+
+#~ msgid "Invoking builtin recipe to update target `%s'.\n"
+#~ msgstr "Gọi công thức dựng sẵn để cập nhật đích “%s”.\n"
+
+#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s # vùng đệm strcache: %d (* %d B/buffer = %d B)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "# strcache hash-table stats:\n"
+#~ "# "
+#~ msgstr ""
+#~ "\n"
+#~ "# thống kê bảng băm strcache:\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"
+#~ "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"
@@ -2100,19 +2283,19 @@ msgstr ""
 #~ "%s\n"
 
 #~ msgid "extraneous `endef'"
-#~ msgstr "gặp « endef » bắt nguồn ở ngoài"
+#~ msgstr "gặp “endef” bắt nguồn ở ngoài"
 
 #~ msgid "empty `override' directive"
-#~ msgstr "chỉ thị « override » (đè) rỗng"
+#~ msgstr "chỉ thị “override” (đè) rỗng"
 
 #~ msgid "invalid `override' directive"
-#~ msgstr "chỉ thị « override » (đè) không hợp lệ"
+#~ 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."
+#~ msgstr "Đừng ghi rõ “-j” hay “--jobs” nếu <sh.exe> không sẵn sàng."
 
 #~ msgid "Resetting make for single job mode."
-#~ msgstr "Đang lập lại trình make cho chế độ công việc đơn."
+#~ msgstr "Đang đặt lại trình make cho chế độ công việc đơn."
index 61cffca..2046413 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index 657264f..35a1dba 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.
+# LI Daobing <lidaobing@gmail.com>, 2008, 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.81\n"
+"Project-Id-Version: make 3.99.90\n"
 "Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2010-07-28 01:42-0400\n"
-"PO-Revision-Date: 2008-02-05 23:44+0800\n"
+"POT-Creation-Date: 2013-10-09 02:12-0400\n"
+"PO-Revision-Date: 2013-06-12 15:54+0800\n"
 "Last-Translator: LI Daobing <lidaobing@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\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'"
+#: ar.c:46
+#, fuzzy, c-format
+msgid "attempt to use unsupported feature: '%s'"
 msgstr "试图使用不支持的功能:“%s”"
 
-#: ar.c:125
+#: ar.c:123
 msgid "touch archive member is not available on VMS"
 msgstr "VMS 系统上不支持 touch 归档成员"
 
-#: ar.c:149
-#, c-format
-msgid "touch: Archive `%s' does not exist"
+#: ar.c:147
+#, fuzzy, c-format
+msgid "touch: Archive '%s' does not exist"
 msgstr "touch:归档文件“%s”不存在"
 
-#: ar.c:152
-#, c-format
-msgid "touch: `%s' is not a valid archive"
+#: ar.c:150
+#, fuzzy, c-format
+msgid "touch: '%s' is not a valid archive"
 msgstr "touch:“%s”不是合法的归档文件"
 
-#: ar.c:159
-#, c-format
-msgid "touch: Member `%s' does not exist in `%s'"
+#: ar.c:157
+#, fuzzy, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
 msgstr "touch:在“%2$s”中不存在成员“%1$s”"
 
-#: ar.c:166
-#, c-format
-msgid "touch: Bad return code from ar_member_touch on `%s'"
+#: ar.c:164
+#, fuzzy, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
 msgstr "touch:来自“%s”上的 ar_member_touch 的错误返回码"
 
-#: arscan.c:69
+#: arscan.c:67
 #, fuzzy, c-format
 msgid "lbr$set_module() failed to extract module info, status = %d"
 msgstr "lbr$set_modules 获取模块信息失败,返回状态 = %d"
 
-#: arscan.c:175
+#: arscan.c:173
 #, fuzzy, c-format
 msgid "lbr$ini_control() failed with status = %d"
 msgstr "lbr$ini_control 失败,返回状态 = %d"
 
-#: arscan.c:187
-#, c-format
-msgid "unable to open library `%s' to lookup member `%s'"
+#: arscan.c:185
+#, fuzzy, c-format
+msgid "unable to open library '%s' to lookup member '%s'"
 msgstr "无法打开库“%s”以寻找成员“%s”"
 
-#: arscan.c:850
-#, c-format
-msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+#: arscan.c:847
+#, fuzzy, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "成员“%s”%s: %ld 字节在 %ld (%ld)。\n"
 
-#: arscan.c:851
+#: arscan.c:848
 msgid " (name might be truncated)"
 msgstr " (名称可能被截短)"
 
-#: arscan.c:853
+#: arscan.c:850
 #, c-format
 msgid "  Date %s"
 msgstr "  日期 %s"
 
-#: arscan.c:854
+#: arscan.c:851
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d,gid = %d,mode = 0%o。\n"
 
-#: commands.c:499
+#: commands.c:406
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr ""
+
+#: commands.c:507
 msgid "*** Break.\n"
 msgstr "*** 中断。\n"
 
-#: commands.c:622
-#, c-format
-msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+#: commands.c:630
+#, fuzzy, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
 msgstr "*** [%s] 归档成员“%s”可能是假的;未删除"
 
-#: commands.c:625
-#, c-format
-msgid "*** Archive member `%s' may be bogus; not deleted"
+#: commands.c:633
+#, fuzzy, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
 msgstr "*** 归档成员“%s”可能是假的;未删除"
 
-#: commands.c:638
-#, c-format
-msgid "*** [%s] Deleting file `%s'"
+#: commands.c:646
+#, fuzzy, c-format
+msgid "*** [%s] Deleting file '%s'"
 msgstr "*** [%s] 正在删除文件“%s”"
 
-#: commands.c:640
-#, c-format
-msgid "*** Deleting file `%s'"
+#: commands.c:648
+#, fuzzy, c-format
+msgid "*** Deleting file '%s'"
 msgstr "*** 正在删除文件“%s”"
 
-#: commands.c:676
+#: commands.c:684
 #, fuzzy
 msgid "#  recipe to execute"
 msgstr "#  要执行的命令"
 
-#: commands.c:679
+#: commands.c:687
 msgid " (built-in):"
 msgstr " (内置):"
 
-#: commands.c:681
-#, c-format
-msgid " (from `%s', line %lu):\n"
+#: commands.c:689
+#, fuzzy, c-format
+msgid " (from '%s', line %lu):\n"
 msgstr " (从“%s”,行 %lu):\n"
 
-#: dir.c:996
+#: dir.c:989
 msgid ""
 "\n"
 "# Directories\n"
@@ -125,221 +131,225 @@ msgstr ""
 "\n"
 "# 目录\n"
 
-#: dir.c:1008
+#: dir.c:1001
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s:无法对其进行 stat 操作。\n"
 
-#: dir.c:1012
+#: dir.c:1005
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (关键字 %s,修改时间 %d):无法打开。\n"
 
-#: dir.c:1016
+#: dir.c:1009
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n"
 
-#: dir.c:1021
+#: dir.c:1014
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n"
 
-#: dir.c:1048
+#: dir.c:1041
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (关键字 %s,修改时间 %d):"
 
-#: dir.c:1052
+#: dir.c:1045
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):"
 
-#: dir.c:1057
+#: dir.c:1050
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (设备 %ld,i-节点 %ld):"
 
-#: dir.c:1063 dir.c:1084
+#: dir.c:1056 dir.c:1077
 msgid "No"
 msgstr "无"
 
-#: dir.c:1066 dir.c:1087
+#: dir.c:1059 dir.c:1080
 msgid " files, "
 msgstr " 文件, "
 
-#: dir.c:1068 dir.c:1089
+#: dir.c:1061 dir.c:1082
 msgid "no"
 msgstr "无"
 
-#: dir.c:1071
+#: dir.c:1064
 msgid " impossibilities"
 msgstr " 不可能"
 
-#: dir.c:1075
+#: dir.c:1068
 msgid " so far."
 msgstr " 迄今为止。"
 
-#: dir.c:1092
+#: dir.c:1085
 #, c-format
 msgid " impossibilities in %lu directories.\n"
 msgstr " 不可能在 %lu 目录中。\n"
 
-#: expand.c:127
-#, c-format
-msgid "Recursive variable `%s' references itself (eventually)"
+#: expand.c:125
+#, fuzzy, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
 msgstr "递归变量“%s”应用自身 (最终)"
 
-#: expand.c:276
+#: expand.c:269
 msgid "unterminated variable reference"
 msgstr "未终止的变量引用"
 
-#: file.c:267
+#: file.c:269
 #, fuzzy, c-format
-msgid "Recipe was specified for file `%s' at %s:%lu,"
+msgid "Recipe was specified for file '%s' at %s:%lu,"
 msgstr "关于文件“%s”的命令在 %s:%lu 处指定,"
 
-#: file.c:272
+#: file.c:274
 #, fuzzy, c-format
-msgid "Recipe for file `%s' was found by implicit rule search,"
+msgid "Recipe for file '%s' was found by implicit rule search,"
 msgstr "关于文件“%s”的命令通过隐含规则搜索而找到,"
 
-#: file.c:275
-#, c-format
-msgid "but `%s' is now considered the same file as `%s'."
+#: file.c:277
+#, fuzzy, c-format
+msgid "but '%s' is now considered the same file as '%s'."
 msgstr "但“%s”现在被看做“%s”的同一个文件。"
 
-#: file.c:278
+#: file.c:280
 #, fuzzy, c-format
-msgid "Recipe for `%s' will be ignored in favor of the one for `%s'."
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
 msgstr "“%2$s”更优先,“%1$s”的命令被忽略。"
 
-#: file.c:298
-#, c-format
-msgid "can't rename single-colon `%s' to double-colon `%s'"
+#: file.c:300
+#, fuzzy, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
 msgstr "无法将单冒号“%s”重命名为双冒号“%s”"
 
-#: file.c:303
-#, c-format
-msgid "can't rename double-colon `%s' to single-colon `%s'"
+#: file.c:305
+#, fuzzy, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
 msgstr "无法将双冒号“%s”重命名为单冒号“%s”"
 
-#: file.c:392
-#, c-format
-msgid "*** Deleting intermediate file `%s'"
+#: file.c:396
+#, fuzzy, c-format
+msgid "*** Deleting intermediate file '%s'"
 msgstr "*** 正在删除中间文件“%s”"
 
-#: file.c:396
+#: file.c:400
 msgid "Removing intermediate files...\n"
 msgstr "正在删除中间文件...\n"
 
-#: file.c:803
+#: file.c:808
 #, c-format
 msgid "%s: Timestamp out of range; substituting %s"
 msgstr "%s:时间标记超出范围;正在替换 %s"
 
-#: file.c:804
+#: file.c:809
 msgid "Current time"
 msgstr "当前时间"
 
-#: file.c:924
+#: file.c:949
 msgid "# Not a target:"
 msgstr "# 不是一个目标:"
 
-#: file.c:929
+#: file.c:954
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  重要文件 (.PRECIOUS的前提)。"
 
-#: file.c:931
+#: file.c:956
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  假目标 (.PHONY的前提)。"
 
-#: file.c:933
+#: file.c:958
 #, fuzzy
 msgid "#  Command line target."
 msgstr "#  命令行目标。"
 
-#: file.c:935
+#: file.c:960
 msgid "#  A default, MAKEFILES, or -include/sinclude makefile."
 msgstr "#  缺省的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。"
 
-#: file.c:937
+#: file.c:962
+#, fuzzy
+msgid "#  Builtin rule"
+msgstr ""
+"\n"
+"# 没有隐含规则。"
+
+#: file.c:964
 msgid "#  Implicit rule search has been done."
 msgstr "#  对隐含规则的搜索已完成。"
 
-#: file.c:938
+#: file.c:965
 msgid "#  Implicit rule search has not been done."
 msgstr "#  对隐含规则的搜索尚未完成。"
 
-#: file.c:940
-#, c-format
-msgid "#  Implicit/static pattern stem: `%s'\n"
+#: file.c:967
+#, fuzzy, c-format
+msgid "#  Implicit/static pattern stem: '%s'\n"
 msgstr "#  隐含/静态模式主干:“%s”\n"
 
-#: file.c:942
+#: file.c:969
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  文件是一个中间前提。"
 
-#: file.c:946
+#: file.c:973
 msgid "#  Also makes:"
 msgstr "#  还要创建:"
 
-#: file.c:952
+#: file.c:979
 msgid "#  Modification time never checked."
 msgstr "#  从不检查修改时间。"
 
-#: file.c:954
+#: file.c:981
 msgid "#  File does not exist."
 msgstr "#  文件不存在。"
 
-#: file.c:956
+#: file.c:983
 msgid "#  File is very old."
 msgstr "#  文件非常陈旧。"
 
-#: file.c:961
+#: file.c:988
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  最近更新 %s\n"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has been updated."
 msgstr "#  文件已经被更新。"
 
-#: file.c:964
+#: file.c:991
 msgid "#  File has not been updated."
 msgstr "#  文件尚未被更新。"
 
-#: file.c:968
+#: file.c:995
 #, fuzzy
 msgid "#  Recipe currently running (THIS IS A BUG)."
 msgstr "#  正在运行的命令 (这是个错误)。"
 
-#: file.c:971
+#: file.c:998
 #, fuzzy
 msgid "#  Dependencies recipe running (THIS IS A BUG)."
 msgstr "#  正在运行的依赖性命令 (这是个错误)。"
 
-#: file.c:980
+#: file.c:1007
 msgid "#  Successfully updated."
 msgstr "#  更新成功。"
 
-#: file.c:984
+#: file.c:1011
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  需要更新 (用 -q 设定)。"
 
-#: file.c:987
+#: file.c:1014
 msgid "#  Failed to be updated."
 msgstr "#  更新失败。"
 
-#: file.c:990
-msgid "#  Invalid value in `update_status' member!"
-msgstr "#  “update_status”成员中无效的值!"
-
-#: file.c:997
-msgid "#  Invalid value in `command_state' member!"
+#: file.c:1019
+#, fuzzy
+msgid "#  Invalid value in 'command_state' member!"
 msgstr "#  “command_state”成员中无效的值!"
 
-#: file.c:1016
+#: file.c:1038
 msgid ""
 "\n"
 "# Files"
@@ -347,7 +357,7 @@ msgstr ""
 "\n"
 "# 文件"
 
-#: file.c:1020
+#: file.c:1042
 msgid ""
 "\n"
 "# files hash-table stats:\n"
@@ -357,117 +367,175 @@ msgstr ""
 "# 文件杂凑表状态:\n"
 "# "
 
-#: function.c:758
-msgid "non-numeric first argument to `word' function"
+#: file.c:1051
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr ""
+
+#: function.c:742
+#, fuzzy
+msgid "non-numeric first argument to 'word' function"
 msgstr "“word”函数的第一个参数不是数值参数"
 
-#: function.c:763
-msgid "first argument to `word' function must be greater than 0"
+#: function.c:747
+#, fuzzy
+msgid "first argument to 'word' function must be greater than 0"
 msgstr "“word”函数的第一个参数必须大于 0"
 
-#: function.c:783
-msgid "non-numeric first argument to `wordlist' function"
+#: function.c:767
+#, fuzzy
+msgid "non-numeric first argument to 'wordlist' function"
 msgstr "“wordlist”函数的第一个参数不是数值参数"
 
-#: function.c:785
-msgid "non-numeric second argument to `wordlist' function"
+#: function.c:769
+#, fuzzy
+msgid "non-numeric second argument to 'wordlist' function"
 msgstr "“wordlist”函数的第二个参数不是数值参数"
 
-#: function.c:1458
+#: function.c:1460
 #, fuzzy, c-format
-msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
 msgstr "创建子进程:复制句柄(In)失败 (e=%ld)\n"
 
-#: function.c:1469
+#: function.c:1483
 #, fuzzy, c-format
-msgid "windows32_open_pipe(): DuplicateHandle(Err) failed (e=%ld)\n"
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
 msgstr "创建子进程:复制句柄(Err)失败 (e=%ld)\n"
 
-#: function.c:1474
+#: function.c:1490
 #, c-format
 msgid "CreatePipe() failed (e=%ld)\n"
 msgstr "CreatePipe() 失败 (e=%ld)\n"
 
-#: function.c:1479
+#: function.c:1498
 #, fuzzy
 msgid "windows32_openpipe(): process_init_fd() failed\n"
 msgstr "windows32_openpipe ():process_init_fd() 失败\n"
 
-#: function.c:1728
+#: function.c:1792
 #, c-format
 msgid "Cleaning up temporary batch file %s\n"
 msgstr "正在清除临时批处理文件 %s\n"
 
-#: function.c:2150
+#: function.c:2151
+#, fuzzy, c-format
+msgid "open: %s: %s"
+msgstr "%s: %s"
+
+#: function.c:2158
+#, fuzzy, c-format
+msgid "write: %s: %s"
+msgstr "写错误: %s"
+
+#: function.c:2164
 #, c-format
-msgid "insufficient number of arguments (%d) to function `%s'"
+msgid "Invalid file operation: %s"
+msgstr ""
+
+#: function.c:2279
+#, fuzzy, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
 msgstr "函数“%2$s”的参数数量(%1$d)不够"
 
-#: function.c:2162
-#, c-format
-msgid "unimplemented on this platform: function `%s'"
+#: function.c:2291
+#, fuzzy, c-format
+msgid "unimplemented on this platform: function '%s'"
 msgstr "在本平台上未实现:函数“%s”"
 
-#: function.c:2212
-#, c-format
-msgid "unterminated call to function `%s': missing `%c'"
+#: function.c:2354
+#, fuzzy, c-format
+msgid "unterminated call to function '%s': missing '%c'"
 msgstr "对函数“%s”的未终止的调用:遗漏“%c”"
 
-#: getopt.c:661
+#: function.c:2546
+msgid "Empty function name\n"
+msgstr ""
+
+#: function.c:2548
 #, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s:选项“%s”含义不清\n"
+msgid "Invalid function name: %s\n"
+msgstr ""
 
-#: getopt.c:685
+#: function.c:2550
 #, c-format
-msgid "%s: option `--%s' doesn't allow an argument\n"
+msgid "Function name too long: %s\n"
+msgstr ""
+
+#: function.c:2552
+#, fuzzy, c-format
+msgid "Invalid minimum argument count (%d) for function %s\n"
+msgstr "函数“%2$s”的参数数量(%1$d)不够"
+
+#: function.c:2555
+#, fuzzy, c-format
+msgid "Invalid maximum argument count (%d) for function %s\n"
+msgstr "函数“%2$s”的参数数量(%1$d)不够"
+
+#: getopt.c:659
+#, fuzzy, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s:选项“%s”含义不清\n"
+
+#: getopt.c:683
+#, fuzzy, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
 msgstr "%s:选项“--%s”不需要参数\n"
 
-#: getopt.c:690
-#, c-format
-msgid "%s: option `%c%s' doesn't allow an argument\n"
+#: getopt.c:688
+#, fuzzy, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
 msgstr "%s:选项“%c%s”不需要参数\n"
 
-#: getopt.c:707 getopt.c:880
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
+#: getopt.c:705 getopt.c:878
+#, fuzzy, c-format
+msgid "%s: option '%s' requires an argument\n"
 msgstr "%s:选项“%s”需要一个参数\n"
 
-#: getopt.c:736
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
+#: getopt.c:734
+#, fuzzy, c-format
+msgid "%s: unrecognized option '--%s'\n"
 msgstr "%s:无法识别的选项“--%s”\n"
 
-#: getopt.c:740
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
+#: getopt.c:738
+#, fuzzy, c-format
+msgid "%s: unrecognized option '%c%s'\n"
 msgstr "%s:无法识别的选项“%c%s”\n"
 
-#: getopt.c:766
+#: getopt.c:764
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s:非法选项 -- %c\n"
 
-#: getopt.c:769
+#: getopt.c:767
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s:非法选项 -- %c\n"
 
-#: getopt.c:799 getopt.c:929
+#: getopt.c:797 getopt.c:927
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s:选项需要一个参数 -- %c\n"
 
-#: getopt.c:846
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
+#: getopt.c:844
+#, fuzzy, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
 msgstr "%s:选项“-W %s”含义不清\n"
 
-#: getopt.c:864
-#, c-format
-msgid "%s: option `-W %s' doesn't allow an argument\n"
+#: getopt.c:862
+#, fuzzy, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
 msgstr "%s:选项“-W %s”不允许给出参数\n"
 
+#: guile.c:55
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr ""
+
+#: guile.c:71
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr ""
+
 #: hash.c:49
 #, fuzzy, c-format
 msgid "can't allocate %lu bytes for hash table: memory exhausted"
@@ -488,131 +556,156 @@ msgstr "重新杂凑=%d, "
 msgid "Collisions=%ld/%ld=%.0f%%"
 msgstr "碰撞=%ld/%ld=%.0f%%"
 
-#: implicit.c:40
-#, c-format
-msgid "Looking for an implicit rule for `%s'.\n"
+#: implicit.c:38
+#, fuzzy, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
 msgstr "正在为“%s”寻找隐含规则。\n"
 
-#: implicit.c:56
-#, c-format
-msgid "Looking for archive-member implicit rule for `%s'.\n"
+#: implicit.c:54
+#, fuzzy, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
 msgstr "正在为“%s”寻找归档成员隐含规则。\n"
 
-#: implicit.c:317
+#: implicit.c:310
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "避免隐含规则递归。\n"
 
-#: implicit.c:491
+#: implicit.c:486
 #, c-format
-msgid "Trying pattern rule with stem `%.*s'.\n"
+msgid "Stem too long: '%.*s'.\n"
+msgstr ""
+
+#: implicit.c:491
+#, fuzzy, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
 msgstr "以主干“%.*s”尝试匹配模式规则。\n"
 
-#: implicit.c:674
-#, c-format
-msgid "Rejecting impossible rule prerequisite `%s'.\n"
+#: implicit.c:697
+#, fuzzy, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
 msgstr "拒绝不可能的规则前提“%s”。\n"
 
-#: implicit.c:675
-#, c-format
-msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+#: implicit.c:698
+#, fuzzy, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
 msgstr "拒绝不可能的隐含前提“%s”。\n"
 
-#: implicit.c:688
-#, c-format
-msgid "Trying rule prerequisite `%s'.\n"
+#: implicit.c:711
+#, fuzzy, c-format
+msgid "Trying rule prerequisite '%s'.\n"
 msgstr "尝试规则前提“%s”。\n"
 
-#: implicit.c:689
-#, c-format
-msgid "Trying implicit prerequisite `%s'.\n"
+#: implicit.c:712
+#, fuzzy, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
 msgstr "尝试隐含前提“%s”。\n"
 
-#: implicit.c:728
-#, c-format
-msgid "Found prerequisite `%s' as VPATH `%s'\n"
+#: implicit.c:751
+#, fuzzy, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
 msgstr "前提“%s”在 VPATH “%s” 中发现\n"
 
-#: implicit.c:742
-#, c-format
-msgid "Looking for a rule with intermediate file `%s'.\n"
+#: implicit.c:765
+#, fuzzy, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
 msgstr "正在寻找使用中间文件“%s”的规则。\n"
 
-#: job.c:335
+#: job.c:361
 msgid "Cannot create a temporary file\n"
 msgstr "无法创建临时文件\n"
 
-#: job.c:449
-#, c-format
-msgid "*** [%s] Error 0x%x (ignored)"
-msgstr "*** [%s] 错误 0x%x (忽略)"
-
-#: job.c:450
-#, c-format
-msgid "*** [%s] Error 0x%x"
-msgstr "*** [%s] 错误 0x%x"
+#: job.c:482
+msgid " (core dumped)"
+msgstr " (core dumped)"
 
-#: job.c:454
-#, c-format
-msgid "[%s] Error %d (ignored)"
+#: job.c:487
+#, fuzzy
+msgid " (ignored)"
 msgstr "[%s] 错误 %d (忽略)"
 
-#: job.c:455
+#: job.c:491 job.c:1994
+#, fuzzy
+msgid "<builtin>"
+msgstr " (内置):"
+
+#: job.c:501
 #, c-format
-msgid "*** [%s] Error %d"
+msgid "%s: recipe for target '%s' failed"
+msgstr ""
+
+#: job.c:510
+#, fuzzy, c-format
+msgid "%s[%s] Error 0x%x%s"
+msgstr "*** [%s] 错误 0x%x"
+
+#: job.c:513
+#, fuzzy, c-format
+msgid "%s[%s] Error %d%s"
 msgstr "*** [%s] 错误 %d"
 
-#: job.c:460
-msgid " (core dumped)"
-msgstr " (core dumped)"
+#: job.c:517
+#, fuzzy, c-format
+msgid "%s[%s] %s%s%s"
+msgstr "%s%s: %s"
 
-#: job.c:549
+#: job.c:609
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** 正在等待未完成的任务...."
 
-#: job.c:579
+#: job.c:639
 #, fuzzy, c-format
 msgid "Live child %p (%s) PID %s %s\n"
 msgstr "活跃子进程 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:581 job.c:760 job.c:862 job.c:1527
+#: job.c:641 job.c:831 job.c:950 job.c:1687
 msgid " (remote)"
 msgstr " (远程)"
 
-#: job.c:758
+#: job.c:829
 #, fuzzy, c-format
 msgid "Reaping losing child %p PID %s %s\n"
 msgstr "正在中止失败的子进程 0x%08lx PID %ld %s\n"
 
-#: job.c:759
+#: job.c:830
 #, fuzzy, c-format
 msgid "Reaping winning child %p PID %s %s\n"
 msgstr "正在中止获胜的子进程 0x%08lx PID %ld %s\n"
 
-#: job.c:763
+#: job.c:837
 #, c-format
 msgid "Cleaning up temp batch file %s\n"
 msgstr "正在清除临时批文件 %s\n"
 
-#: job.c:861
+#: job.c:843
+#, fuzzy, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "正在清除临时批文件 %s\n"
+
+#: job.c:949
 #, fuzzy, c-format
 msgid "Removing child %p PID %s%s from chain.\n"
 msgstr "从链中删除子进程 0x%08lx PID %ld%s。\n"
 
-#: job.c:920
-msgid "write jobserver"
-msgstr "写入任务服务器"
+#: job.c:1007
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr ""
 
-#: job.c:922
+#: job.c:1011 job.c:1025
 #, fuzzy, c-format
 msgid "Released token for child %p (%s).\n"
 msgstr "为子进程 0x%08lx (%s) 释放令牌(token)。\n"
 
-#: job.c:1453 job.c:2094
+#: job.c:1023
+msgid "write jobserver"
+msgstr "写入任务服务器"
+
+#: job.c:1612 job.c:2332
 #, c-format
 msgid "process_easy() failed to launch process (e=%ld)\n"
 msgstr "process_easy() 启动进程失败 (e=%ld)\n"
 
-#: job.c:1457 job.c:2098
+#: job.c:1616 job.c:2336
 #, c-format
 msgid ""
 "\n"
@@ -621,125 +714,180 @@ msgstr ""
 "\n"
 "失败执行中共有 %d 个参数。\n"
 
-#: job.c:1525
+#: job.c:1685
 #, 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:1778
+#: job.c:1953
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr ""
+
+#: job.c:1967
 #, fuzzy, c-format
 msgid "Obtained token for child %p (%s).\n"
 msgstr "获得至进程 0x%08lx (%s) 的标记。\n"
 
-#: job.c:1787
+#: job.c:1977
 msgid "read jobs pipe"
 msgstr "读取任务管道"
 
-#: job.c:1798
-#, c-format
-msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-msgstr ""
+#: job.c:2003
+#, fuzzy, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "touch:归档文件“%s”不存在"
 
-#: job.c:1802
+#: job.c:2005
 #, fuzzy, c-format
-msgid "Invoking builtin recipe to update target `%s'.\n"
-msgstr "不需要重新创建目标“%s”"
+msgid "%s: update target '%s' due to: %s"
+msgstr "%1$s没有规则可以创建“%3$s”%4$s需要的目标“%2$s”"
 
-#: job.c:1910
+#: job.c:2118
 msgid "cannot enforce load limits on this operating system"
 msgstr "无法在本操作系统中实施负载限制"
 
-#: job.c:1912
+#: job.c:2120
 msgid "cannot enforce load limit: "
 msgstr "无法实施负载限制:"
 
-#: job.c:1985
+#: job.c:2199
 msgid "no more file handles: could not duplicate stdin\n"
 msgstr "没有剩余的文件句柄: 无法复制标准输入\n"
 
-#: job.c:1987
+#: job.c:2210
 msgid "no more file handles: could not duplicate stdout\n"
 msgstr "没有剩余的文件句柄: 无法复制标准输出\n"
 
-#: job.c:2015
+#: job.c:2223
+#, fuzzy
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "没有剩余的文件句柄: 无法复制标准输入\n"
+
+#: job.c:2238
 msgid "Could not restore stdin\n"
 msgstr "无法还原标准输入\n"
 
-#: job.c:2023
+#: job.c:2246
 msgid "Could not restore stdout\n"
 msgstr "无法还原标准输出\n"
 
-#: job.c:2127
+#: job.c:2254
+#, fuzzy
+msgid "Could not restore stderr\n"
+msgstr "无法还原标准输入\n"
+
+#: job.c:2365
 #, fuzzy, c-format
 msgid "make reaped child pid %s, still waiting for pid %s\n"
 msgstr "make 已中止的子进程 pid %ld,仍在等待 pid %ld\n"
 
-#: job.c:2168
+#: job.c:2403
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s:命令未找到"
 
-#: job.c:2228
+#: job.c:2463
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s:未找到 shell 程序"
 
-#: job.c:2237
+#: job.c:2472
 msgid "spawnvpe: environment space might be exhausted"
 msgstr "spawnvpe: 环境变量空间可能会耗尽"
 
-#: job.c:2461
-#, c-format
-msgid "$SHELL changed (was `%s', now `%s')\n"
+#: job.c:2709
+#, fuzzy, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
 msgstr "$SHELL 已改变 (原为“%s”,现为“%s”)\n"
 
-#: job.c:2951
+#: job.c:3140 job.c:3325
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "正在创建临时批文件 %s\n"
 
-#: job.c:2963
+#: job.c:3148
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+
+#: job.c:3337
 #, c-format
 msgid ""
 "Batch file contents:%s\n"
 "\t%s\n"
 msgstr ""
 
-#: job.c:3065
+#: job.c:3444
 #, 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
+#: job.h:43
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: load.c:53
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr ""
+
+#: load.c:87
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr ""
+
+#: load.c:92
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr ""
+
+#: load.c:136
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr ""
+
+#: load.c:191
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr ""
+
+#: load.c:229
+#, fuzzy
+msgid "The 'load' operation is not supported on this platform."
+msgstr "本平台不支持并行任务 (-j)。"
+
+#: main.c:312
 msgid "Options:\n"
 msgstr "选项:\n"
 
-#: main.c:304
+#: main.c:313
 msgid "  -b, -m                      Ignored for compatibility.\n"
 msgstr "  -b, -m                      忽略兼容性。\n"
 
-#: main.c:306
+#: main.c:315
 msgid "  -B, --always-make           Unconditionally make all targets.\n"
 msgstr "  -B, --always-make           无条件 make 所有目标。\n"
 
-#: main.c:308
+#: main.c:317
 msgid ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
 "                              Change to DIRECTORY before doing anything.\n"
 msgstr ""
 "  -C DIRECTORY, --directory=DIRECTORY\n"
-"                              在执行先切换到 DIRECTORY 目录。\n"
+"                              在执行先切换到 DIRECTORY 目录。\n"
 
-#: main.c:311
+#: main.c:320
 msgid "  -d                          Print lots of debugging information.\n"
 msgstr "  -d                          打印大量调试信息。\n"
 
-#: main.c:313
+#: main.c:322
 msgid ""
 "  --debug[=FLAGS]             Print various types of debugging information.\n"
 msgstr "  --debug[=FLAGS]             打印各种调试信息。\n"
 
-#: main.c:315
+#: main.c:324
 msgid ""
 "  -e, --environment-overrides\n"
 "                              Environment variables override makefiles.\n"
@@ -747,12 +895,12 @@ msgstr ""
 "  -e, --environment-overrides\n"
 "                              环境变量覆盖 makefile 中的变量。\n"
 
-#: main.c:318
+#: main.c:327
 msgid ""
 "  --eval=STRING               Evaluate STRING as a makefile statement.\n"
 msgstr ""
 
-#: main.c:320
+#: main.c:329
 msgid ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              Read FILE as a makefile.\n"
@@ -760,16 +908,16 @@ msgstr ""
 "  -f FILE, --file=FILE, --makefile=FILE\n"
 "                              从 FILE 中读入 makefile。\n"
 
-#: main.c:323
+#: main.c:332
 msgid "  -h, --help                  Print this message and exit.\n"
 msgstr "  -h, --help                  打印该消息并退出。\n"
 
-#: main.c:325
+#: main.c:334
 #, fuzzy
 msgid "  -i, --ignore-errors         Ignore errors from recipes.\n"
 msgstr "  -i, --ignore-errors         忽略来自命令的错误。\n"
 
-#: main.c:327
+#: main.c:336
 msgid ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              Search DIRECTORY for included makefiles.\n"
@@ -777,19 +925,19 @@ msgstr ""
 "  -I DIRECTORY, --include-dir=DIRECTORY\n"
 "                              在 DIRECTORY 中搜索被包含的 makefile。\n"
 
-#: main.c:330
+#: main.c:339
 msgid ""
 "  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no "
 "arg.\n"
 msgstr ""
 "  -j [N], --jobs[=N]          同时允许 N 个任务;无参数表明允许无限个任务。\n"
 
-#: main.c:332
+#: main.c:341
 msgid ""
 "  -k, --keep-going            Keep going when some targets can't be made.\n"
 msgstr "  -k, --keep-going            当某些目标无法创建时仍然继续。\n"
 
-#: main.c:334
+#: main.c:343
 msgid ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              Don't start multiple jobs unless load is below "
@@ -798,14 +946,14 @@ msgstr ""
 "  -l [N], --load-average[=N], --max-load[=N]\n"
 "                              在系统负载高于 N 时不启动多任务。\n"
 
-#: main.c:337
+#: main.c:346
 msgid ""
 "  -L, --check-symlink-times   Use the latest mtime between symlinks and "
 "target.\n"
 msgstr ""
 "  -L, --check-symlink-times   使用软链接及软链接目标中修改时间较晚的一个。\n"
 
-#: main.c:339
+#: main.c:348
 #, fuzzy
 msgid ""
 "  -n, --just-print, --dry-run, --recon\n"
@@ -815,7 +963,7 @@ msgstr ""
 "  -n, --just-print, --dry-run, --recon\n"
 "                              只打印命令,不实际执行。\n"
 
-#: main.c:342
+#: main.c:351
 msgid ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              Consider FILE to be very old and don't remake "
@@ -824,11 +972,17 @@ msgstr ""
 "  -o FILE, --old-file=FILE, --assume-old=FILE\n"
 "                              将 FILE 当做很旧,不必重新生成。\n"
 
-#: main.c:345
+#: main.c:354
+msgid ""
+"  -O[TYPE], --output-sync[=TYPE]\n"
+"                              Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+
+#: main.c:357
 msgid "  -p, --print-data-base       Print make's internal database.\n"
 msgstr "  -p, --print-data-base       打印 make 的内部数据库。\n"
 
-#: main.c:347
+#: main.c:359
 #, fuzzy
 msgid ""
 "  -q, --question              Run no recipe; exit status says if up to "
@@ -836,20 +990,20 @@ msgid ""
 msgstr ""
 "  -q, --question              不运行任何命令;退出状态说明是否已全部更新。\n"
 
-#: main.c:349
+#: main.c:361
 msgid "  -r, --no-builtin-rules      Disable the built-in implicit rules.\n"
 msgstr "  -r, --no-builtin-rules      禁用内置隐含规则。\n"
 
-#: main.c:351
+#: main.c:363
 msgid "  -R, --no-builtin-variables  Disable the built-in variable settings.\n"
 msgstr "  -R, --no-builtin-variables  禁用内置变量设置。\n"
 
-#: main.c:353
+#: main.c:365
 #, fuzzy
 msgid "  -s, --silent, --quiet       Don't echo recipes.\n"
 msgstr "  -s, --silent, --quiet       不输出命令。\n"
 
-#: main.c:355
+#: main.c:367
 msgid ""
 "  -S, --no-keep-going, --stop\n"
 "                              Turns off -k.\n"
@@ -857,26 +1011,31 @@ msgstr ""
 "  -S, --no-keep-going, --stop\n"
 "                              关闭 -k。\n"
 
-#: main.c:358
+#: main.c:370
 msgid "  -t, --touch                 Touch targets instead of remaking them.\n"
 msgstr "  -t, --touch                 touch 目标而不是重新创建它们。\n"
 
-#: main.c:360
+#: main.c:372
+#, fuzzy
+msgid "  --trace                     Print tracing information.\n"
+msgstr "  --debug[=FLAGS]             打印各种调试信息。\n"
+
+#: main.c:374
 msgid ""
 "  -v, --version               Print the version number of make and exit.\n"
 msgstr "  -v, --version               打印 make 的版本号并退出。\n"
 
-#: main.c:362
+#: main.c:376
 msgid "  -w, --print-directory       Print the current directory.\n"
 msgstr "  -w, --print-directory       打印当前目录。\n"
 
-#: main.c:364
+#: main.c:378
 msgid ""
 "  --no-print-directory        Turn off -w, even if it was turned on "
 "implicitly.\n"
 msgstr "  --no-print-directory        关闭 -w,即使 -w 默认开启。\n"
 
-#: main.c:366
+#: main.c:380
 msgid ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              Consider FILE to be infinitely new.\n"
@@ -884,27 +1043,37 @@ msgstr ""
 "  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
 "                              将 FILE 当做最新。\n"
 
-#: main.c:369
+#: main.c:383
 msgid ""
 "  --warn-undefined-variables  Warn when an undefined variable is "
 "referenced.\n"
 msgstr "  --warn-undefined-variables  当引用未定义变量的时候发出警告。\n"
 
-#: main.c:564
+#: main.c:647
 msgid "empty string invalid as file name"
 msgstr "空字符串是无效的文件名"
 
-#: main.c:650
-#, c-format
-msgid "unknown debug level specification `%s'"
+#: main.c:734
+#, fuzzy, c-format
+msgid "unknown debug level specification '%s'"
 msgstr "未知的调试级别“%s”"
 
-#: main.c:690
+#: main.c:777
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr ""
+
+#: main.c:787
+#, fuzzy
+msgid "internal error: multiple --sync-mutex options"
+msgstr "内部错误:多个 --jobserver-fds 选项"
+
+#: main.c:848
 #, fuzzy, c-format
 msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
 msgstr "%s:捕获中断/异常 (代码 = 0x%lx, 地址 = 0x%lx)\n"
 
-#: main.c:697
+#: main.c:855
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -919,158 +1088,180 @@ msgstr ""
 "异常标志 = %lx\n"
 "异常地址 = %lx\n"
 
-#: main.c:705
+#: main.c:863
 #, fuzzy, c-format
 msgid "Access violation: write operation at address 0x%p\n"
 msgstr "访问冲突:地址 %lx 处的写操作\n"
 
-#: main.c:706
+#: main.c:864
 #, fuzzy, c-format
 msgid "Access violation: read operation at address 0x%p\n"
 msgstr "访问冲突:地址 %lx处的读操作\n"
 
-#: main.c:781 main.c:792
+#: main.c:940 main.c:955
 #, fuzzy, c-format
 msgid "find_and_set_shell() setting default_shell = %s\n"
 msgstr "find_and_set_shell 设置 default_shell = %s\n"
 
-#: main.c:834
+#: main.c:1008
 #, 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:1273
+#: main.c:1447
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s 正在挂起 30 秒..."
 
-#: main.c:1275
+#: main.c:1449
 #, c-format
 msgid "done sleep(30). Continuing.\n"
 msgstr "睡眠完成(30)。继续。\n"
 
-#: main.c:1501
+#: main.c:1534
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "内部错误:多个 --jobserver-fds 选项"
+
+#: main.c:1544
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+
+#: main.c:1547
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr ""
+
+#: main.c:1551
+#, fuzzy, c-format
+msgid "internal error: invalid --jobserver-fds string '%s'"
+msgstr "内部错误:非法 --jobserver-fds 字符串“%s”"
+
+#: main.c:1554
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr ""
+
+#: main.c:1567
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "警告: 子 make 中强制 -jN: 关闭 jobserver 模式。"
+
+#: main.c:1583
+msgid "dup jobserver"
+msgstr "复制任务服务器"
+
+#: main.c:1586
+#, fuzzy
+msgid ""
+"warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."
+msgstr "警告: jobserver 不存在: 使用 -j1。添加 “+” 到父 make 的规则。"
+
+#: main.c:1752
 msgid "Makefile from standard input specified twice."
 msgstr "两次指明来自标准输入的 makefile。"
 
-#: main.c:1539 vmsjobs.c:500
+#: main.c:1790 vmsjobs.c:496
 msgid "fopen (temporary file)"
 msgstr "fopen (临时文件)"
 
-#: main.c:1545
+#: main.c:1796
 msgid "fwrite (temporary file)"
 msgstr "fwrite (临时文件)"
 
-#: main.c:1703
+#: main.c:1984
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "本平台不支持并行任务 (-j)。"
 
-#: main.c:1704
+#: main.c:1985
 msgid "Resetting to single job (-j1) mode."
 msgstr "重置为单任务模式 (-j1)。"
 
-#: main.c:1719
-msgid "internal error: multiple --jobserver-fds options"
-msgstr "内部错误:多个 --jobserver-fds 选项"
-
-#: main.c:1727
+#: main.c:2006
 #, c-format
-msgid "internal error: invalid --jobserver-fds string `%s'"
-msgstr "内部错误:非法 --jobserver-fds 字符串“%s”"
+msgid "Jobserver slots limited to %d\n"
+msgstr ""
 
-#: main.c:1730
+#: main.c:2012
 #, c-format
-msgid "Jobserver client (fds %d,%d)\n"
+msgid "creating jobserver semaphore: (Error %ld: %s)"
 msgstr ""
 
-#: main.c:1740
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "警告: 子 make 中强制 -jN: 关闭 jobserver 模式。"
-
-#: main.c:1750
-msgid "dup jobserver"
-msgstr "复制任务服务器"
-
-#: main.c:1753
-msgid ""
-"warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
-msgstr "警告: jobserver 不存在: 使用 -j1。添加 “+” 到父 make 的规则。"
-
-#: main.c:1777
+#: main.c:2019
 msgid "creating jobs pipe"
 msgstr "正在创建任务管道"
 
-#: main.c:1792
+#: main.c:2039
 msgid "init jobserver pipe"
 msgstr "创始化任务服务器管道"
 
-#: main.c:1812
+#: main.c:2064
 msgid "Symbolic links not supported: disabling -L."
 msgstr "不支持软链接: 关闭 -L"
 
-#: main.c:1892
+#: main.c:2149
 msgid "Updating makefiles....\n"
 msgstr "正在更新 makefile....\n"
 
-#: main.c:1917
-#, c-format
-msgid "Makefile `%s' might loop; not remaking it.\n"
+#: main.c:2174
+#, fuzzy, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
 msgstr "Makefile “%s”可能循环;不会重新创建它。\n"
 
-#: main.c:1996
-#, c-format
-msgid "Failed to remake makefile `%s'."
+#: main.c:2253
+#, fuzzy, c-format
+msgid "Failed to remake makefile '%s'."
 msgstr "重新创建 makefile “%s” 失败。"
 
-#: main.c:2013
-#, c-format
-msgid "Included makefile `%s' was not found."
+#: main.c:2270
+#, fuzzy, c-format
+msgid "Included makefile '%s' was not found."
 msgstr "找不到被引入的 makefile “%s”"
 
-#: main.c:2018
-#, c-format
-msgid "Makefile `%s' was not found"
+#: main.c:2275
+#, fuzzy, c-format
+msgid "Makefile '%s' was not found"
 msgstr "找不到 makefile “%s”"
 
-#: main.c:2086
+#: main.c:2341
 msgid "Couldn't change back to original directory."
 msgstr "无法回到原始目录。"
 
-#: main.c:2102
+#: main.c:2354
 #, c-format
 msgid "Re-executing[%u]:"
 msgstr "重新执行[%u]:"
 
-#: main.c:2215
+#: main.c:2463
 msgid "unlink (temporary file): "
 msgstr "删除 (临时文件):"
 
-#: main.c:2247
+#: main.c:2495
 msgid ".DEFAULT_GOAL contains more than one target"
 msgstr ".DEFAULT_GOAL 包含多余一个目标"
 
-#: main.c:2270
+#: main.c:2518
 msgid "No targets specified and no makefile found"
 msgstr "没有指明目标并且找不到 makefile"
 
-#: main.c:2272
+#: main.c:2520
 msgid "No targets"
 msgstr "无目标"
 
-#: main.c:2277
+#: main.c:2525
 msgid "Updating goal targets....\n"
 msgstr "更新目标....\n"
 
-#: main.c:2306
+#: main.c:2550
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "警告:检测到时钟错误。您的创建可能是不完整的。"
 
-#: main.c:2470
+#: main.c:2718
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "用法:%s [选项] [目标] ...\n"
 
-#: main.c:2476
+#: main.c:2724
 #, c-format
 msgid ""
 "\n"
@@ -1079,7 +1270,7 @@ msgstr ""
 "\n"
 "该程序为 %s 编译\n"
 
-#: main.c:2478
+#: main.c:2726
 #, c-format
 msgid ""
 "\n"
@@ -1088,36 +1279,36 @@ msgstr ""
 "\n"
 "该程序为 %s (%s) 编译\n"
 
-#: main.c:2481
+#: main.c:2729
 #, c-format
 msgid "Report bugs to <bug-make@gnu.org>\n"
 msgstr "报告错误到 <bug-make@gnu.org>\n"
 
-#: main.c:2562
+#: main.c:2810
 #, fuzzy, c-format
-msgid "the `%s%s' option requires a non-empty string argument"
+msgid "the '%s%s' option requires a non-empty string argument"
 msgstr "“-%c”选项需要非空字符串参数"
 
-#: main.c:2617
-#, c-format
-msgid "the `-%c' option requires a positive integral argument"
+#: main.c:2864
+#, fuzzy, c-format
+msgid "the '-%c' option requires a positive integer argument"
 msgstr "“-%c”选项需要正整数参数"
 
-#: main.c:3054
+#: main.c:3253
 #, fuzzy, c-format
 msgid "%sBuilt for %s\n"
 msgstr ""
 "\n"
 "%s该程序为 %s 编译\n"
 
-#: main.c:3056
+#: main.c:3255
 #, fuzzy, c-format
 msgid "%sBuilt for %s (%s)\n"
 msgstr ""
 "\n"
 "%s该程序为 %s (%s) 编译\n"
 
-#: main.c:3066
+#: main.c:3266
 #, c-format
 msgid ""
 "%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1126,7 +1317,7 @@ msgid ""
 "%sThere is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 
-#: main.c:3086
+#: main.c:3287
 #, c-format
 msgid ""
 "\n"
@@ -1135,7 +1326,7 @@ msgstr ""
 "\n"
 "# make 数据基础,打印在 %s"
 
-#: main.c:3096
+#: main.c:3297
 #, c-format
 msgid ""
 "\n"
@@ -1144,106 +1335,106 @@ msgstr ""
 "\n"
 "# 在 %s 上完成 make 数据基础\n"
 
-#: main.c:3237
+#: misc.c:201
+#, c-format
+msgid "Unknown error %d"
+msgstr "未知错误 %d"
+
+#: misc.c:222 misc.c:233 misc.c:248 misc.c:265 misc.c:284 read.c:3272
+msgid "virtual memory exhausted"
+msgstr "虚拟内存耗尽"
+
+#: misc.c:522
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n"
+
+#: misc.c:543
+msgid "Initialized access"
+msgstr "初始化成功"
+
+#: misc.c:622
+msgid "User access"
+msgstr "用户权限"
+
+#: misc.c:670
+msgid "Make access"
+msgstr "Make 权限"
+
+#: misc.c:704
+msgid "Child access"
+msgstr "子进程 权限"
+
+#: output.c:128
 #, c-format
 msgid "%s: Entering an unknown directory\n"
 msgstr "%s: 进入一个未知的目录\n"
 
-#: main.c:3239
+#: output.c:130
 #, c-format
 msgid "%s: Leaving an unknown directory\n"
 msgstr "%s: 离开一个未知的目录\n"
 
-#: main.c:3242
-#, c-format
-msgid "%s: Entering directory `%s'\n"
+#: output.c:133
+#, fuzzy, c-format
+msgid "%s: Entering directory '%s'\n"
 msgstr "%s: 进入目录“%s”\n"
 
-#: main.c:3245
-#, c-format
-msgid "%s: Leaving directory `%s'\n"
+#: output.c:135
+#, fuzzy, c-format
+msgid "%s: Leaving directory '%s'\n"
 msgstr "%s: 离开目录“%s”\n"
 
-#: main.c:3250
+#: output.c:139
 #, c-format
 msgid "%s[%u]: Entering an unknown directory\n"
 msgstr "%s[%u]: 进入一个未知的目录\n"
 
-#: main.c:3253
+#: output.c:141
 #, c-format
 msgid "%s[%u]: Leaving an unknown directory\n"
 msgstr "%s[%u]: 离开一个未知的目录\n"
 
-#: main.c:3257
-#, c-format
-msgid "%s[%u]: Entering directory `%s'\n"
+#: output.c:144
+#, fuzzy, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
 msgstr "%s[%u]: 进入目录“%s”\n"
 
-#: main.c:3260
-#, c-format
-msgid "%s[%u]: Leaving directory `%s'\n"
+#: output.c:146
+#, fuzzy, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
 msgstr "%s[%u]: 离开目录“%s”\n"
 
-#: misc.c:316
+#: output.c:515
+#, c-format
+msgid "write error: %s"
+msgstr "写错误: %s"
+
+#: output.c:517
+msgid "write error"
+msgstr "写错误"
+
+#: output.c:740
 msgid ".  Stop.\n"
 msgstr "。 停止。\n"
 
-#: misc.c:337
-#, c-format
-msgid "Unknown error %d"
-msgstr "未知错误 %d"
-
-#: misc.c:347
+#: output.c:751
 #, c-format
 msgid "%s%s: %s"
 msgstr "%s%s: %s"
 
-#: misc.c:355
+#: output.c:759
 #, 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 "虚拟内存耗尽"
-
-#: 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:729
-msgid "Initialized access"
-msgstr "初始化成功"
-
-#: misc.c:808
-msgid "User access"
-msgstr "用户权限"
-
-#: misc.c:856
-msgid "Make access"
-msgstr "Make 权限"
-
-#: misc.c:890
-msgid "Child access"
-msgstr "子进程 权限"
-
-#: misc.c:954
-#, c-format
-msgid "write error: %s"
-msgstr "写错误: %s"
-
-#: misc.c:956
-msgid "write error"
-msgstr "写错误"
-
-#: read.c:179
+#: read.c:180
 msgid "Reading makefiles...\n"
 msgstr "正在读入 makefiles...\n"
 
 #: read.c:333
-#, c-format
-msgid "Reading makefile `%s'"
+#, fuzzy, c-format
+msgid "Reading makefile '%s'"
 msgstr "正在读入 makefile “%s”"
 
 #: read.c:335
@@ -1266,326 +1457,344 @@ msgstr " (不用理)"
 msgid " (no ~ expansion)"
 msgstr " (没有 ~ 扩展)"
 
-#: read.c:759
+#: read.c:652
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+
+#: read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+
+#: read.c:786
 msgid "invalid syntax in conditional"
 msgstr "条件中含有无效语法"
 
-#: read.c:891
+#: read.c:961
+#, c-format
+msgid "%s: failed to load"
+msgstr ""
+
+#: read.c:987
 #, fuzzy
 msgid "recipe commences before first target"
 msgstr "命令在第一个目标前开始"
 
-#: read.c:940
+#: read.c:1036
 #, fuzzy
 msgid "missing rule before recipe"
 msgstr "命令之前遗漏了规则"
 
-#: read.c:1027
+#: read.c:1123
 #, c-format
 msgid "missing separator%s"
 msgstr "遗漏分隔符 %s"
 
-#: read.c:1029
+#: read.c:1125
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (您的意思是用 TAB 代替 8 个空格?)"
 
-#: read.c:1163
+#: read.c:1263
 msgid "missing target pattern"
 msgstr "无目标匹配"
 
-#: read.c:1165
+#: read.c:1265
 msgid "multiple target patterns"
 msgstr "多个目标匹配"
 
-#: read.c:1169
-#, c-format
-msgid "target pattern contains no `%%'"
+#: read.c:1269
+#, fuzzy, c-format
+msgid "target pattern contains no '%%'"
 msgstr "目标模式不含有“%%”"
 
-#: read.c:1293
-msgid "missing `endif'"
+#: read.c:1391
+#, fuzzy
+msgid "missing 'endif'"
 msgstr "遗漏“endif”"
 
-#: read.c:1332 read.c:1377 variable.c:1488
+#: read.c:1430 read.c:1475 variable.c:1554
 msgid "empty variable name"
 msgstr "空变量名"
 
-#: read.c:1367
+#: read.c:1465
 #, fuzzy
-msgid "extraneous text after `define' directive"
+msgid "extraneous text after 'define' directive"
 msgstr "“endef”指令后含有不该出现的文字"
 
-#: read.c:1392
-msgid "missing `endef', unterminated `define'"
+#: read.c:1490
+#, fuzzy
+msgid "missing 'endef', unterminated 'define'"
 msgstr "遗漏“endef”,未终止的“define”"
 
-#: read.c:1420
+#: read.c:1518
 #, fuzzy
-msgid "extraneous text after `endef' directive"
+msgid "extraneous text after 'endef' directive"
 msgstr "“endef”指令后含有不该出现的文字"
 
-#: read.c:1490
-#, c-format
-msgid "Extraneous text after `%s' directive"
+#: read.c:1589
+#, fuzzy, c-format
+msgid "extraneous text after '%s' directive"
 msgstr "在“%s”指令之后含有不该出现的文字"
 
-#: read.c:1499 read.c:1513
-#, c-format
-msgid "extraneous `%s'"
+#: read.c:1598 read.c:1612
+#, fuzzy, c-format
+msgid "extraneous '%s'"
 msgstr "不该出现的“%s”"
 
-#: read.c:1518
-msgid "only one `else' per conditional"
+#: read.c:1617
+#, fuzzy
+msgid "only one 'else' per conditional"
 msgstr "每个条件只能有一个“else”"
 
-#: read.c:1797
+#: read.c:1892
 msgid "Malformed target-specific variable definition"
 msgstr "畸形的针对目标的标量定义"
 
-#: read.c:1855
+#: read.c:1951
 #, fuzzy
 msgid "prerequisites cannot be defined in recipes"
 msgstr "依赖无法在命令脚本中定义"
 
-#: read.c:1908
+#: read.c:2009
 msgid "mixed implicit and static pattern rules"
 msgstr "混和的隐含和静态模式规则"
 
-#: read.c:1931 read.c:2112
+#: read.c:2032 read.c:2220
 msgid "mixed implicit and normal rules"
 msgstr "混和的隐含和普通规则"
 
-#: read.c:1976
-#, c-format
-msgid "target `%s' doesn't match the target pattern"
+#: read.c:2084
+#, fuzzy, c-format
+msgid "target '%s' doesn't match the target pattern"
 msgstr "目标“%s”不匹配目标模式"
 
-#: read.c:1991 read.c:2036
-#, c-format
-msgid "target file `%s' has both : and :: entries"
+#: read.c:2099 read.c:2144
+#, fuzzy, c-format
+msgid "target file '%s' has both : and :: entries"
 msgstr "目标文件“%s”含有 : 和 :: 两种条目"
 
-#: read.c:1997
-#, c-format
-msgid "target `%s' given more than once in the same rule."
+#: read.c:2105
+#, fuzzy, c-format
+msgid "target '%s' given more than once in the same rule"
 msgstr "目标“%s”在同一个规则中给出了多次。"
 
-#: read.c:2006
+#: read.c:2114
 #, fuzzy, c-format
-msgid "warning: overriding recipe for target `%s'"
+msgid "warning: overriding recipe for target '%s'"
 msgstr "警告:覆盖关于目标“%s”的命令"
 
-#: read.c:2009
+#: read.c:2117
 #, fuzzy, c-format
-msgid "warning: ignoring old recipe for target `%s'"
+msgid "warning: ignoring old recipe for target '%s'"
 msgstr "警告:忽略关于目标“%s”的旧命令"
 
-#: read.c:2392
+#: read.c:2530
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "警告:遇到了 NUL 字符;忽略行的剩余部分"
 
-#: remake.c:234
-#, c-format
-msgid "Nothing to be done for `%s'."
+#: remake.c:232
+#, fuzzy, c-format
+msgid "Nothing to be done for '%s'."
 msgstr "对“%s”无需做任何事。"
 
-#: remake.c:235
-#, c-format
-msgid "`%s' is up to date."
+#: remake.c:233
+#, fuzzy, c-format
+msgid "'%s' is up to date."
 msgstr "“%s”是最新的。"
 
-#: remake.c:306
-#, c-format
-msgid "Pruning file `%s'.\n"
+#: remake.c:305
+#, fuzzy, c-format
+msgid "Pruning file '%s'.\n"
 msgstr "正在删除文件“%s”。\n"
 
-#: remake.c:359
-#, c-format
-msgid "%sNo rule to make target `%s'%s"
+#: remake.c:377
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s'%s"
 msgstr "%s没有规则可以创建目标“%s”%s"
 
-#: remake.c:361
-#, c-format
-msgid "%sNo rule to make target `%s', needed by `%s'%s"
+#: remake.c:379
+#, fuzzy, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
 msgstr "%1$s没有规则可以创建“%3$s”%4$s需要的目标“%2$s”"
 
 #: remake.c:413
-#, c-format
-msgid "Considering target file `%s'.\n"
+#, fuzzy, c-format
+msgid "Considering target file '%s'.\n"
 msgstr "正在考虑目标文件“%s”。\n"
 
 #: remake.c:420
-#, c-format
-msgid "Recently tried and failed to update file `%s'.\n"
+#, fuzzy, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
 msgstr "最近已尝试过更新文件“%s”并失败。\n"
 
 #: remake.c:432
-#, c-format
-msgid "File `%s' was considered already.\n"
+#, fuzzy, c-format
+msgid "File '%s' was considered already.\n"
 msgstr "已考虑过文件“%s”。\n"
 
 #: remake.c:442
-#, c-format
-msgid "Still updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Still updating file '%s'.\n"
 msgstr "仍然在更新文件“%s”。\n"
 
 #: remake.c:445
-#, c-format
-msgid "Finished updating file `%s'.\n"
+#, fuzzy, c-format
+msgid "Finished updating file '%s'.\n"
 msgstr "更新文件“%s”完成。\n"
 
 #: remake.c:474
-#, c-format
-msgid "File `%s' does not exist.\n"
+#, fuzzy, c-format
+msgid "File '%s' does not exist.\n"
 msgstr "文件“%s”不存在。\n"
 
 #: remake.c:481
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
 msgstr "*** 警告: .LOW_RESOLUTION_TIME 文件 `%s' 有一个精细的时间标志"
 
-#: remake.c:494 remake.c:1016
-#, c-format
-msgid "Found an implicit rule for `%s'.\n"
+#: remake.c:494 remake.c:1019
+#, fuzzy, c-format
+msgid "Found an implicit rule for '%s'.\n"
 msgstr "找到一条关于“%s”的隐含规则。\n"
 
-#: remake.c:496 remake.c:1018
-#, c-format
-msgid "No implicit rule found for `%s'.\n"
+#: remake.c:496 remake.c:1021
+#, fuzzy, c-format
+msgid "No implicit rule found for '%s'.\n"
 msgstr "找不到关于“%s”的隐含规则。\n"
 
 #: remake.c:502
 #, fuzzy, c-format
-msgid "Using default recipe for `%s'.\n"
+msgid "Using default recipe for '%s'.\n"
 msgstr "使用关于“%s”的默认命令。\n"
 
-#: remake.c:535 remake.c:1057
+#: remake.c:535 remake.c:1067
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "放弃循环依赖 %s <- %s 。"
 
-#: remake.c:651
-#, c-format
-msgid "Finished prerequisites of target file `%s'.\n"
+#: remake.c:655
+#, fuzzy, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
 msgstr "目标文件“%s”的前提已完成。\n"
 
-#: remake.c:657
-#, c-format
-msgid "The prerequisites of `%s' are being made.\n"
+#: remake.c:661
+#, fuzzy, c-format
+msgid "The prerequisites of '%s' are being made.\n"
 msgstr "正在创建“%s”的前提。\n"
 
-#: remake.c:670
-#, c-format
-msgid "Giving up on target file `%s'.\n"
+#: remake.c:674
+#, fuzzy, c-format
+msgid "Giving up on target file '%s'.\n"
 msgstr "放弃目标文件“%s”。\n"
 
-#: remake.c:675
-#, c-format
-msgid "Target `%s' not remade because of errors."
+#: remake.c:679
+#, fuzzy, c-format
+msgid "Target '%s' not remade because of errors."
 msgstr "由于错误目标“%s”并未重新创建。"
 
-#: remake.c:727
-#, c-format
-msgid "Prerequisite `%s' is order-only for target `%s'.\n"
+#: remake.c:731
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
 msgstr "“%s”是目标“%s”的一个仅用于指定执行顺序(order-only)的前提。\n"
 
-#: remake.c:732
-#, c-format
-msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+#: remake.c:736
+#, fuzzy, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
 msgstr "目标“%2$s”的前提“%1$s”不存在。\n"
 
-#: remake.c:737
-#, c-format
-msgid "Prerequisite `%s' is newer than target `%s'.\n"
+#: remake.c:741
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
 msgstr "前提“%s”比目标“%s”新。\n"
 
-#: remake.c:740
-#, c-format
-msgid "Prerequisite `%s' is older than target `%s'.\n"
+#: remake.c:744
+#, fuzzy, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
 msgstr "前提“%s”比目标“%s”旧。\n"
 
-#: remake.c:758
-#, c-format
-msgid "Target `%s' is double-colon and has no prerequisites.\n"
+#: remake.c:762
+#, fuzzy, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
 msgstr "目标“%s”是双冒号目标并且没有前提。\n"
 
-#: remake.c:765
+#: remake.c:769
 #, fuzzy, c-format
-msgid "No recipe for `%s' and no prerequisites actually changed.\n"
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
 msgstr "没有关于“%s”的命令,并且实际上改变了的前提。\n"
 
-#: remake.c:770
-#, c-format
-msgid "Making `%s' due to always-make flag.\n"
+#: remake.c:774
+#, fuzzy, c-format
+msgid "Making '%s' due to always-make flag.\n"
 msgstr "由于 always-make 标志所以 make “%s”。\n"
 
-#: remake.c:778
-#, c-format
-msgid "No need to remake target `%s'"
+#: remake.c:782
+#, fuzzy, c-format
+msgid "No need to remake target '%s'"
 msgstr "不需要重新创建目标“%s”"
 
-#: remake.c:780
-#, c-format
-msgid "; using VPATH name `%s'"
+#: remake.c:784
+#, fuzzy, c-format
+msgid "; using VPATH name '%s'"
 msgstr ";使用 VPATH 名称“%s”"
 
-#: remake.c:800
-#, c-format
-msgid "Must remake target `%s'.\n"
+#: remake.c:804
+#, fuzzy, c-format
+msgid "Must remake target '%s'.\n"
 msgstr "必须重新创建目标“%s”。\n"
 
-#: remake.c:806
-#, c-format
-msgid "  Ignoring VPATH name `%s'.\n"
+#: remake.c:810
+#, fuzzy, c-format
+msgid "  Ignoring VPATH name '%s'.\n"
 msgstr "  忽略 VPATH 名称 `%s'。\n"
 
-#: remake.c:815
+#: remake.c:819
 #, fuzzy, c-format
-msgid "Recipe of `%s' is being run.\n"
+msgid "Recipe of '%s' is being run.\n"
 msgstr "“%s”的命令正在被执行。\n"
 
-#: remake.c:822
-#, c-format
-msgid "Failed to remake target file `%s'.\n"
+#: remake.c:826
+#, fuzzy, c-format
+msgid "Failed to remake target file '%s'.\n"
 msgstr "重新创建目标文件“%s”失败。\n"
 
-#: remake.c:825
-#, c-format
-msgid "Successfully remade target file `%s'.\n"
+#: remake.c:829
+#, fuzzy, c-format
+msgid "Successfully remade target file '%s'.\n"
 msgstr "重新创建目标文件“%s”成功。\n"
 
-#: remake.c:828
-#, c-format
-msgid "Target file `%s' needs remade under -q.\n"
+#: remake.c:832
+#, fuzzy, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
 msgstr "目标文件“%s”需要以 -q 选项重新创建。\n"
 
-#: remake.c:1024
-#, c-format
-msgid "Using default commands for `%s'.\n"
+#: remake.c:1027
+#, fuzzy, 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"
+#: remake.c:1372
+#, fuzzy, c-format
+msgid "Warning: File '%s' has modification time in the future"
 msgstr "警告:文件“%s”的修改时间在未来"
 
-#: remake.c:1370
+#: remake.c:1385
 #, fuzzy, c-format
-msgid "Warning: File `%s' has modification time %s s in the future"
+msgid "Warning: File '%s' has modification time %s s in the future"
 msgstr "警告:文件“%s”的修改时间在 %.2g 秒后"
 
-#: remake.c:1569
-#, c-format
-msgid ".LIBPATTERNS element `%s' is not a pattern"
+#: remake.c:1583
+#, fuzzy, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
 msgstr ".LIBPATTERNS 的元素“%s”不是一个模式"
 
-#: remote-cstms.c:125
+#: remote-cstms.c:122
 #, c-format
 msgid "Customs won't export: %s\n"
 msgstr "用户不希望导出:%s\n"
 
-#: rule.c:499
+#: rule.c:496
 msgid ""
 "\n"
 "# Implicit Rules"
@@ -1593,7 +1802,7 @@ msgstr ""
 "\n"
 "# 隐含规则。"
 
-#: rule.c:514
+#: rule.c:511
 msgid ""
 "\n"
 "# No implicit rules."
@@ -1601,7 +1810,7 @@ msgstr ""
 "\n"
 "# 没有隐含规则。"
 
-#: rule.c:517
+#: rule.c:514
 #, c-format
 msgid ""
 "\n"
@@ -1610,244 +1819,259 @@ msgstr ""
 "\n"
 "# %u 条隐含规则,%u"
 
-#: rule.c:526
+#: rule.c:523
 msgid " terminal."
 msgstr " 终端。"
 
-#: rule.c:534
+#: rule.c:531
 #, fuzzy, c-format
 msgid "BUG: num_pattern_rules is wrong!  %u != %u"
 msgstr "错误:num_pattern_rules 出错!%u != %u"
 
-#: signame.c:86
+#: signame.c:84
 msgid "unknown signal"
 msgstr "未知的信号"
 
-#: signame.c:94
+#: signame.c:92
 msgid "Hangup"
 msgstr "挂起"
 
-#: signame.c:97
+#: signame.c:95
 msgid "Interrupt"
 msgstr "中断"
 
-#: signame.c:100
+#: signame.c:98
 msgid "Quit"
 msgstr "退出"
 
-#: signame.c:103
+#: signame.c:101
 msgid "Illegal Instruction"
 msgstr "非法指令"
 
-#: signame.c:106
+#: signame.c:104
 msgid "Trace/breakpoint trap"
 msgstr "跟踪/断点陷阱"
 
-#: signame.c:111
+#: signame.c:109
 msgid "Aborted"
 msgstr "已失败"
 
-#: signame.c:114
+#: signame.c:112
 msgid "IOT trap"
 msgstr "IOT 陷阱"
 
-#: signame.c:117
+#: signame.c:115
 msgid "EMT trap"
 msgstr "EMT 陷阱"
 
-#: signame.c:120
+#: signame.c:118
 msgid "Floating point exception"
 msgstr "浮点数异常"
 
-#: signame.c:123
+#: signame.c:121
 msgid "Killed"
 msgstr "已杀死"
 
-#: signame.c:126
+#: signame.c:124
 msgid "Bus error"
 msgstr "总线错误"
 
-#: signame.c:129
+#: signame.c:127
 msgid "Segmentation fault"
 msgstr "段错误"
 
-#: signame.c:132
+#: signame.c:130
 msgid "Bad system call"
 msgstr "错误的系统调用"
 
-#: signame.c:135
+#: signame.c:133
 msgid "Broken pipe"
 msgstr "断开的管道"
 
-#: signame.c:138
+#: signame.c:136
 msgid "Alarm clock"
 msgstr "闹钟"
 
-#: signame.c:141
+#: signame.c:139
 msgid "Terminated"
 msgstr "已终止"
 
-#: signame.c:144
+#: signame.c:142
 msgid "User defined signal 1"
 msgstr "用户定义信号 1"
 
-#: signame.c:147
+#: signame.c:145
 msgid "User defined signal 2"
 msgstr "用户定义信号 2"
 
-#: signame.c:152 signame.c:155
+#: signame.c:150 signame.c:153
 msgid "Child exited"
 msgstr "子进程已退出"
 
-#: signame.c:158
+#: signame.c:156
 msgid "Power failure"
 msgstr "电源失效"
 
-#: signame.c:161
+#: signame.c:159
 msgid "Stopped"
 msgstr "已停止"
 
-#: signame.c:164
+#: signame.c:162
 msgid "Stopped (tty input)"
 msgstr "已停止 (tty 输入)"
 
-#: signame.c:167
+#: signame.c:165
 msgid "Stopped (tty output)"
 msgstr "已停止 (tty 输出)"
 
-#: signame.c:170
+#: signame.c:168
 msgid "Stopped (signal)"
 msgstr "已停止 (信号)"
 
-#: signame.c:173
+#: signame.c:171
 msgid "CPU time limit exceeded"
 msgstr "CPU 时间超出限制"
 
-#: signame.c:176
+#: signame.c:174
 msgid "File size limit exceeded"
 msgstr "文件大小超出限制"
 
-#: signame.c:179
+#: signame.c:177
 msgid "Virtual timer expired"
 msgstr "虚拟时钟超时"
 
-#: signame.c:182
+#: signame.c:180
 msgid "Profiling timer expired"
 msgstr "测试时钟超市"
 
-#: signame.c:188
+#: signame.c:186
 msgid "Window changed"
 msgstr "窗口已改变"
 
-#: signame.c:191
+#: signame.c:189
 msgid "Continued"
 msgstr "继续"
 
-#: signame.c:194
+#: signame.c:192
 msgid "Urgent I/O condition"
 msgstr "紧急 I/O 条件"
 
-#: signame.c:201 signame.c:210
+#: signame.c:199 signame.c:208
 msgid "I/O possible"
 msgstr "I/O 可行"
 
-#: signame.c:204
+#: signame.c:202
 msgid "SIGWIND"
 msgstr "SIGWIND"
 
-#: signame.c:207
+#: signame.c:205
 msgid "SIGPHONE"
 msgstr "SIGPHONE"
 
-#: signame.c:213
+#: signame.c:211
 msgid "Resource lost"
 msgstr "资源丢失"
 
-#: signame.c:216
+#: signame.c:214
 msgid "Danger signal"
 msgstr "危险信号"
 
-#: signame.c:219
+#: signame.c:217
 msgid "Information request"
 msgstr "信息请求"
 
-#: signame.c:222
+#: signame.c:220
 msgid "Floating point co-processor not available"
 msgstr "浮点数协处理器不可用"
 
-#: strcache.c:235
+#: strcache.c:236
 #, fuzzy, c-format
 msgid ""
 "\n"
-"%s # of strings in strcache: %d / lookups = %lu / hits = %lu\n"
-msgstr ""
-"\n"
-"%s strcache 中的字符串数量: %d\n"
+"%s No strcache buffers\n"
+msgstr "%s strcache 缓冲区数量: %d\n"
 
-#: strcache.c:237
+#: strcache.c:266
 #, fuzzy, c-format
-msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-msgstr "%s strcache 缓冲区数量: %d\n"
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr "%s strcache 剩余: 总共 = %d / 最大 = %d / 最小 = %d / 平均 = %d\n"
+
+#: strcache.c:270
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+msgstr ""
 
-#: strcache.c:239
+#: strcache.c:280
 #, fuzzy, c-format
-msgid "%s strcache used: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
 msgstr "%s strcache 大小: 总共 = %d / 最大 = %d / 最小 = %d / 平均 = %d\n"
 
-#: strcache.c:241
+#: strcache.c:283
 #, fuzzy, c-format
-msgid "%s strcache free: total = %d (%d) / max = %d / min = %d / avg = %d\n"
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
 msgstr "%s strcache 剩余: 总共 = %d / 最大 = %d / 最小 = %d / 平均 = %d\n"
 
-#: strcache.c:244
-#, fuzzy
+#: strcache.c:287
+#, c-format
 msgid ""
 "\n"
-"# strcache hash-table stats:\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+
+#: strcache.c:289
+#, fuzzy
+msgid ""
+"# hash-table stats:\n"
 "# "
 msgstr ""
 "\n"
 "# 文件杂凑表状态:\n"
 "# "
 
-#: variable.c:1541
+#: variable.c:1607
+msgid "automatic"
+msgstr "自动"
+
+#: variable.c:1610
 msgid "default"
 msgstr "默认"
 
-#: variable.c:1544
+#: variable.c:1613
 msgid "environment"
 msgstr "环境"
 
-#: variable.c:1547
+#: variable.c:1616
 msgid "makefile"
 msgstr "makefile"
 
-#: variable.c:1550
+#: variable.c:1619
 msgid "environment under -e"
 msgstr "-e 指定的环境变量"
 
-#: variable.c:1553
+#: variable.c:1622
 msgid "command line"
 msgstr "命令行"
 
-#: variable.c:1556
-msgid "`override' directive"
+#: variable.c:1625
+#, fuzzy
+msgid "'override' directive"
 msgstr "“override”指令"
 
-#: variable.c:1559
-msgid "automatic"
-msgstr "自动"
-
-#: variable.c:1570
-#, c-format
-msgid " (from `%s', line %lu)"
+#: variable.c:1636
+#, fuzzy, c-format
+msgid " (from '%s', line %lu)"
 msgstr " (从“%s”,行 %lu)"
 
-#: variable.c:1612
+#: variable.c:1699
 msgid "# variable set hash-table stats:\n"
 msgstr "# 变量的杂凑表状态:\n"
 
-#: variable.c:1623
+#: variable.c:1710
 msgid ""
 "\n"
 "# Variables\n"
@@ -1855,7 +2079,7 @@ msgstr ""
 "\n"
 "# 变量\n"
 
-#: variable.c:1627
+#: variable.c:1714
 msgid ""
 "\n"
 "# Pattern-specific Variable Values"
@@ -1863,7 +2087,7 @@ msgstr ""
 "\n"
 "# Pattern-specific 变量值"
 
-#: variable.c:1641
+#: variable.c:1728
 msgid ""
 "\n"
 "# No pattern-specific variable values."
@@ -1871,7 +2095,7 @@ msgstr ""
 "\n"
 "# 没有 pattern-specific 变量的值。"
 
-#: variable.c:1643
+#: variable.c:1730
 #, c-format
 msgid ""
 "\n"
@@ -1880,92 +2104,92 @@ msgstr ""
 "\n"
 "# %u 个 pattern-specific 变量的值"
 
-#: variable.h:219
-#, c-format
-msgid "warning: undefined variable `%.*s'"
+#: variable.h:224
+#, fuzzy, c-format
+msgid "warning: undefined variable '%.*s'"
 msgstr "警告:未定义的变量“%.*s”"
 
-#: vmsfunctions.c:92
+#: vmsfunctions.c:91
 #, fuzzy, c-format
 msgid "sys$search() failed with %d\n"
 msgstr "sys$search 失败并返回 %d\n"
 
-#: vmsjobs.c:71
+#: vmsjobs.c:70
 #, c-format
 msgid "Warning: Empty redirection\n"
 msgstr "警告:空的重定向\n"
 
-#: vmsjobs.c:184
-#, c-format
-msgid "internal error: `%s' command_state"
+#: vmsjobs.c:178
+#, fuzzy, c-format
+msgid "internal error: '%s' command_state"
 msgstr "内部错误:“%s” command_state"
 
-#: vmsjobs.c:289
+#: vmsjobs.c:286
 #, c-format
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-警告, 你可能必须从 DCL 重新启用 CTRL-Y。\n"
 
-#: vmsjobs.c:421
+#: vmsjobs.c:417
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: vmsjobs.c:432
+#: vmsjobs.c:428
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: vmsjobs.c:450
+#: vmsjobs.c:446
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: vmsjobs.c:471
+#: vmsjobs.c:467
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "未知的内置命令“%s”\n"
 
-#: vmsjobs.c:493
+#: vmsjobs.c:489
 #, c-format
 msgid "Error, empty command\n"
 msgstr "错误,空命令\n"
 
-#: vmsjobs.c:506
+#: vmsjobs.c:502
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "来自 %s 的重定向输入\n"
 
-#: vmsjobs.c:513
+#: vmsjobs.c:509
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "到 %s 的重定向错误输出\n"
 
-#: vmsjobs.c:523
+#: vmsjobs.c:518
 #, fuzzy, c-format
 msgid "Append output to %s\n"
 msgstr "到 %s 的重定向输出\n"
 
-#: vmsjobs.c:529
+#: vmsjobs.c:524
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "到 %s 的重定向输出\n"
 
-#: vmsjobs.c:599
+#: vmsjobs.c:593
 #, c-format
 msgid "Append %.*s and cleanup\n"
 msgstr ""
 
-#: vmsjobs.c:606
+#: vmsjobs.c:600
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "执行 %s 作为替代\n"
 
-#: vmsjobs.c:712
+#: vmsjobs.c:706
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "错误产生,%d\n"
 
-#: vpath.c:586
+#: vpath.c:583
 msgid ""
 "\n"
 "# VPATH Search Paths\n"
@@ -1973,37 +2197,51 @@ msgstr ""
 "\n"
 "# VPATH 搜索路径\n"
 
-#: vpath.c:603
-msgid "# No `vpath' search paths."
+#: vpath.c:600
+#, fuzzy
+msgid "# No 'vpath' search paths."
 msgstr "# 没有“vpath”搜索路径。"
 
-#: vpath.c:605
-#, c-format
+#: vpath.c:602
+#, fuzzy, c-format
 msgid ""
 "\n"
-"# %u `vpath' search paths.\n"
+"# %u 'vpath' search paths.\n"
 msgstr ""
 "\n"
 "# %u “vpath”搜索路径。\n"
 
-#: vpath.c:608
+#: vpath.c:605
+#, fuzzy
 msgid ""
 "\n"
-"# No general (`VPATH' variable) search path."
+"# No general ('VPATH' variable) search path."
 msgstr ""
 "\n"
 "# 没有通用搜索路径(“VPATH”变量)。"
 
-#: vpath.c:614
+#: vpath.c:611
+#, fuzzy
 msgid ""
 "\n"
-"# General (`VPATH' variable) search path:\n"
+"# General ('VPATH' variable) search path:\n"
 "# "
 msgstr ""
 "\n"
 "# 通用搜索路径(“VPATH”变量):\n"
 "# "
 
+#, fuzzy
+#~ msgid "#  Invalid value in 'update_status' member!"
+#~ msgstr "#  “update_status”成员中无效的值!"
+
+#, fuzzy
+#~ msgid "unknown trace mode '%s'"
+#~ msgstr "未知的内置命令“%s”\n"
+
+#~ msgid "*** [%s] Error 0x%x (ignored)"
+#~ msgstr "*** [%s] 错误 0x%x (忽略)"
+
 #~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
 #~ msgstr "process_easy() 启动进程失败 (e=%ld)\n"
 
@@ -2025,6 +2263,13 @@ msgstr ""
 #~ msgid "invalid `override' directive"
 #~ msgstr "无效的“override”指令"
 
+#~ msgid ""
+#~ "\n"
+#~ "%s # of strings in strcache: %d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s strcache 中的字符串数量: %d\n"
+
 #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
 #~ msgstr "-警告, CTRL-Y 将利刀子进程环境。\n"
 
diff --git a/read.c b/read.c
index a3ad88e..15d1b13 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,14 +14,14 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
 #include <glob.h>
 
-#include "dep.h"
 #include "filedef.h"
+#include "dep.h"
 #include "job.h"
 #include "commands.h"
 #include "variable.h"
@@ -32,7 +30,10 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "hash.h"
 
 
-#ifndef WINDOWS32
+#ifdef WINDOWS32
+#include <windows.h>
+#include "sub_proc.h"
+#else  /* !WINDOWS32 */
 #ifndef _AMIGA
 #ifndef VMS
 #include <pwd.h>
@@ -53,7 +54,7 @@ struct ebuffer
     char *bufstart;     /* Start of the entire buffer.  */
     unsigned int size;  /* Malloc'd size of buffer. */
     FILE *fp;           /* File, or NULL if this is an internal buffer.  */
-    struct floc floc;   /* Info on the file in fp (if any).  */
+    gmk_floc floc;   /* Info on the file in fp (if any).  */
   };
 
 /* Track the modifiers we can have on variable assignments */
@@ -76,22 +77,22 @@ enum make_word_type
   };
 
 
-/* A `struct conditionals' contains the information describing
+/* A 'struct conditionals' contains the information describing
    all the active conditionals in a makefile.
 
-   The global variable `conditionals' contains the conditionals
+   The global variable 'conditionals' contains the conditionals
    information for the current makefile.  It is initialized from
-   the static structure `toplevel_conditionals' and is later changed
+   the static structure 'toplevel_conditionals' and is later changed
    to new structures for included makefiles.  */
 
 struct conditionals
   {
-    unsigned int if_cmds;      /* Depth of conditional nesting.  */
-    unsigned int allocated;    /* Elts allocated in following arrays.  */
-    char *ignoring;            /* Are we ignoring or interpreting?
+    unsigned int if_cmds;       /* Depth of conditional nesting.  */
+    unsigned int allocated;     /* Elts allocated in following arrays.  */
+    char *ignoring;             /* Are we ignoring or interpreting?
                                    0=interpreting, 1=not yet interpreted,
                                    2=already interpreted */
-    char *seen_else;           /* Have we already seen an `else'?  */
+    char *seen_else;            /* Have we already seen an 'else'?  */
   };
 
 static struct conditionals toplevel_conditionals;
@@ -127,11 +128,11 @@ static unsigned int max_incl_len;
 /* The filename and pointer to line number of the
    makefile currently being read in.  */
 
-const struct floc *reading_file = 0;
+const gmk_floc *reading_file = 0;
 
-/* The chain of makefiles read by read_makefile.  */
+/* The chain of files read by read_all_makefiles.  */
 
-static struct dep *read_makefiles = 0;
+static struct dep *read_files = 0;
 
 static int eval_makefile (const char *filename, int flags);
 static void eval (struct ebuffer *buffer, int flags);
@@ -141,30 +142,30 @@ 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 int conditional_line (char *line, int len, const gmk_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);
+                          char prefix, const gmk_floc *flocp);
 static void record_target_var (struct nameseq *filenames, char *defn,
                                enum variable_origin origin,
                                struct vmodifiers *vmod,
-                               const struct floc *flocp);
+                               const gmk_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);
+static char *find_char_unquote (char *string, int map);
+static char *unescape_char (char *string, int c);
 
 
 /* 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))
+#define word1eq(s)      (wlen == CSTRLEN (s) && strneq (s, p, CSTRLEN (s)))
 
 \f
-/* Read in all the makefiles and return the chain of their names.  */
+/* Read in all the makefiles and return a chain of targets to rebuild.  */
 
 struct dep *
 read_all_makefiles (const char **makefiles)
@@ -203,9 +204,9 @@ read_all_makefiles (const char **makefiles)
 
     while ((name = find_next_token ((const char **)&p, &length)) != 0)
       {
-       if (*p != '\0')
-         *p++ = '\0';
-       eval_makefile (name, RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE);
+        if (*p != '\0')
+          *p++ = '\0';
+        eval_makefile (name, RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE);
       }
 
     free (value);
@@ -216,21 +217,21 @@ read_all_makefiles (const char **makefiles)
   if (makefiles != 0)
     while (*makefiles != 0)
       {
-       struct dep *tail = read_makefiles;
-       register struct dep *d;
+        struct dep *tail = read_files;
+        struct dep *d;
 
-       if (! eval_makefile (*makefiles, 0))
-         perror_with_name ("", *makefiles);
+        if (! eval_makefile (*makefiles, 0))
+          perror_with_name ("", *makefiles);
 
-       /* Find the right element of read_makefiles.  */
-       d = read_makefiles;
-       while (d->next != tail)
-         d = d->next;
+        /* Find the first element eval_makefile() added to read_files.  */
+        d = read_files;
+        while (d->next != tail)
+          d = d->next;
 
-       /* Use the storage read_makefile allocates.  */
-       *makefiles = dep_name (d);
-       ++num_makefiles;
-       ++makefiles;
+        /* Reuse the storage allocated for the read_file.  */
+        *makefiles = dep_name (d);
+        ++num_makefiles;
+        ++makefiles;
       }
 
   /* If there were no -f switches, try the default names.  */
@@ -239,52 +240,52 @@ read_all_makefiles (const char **makefiles)
     {
       static char *default_makefiles[] =
 #ifdef VMS
-       /* all lower case since readdir() (the vms version) 'lowercasifies' */
-       { "makefile.vms", "gnumakefile.", "makefile.", 0 };
+        /* all lower case since readdir() (the vms version) 'lowercasifies' */
+        { "makefile.vms", "gnumakefile.", "makefile.", 0 };
 #else
 #ifdef _AMIGA
-       { "GNUmakefile", "Makefile", "SMakefile", 0 };
+        { "GNUmakefile", "Makefile", "SMakefile", 0 };
 #else /* !Amiga && !VMS */
-       { "GNUmakefile", "makefile", "Makefile", 0 };
+        { "GNUmakefile", "makefile", "Makefile", 0 };
 #endif /* AMIGA */
 #endif /* VMS */
       register char **p = default_makefiles;
       while (*p != 0 && !file_exists_p (*p))
-       ++p;
+        ++p;
 
       if (*p != 0)
-       {
-         if (! eval_makefile (*p, 0))
-           perror_with_name ("", *p);
-       }
+        {
+          if (! eval_makefile (*p, 0))
+            perror_with_name ("", *p);
+        }
       else
-       {
-         /* No default makefile was found.  Add the default makefiles to the
-            `read_makefiles' chain so they will be updated if possible.  */
-         struct dep *tail = read_makefiles;
-         /* Add them to the tail, after any MAKEFILES variable makefiles.  */
-         while (tail != 0 && tail->next != 0)
-           tail = tail->next;
-         for (p = default_makefiles; *p != 0; ++p)
-           {
-             struct dep *d = alloc_dep ();
-             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;
-             if (tail == 0)
-               read_makefiles = d;
-             else
-               tail->next = d;
-             tail = d;
-           }
-         if (tail != 0)
-           tail->next = 0;
-       }
+        {
+          /* No default makefile was found.  Add the default makefiles to the
+             'read_files' chain so they will be updated if possible.  */
+          struct dep *tail = read_files;
+          /* Add them to the tail, after any MAKEFILES variable makefiles.  */
+          while (tail != 0 && tail->next != 0)
+            tail = tail->next;
+          for (p = default_makefiles; *p != 0; ++p)
+            {
+              struct dep *d = alloc_dep ();
+              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;
+              if (tail == 0)
+                read_files = d;
+              else
+                tail->next = d;
+              tail = d;
+            }
+          if (tail != 0)
+            tail->next = 0;
+        }
     }
 
-  return read_makefiles;
+  return read_files;
 }
 \f
 /* Install a new conditional and return the previous one.  */
@@ -320,66 +321,83 @@ eval_makefile (const char *filename, int flags)
 {
   struct dep *deps;
   struct ebuffer ebuf;
-  const struct floc *curfile;
+  const gmk_floc *curfile;
   char *expanded = 0;
   int makefile_errno;
 
-  filename = strcache_add (filename);
-  ebuf.floc.filenm = filename;
+  ebuf.floc.filenm = filename; /* Use the original file name.  */
   ebuf.floc.lineno = 1;
 
   if (ISDB (DB_VERBOSE))
     {
-      printf (_("Reading makefile `%s'"), filename);
+      printf (_("Reading makefile '%s'"), filename);
       if (flags & RM_NO_DEFAULT_GOAL)
-       printf (_(" (no default goal)"));
+        printf (_(" (no default goal)"));
       if (flags & RM_INCLUDED)
-       printf (_(" (search path)"));
+        printf (_(" (search path)"));
       if (flags & RM_DONTCARE)
-       printf (_(" (don't care)"));
+        printf (_(" (don't care)"));
       if (flags & RM_NO_TILDE)
-       printf (_(" (no ~ expansion)"));
+        printf (_(" (no ~ expansion)"));
       puts ("...");
     }
 
   /* First, get a stream to read.  */
 
-  /* Expand ~ in FILENAME unless it came from `include',
+  /* Expand ~ in FILENAME unless it came from 'include',
      in which case it was already done.  */
   if (!(flags & RM_NO_TILDE) && filename[0] == '~')
     {
       expanded = tilde_expand (filename);
       if (expanded != 0)
-       filename = expanded;
+        filename = expanded;
     }
 
-  ebuf.fp = fopen (filename, "r");
+  ENULLLOOP (ebuf.fp, fopen (filename, "r"));
+
   /* Save the error code so we print the right message later.  */
   makefile_errno = errno;
 
+  /* Check for unrecoverable errors: out of mem or FILE slots.  */
+  switch (makefile_errno)
+    {
+#ifdef EMFILE
+    case EMFILE:
+#endif
+#ifdef ENFILE
+    case ENFILE:
+#endif
+    case ENOMEM:
+      fatal (reading_file, "%s", strerror (makefile_errno));
+    }
+
   /* If the makefile wasn't found and it's either a makefile from
-     the `MAKEFILES' variable or an included makefile,
+     the 'MAKEFILES' variable or an included makefile,
      search the included makefile search path for this makefile.  */
   if (ebuf.fp == 0 && (flags & RM_INCLUDED) && *filename != '/')
     {
       unsigned int i;
       for (i = 0; include_directories[i] != 0; ++i)
-       {
-         const char *included = concat (3, include_directories[i],
+        {
+          const char *included = concat (3, include_directories[i],
                                          "/", filename);
-         ebuf.fp = fopen (included, "r");
-         if (ebuf.fp)
-           {
-             filename = strcache_add (included);
-             break;
-           }
-       }
+          ebuf.fp = fopen (included, "r");
+          if (ebuf.fp)
+            {
+              filename = included;
+              break;
+            }
+        }
     }
 
+  /* Now we have the final name for this makefile. Enter it into
+     the cache.  */
+  filename = strcache_add (filename);
+
   /* Add FILENAME to the chain of read makefiles.  */
   deps = alloc_dep ();
-  deps->next = read_makefiles;
-  read_makefiles = deps;
+  deps->next = read_files;
+  read_files = deps;
   deps->file = lookup_file (filename);
   if (deps->file == 0)
     deps->file = enter_file (filename);
@@ -396,8 +414,8 @@ eval_makefile (const char *filename, int flags)
   if (ebuf.fp == 0)
     {
       /* If we did some searching, errno has the error from the last
-        attempt, rather from FILENAME itself.  Restore it in case the
-        caller wants to use it in a message.  */
+         attempt, rather from FILENAME itself.  Restore it in case the
+         caller wants to use it in a message.  */
       errno = makefile_errno;
       return 0;
     }
@@ -433,12 +451,12 @@ eval_makefile (const char *filename, int flags)
 }
 
 void
-eval_buffer (char *buffer)
+eval_buffer (char *buffer, const gmk_floc *floc)
 {
   struct ebuffer ebuf;
   struct conditionals *saved;
   struct conditionals new;
-  const struct floc *curfile;
+  const gmk_floc *curfile;
 
   /* Evaluate the buffer */
 
@@ -446,10 +464,15 @@ eval_buffer (char *buffer)
   ebuf.buffer = ebuf.bufnext = ebuf.bufstart = buffer;
   ebuf.fp = NULL;
 
-  if (reading_file)
+  if (floc)
+    ebuf.floc = *floc;
+  else if (reading_file)
     ebuf.floc = *reading_file;
   else
-    ebuf.floc.filenm = NULL;
+    {
+      ebuf.floc.filenm = NULL;
+      ebuf.floc.lineno = 1;
+    }
 
   curfile = reading_file;
   reading_file = &ebuf.floc;
@@ -492,9 +515,9 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod)
     {
       int wlen;
       const char *p2;
-      enum variable_flavor flavor;
+      struct variable v;
 
-      p2 = parse_variable_definition (p, &flavor);
+      p2 = parse_variable_definition (p, &v);
 
       /* If this is a variable assignment, we're done.  */
       if (p2)
@@ -554,28 +577,29 @@ eval (struct ebuffer *ebuf, int set_default)
   unsigned int commands_idx = 0;
   unsigned int cmds_started, tgts_started;
   int ignoring = 0, in_ignored_define = 0;
-  int no_targets = 0;          /* Set when reading a rule without targets.  */
+  int no_targets = 0;           /* Set when reading a rule without targets.  */
   struct nameseq *filenames = 0;
   char *depstr = 0;
   long nlines = 0;
   int two_colon = 0;
+  char prefix = cmd_prefix;
   const char *pattern = 0;
   const char *pattern_percent;
-  struct floc *fstart;
-  struct floc fi;
+  gmk_floc *fstart;
+  gmk_floc fi;
 
-#define record_waiting_files()                                               \
-  do                                                                         \
-    {                                                                        \
-      if (filenames != 0)                                                    \
+#define record_waiting_files()                                                \
+  do                                                                          \
+    {                                                                         \
+      if (filenames != 0)                                                     \
         {                                                                     \
-         fi.lineno = tgts_started;                                           \
-         record_files (filenames, pattern, pattern_percent, depstr,          \
+          fi.lineno = tgts_started;                                           \
+          record_files (filenames, pattern, pattern_percent, depstr,          \
                         cmds_started, commands, commands_idx, two_colon,      \
-                        &fi);                                                 \
-          filenames = 0;                                                     \
+                        prefix, &fi);                                         \
+          filenames = 0;                                                      \
         }                                                                     \
-      commands_idx = 0;                                                              \
+      commands_idx = 0;                                                       \
       no_targets = 0;                                                         \
       pattern = 0;                                                            \
     } while (0)
@@ -592,9 +616,8 @@ eval (struct ebuffer *ebuf, int set_default)
      when the start of the next rule (or eof) is encountered.
 
      When you see a "continue" in the loop below, that means we are moving on
-     to the next line _without_ ending any rule that we happen to be working
-     with at the moment.  If you see a "goto rule_complete", then the
-     statement we just parsed also finishes the previous rule.  */
+     to the next line.  If you see record_waiting_files(), then the statement
+     we are parsing also finishes the previous rule.  */
 
   commands = xmalloc (200);
 
@@ -616,73 +639,76 @@ eval (struct ebuffer *ebuf, int set_default)
       if (nlines < 0)
         break;
 
-      /* If this line is empty, skip it.  */
       line = ebuf->buffer;
+
+      /* If this is the first line, check for a UTF-8 BOM and skip it.  */
+      if (ebuf->floc.lineno == 1 && line[0] == (char)0xEF
+          && line[1] == (char)0xBB && line[2] == (char)0xBF)
+        {
+          line += 3;
+          if (ISDB(DB_BASIC))
+            {
+              if (ebuf->floc.filenm)
+                printf (_("Skipping UTF-8 BOM in makefile '%s'\n"),
+                        ebuf->floc.filenm);
+              else
+                printf (_("Skipping UTF-8 BOM in makefile buffer\n"));
+            }
+        }
+
+      /* If this line is empty, skip it.  */
       if (line[0] == '\0')
         continue;
 
       linelen = strlen (line);
 
       /* Check for a shell command line first.
-        If it is not one, we can stop treating tab specially.  */
+         If it is not one, we can stop treating cmd_prefix specially.  */
       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 recipe prefix.
-            SunOS 4 make appears to behave this way.  */
-
-         if (filenames != 0)
-           {
-             if (ignoring)
-               /* Yep, this is a shell command, and we don't care.  */
-               continue;
-
-             /* 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 + commands_idx > commands_len)
-               {
-                 commands_len = (linelen + commands_idx) * 2;
-                 commands = xrealloc (commands, commands_len);
-               }
-              p = &commands[commands_idx];
-              p2 = line + 1;
-              while (--linelen)
+        {
+          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 recipe prefix.
+             SunOS 4 make appears to behave this way.  */
+
+          if (filenames != 0)
+            {
+              if (ignoring)
+                /* Yep, this is a shell command, and we don't care.  */
+                continue;
+
+              if (commands_idx == 0)
+                cmds_started = ebuf->floc.lineno;
+
+              /* Append this command line to the line being accumulated.
+                 Skip the initial command prefix character.  */
+              if (linelen + commands_idx > commands_len)
                 {
-                  ++commands_idx;
-                  *(p++) = *p2;
-                  if (p2[0] == '\n' && p2[1] == cmd_prefix)
-                    {
-                      ++p2;
-                      --linelen;
-                    }
-                  ++p2;
+                  commands_len = (linelen + commands_idx) * 2;
+                  commands = xrealloc (commands, commands_len);
                 }
-              *p = '\n';
-              ++commands_idx;
-
-             continue;
-           }
-       }
+              memcpy (&commands[commands_idx], line + 1, linelen - 1);
+              commands_idx += linelen - 1;
+              commands[commands_idx++] = '\n';
+              continue;
+            }
+        }
 
       /* 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.  */
 
       if (collapsed_length < linelen+1)
-       {
-         collapsed_length = linelen+1;
+        {
+          collapsed_length = linelen+1;
           if (collapsed)
             free (collapsed);
           /* Don't need xrealloc: we don't need to preserve the content.  */
-         collapsed = xmalloc (collapsed_length);
-       }
+          collapsed = xmalloc (collapsed_length);
+        }
       strcpy (collapsed, line);
       /* Collapse continuation lines.  */
       collapse_continuations (collapsed);
@@ -695,14 +721,17 @@ eval (struct ebuffer *ebuf, int set_default)
 
       /* 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);
+      p = parse_var_assignment (p, &vmod);
       if (vmod.assign_v)
         {
           struct variable *v;
           enum variable_origin origin = vmod.override_v ? o_override : o_file;
 
+          /* Variable assignment ends the previous rule.  */
+          record_waiting_files ();
+
           /* If we're ignoring then we're done now.  */
-         if (ignoring)
+          if (ignoring)
             {
               if (vmod.define_v)
                 in_ignored_define = 1;
@@ -712,9 +741,7 @@ eval (struct ebuffer *ebuf, int set_default)
           if (vmod.undefine_v)
           {
             do_undefine (p, origin, ebuf);
-
-            /* This line has been dealt with.  */
-            goto rule_complete;
+            continue;
           }
           else if (vmod.define_v)
             v = do_define (p, origin, ebuf);
@@ -729,12 +756,12 @@ eval (struct ebuffer *ebuf, int set_default)
             v->private_var = 1;
 
           /* This line has been dealt with.  */
-          goto rule_complete;
+          continue;
         }
 
       /* If this line is completely empty, ignore it.  */
       if (*p == '\0')
-       continue;
+        continue;
 
       p2 = end_of_token (p);
       wlen = p2 - p;
@@ -742,13 +769,13 @@ eval (struct ebuffer *ebuf, int set_default)
 
       /* If we're in an ignored define, skip this line (but maybe get out).  */
       if (in_ignored_define)
-       {
+        {
           /* See if this is an endef line (plus optional comment).  */
-          if (word1eq ("endef") && (*p2 == '\0' || *p2 == '#'))
+          if (word1eq ("endef") && STOP_SET (*p2, MAP_COMMENT|MAP_NUL))
             in_ignored_define = 0;
 
-         continue;
-       }
+          continue;
+        }
 
       /* Check for conditional state changes.  */
       {
@@ -765,16 +792,19 @@ eval (struct ebuffer *ebuf, int set_default)
 
       /* Nothing to see here... move along.  */
       if (ignoring)
-       continue;
+        continue;
 
       /* Manage the "export" keyword used outside of variable assignment
          as well as "unexport".  */
       if (word1eq ("export") || word1eq ("unexport"))
-       {
+        {
           int exporting = *p == 'u' ? 0 : 1;
 
+          /* Export/unexport ends the previous rule.  */
+          record_waiting_files ();
+
           /* (un)export by itself causes everything to be (un)exported. */
-         if (*p2 == '\0')
+          if (*p2 == '\0')
             export_all_variables = exporting;
           else
             {
@@ -791,113 +821,179 @@ eval (struct ebuffer *ebuf, int set_default)
                 {
                   struct variable *v = lookup_variable (p, l);
                   if (v == 0)
-                    v = define_variable_loc (p, l, "", o_file, 0, fstart);
+                    v = define_variable_global (p, l, "", o_file, 0, fstart);
                   v->export = exporting ? v_export : v_noexport;
                 }
 
               free (ap);
             }
-          goto rule_complete;
-       }
+          continue;
+        }
 
       /* Handle the special syntax for vpath.  */
       if (word1eq ("vpath"))
-       {
+        {
           const char *cp;
-         char *vpat;
-         unsigned int l;
-         cp = variable_expand (p2);
-         p = find_next_token (&cp, &l);
-         if (p != 0)
-           {
-             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.  */
-           vpat = 0;
-         construct_vpath_list (vpat, p);
-         if (vpat != 0)
-           free (vpat);
-
-          goto rule_complete;
-       }
+          char *vpat;
+          unsigned int l;
+
+          /* vpath ends the previous rule.  */
+          record_waiting_files ();
+
+          cp = variable_expand (p2);
+          p = find_next_token (&cp, &l);
+          if (p != 0)
+            {
+              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.  */
+            vpat = 0;
+          construct_vpath_list (vpat, p);
+          if (vpat != 0)
+            free (vpat);
+
+          continue;
+        }
 
       /* Handle include and variants.  */
       if (word1eq ("include") || word1eq ("-include") || word1eq ("sinclude"))
-       {
-         /* We have found an `include' line specifying a nested
-            makefile to be read at this point.  */
-         struct conditionals *save;
+        {
+          /* We have found an 'include' line specifying a nested
+             makefile to be read at this point.  */
+          struct conditionals *save;
           struct conditionals new_conditionals;
-         struct nameseq *files;
-         /* "-include" (vs "include") says no error if the file does not
-            exist.  "sinclude" is an alias for this from SGI.  */
-         int noerror = (p[0] != 'i');
+          struct nameseq *files;
+          /* "-include" (vs "include") says no error if the file does not
+             exist.  "sinclude" is an alias for this from SGI.  */
+          int noerror = (p[0] != 'i');
 
-         p = allocated_variable_expand (p2);
+          /* Include ends the previous rule.  */
+          record_waiting_files ();
+
+          p = allocated_variable_expand (p2);
 
           /* If no filenames, it's a no-op.  */
-         if (*p == '\0')
+          if (*p == '\0')
             {
               free (p);
               continue;
             }
 
-         /* Parse the list of file names.  Don't expand archive references!  */
-         p2 = p;
-         files = PARSE_FILE_SEQ (&p2, struct nameseq, '\0', NULL,
+          /* Parse the list of file names.  Don't expand archive references!  */
+          p2 = p;
+          files = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_NUL, NULL,
                                   PARSEFS_NOAR);
-         free (p);
+          free (p);
 
-         /* Save the state of conditionals and start
-            the included makefile with a clean slate.  */
-         save = install_conditionals (&new_conditionals);
+          /* Save the state of conditionals and start
+             the included makefile with a clean slate.  */
+          save = install_conditionals (&new_conditionals);
 
-         /* Record the rules that are waiting so they will determine
-            the default goal before those in the included makefile.  */
-         record_waiting_files ();
+          /* Record the rules that are waiting so they will determine
+             the default goal before those in the included makefile.  */
+          record_waiting_files ();
 
-         /* Read each included makefile.  */
-         while (files != 0)
-           {
-             struct nameseq *next = files->next;
-             const char *name = files->name;
+          /* Read each included makefile.  */
+          while (files != 0)
+            {
+              struct nameseq *next = files->next;
+              const char *name = files->name;
               int r;
 
-             free_ns (files);
-             files = next;
+              free_ns (files);
+              files = next;
 
               r = eval_makefile (name,
                                  (RM_INCLUDED | RM_NO_TILDE
                                   | (noerror ? RM_DONTCARE : 0)
                                   | (set_default ? 0 : RM_NO_DEFAULT_GOAL)));
-             if (!r && !noerror)
+              if (!r && !noerror)
                 error (fstart, "%s: %s", name, strerror (errno));
-           }
+            }
+
+          /* Restore conditional state.  */
+          restore_conditionals (save);
+
+          continue;
+        }
+
+      /* Handle the load operations.  */
+      if (word1eq ("load") || word1eq ("-load"))
+        {
+          /* A 'load' line specifies a dynamic object to load.  */
+          struct nameseq *files;
+          int noerror = (p[0] == '-');
+
+          /* Load ends the previous rule.  */
+          record_waiting_files ();
+
+          p = allocated_variable_expand (p2);
+
+          /* If no filenames, it's a no-op.  */
+          if (*p == '\0')
+            {
+              free (p);
+              continue;
+            }
+
+          /* Parse the list of file names.
+             Don't expand archive references or strip "./"  */
+          p2 = p;
+          files = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_NUL, NULL,
+                                  PARSEFS_NOAR);
+          free (p);
+
+          /* Load each file.  */
+          while (files != 0)
+            {
+              struct nameseq *next = files->next;
+              const char *name = files->name;
+              struct dep *deps;
+              int r;
 
-         /* Restore conditional state.  */
-         restore_conditionals (save);
+              /* Load the file.  0 means failure.  */
+              r = load_file (&ebuf->floc, &name, noerror);
+              if (! r && ! noerror)
+                fatal (&ebuf->floc, _("%s: failed to load"), name);
 
-          goto rule_complete;
-       }
+              free_ns (files);
+              files = next;
+
+              /* Return of -1 means a special load: don't rebuild it.  */
+              if (r == -1)
+                continue;
+
+              /* It succeeded, so add it to the list "to be rebuilt".  */
+              deps = alloc_dep ();
+              deps->next = read_files;
+              read_files = deps;
+              deps->file = lookup_file (name);
+              if (deps->file == 0)
+                deps->file = enter_file (name);
+              deps->file->loaded = 1;
+            }
+
+          continue;
+        }
 
       /* 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] == cmd_prefix)
-        fatal(fstart, _("recipe commences before first target"));
+        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
          expand the entire line until we know if we have one or not.  So
-         we expand the line word by word until we find the first `:',
+         we expand the line word by word until we find the first ':',
          then check to see if it's a target-specific variable.
 
-         In this algorithm, `lb_next' will point to the beginning of the
-         unexpanded parts of the input buffer, while `p2' points to the
+         In this algorithm, 'lb_next' will point to the beginning of the
+         unexpanded parts of the input buffer, while 'p2' points to the
          parts of the expanded buffer we haven't searched yet. */
 
       {
@@ -914,7 +1010,7 @@ eval (struct ebuffer *ebuf, int set_default)
 
         /* Search the line for an unquoted ; that is not after an
            unquoted #.  */
-        cmdleft = find_char_unquote (line, ';', '#', 0, 1);
+        cmdleft = find_char_unquote (line, MAP_SEMI|MAP_COMMENT|MAP_VARIABLE);
         if (cmdleft != 0 && *cmdleft == '#')
           {
             /* We found a comment before a semicolon.  */
@@ -932,12 +1028,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, &wlen);
+        wtype = get_next_mword (line, NULL, &lb_next, &wlen);
         switch (wtype)
           {
           case w_eol:
             if (cmdleft != 0)
-              fatal(fstart, _("missing rule before recipe"));
+              fatal (fstart, _("missing rule before recipe"));
             /* This line contained something but turned out to be nothing
                but whitespace (a comment?).  */
             continue;
@@ -953,7 +1049,7 @@ eval (struct ebuffer *ebuf, int set_default)
             break;
           }
 
-        p2 = variable_expand_string(NULL, lb_next, wlen);
+        p2 = variable_expand_string (NULL, lb_next, wlen);
 
         while (1)
           {
@@ -961,13 +1057,13 @@ eval (struct ebuffer *ebuf, int set_default)
             if (cmdleft == 0)
               {
                 /* Look for a semicolon in the expanded line.  */
-                cmdleft = find_char_unquote (p2, ';', 0, 0, 0);
+                cmdleft = find_char_unquote (p2, MAP_SEMI);
 
                 if (cmdleft != 0)
                   {
                     unsigned long p2_off = p2 - variable_buffer;
                     unsigned long cmd_off = cmdleft - variable_buffer;
-                    char *pend = p2 + strlen(p2);
+                    char *pend = p2 + strlen (p2);
 
                     /* Append any remnants of lb, then cut the line short
                        at the semicolon.  */
@@ -977,18 +1073,18 @@ eval (struct ebuffer *ebuf, int set_default)
                        here, but merely copy, since now you're beyond a ";"
                        and into a command script.  However, the old parser
                        expanded the whole line, so we continue that for
-                       backwards-compatiblity.  Also, it wouldn't be
+                       backwards-compatibility.  Also, it wouldn't be
                        entirely consistent, since we do an unconditional
                        expand below once we know we don't have a
                        target-specific variable. */
-                    (void)variable_expand_string(pend, lb_next, (long)-1);
-                    lb_next += strlen(lb_next);
+                    (void)variable_expand_string (pend, lb_next, (long)-1);
+                    lb_next += strlen (lb_next);
                     p2 = variable_buffer + p2_off;
                     cmdleft = variable_buffer + cmd_off + 1;
                   }
               }
 
-            colonp = find_char_unquote(p2, ':', 0, 0, 0);
+            colonp = find_char_unquote (p2, MAP_COLON);
 #ifdef HAVE_DOS_PATHS
             /* The drive spec brain-damage strikes again...  */
             /* Note that the only separators of targets in this context
@@ -997,18 +1093,18 @@ eval (struct ebuffer *ebuf, int set_default)
             while (colonp && (colonp[1] == '/' || colonp[1] == '\\') &&
                    colonp > p2 && isalpha ((unsigned char)colonp[-1]) &&
                    (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0))
-              colonp = find_char_unquote(colonp + 1, ':', 0, 0, 0);
+              colonp = find_char_unquote (colonp + 1, MAP_COLON);
 #endif
             if (colonp != 0)
               break;
 
-            wtype = get_next_mword(lb_next, NULL, &lb_next, &wlen);
+            wtype = get_next_mword (lb_next, NULL, &lb_next, &wlen);
             if (wtype == w_eol)
               break;
 
-            p2 += strlen(p2);
+            p2 += strlen (p2);
             *(p2++) = ' ';
-            p2 = variable_expand_string(p2, lb_next, wlen);
+            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.  */
@@ -1025,16 +1121,17 @@ 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"),
-                     (cmd_prefix == '\t' && !strneq(line, "        ", 8))
+                     (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.  */
+           looking for targets.  Start there again once we're done.  */
         *colonp = '\0';
-        filenames = PARSE_FILE_SEQ (&p2, struct nameseq, '\0', NULL, 0);
-        *p2 = ':';
+        filenames = PARSE_SIMPLE_SEQ (&p2, struct nameseq);
+        *colonp = ':';
+        p2 = colonp;
 
         if (!filenames)
           {
@@ -1071,12 +1168,12 @@ eval (struct ebuffer *ebuf, int set_default)
                after it.  */
             if (semip)
               {
-                unsigned int l = p - variable_buffer;
+                unsigned int l = p2 - variable_buffer;
                 *(--semip) = ';';
                 collapse_continuations (semip);
                 variable_buffer_output (p2 + strlen (p2),
                                         semip, strlen (semip)+1);
-                p = variable_buffer + l;
+                p2 = variable_buffer + l;
               }
             record_target_var (filenames, p2,
                                vmod.override_v ? o_override : o_file,
@@ -1087,7 +1184,10 @@ eval (struct ebuffer *ebuf, int set_default)
 
         /* This is a normal target, _not_ a target-specific variable.
            Unquote any = in the dependency list.  */
-        find_char_unquote (lb_next, '=', 0, 0, 0);
+        find_char_unquote (lb_next, MAP_EQUALS);
+
+        /* Remember the command prefix for this target.  */
+        prefix = cmd_prefix;
 
         /* We have some targets, so don't ignore the following commands.  */
         no_targets = 0;
@@ -1102,13 +1202,13 @@ eval (struct ebuffer *ebuf, int set_default)
             /* Look for a semicolon in the expanded line.  */
             if (cmdleft == 0)
               {
-                cmdleft = find_char_unquote (p2, ';', 0, 0, 0);
+                cmdleft = find_char_unquote (p2, MAP_SEMI);
                 if (cmdleft != 0)
                   *(cmdleft++) = '\0';
               }
           }
 
-        /* Is this a static pattern rule: `target: %targ: %dep; ...'?  */
+        /* Is this a static pattern rule: 'target: %targ: %dep; ...'?  */
         p = strchr (p2, ':');
         while (p != 0 && p[-1] == '\\')
           {
@@ -1156,7 +1256,7 @@ eval (struct ebuffer *ebuf, int set_default)
         if (p != 0)
           {
             struct nameseq *target;
-            target = PARSE_FILE_SEQ (&p2, struct nameseq, ':', NULL,
+            target = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_COLON, NULL,
                                      PARSEFS_NOGLOB);
             ++p2;
             if (target == 0)
@@ -1166,7 +1266,7 @@ eval (struct ebuffer *ebuf, int set_default)
             pattern_percent = find_percent_cached (&target->name);
             pattern = target->name;
             if (pattern_percent == 0)
-              fatal (fstart, _("target pattern contains no `%%'"));
+              fatal (fstart, _("target pattern contains no '%%'"));
             free_ns (target);
           }
         else
@@ -1219,20 +1319,19 @@ eval (struct ebuffer *ebuf, int set_default)
 
         if (set_default && default_goal_var->value[0] == '\0')
           {
-            const char *name;
             struct dep *d;
             struct nameseq *t = filenames;
 
             for (; t != 0; t = t->next)
               {
                 int reject = 0;
-                name = t->name;
+                const char *name = t->name;
 
                 /* We have nothing to do if this is an implicit rule. */
                 if (strchr (name, '%') != 0)
                   break;
 
-                /* See if this target's name does not start with a `.',
+                /* See if this target's name does not start with a '.',
                    unless it contains a slash.  */
                 if (*name == '.' && strchr (name, '/') == 0
 #ifdef HAVE_DOS_PATHS
@@ -1281,16 +1380,15 @@ eval (struct ebuffer *ebuf, int set_default)
       }
 
       /* We get here except in the case that we just read a rule line.
-        Record now the last rule we read, so following spurious
-        commands are properly diagnosed.  */
- rule_complete:
+         Record now the last rule we read, so following spurious
+         commands are properly diagnosed.  */
       record_waiting_files ();
     }
 
-#undef word1eq
+#undef word1eq
 
   if (conditionals->if_cmds)
-    fatal (fstart, _("missing `endif'"));
+    fatal (fstart, _("missing 'endif'"));
 
   /* At eof, record the last rule.  */
   record_waiting_files ();
@@ -1309,14 +1407,14 @@ remove_comments (char *line)
 {
   char *comment;
 
-  comment = find_char_unquote (line, '#', 0, 0, 0);
+  comment = find_char_unquote (line, MAP_COMMENT);
 
   if (comment != 0)
     /* Cut off the line at the #.  */
     *comment = '\0';
 }
 
-/* Execute a `undefine' directive.
+/* Execute a 'undefine' directive.
    The undefine line has already been read, and NAME is the name of
    the variable to be undefined. */
 
@@ -1339,7 +1437,7 @@ do_undefine (char *name, enum variable_origin origin, struct ebuffer *ebuf)
   free (var);
 }
 
-/* Execute a `define' directive.
+/* 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.  */
 
@@ -1347,33 +1445,33 @@ static struct variable *
 do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
 {
   struct variable *v;
-  enum variable_flavor flavor;
-  struct floc defstart;
+  struct variable var;
+  gmk_floc defstart;
   int nlevels = 1;
   unsigned int length = 100;
   char *definition = xmalloc (length);
   unsigned int idx = 0;
-  char *p, *var;
+  char *p, *n;
 
   defstart = ebuf->floc;
 
-  p = parse_variable_definition (name, &flavor);
+  p = parse_variable_definition (name, &var);
   if (p == NULL)
     /* No assignment token, so assume recursive.  */
-    flavor = f_recursive;
+    var.flavor = f_recursive;
   else
     {
-      if (*(next_token (p)) != '\0')
-        error (&defstart, _("extraneous text after `define' directive"));
+      if (var.value[0] != '\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';
+      var.name[var.length] = '\0';
     }
 
   /* Expand the variable name and find the beginning (NAME) and end.  */
-  var = allocated_variable_expand (name);
-  name = next_token (var);
-  if (*name == '\0')
+  n = allocated_variable_expand (name);
+  name = next_token (n);
+  if (name[0] == '\0')
     fatal (&defstart, _("empty variable name"));
   p = name + strlen (name) - 1;
   while (p > name && isblank ((unsigned char)*p))
@@ -1389,7 +1487,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
 
       /* If there is nothing left to be eval'd, there's no 'endef'!!  */
       if (nlines < 0)
-        fatal (&defstart, _("missing `endef', unterminated `define'"));
+        fatal (&defstart, _("missing 'endef', unterminated 'define'"));
 
       ebuf->floc.lineno += nlines;
       line = ebuf->buffer;
@@ -1417,7 +1515,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
               remove_comments (p);
               if (*(next_token (p)) != '\0')
                 error (&ebuf->floc,
-                       _("extraneous text after `endef' directive"));
+                       _("extraneous text after 'endef' directive"));
 
               if (--nlevels == 0)
                 break;
@@ -1444,9 +1542,10 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
   else
     definition[idx - 1] = '\0';
 
-  v = do_variable_definition (&defstart, name, definition, origin, flavor, 0);
+  v = do_variable_definition (&defstart, name,
+                              definition, origin, var.flavor, 0);
   free (definition);
-  free (var);
+  free (n);
   return (v);
 }
 \f
@@ -1463,7 +1562,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
    1 if following text should be ignored.  */
 
 static int
-conditional_line (char *line, int len, const struct floc *flocp)
+conditional_line (char *line, int len, const gmk_floc *flocp)
 {
   char *cmdname;
   enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype;
@@ -1471,8 +1570,8 @@ conditional_line (char *line, int len, const struct floc *flocp)
   unsigned int o;
 
   /* Compare a word, both length and contents. */
-#define        word1eq(s)      (len == sizeof(s)-1 && strneq (s, line, sizeof(s)-1))
-#define        chkword(s, t)   if (word1eq (s)) { cmdtype = (t); cmdname = (s); }
+#define word1eq(s)      (len == CSTRLEN (s) && strneq (s, line, CSTRLEN (s)))
+#define chkword(s, t)   if (word1eq (s)) { cmdtype = (t); cmdname = (s); }
 
   /* Make sure this line is a conditional.  */
   chkword ("ifdef", c_ifdef)
@@ -1487,16 +1586,16 @@ conditional_line (char *line, int len, const struct floc *flocp)
   /* Found one: skip past it and any whitespace after it.  */
   line = next_token (line + len);
 
-#define EXTRANEOUS() error (flocp, _("Extraneous text after `%s' directive"), cmdname)
+#define EXTRANEOUS() error (flocp, _("extraneous text after '%s' directive"), cmdname)
 
   /* An 'endif' cannot contain extra text, and reduces the if-depth by 1  */
   if (cmdtype == c_endif)
     {
       if (*line != '\0')
-       EXTRANEOUS ();
+        EXTRANEOUS ();
 
       if (!conditionals->if_cmds)
-       fatal (flocp, _("extraneous `%s'"), cmdname);
+        fatal (flocp, _("extraneous '%s'"), cmdname);
 
       --conditionals->if_cmds;
 
@@ -1510,12 +1609,12 @@ conditional_line (char *line, int len, const struct floc *flocp)
       const char *p;
 
       if (!conditionals->if_cmds)
-       fatal (flocp, _("extraneous `%s'"), cmdname);
+        fatal (flocp, _("extraneous '%s'"), cmdname);
 
       o = conditionals->if_cmds - 1;
 
       if (conditionals->seen_else[o])
-        fatal (flocp, _("only one `else' per conditional"));
+        fatal (flocp, _("only one 'else' per conditional"));
 
       /* Change the state of ignorance.  */
       switch (conditionals->ignoring[o])
@@ -1541,14 +1640,14 @@ conditional_line (char *line, int len, const struct floc *flocp)
          and cannot be an 'else' or 'endif'.  */
 
       /* Find the length of the next word.  */
-      for (p = line+1; *p != '\0' && !isspace ((unsigned char)*p); ++p)
+      for (p = line+1; ! STOP_SET (*p, MAP_SPACE|MAP_NUL); ++p)
         ;
       len = p - line;
 
       /* If it's 'else' or 'endif' or an illegal conditional, fail.  */
-      if (word1eq("else") || word1eq("endif")
+      if (word1eq ("else") || word1eq ("endif")
           || conditional_line (line, len, flocp) < 0)
-       EXTRANEOUS ();
+        EXTRANEOUS ();
       else
         {
           /* conditional_line() created a new level of conditional.
@@ -1578,18 +1677,18 @@ conditional_line (char *line, int len, const struct floc *flocp)
                                           conditionals->allocated);
     }
 
-  /* Record that we have seen an `if...' but no `else' so far.  */
+  /* Record that we have seen an 'if...' but no 'else' so far.  */
   conditionals->seen_else[o] = 0;
 
   /* Search through the stack to see if we're already ignoring.  */
   for (i = 0; i < o; ++i)
     if (conditionals->ignoring[i])
       {
-       /* We are already ignoring, so just push a level to match the next
-          "else" or "endif", and keep ignoring.  We don't want to expand
-          variables in the condition.  */
-       conditionals->ignoring[o] = 1;
-       return 1;
+        /* We are already ignoring, so just push a level to match the next
+           "else" or "endif", and keep ignoring.  We don't want to expand
+           variables in the condition.  */
+        conditionals->ignoring[o] = 1;
+        return 1;
       }
 
   if (cmdtype == c_ifdef || cmdtype == c_ifndef)
@@ -1607,7 +1706,7 @@ conditional_line (char *line, int len, const struct floc *flocp)
       i = p - var;
       p = next_token (p);
       if (*p != '\0')
-       return -1;
+        return -1;
 
       var[i] = '\0';
       v = lookup_variable (var, i);
@@ -1625,87 +1724,87 @@ conditional_line (char *line, int len, const struct floc *flocp)
       char termin = *line == '(' ? ',' : *line;
 
       if (termin != ',' && termin != '"' && termin != '\'')
-       return -1;
+        return -1;
 
       s1 = ++line;
       /* Find the end of the first string.  */
       if (termin == ',')
-       {
-         int count = 0;
-         for (; *line != '\0'; ++line)
-           if (*line == '(')
-             ++count;
-           else if (*line == ')')
-             --count;
-           else if (*line == ',' && count <= 0)
-             break;
-       }
+        {
+          int count = 0;
+          for (; *line != '\0'; ++line)
+            if (*line == '(')
+              ++count;
+            else if (*line == ')')
+              --count;
+            else if (*line == ',' && count <= 0)
+              break;
+        }
       else
-       while (*line != '\0' && *line != termin)
-         ++line;
+        while (*line != '\0' && *line != termin)
+          ++line;
 
       if (*line == '\0')
-       return -1;
+        return -1;
 
       if (termin == ',')
-       {
-         /* Strip blanks after the first string.  */
-         char *p = line++;
-         while (isblank ((unsigned char)p[-1]))
-           --p;
-         *p = '\0';
-       }
+        {
+          /* Strip blanks after the first string.  */
+          char *p = line++;
+          while (isblank ((unsigned char)p[-1]))
+            --p;
+          *p = '\0';
+        }
       else
-       *line++ = '\0';
+        *line++ = '\0';
 
       s2 = variable_expand (s1);
       /* We must allocate a new copy of the expanded string because
-        variable_expand re-uses the same buffer.  */
+         variable_expand re-uses the same buffer.  */
       l = strlen (s2);
       s1 = alloca (l + 1);
       memcpy (s1, s2, l + 1);
 
       if (termin != ',')
-       /* Find the start of the second string.  */
-       line = next_token (line);
+        /* Find the start of the second string.  */
+        line = next_token (line);
 
       termin = termin == ',' ? ')' : *line;
       if (termin != ')' && termin != '"' && termin != '\'')
-       return -1;
+        return -1;
 
       /* Find the end of the second string.  */
       if (termin == ')')
-       {
-         int count = 0;
-         s2 = next_token (line);
-         for (line = s2; *line != '\0'; ++line)
-           {
-             if (*line == '(')
-               ++count;
-             else if (*line == ')')
-               {
-                 if (count <= 0)
-                   break;
-                 else
-                   --count;
-               }
-           }
-       }
+        {
+          int count = 0;
+          s2 = next_token (line);
+          for (line = s2; *line != '\0'; ++line)
+            {
+              if (*line == '(')
+                ++count;
+              else if (*line == ')')
+                {
+                  if (count <= 0)
+                    break;
+                  else
+                    --count;
+                }
+            }
+        }
       else
-       {
-         ++line;
-         s2 = line;
-         while (*line != '\0' && *line != termin)
-           ++line;
-       }
+        {
+          ++line;
+          s2 = line;
+          while (*line != '\0' && *line != termin)
+            ++line;
+        }
 
       if (*line == '\0')
-       return -1;
+        return -1;
 
       *line = '\0';
       line = next_token (++line);
       if (*line != '\0')
-       EXTRANEOUS ();
+        EXTRANEOUS ();
 
       s2 = variable_expand (s2);
       conditionals->ignoring[o] = (streq (s1, s2) == (cmdtype == c_ifneq));
@@ -1732,7 +1831,7 @@ conditional_line (char *line, int len, const struct floc *flocp)
 static void
 record_target_var (struct nameseq *filenames, char *defn,
                    enum variable_origin origin, struct vmodifiers *vmod,
-                   const struct floc *flocp)
+                   const gmk_floc *flocp)
 {
   struct nameseq *nextf;
   struct variable_set_list *global;
@@ -1746,7 +1845,6 @@ record_target_var (struct nameseq *filenames, char *defn,
     {
       struct variable *v;
       const char *name = filenames->name;
-      const char *fname;
       const char *percent;
       struct pattern_var *p;
 
@@ -1771,8 +1869,6 @@ record_target_var (struct nameseq *filenames, char *defn,
             v->value = allocated_variable_expand (v->value);
           else
             v->value = xstrdup (v->value);
-
-          fname = p->target;
         }
       else
         {
@@ -1789,7 +1885,6 @@ record_target_var (struct nameseq *filenames, char *defn,
             f = f->double_colon;
 
           initialize_file_variables (f, 1);
-          fname = f->name;
 
           current_variable_set_list = f->variables;
           v = try_variable_definition (flocp, defn, origin, 1);
@@ -1808,10 +1903,11 @@ record_target_var (struct nameseq *filenames, char *defn,
       if (v->origin != o_override)
         {
           struct variable *gv;
-          int len = strlen(v->name);
+          int len = strlen (v->name);
 
           gv = lookup_variable (v->name, len);
-          if (gv && (gv->origin == o_env_override || gv->origin == o_command))
+          if (gv && v != gv
+              && (gv->origin == o_env_override || gv->origin == o_command))
             {
               if (v->value != 0)
                 free (v->value);
@@ -1828,9 +1924,9 @@ record_target_var (struct nameseq *filenames, char *defn,
    with dependencies DEPS, commands to execute described
    by COMMANDS and COMMANDS_IDX, coming from FILENAME:COMMANDS_STARTED.
    TWO_COLON is nonzero if a double colon was used.
-   If not nil, PATTERN is the `%' pattern to make this
+   If not nil, PATTERN is the '%' pattern to make this
    a static pattern rule, and PATTERN_PERCENT is a pointer
-   to the `%' within it.
+   to the '%' within it.
 
    The links of FILENAMES are freed, and so are any names in it
    that are not incorporated into other data structures.  */
@@ -1840,7 +1936,7 @@ 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)
+              char prefix, const gmk_floc *flocp)
 {
   struct commands *cmds;
   struct dep *deps;
@@ -1866,6 +1962,7 @@ record_files (struct nameseq *filenames, const char *pattern,
       cmds->fileinfo.lineno = cmds_started;
       cmds->commands = xstrndup (commands, commands_idx);
       cmds->command_lines = 0;
+      cmds->recipe_prefix = prefix;
     }
   else
      cmds = 0;
@@ -1874,24 +1971,28 @@ record_files (struct nameseq *filenames, const char *pattern,
      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);
+      depstr = unescape_char (depstr, ':');
+      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
@@ -1930,8 +2031,8 @@ record_files (struct nameseq *filenames, const char *pattern,
           if (implicit_percent == 0)
             fatal (flocp, _("mixed implicit and normal rules"));
 
-         targets[c] = name;
-         target_pats[c] = implicit_percent;
+          targets[c] = name;
+          target_pats[c] = implicit_percent;
           ++c;
 
           nextf = filenames->next;
@@ -1961,19 +2062,26 @@ record_files (struct nameseq *filenames, const char *pattern,
         {
           posix_pedantic = 1;
           define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0);
+          /* These default values are based on IEEE Std 1003.1-2008.  */
+          define_variable_cname ("ARFLAGS", "-rv", o_default, 0);
+          define_variable_cname ("CC", "c99", o_default, 0);
+          define_variable_cname ("CFLAGS", "-O", o_default, 0);
+          define_variable_cname ("FC", "fort77", o_default, 0);
+          define_variable_cname ("FFLAGS", "-O 1", o_default, 0);
+          define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0);
         }
       else if (streq (name, ".SECONDEXPANSION"))
         second_expansion = 1;
-#if !defined(WINDOWS32) && !defined (__MSDOS__) && !defined (__EMX__)
+#if !defined (__MSDOS__) && !defined (__EMX__)
       else if (streq (name, ".ONESHELL"))
         one_shell = 1;
 #endif
 
       /* If this is a static pattern rule:
-         `targets: target%pattern: prereq%pattern; recipe',
+         '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);
+        error (flocp, _("target '%s' doesn't match the target pattern"), name);
       else if (deps)
         /* 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
@@ -1982,76 +2090,76 @@ record_files (struct nameseq *filenames, const char *pattern,
 
       /* Find or create an entry in the file database for this target.  */
       if (!two_colon)
-       {
-         /* 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);
-
-         /* If CMDS == F->CMDS, this target was listed in this rule
-            more than once.  Just give a warning since this is harmless.  */
-         if (cmds != 0 && cmds == f->cmds)
-           error (flocp,
-                   _("target `%s' given more than once in the same rule."),
+        {
+          /* 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);
+
+          /* If CMDS == F->CMDS, this target was listed in this rule
+             more than once.  Just give a warning since this is harmless.  */
+          if (cmds != 0 && cmds == f->cmds)
+            error (flocp,
+                   _("target '%s' given more than once in the same rule"),
                    f->name);
 
-         /* Check for two single-colon entries both with commands.
-            Check is_target so that we don't lose on files such as .c.o
-            whose commands were preinitialized.  */
-         else if (cmds != 0 && f->cmds != 0 && f->is_target)
-           {
-             error (&cmds->fileinfo,
-                     _("warning: overriding recipe for target `%s'"),
+          /* Check for two single-colon entries both with commands.
+             Check is_target so that we don't lose on files such as .c.o
+             whose commands were preinitialized.  */
+          else if (cmds != 0 && f->cmds != 0 && f->is_target)
+            {
+              error (&cmds->fileinfo,
+                     _("warning: overriding recipe for target '%s'"),
                      f->name);
-             error (&f->cmds->fileinfo,
-                     _("warning: ignoring old recipe for target `%s'"),
+              error (&f->cmds->fileinfo,
+                     _("warning: ignoring old recipe for target '%s'"),
                      f->name);
-           }
-
-         /* Defining .DEFAULT with no deps or cmds clears it.  */
-         if (f == default_file && this == 0 && cmds == 0)
-           f->cmds = 0;
-         if (cmds != 0)
-           f->cmds = cmds;
-
-         /* Defining .SUFFIXES with no dependencies clears out the list of
-            suffixes.  */
-         if (f == suffix_file && this == 0)
-           {
+            }
+
+          /* Defining .DEFAULT with no deps or cmds clears it.  */
+          if (f == default_file && this == 0 && cmds == 0)
+            f->cmds = 0;
+          if (cmds != 0)
+            f->cmds = cmds;
+
+          /* Defining .SUFFIXES with no dependencies clears out the list of
+             suffixes.  */
+          if (f == suffix_file && this == 0)
+            {
               free_dep_chain (f->deps);
-             f->deps = 0;
-           }
-       }
+              f->deps = 0;
+            }
+        }
       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.  */
-         if (f != 0 && f->is_target && !f->double_colon)
-           fatal (flocp,
-                   _("target file `%s' has both : and :: entries"), f->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
-            the first one.  */
-         if (f->double_colon == 0)
-           /* This is the first entry for this name, so we must set its
-              double_colon pointer to itself.  */
-           f->double_colon = f;
-
-         f->cmds = cmds;
-       }
+        {
+          /* 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.  */
+          if (f != 0 && f->is_target && !f->double_colon)
+            fatal (flocp,
+                   _("target file '%s' has both : and :: entries"), f->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
+             the first one.  */
+          if (f->double_colon == 0)
+            /* This is the first entry for this name, so we must set its
+               double_colon pointer to itself.  */
+            f->double_colon = f;
+
+          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
+         name that matched the '%' in the pattern, so you can use $* in the
          commands.  If we didn't do it before, enter the prereqs now.  */
       if (pattern)
         {
@@ -2123,37 +2231,24 @@ record_files (struct nameseq *filenames, const char *pattern,
    STOPCHAR _cannot_ be '$' if IGNOREVARS is true.  */
 
 static char *
-find_char_unquote (char *string, int stop1, int stop2, int blank,
-                   int ignorevars)
+find_char_unquote (char *string, int map)
 {
   unsigned int string_len = 0;
   char *p = string;
 
-  if (ignorevars)
-    ignorevars = '$';
+  /* Always stop on NUL.  */
+  map |= MAP_NUL;
 
   while (1)
     {
-      if (stop2 && blank)
-       while (*p != '\0' && *p != ignorevars && *p != stop1 && *p != stop2
-              && ! isblank ((unsigned char) *p))
-         ++p;
-      else if (stop2)
-       while (*p != '\0' && *p != ignorevars && *p != stop1 && *p != stop2)
-         ++p;
-      else if (blank)
-       while (*p != '\0' && *p != ignorevars && *p != stop1
-              && ! isblank ((unsigned char) *p))
-         ++p;
-      else
-       while (*p != '\0' && *p != ignorevars && *p != stop1)
-         ++p;
+      while (! STOP_SET (*p, map))
+        ++p;
 
       if (*p == '\0')
-       break;
+        break;
 
       /* If we stopped due to a variable reference, skip over its contents.  */
-      if (*p == ignorevars)
+      if (STOP_SET (*p, MAP_VARIABLE))
         {
           char openparen = p[1];
 
@@ -2184,41 +2279,84 @@ find_char_unquote (char *string, int stop1, int stop2, int blank,
         }
 
       if (p > string && p[-1] == '\\')
-       {
-         /* Search for more backslashes.  */
-         int i = -2;
-         while (&p[i] >= string && p[i] == '\\')
-           --i;
-         ++i;
-         /* Only compute the length if really needed.  */
-         if (string_len == 0)
-           string_len = strlen (string);
-         /* The number of backslashes is now -I.
-            Copy P over itself to swallow half of them.  */
-         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.  */
-           return p;
-
-         /* The STOPCHAR was quoted by a backslash.  Look for another.  */
-       }
+        {
+          /* Search for more backslashes.  */
+          int i = -2;
+          while (&p[i] >= string && p[i] == '\\')
+            --i;
+          ++i;
+          /* Only compute the length if really needed.  */
+          if (string_len == 0)
+            string_len = strlen (string);
+          /* The number of backslashes is now -I.
+             Copy P over itself to swallow half of them.  */
+          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.  */
+            return p;
+
+          /* The STOPCHAR was quoted by a backslash.  Look for another.  */
+        }
       else
-       /* No backslash in sight.  */
-       return p;
+        /* No backslash in sight.  */
+        return p;
     }
 
   /* Never hit a STOPCHAR or blank (with BLANK nonzero).  */
   return 0;
 }
 
+/* Unescape a character in a string.  The string is compressed onto itself.  */
+
+static char *
+unescape_char (char *string, int c)
+{
+  char *p = string;
+  char *s = string;
+
+  while (*s != '\0')
+    {
+      if (*s == '\\')
+        {
+          char *e = s;
+          int l;
+
+          /* We found a backslash.  See if it's escaping our character.  */
+          while (*e == '\\')
+            ++e;
+          l = e - s;
+
+          if (*e != c || l%2 == 0)
+            {
+              /* It's not; just take it all without unescaping.  */
+              memcpy (p, s, l);
+              p += l;
+            }
+          else if (l > 1)
+            {
+              /* It is, and there's >1 backslash.  Take half of them.  */
+              l /= 2;
+              memcpy (p, s, l);
+              p += l;
+            }
+          s = e;
+        }
+
+      *(p++) = *(s++);
+    }
+
+  *p = '\0';
+  return string;
+}
+
 /* Search PATTERN for an unquoted % and handle quoting.  */
 
 char *
 find_percent (char *pattern)
 {
-  return find_char_unquote (pattern, '%', 0, 0, 0);
+  return find_char_unquote (pattern, MAP_PERCENT);
 }
 
 /* Search STRING for an unquoted % and handle quoting.  Returns a pointer to
@@ -2241,7 +2379,7 @@ find_percent_cached (const char **string)
 
   while (1)
     {
-      while (*p != '\0' && *p != '%')
+      while (! STOP_SET (*p, MAP_PERCENT|MAP_NUL))
         ++p;
 
       if (*p == '\0')
@@ -2382,17 +2520,17 @@ readline (struct ebuffer *ebuf)
 
       len = strlen (p);
       if (len == 0)
-       {
-         /* This only happens when the first thing on the line is a '\0'.
-            It is a pretty hopeless case, but (wonder of wonders) Athena
-            lossage strikes again!  (xmkmf puts NULs in its makefiles.)
-            There is nothing really to be done; we synthesize a newline so
-            the following line doesn't appear to be part of this line.  */
-         error (&ebuf->floc,
+        {
+          /* This only happens when the first thing on the line is a '\0'.
+             It is a pretty hopeless case, but (wonder of wonders) Athena
+             lossage strikes again!  (xmkmf puts NULs in its makefiles.)
+             There is nothing really to be done; we synthesize a newline so
+             the following line doesn't appear to be part of this line.  */
+          error (&ebuf->floc,
                  _("warning: NUL character seen; rest of line ignored"));
-         p[0] = '\n';
-         len = 1;
-       }
+          p[0] = '\n';
+          len = 1;
+        }
 
       /* Jump past the text we just read.  */
       p += len;
@@ -2411,23 +2549,23 @@ readline (struct ebuffer *ebuf)
       if ((p - start) > 1 && p[-2] == '\r')
         {
           --p;
-          p[-1] = '\n';
+          memmove (p-1, p, strlen (p) + 1);
         }
 #endif
 
       backslash = 0;
       for (p2 = p - 2; p2 >= start; --p2)
-       {
-         if (*p2 != '\\')
-           break;
+        {
+          if (*p2 != '\\')
+            break;
           backslash = !backslash;
-       }
+        }
 
       if (!backslash)
-       {
-         p[-1] = '\0';
-         break;
-       }
+        {
+          p[-1] = '\0';
+          break;
+        }
 
       /* It was a backslash/newline combo.  If we have more space, read
          another line.  */
@@ -2470,7 +2608,7 @@ readline (struct ebuffer *ebuf)
      w_colon        A colon
      w_dcolon       A double-colon
      w_semicolon    A semicolon
-     w_varassign    A variable assignment operator (=, :=, +=, or ?=)
+     w_varassign    A variable assignment operator (=, :=, ::=, +=, ?=, or !=)
 
    Note that this function is only used when reading certain parts of the
    makefile.  Don't use it where special rules hold sway (RHS of a variable,
@@ -2509,7 +2647,13 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
         {
         case ':':
           ++p;
-          wtype = w_dcolon;
+          if (p[1] != '=')
+            wtype = w_dcolon;
+          else
+            {
+              wtype = w_varassign;
+              ++p;
+            }
           break;
 
         case '=':
@@ -2521,6 +2665,7 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
 
     case '+':
     case '?':
+    case '!':
       if (*p == '=')
         {
           ++p;
@@ -2540,7 +2685,7 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
 
   /* This is some non-operator word.  A word consists of the longest
      string of characters that doesn't contain whitespace, one of [:=#],
-     or [?+]=, or one of the chars in the DELIM string.  */
+     or [?+!]=, or one of the chars in the DELIM string.  */
 
   /* We start out assuming a static word; if we see a variable we'll
      adjust our assumptions then.  */
@@ -2562,14 +2707,14 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
 
         case ':':
 #ifdef HAVE_DOS_PATHS
-         /* A word CAN include a colon in its drive spec.  The drive
-            spec is allowed either at the beginning of a word, or as part
-            of the archive member name, like in "libfoo.a(d:/foo/bar.o)".  */
-         if (!(p - beg >= 2
-               && (*p == '/' || *p == '\\') && isalpha ((unsigned char)p[-2])
-               && (p - beg == 2 || p[-3] == '(')))
+          /* A word CAN include a colon in its drive spec.  The drive
+             spec is allowed either at the beginning of a word, or as part
+             of the archive member name, like in "libfoo.a(d:/foo/bar.o)".  */
+          if (!(p - beg >= 2
+                && (*p == '/' || *p == '\\') && isalpha ((unsigned char)p[-2])
+                && (p - beg == 2 || p[-3] == '(')))
 #endif
-         goto done_word;
+          goto done_word;
 
         case '$':
           c = *(p++);
@@ -2643,7 +2788,7 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
 void
 construct_include_path (const char **arg_dirs)
 {
-#ifdef VAXC            /* just don't ask ... */
+#ifdef VAXC             /* just don't ask ... */
   stat_t stbuf;
 #else
   struct stat stbuf;
@@ -2674,19 +2819,19 @@ construct_include_path (const char **arg_dirs)
   if (arg_dirs)
     while (*arg_dirs != 0)
       {
-       const char *dir = *(arg_dirs++);
+        const char *dir = *(arg_dirs++);
         char *expanded = 0;
         int e;
 
-       if (dir[0] == '~')
-         {
-           expanded = tilde_expand (dir);
-           if (expanded != 0)
-             dir = expanded;
-         }
+        if (dir[0] == '~')
+          {
+            expanded = tilde_expand (dir);
+            if (expanded != 0)
+              dir = expanded;
+          }
 
         EINTRLOOP (e, stat (dir, &stbuf));
-       if (e == 0 && S_ISDIR (stbuf.st_mode))
+        if (e == 0 && S_ISDIR (stbuf.st_mode))
           {
             unsigned int len = strlen (dir);
             /* If dir name is written with trailing slashes, discard them.  */
@@ -2697,8 +2842,8 @@ construct_include_path (const char **arg_dirs)
             dirs[idx++] = strcache_add_len (dir, len);
           }
 
-       if (expanded)
-         free (expanded);
+        if (expanded)
+          free (expanded);
       }
 
   /* Now add the standard default dirs at the end.  */
@@ -2712,10 +2857,10 @@ construct_include_path (const char **arg_dirs)
     if (djdir)
       {
         unsigned int len = strlen (djdir->value) + 8;
-       char *defdir = alloca (len + 1);
+        char *defdir = alloca (len + 1);
 
-       strcat (strcpy (defdir, djdir->value), "/include");
-       dirs[idx++] = strcache_add (defdir);
+        strcat (strcpy (defdir, djdir->value), "/include");
+        dirs[idx++] = strcache_add (defdir);
 
         if (len > max_incl_len)
           max_incl_len = len;
@@ -2765,42 +2910,42 @@ tilde_expand (const char *name)
       int is_variable;
 
       {
-       /* Turn off --warn-undefined-variables while we expand HOME.  */
-       int save = warn_undefined_variables_flag;
-       warn_undefined_variables_flag = 0;
+        /* Turn off --warn-undefined-variables while we expand HOME.  */
+        int save = warn_undefined_variables_flag;
+        warn_undefined_variables_flag = 0;
 
-       home_dir = allocated_variable_expand ("$(HOME)");
+        home_dir = allocated_variable_expand ("$(HOME)");
 
-       warn_undefined_variables_flag = save;
+        warn_undefined_variables_flag = save;
       }
 
       is_variable = home_dir[0] != '\0';
       if (!is_variable)
-       {
-         free (home_dir);
-         home_dir = getenv ("HOME");
-       }
+        {
+          free (home_dir);
+          home_dir = getenv ("HOME");
+        }
 # if !defined(_AMIGA) && !defined(WINDOWS32)
       if (home_dir == 0 || home_dir[0] == '\0')
-       {
-         extern char *getlogin ();
-         char *logname = getlogin ();
-         home_dir = 0;
-         if (logname != 0)
-           {
-             struct passwd *p = getpwnam (logname);
-             if (p != 0)
-               home_dir = p->pw_dir;
-           }
-       }
+        {
+          extern char *getlogin ();
+          char *logname = getlogin ();
+          home_dir = 0;
+          if (logname != 0)
+            {
+              struct passwd *p = getpwnam (logname);
+              if (p != 0)
+                home_dir = p->pw_dir;
+            }
+        }
 # endif /* !AMIGA && !WINDOWS32 */
       if (home_dir != 0)
-       {
-         char *new = xstrdup (concat (2, home_dir, name + 1));
-         if (is_variable)
-           free (home_dir);
-         return new;
-       }
+        {
+          char *new = xstrdup (concat (2, home_dir, name + 1));
+          if (is_variable)
+            free (home_dir);
+          return new;
+        }
     }
 # if !defined(_AMIGA) && !defined(WINDOWS32)
   else
@@ -2808,17 +2953,17 @@ tilde_expand (const char *name)
       struct passwd *pwent;
       char *userend = strchr (name + 1, '/');
       if (userend != 0)
-       *userend = '\0';
+        *userend = '\0';
       pwent = getpwnam (name + 1);
       if (pwent != 0)
-       {
-         if (userend == 0)
-           return xstrdup (pwent->pw_dir);
-         else
-           return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1));
-       }
+        {
+          if (userend == 0)
+            return xstrdup (pwent->pw_dir);
+          else
+            return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1));
+        }
       else if (userend != 0)
-       *userend = '/';
+        *userend = '/';
     }
 # endif /* !AMIGA && !WINDOWS32 */
 #endif /* !VMS */
@@ -2849,7 +2994,7 @@ tilde_expand (const char *name)
   */
 
 void *
-parse_file_seq (char **stringp, unsigned int size, int stopchar,
+parse_file_seq (char **stringp, unsigned int size, int stopmap,
                 const char *prefix, int flags)
 {
   extern void dir_setup_glob (glob_t *glob);
@@ -2857,9 +3002,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
   /* 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));
+  int cachep = NONE_SET (flags, PARSEFS_NOCACHE);
 
   struct nameseq *new = 0;
   struct nameseq **newp = &new;
@@ -2874,20 +3018,18 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
   glob_t gl;
   char *tp;
 
-#ifdef VMS
-# define VMS_COMMA ','
-#else
-# define VMS_COMMA 0
-#endif
+  /* Always stop on NUL.  */
+  stopmap |= MAP_NUL;
 
   if (size < sizeof (struct nameseq))
     size = sizeof (struct nameseq);
 
-  if (! (flags & PARSEFS_NOGLOB))
+  if (NONE_SET (flags, PARSEFS_NOGLOB))
     dir_setup_glob (&gl);
 
   /* Get enough temporary space to construct the largest possible target.  */
   {
+    static int tmpbuf_len = 0;
     int l = strlen (*stringp) + 1;
     if (l > tmpbuf_len)
       {
@@ -2904,6 +3046,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
       const char *name;
       const char **nlist = 0;
       char *tildep = 0;
+      int globme = 1;
 #ifndef NO_ARCHIVES
       char *arname = 0;
       char *memname = 0;
@@ -2914,59 +3057,59 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
 
       /* Skip whitespace; at the end of the string or STOPCHAR we're done.  */
       p = next_token (p);
-      if (*p == '\0' || *p == stopchar)
-       break;
+      if (STOP_SET (*p, stopmap))
+        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);
+      p = find_char_unquote (p, stopmap|MAP_VMSCOMMA|MAP_BLANK);
 #ifdef VMS
-       /* convert comma separated list to space separated */
+        /* convert comma separated list to space separated */
       if (p && *p == ',')
-       *p =' ';
+        *p =' ';
 #endif
 #ifdef _AMIGA
-      if (stopchar == ':' && p && *p == ':'
+      if (p && STOP_SET (*p, stopmap & MAP_COLON)
           && !(isspace ((unsigned char)p[1]) || !p[1]
                || isspace ((unsigned char)p[-1])))
-       p = find_char_unquote (p+1, stopchar, VMS_COMMA, 1, 0);
+        p = find_char_unquote (p+1, stopmap|MAP_VMSCOMMA|MAP_BLANK);
 #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 == ':')
+    if (stopmap | MAP_COLON)
       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);
+        p = find_char_unquote (p + 1, stopmap|MAP_VMSCOMMA|MAP_BLANK);
 #endif
       if (p == 0)
-       p = s + strlen (s);
+        p = s + strlen (s);
 
       /* Strip leading "this directory" references.  */
-      if (! (flags & PARSEFS_NOSTRIP))
+      if (NONE_SET (flags, PARSEFS_NOSTRIP))
 #ifdef VMS
-       /* Skip leading `[]'s.  */
-       while (p - s > 2 && s[0] == '[' && s[1] == ']')
+        /* Skip leading '[]'s.  */
+        while (p - s > 2 && s[0] == '[' && s[1] == ']')
 #else
-       /* Skip leading `./'s.  */
-       while (p - s > 2 && s[0] == '.' && s[1] == '/')
+        /* Skip leading './'s.  */
+        while (p - s > 2 && s[0] == '.' && s[1] == '/')
 #endif
-         {
+          {
             /* Skip "./" and all following slashes.  */
-           s += 2;
-           while (*s == '/')
-             ++s;
-         }
+            s += 2;
+            while (*s == '/')
+              ++s;
+          }
 
       /* Extract the filename just found, and skip it.
          Set NAME to the string, and NLEN to its length.  */
 
       if (s == p)
         {
-       /* The name was stripped to empty ("./"). */
+        /* The name was stripped to empty ("./"). */
 #if defined(VMS)
           continue;
 #elif defined(_AMIGA)
@@ -2981,19 +3124,19 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
 #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.
  * xstrdup called because S may be read-only string constant.
  */
-         char *n = tp;
-         while (s < p)
-           {
-             if (s[0] == '\\' && s[1] == ':')
+          char *n = tp;
+          while (s < p)
+            {
+              if (s[0] == '\\' && s[1] == ':')
                 ++s;
-             *(n++) = *(s++);
-           }
+              *(n++) = *(s++);
+            }
           n[0] = '\0';
           nlen = strlen (tp);
 #else
@@ -3012,7 +3155,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
          "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
+         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.
@@ -3020,7 +3163,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
          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)
+      if (NONE_SET (flags, PARSEFS_NOAR)
           && tp == tmpbuf && tp[0] != '(' && tp[nlen-1] != ')')
         {
           char *n = strchr (tp, '(');
@@ -3028,16 +3171,19 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
             {
               /* 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
                 {
+                  const char *o = e;
                   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))
+                  while (! STOP_SET (*e, stopmap|MAP_BLANK|MAP_VMSCOMMA))
                     ++e;
+                  /* If we didn't move, we're done now.  */
+                  if (e == o)
+                    break;
                   if (e[-1] == ')')
                     {
                       /* Found the end, so this is the first element in an
@@ -3046,16 +3192,16 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
                       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 have just "lib(", part of something like "lib( a b)",
+                 go to the next item.  */
+              if (! nlen)
+                continue;
             }
         }
 
@@ -3082,62 +3228,70 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
 
       /* 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)
+      if (ANY_SET (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] == '~')
-       {
-         tildep = tilde_expand (tp);
-         if (tildep != 0)
+      if (tmpbuf[0] == '~')
+        {
+          tildep = tilde_expand (tmpbuf);
+          if (tildep != 0)
             name = tildep;
-       }
+        }
 
 #ifndef NO_ARCHIVES
       /* 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;
-       }
+      if (NONE_SET (flags, PARSEFS_NOAR) && ar_name (name))
+        {
+          ar_parse_name (name, &arname, &memname);
+          name = arname;
+        }
 #endif /* !NO_ARCHIVES */
 
-      switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
-       {
-       case GLOB_NOSPACE:
-         fatal (NILF, _("virtual memory exhausted"));
+      /* glob() is expensive: don't call it unless we need to.  */
+      if (NONE_SET (flags, PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL)
+        {
+          globme = 0;
+          i = 1;
+          nlist = &name;
+        }
+      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 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 */
+          case GLOB_NOMATCH:
+            /* If we want only existing items, skip this one.  */
+            if (ANY_SET (flags, PARSEFS_EXISTS))
+              {
+                i = 0;
+                break;
+              }
+            /* FALLTHROUGH */
 
-       default:
-          /* By default keep this name.  */
-          i = 1;
-          nlist = &name;
-          break;
-       }
+          default:
+            /* By default keep this name.  */
+            i = 1;
+            nlist = &name;
+            break;
+          }
 
       /* For each matched element, add it to the list.  */
       while (i-- > 0)
@@ -3152,7 +3306,10 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
             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)
@@ -3174,7 +3331,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
 #endif /* !NO_ARCHIVES */
           NEWELT (concat (2, prefix, nlist[i]));
 
-      globfree (&gl);
+      if (globme)
+        globfree (&gl);
 
 #ifndef NO_ARCHIVES
       if (arname)
index 27d2550..138cdc6 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "job.h"
 #include "commands.h"
@@ -43,7 +41,7 @@ extern int try_implicit_rule (struct file *file, unsigned int depth);
 
 
 /* The test for circular dependencies is based on the 'updating' bit in
-   `struct file'.  However, double colon targets have seperate `struct
+   'struct file'.  However, double colon targets have separate 'struct
    file's; make sure we always use the base of the double colon chain. */
 
 #define start_updating(_f)  (((_f)->double_colon ? (_f)->double_colon : (_f))\
@@ -64,35 +62,35 @@ 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 enum update_status 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
+/* Remake all the goals in the 'struct dep' chain GOALS.  Return -1 if nothing
    was done, 0 if all goals were updated successfully, or 1 if a goal failed.
 
    If rebuilding_makefiles is nonzero, these goals are makefiles, so -t, -q,
    and -n should be disabled for them unless they were also command-line
    targets, and we should only make one goal at a time and return as soon as
-   one goal whose `changed' member is nonzero is successfully made.  */
+   one goal whose 'changed' member is nonzero is successfully made.  */
 
-int
+enum update_status
 update_goal_chain (struct dep *goals)
 {
   int t = touch_flag, q = question_flag, n = just_print_flag;
-  int status = -1;
+  enum update_status status = us_none;
 
-#define        MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \
-                    : file_mtime (file))
+#define MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \
+                     : file_mtime (file))
 
   /* Duplicate the chain so we can remove things from it.  */
 
   goals = copy_dep_chain (goals);
 
   {
-    /* Clear the `changed' flag of each goal in the chain.
+    /* Clear the 'changed' flag of each goal in the chain.
        We will use the flag below to notice when any commands
        have actually been run for a target.  When no commands
        have been run, we give an "up to date" diagnostic.  */
@@ -122,44 +120,44 @@ update_goal_chain (struct dep *goals)
       lastgoal = 0;
       g = goals;
       while (g != 0)
-       {
-         /* Iterate over all double-colon entries for this file.  */
-         struct file *file;
-         int stop = 0, any_not_updated = 0;
-
-         for (file = g->file->double_colon ? g->file->double_colon : g->file;
-              file != NULL;
-              file = file->prev)
-           {
-             unsigned int ocommands_started;
-             int x;
+        {
+          /* Iterate over all double-colon entries for this file.  */
+          struct file *file;
+          int stop = 0, any_not_updated = 0;
+
+          for (file = g->file->double_colon ? g->file->double_colon : g->file;
+               file != NULL;
+               file = file->prev)
+            {
+              unsigned int ocommands_started;
+              int fail;
 
               file->dontcare = g->dontcare;
 
-             check_renamed (file);
-             if (rebuilding_makefiles)
-               {
-                 if (file->cmd_target)
-                   {
-                     touch_flag = t;
-                     question_flag = q;
-                     just_print_flag = n;
-                   }
-                 else
-                   touch_flag = question_flag = just_print_flag = 0;
-               }
-
-             /* Save the old value of `commands_started' so we can compare
-                later.  It will be incremented when any commands are
-                actually run.  */
-             ocommands_started = commands_started;
-
-             x = update_file (file, rebuilding_makefiles ? 1 : 0);
-             check_renamed (file);
-
-             /* Set the goal's `changed' flag if any commands were started
-                by calling update_file above.  We check this flag below to
-                decide when to give an "up to date" diagnostic.  */
+              check_renamed (file);
+              if (rebuilding_makefiles)
+                {
+                  if (file->cmd_target)
+                    {
+                      touch_flag = t;
+                      question_flag = q;
+                      just_print_flag = n;
+                    }
+                  else
+                    touch_flag = question_flag = just_print_flag = 0;
+                }
+
+              /* Save the old value of 'commands_started' so we can compare
+                 later.  It will be incremented when any commands are
+                 actually run.  */
+              ocommands_started = commands_started;
+
+              fail = update_file (file, rebuilding_makefiles ? 1 : 0);
+              check_renamed (file);
+
+              /* Set the goal's 'changed' flag if any commands were started
+                 by calling update_file above.  We check this flag below to
+                 decide when to give an "up to date" diagnostic.  */
               if (commands_started > ocommands_started)
                 g->changed = 1;
 
@@ -167,10 +165,10 @@ update_goal_chain (struct dep *goals)
                  1 if updating failed, or to 0 if updating succeeded.  Leave
                  STATUS as it is if no updating was done.  */
 
-             stop = 0;
-             if ((x != 0 || file->updated) && status < 1)
+              stop = 0;
+              if ((fail || file->updated) && status < us_question)
                 {
-                  if (file->update_status != 0)
+                  if (file->update_status != us_success)
                     {
                       /* Updating failed, or -q triggered.  The STATUS value
                          tells our caller which.  */
@@ -197,7 +195,7 @@ update_goal_chain (struct dep *goals)
                              enter an infinite loop.  */
                           if (!rebuilding_makefiles
                               || (!just_print_flag && !question_flag))
-                            status = 0;
+                            status = us_success;
                           if (rebuilding_makefiles && file->dontcare)
                             /* This is a default makefile; stop remaking.  */
                             stop = 1;
@@ -205,56 +203,56 @@ update_goal_chain (struct dep *goals)
                     }
                 }
 
-             /* Keep track if any double-colon entry is not finished.
+              /* Keep track if any double-colon entry is not finished.
                  When they are all finished, the goal is finished.  */
-             any_not_updated |= !file->updated;
+              any_not_updated |= !file->updated;
 
               file->dontcare = 0;
 
-             if (stop)
-               break;
-           }
-
-         /* Reset FILE since it is null at the end of the loop.  */
-         file = g->file;
-
-         if (stop || !any_not_updated)
-           {
-             /* If we have found nothing whatever to do for the goal,
-                print a message saying nothing needs doing.  */
-
-             if (!rebuilding_makefiles
-                 /* If the update_status is zero, we updated successfully
-                    or not at all.  G->changed will have been set above if
-                    any commands were actually started for this goal.  */
-                 && file->update_status == 0 && !g->changed
-                 /* Never give a message under -s or -q.  */
-                 && !silent_flag && !question_flag)
-               message (1, ((file->phony || file->cmds == 0)
-                            ? _("Nothing to be done for `%s'.")
-                            : _("`%s' is up to date.")),
-                        file->name);
-
-             /* This goal is finished.  Remove it from the chain.  */
-             if (lastgoal == 0)
-               goals = g->next;
-             else
-               lastgoal->next = g->next;
-
-             /* Free the storage.  */
-             free (g);
-
-             g = lastgoal == 0 ? goals : lastgoal->next;
-
-             if (stop)
-               break;
-           }
-         else
-           {
-             lastgoal = g;
-             g = g->next;
-           }
-       }
+              if (stop)
+                break;
+            }
+
+          /* Reset FILE since it is null at the end of the loop.  */
+          file = g->file;
+
+          if (stop || !any_not_updated)
+            {
+              /* If we have found nothing whatever to do for the goal,
+                 print a message saying nothing needs doing.  */
+
+              if (!rebuilding_makefiles
+                  /* If the update_status is success, we updated successfully
+                     or not at all.  G->changed will have been set above if
+                     any commands were actually started for this goal.  */
+                  && file->update_status == us_success && !g->changed
+                  /* Never give a message under -s or -q.  */
+                  && !silent_flag && !question_flag)
+                message (1, ((file->phony || file->cmds == 0)
+                             ? _("Nothing to be done for '%s'.")
+                             : _("'%s' is up to date.")),
+                         file->name);
+
+              /* This goal is finished.  Remove it from the chain.  */
+              if (lastgoal == 0)
+                goals = g->next;
+              else
+                lastgoal->next = g->next;
+
+              /* Free the storage.  */
+              free (g);
+
+              g = lastgoal == 0 ? goals : lastgoal->next;
+
+              if (stop)
+                break;
+            }
+          else
+            {
+              lastgoal = g;
+              g = g->next;
+            }
+        }
 
       /* If we reached the end of the dependency graph toggle the considered
          flag for the next pass.  */
@@ -273,8 +271,8 @@ update_goal_chain (struct dep *goals)
 }
 \f
 /* If FILE is not up to date, execute the commands for it.
-   Return 0 if successful, 1 if unsuccessful;
-   but with some flag settings, just call `exit' if unsuccessful.
+   Return 0 if successful, non-0 if unsuccessful;
+   but with some flag settings, just call 'exit' if unsuccessful.
 
    DEPTH is the depth in recursions of this function.
    We increment it during the consideration of our dependencies,
@@ -287,7 +285,7 @@ update_goal_chain (struct dep *goals)
 static int
 update_file (struct file *file, unsigned int depth)
 {
-  register int status = 0;
+  int status = 0;
   register struct file *f;
 
   f = file->double_colon ? file->double_colon : file;
@@ -299,11 +297,12 @@ update_file (struct file *file, unsigned int depth)
   if (f->considered == considered)
     {
       /* Check for the case where a target has been tried and failed but
-         the diagnostics hasn't been issued. If we need the diagnostics
+         the diagnostics haven'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))
+      if (!(f->updated && f->update_status > us_none
+            && !f->dontcare && f->no_diag))
         {
-          DBF (DB_VERBOSE, _("Pruning file `%s'.\n"));
+          DBF (DB_VERBOSE, _("Pruning file '%s'.\n"));
           return f->command_state == cs_finished ? f->update_status : 0;
         }
     }
@@ -327,8 +326,8 @@ update_file (struct file *file, unsigned int depth)
       if (f->command_state == cs_running
           || f->command_state == cs_deps_running)
         {
-         /* Don't run the other :: rules for this
-            file until this rule is finished.  */
+          /* Don't run the other :: rules for this
+             file until this rule is finished.  */
           status = 0;
           break;
         }
@@ -355,11 +354,6 @@ update_file (struct file *file, unsigned int depth)
 static void
 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 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
@@ -370,7 +364,7 @@ complain (struct file *file)
 
   for (d = file->deps; d != 0; d = d->next)
     {
-      if (d->file->updated && d->file->update_status > 0 && file->no_diag)
+      if (d->file->updated && d->file->update_status > us_none && file->no_diag)
         {
           complain (d->file);
           break;
@@ -379,6 +373,11 @@ complain (struct file *file)
 
   if (d == 0)
     {
+      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");
+
       /* Didn't find any dependencies to complain about. */
       if (!keep_going_flag)
         {
@@ -397,7 +396,8 @@ complain (struct file *file)
     }
 }
 
-/* Consider a single `struct file' and update it as appropriate.  */
+/* Consider a single 'struct file' and update it as appropriate.
+   Return 0 on success, or non-0 on failure.  */
 
 static int
 update_file_1 (struct file *file, unsigned int depth)
@@ -410,14 +410,14 @@ update_file_1 (struct file *file, unsigned int depth)
   struct dep amake;
   int running = 0;
 
-  DBF (DB_VERBOSE, _("Considering target file `%s'.\n"));
+  DBF (DB_VERBOSE, _("Considering target file '%s'.\n"));
 
   if (file->updated)
     {
-      if (file->update_status > 0)
-       {
-         DBF (DB_VERBOSE,
-               _("Recently tried and failed to update file `%s'.\n"));
+      if (file->update_status > us_none)
+        {
+          DBF (DB_VERBOSE,
+               _("Recently tried and failed to update file '%s'.\n"));
 
           /* 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.
@@ -426,10 +426,10 @@ update_file_1 (struct file *file, unsigned int depth)
           if (file->no_diag && !file->dontcare)
               complain (file);
 
-         return file->update_status;
-       }
+          return file->update_status;
+        }
 
-      DBF (DB_VERBOSE, _("File `%s' was considered already.\n"));
+      DBF (DB_VERBOSE, _("File '%s' was considered already.\n"));
       return 0;
     }
 
@@ -439,10 +439,10 @@ update_file_1 (struct file *file, unsigned int depth)
     case cs_deps_running:
       break;
     case cs_running:
-      DBF (DB_VERBOSE, _("Still updating file `%s'.\n"));
+      DBF (DB_VERBOSE, _("Still updating file '%s'.\n"));
       return 0;
     case cs_finished:
-      DBF (DB_VERBOSE, _("Finished updating file `%s'.\n"));
+      DBF (DB_VERBOSE, _("Finished updating file '%s'.\n"));
       return file->update_status;
     default:
       abort ();
@@ -471,15 +471,15 @@ update_file_1 (struct file *file, unsigned int depth)
   check_renamed (file);
   noexist = this_mtime == NONEXISTENT_MTIME;
   if (noexist)
-    DBF (DB_BASIC, _("File `%s' does not exist.\n"));
+    DBF (DB_BASIC, _("File '%s' does not exist.\n"));
   else if (ORDINARY_MTIME_MIN <= this_mtime && this_mtime <= ORDINARY_MTIME_MAX
-          && file->low_resolution_time)
+           && file->low_resolution_time)
     {
       /* Avoid spurious rebuilds due to low resolution time stamps.  */
       int ns = FILE_TIMESTAMP_NS (this_mtime);
       if (ns != 0)
-       error (NILF, _("*** Warning: .LOW_RESOLUTION_TIME file `%s' has a high resolution time stamp"),
-              file->name);
+        error (NILF, _("*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"),
+               file->name);
       this_mtime += FILE_TIMESTAMPS_PER_S - 1 - ns;
     }
 
@@ -491,15 +491,15 @@ update_file_1 (struct file *file, unsigned int depth)
   if (!file->phony && file->cmds == 0 && !file->tried_implicit)
     {
       if (try_implicit_rule (file, depth))
-       DBF (DB_IMPLICIT, _("Found an implicit rule for `%s'.\n"));
+        DBF (DB_IMPLICIT, _("Found an implicit rule for '%s'.\n"));
       else
-       DBF (DB_IMPLICIT, _("No implicit rule found for `%s'.\n"));
+        DBF (DB_IMPLICIT, _("No implicit rule found for '%s'.\n"));
       file->tried_implicit = 1;
     }
   if (file->cmds == 0 && !file->is_target
       && default_file != 0 && default_file->cmds != 0)
     {
-      DBF (DB_IMPLICIT, _("Using default recipe for `%s'.\n"));
+      DBF (DB_IMPLICIT, _("Using default recipe for '%s'.\n"));
       file->cmds = default_file->cmds;
     }
 
@@ -579,7 +579,7 @@ update_file_1 (struct file *file, unsigned int depth)
             while (f != 0);
           }
 
-          if (dep_status != 0 && !keep_going_flag)
+          if (dep_status && !keep_going_flag)
             break;
 
           if (!running)
@@ -599,13 +599,13 @@ update_file_1 (struct file *file, unsigned int depth)
   if (must_make || always_make_flag)
     {
       for (d = file->deps; d != 0; d = d->next)
-       if (d->file->intermediate)
-         {
+        if (d->file->intermediate)
+          {
             int dontcare = 0;
 
-           FILE_TIMESTAMP mtime = file_mtime (d->file);
-           check_renamed (d->file);
-           d->file->parent = file;
+            FILE_TIMESTAMP mtime = file_mtime (d->file);
+            check_renamed (d->file);
+            d->file->parent = file;
 
             /* Inherit dontcare flag from our parent. */
             if (rebuilding_makefiles)
@@ -614,47 +614,51 @@ 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);
+            dep_status |= update_file (d->file, depth);
 
             /* Restore original dontcare flag. */
             if (rebuilding_makefiles)
               d->file->dontcare = dontcare;
 
-           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 (!running)
-             d->changed = ((file->phony && file->cmds != 0)
-                           || file_mtime (d->file) != mtime);
-         }
+            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 && !keep_going_flag)
+              break;
+
+            if (!running)
+              d->changed = ((file->phony && file->cmds != 0)
+                            || file_mtime (d->file) != mtime);
+          }
     }
 
   finish_updating (file);
   finish_updating (ofile);
 
-  DBF (DB_VERBOSE, _("Finished prerequisites of target file `%s'.\n"));
+  DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n"));
 
   if (running)
     {
       set_command_state (file, cs_deps_running);
       --depth;
-      DBF (DB_VERBOSE, _("The prerequisites of `%s' are being made.\n"));
+      DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n"));
       return 0;
     }
 
@@ -662,17 +666,17 @@ update_file_1 (struct file *file, unsigned int depth)
 
   if (dep_status != 0)
     {
-      file->update_status = dep_status;
+      file->update_status = us_failed;
       notice_finished_file (file);
 
       --depth;
 
-      DBF (DB_VERBOSE, _("Giving up on target file `%s'.\n"));
+      DBF (DB_VERBOSE, _("Giving up on target file '%s'.\n"));
 
       if (depth == 0 && keep_going_flag
-         && !just_print_flag && !question_flag)
-       error (NILF,
-               _("Target `%s' not remade because of errors."), file->name);
+          && !just_print_flag && !question_flag)
+        error (NILF,
+               _("Target '%s' not remade because of errors."), file->name);
 
       return dep_status;
     }
@@ -701,8 +705,8 @@ update_file_1 (struct file *file, unsigned int depth)
         {
 #if 1
           /* %%% In version 4, remove this code completely to
-          implement not remaking deps if their deps are newer
-          than their parents.  */
+           implement not remaking deps if their deps are newer
+           than their parents.  */
           if (d_mtime == NONEXISTENT_MTIME && !d->file->intermediate)
             /* We must remake if this dep does not
                exist and is not intermediate.  */
@@ -714,30 +718,30 @@ update_file_1 (struct file *file, unsigned int depth)
         }
 
       /* Set D->changed if either this dep actually changed,
-        or its dependent, FILE, is older or does not exist.  */
+         or its dependent, FILE, is older or does not exist.  */
       d->changed |= noexist || d_mtime > this_mtime;
 
       if (!noexist && ISDB (DB_BASIC|DB_VERBOSE))
-       {
+        {
           const char *fmt = 0;
 
           if (d->ignore_mtime)
             {
               if (ISDB (DB_VERBOSE))
-                fmt = _("Prerequisite `%s' is order-only for target `%s'.\n");
+                fmt = _("Prerequisite '%s' is order-only for target '%s'.\n");
             }
           else if (d_mtime == NONEXISTENT_MTIME)
             {
               if (ISDB (DB_BASIC))
-                fmt = _("Prerequisite `%s' of target `%s' does not exist.\n");
+                fmt = _("Prerequisite '%s' of target '%s' does not exist.\n");
             }
-         else if (d->changed)
+          else if (d->changed)
             {
               if (ISDB (DB_BASIC))
-                fmt = _("Prerequisite `%s' is newer than target `%s'.\n");
+                fmt = _("Prerequisite '%s' is newer than target '%s'.\n");
             }
           else if (ISDB (DB_VERBOSE))
-            fmt = _("Prerequisite `%s' is older than target `%s'.\n");
+            fmt = _("Prerequisite '%s' is older than target '%s'.\n");
 
           if (fmt)
             {
@@ -745,7 +749,7 @@ update_file_1 (struct file *file, unsigned int depth)
               printf (fmt, dep_name (d), file->name);
               fflush (stdout);
             }
-       }
+        }
     }
 
   /* Here depth returns to the value it had when we were called.  */
@@ -755,19 +759,19 @@ update_file_1 (struct file *file, unsigned int depth)
     {
       must_make = 1;
       DBF (DB_BASIC,
-           _("Target `%s' is double-colon and has no prerequisites.\n"));
+           _("Target '%s' is double-colon and has no prerequisites.\n"));
     }
   else if (!noexist && file->is_target && !deps_changed && file->cmds == 0
            && !always_make_flag)
     {
       must_make = 0;
       DBF (DB_VERBOSE,
-           _("No recipe 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)
     {
       must_make = 1;
-      DBF (DB_VERBOSE, _("Making `%s' due to always-make flag.\n"));
+      DBF (DB_VERBOSE, _("Making '%s' due to always-make flag.\n"));
     }
 
   if (!must_make)
@@ -775,9 +779,9 @@ update_file_1 (struct file *file, unsigned int depth)
       if (ISDB (DB_VERBOSE))
         {
           print_spaces (depth);
-          printf (_("No need to remake target `%s'"), file->name);
+          printf (_("No need to remake target '%s'"), file->name);
           if (!streq (file->name, file->hname))
-              printf (_("; using VPATH name `%s'"), file->hname);
+              printf (_("; using VPATH name '%s'"), file->hname);
           puts (".");
           fflush (stdout);
         }
@@ -797,13 +801,13 @@ update_file_1 (struct file *file, unsigned int depth)
       return 0;
     }
 
-  DBF (DB_BASIC, _("Must remake target `%s'.\n"));
+  DBF (DB_BASIC, _("Must remake target '%s'.\n"));
 
   /* It needs to be remade.  If it's VPATH and not reset via GPATH, toss the
      VPATH.  */
-  if (!streq(file->name, file->hname))
+  if (!streq (file->name, file->hname))
     {
-      DB (DB_BASIC, (_("  Ignoring VPATH name `%s'.\n"), file->hname));
+      DB (DB_BASIC, (_("  Ignoring VPATH name '%s'.\n"), file->hname));
       file->ignore_vpath = 1;
     }
 
@@ -812,23 +816,22 @@ update_file_1 (struct file *file, unsigned int depth)
 
   if (file->command_state != cs_finished)
     {
-      DBF (DB_VERBOSE, _("Recipe of `%s' is being run.\n"));
+      DBF (DB_VERBOSE, _("Recipe of '%s' is being run.\n"));
       return 0;
     }
 
   switch (file->update_status)
     {
-    case 2:
-      DBF (DB_BASIC, _("Failed to remake target file `%s'.\n"));
+    case us_failed:
+      DBF (DB_BASIC, _("Failed to remake target file '%s'.\n"));
       break;
-    case 0:
-      DBF (DB_BASIC, _("Successfully remade target file `%s'.\n"));
+    case us_success:
+      DBF (DB_BASIC, _("Successfully remade target file '%s'.\n"));
       break;
-    case 1:
-      DBF (DB_BASIC, _("Target file `%s' needs remade under -q.\n"));
+    case us_question:
+      DBF (DB_BASIC, _("Target file '%s' needs to be remade under -q.\n"));
       break;
-    default:
-      assert (file->update_status >= 0 && file->update_status <= 2);
+    case us_none:
       break;
     }
 
@@ -836,11 +839,11 @@ update_file_1 (struct file *file, unsigned int depth)
   return file->update_status;
 }
 \f
-/* Set FILE's `updated' flag and re-check its mtime and the mtime's of all
-   files listed in its `also_make' member.  Under -t, this function also
+/* Set FILE's 'updated' flag and re-check its mtime and the mtime's of all
+   files listed in its 'also_make' member.  Under -t, this function also
    touches FILE.
 
-   On return, FILE->update_status will no longer be -1 if it was.  */
+   On return, FILE->update_status will no longer be us_none if it was.  */
 
 void
 notice_finished_file (struct file *file)
@@ -854,35 +857,35 @@ notice_finished_file (struct file *file)
 
   if (touch_flag
       /* The update status will be:
-               -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
-        or won when they ran (i.e. status is 0).  */
-      && file->update_status == 0)
+           us_success   if 0 or more commands (+ or ${MAKE}) were run and won;
+           us_none      if this target was not remade;
+           >us_none     if some commands were run and lost.
+         We touch the target if it has commands which either were not run
+         or won when they ran (i.e. status is 0).  */
+      && file->update_status == us_success)
     {
       if (file->cmds != 0 && file->cmds->any_recurse)
-       {
-         /* If all the command lines were recursive,
-            we don't want to do the touching.  */
-         unsigned int i;
-         for (i = 0; i < file->cmds->ncommand_lines; ++i)
-           if (!(file->cmds->lines_flags[i] & COMMANDS_RECURSE))
-             goto have_nonrecursing;
-       }
+        {
+          /* If all the command lines were recursive,
+             we don't want to do the touching.  */
+          unsigned int i;
+          for (i = 0; i < file->cmds->ncommand_lines; ++i)
+            if (!(file->cmds->lines_flags[i] & COMMANDS_RECURSE))
+              goto have_nonrecursing;
+        }
       else
-       {
-       have_nonrecursing:
-         if (file->phony)
-           file->update_status = 0;
+        {
+        have_nonrecursing:
+          if (file->phony)
+            file->update_status = us_success;
           /* According to POSIX, -t doesn't affect targets with no cmds.  */
-         else if (file->cmds != 0)
+          else if (file->cmds != 0)
             {
               /* Should set file's modification date and do nothing else.  */
               file->update_status = touch_file (file);
 
               /* Pretend we ran a real touch command, to suppress the
-                 "`foo' is up to date" message.  */
+                 "'foo' is up to date" message.  */
               commands_started++;
 
               /* Request for the timestamp to be updated (and distributed
@@ -891,7 +894,7 @@ notice_finished_file (struct file *file)
                  updating logic below.  */
               touched = 1;
             }
-       }
+        }
     }
 
   if (file->mtime_before_update == UNKNOWN_MTIME)
@@ -915,7 +918,7 @@ notice_finished_file (struct file *file)
       /* If there were no commands at all, it's always new. */
 
       else if (file->is_target && file->cmds == 0)
-       i = 1;
+        i = 1;
 
       file->last_mtime = i == 0 ? UNKNOWN_MTIME : NEW_MTIME;
     }
@@ -948,28 +951,28 @@ notice_finished_file (struct file *file)
           f->last_mtime = max_mtime;
     }
 
-  if (ran && file->update_status != -1)
+  if (ran && file->update_status != us_none)
     /* We actually tried to update FILE, which has
        updated its also_make's as well (if it worked).
        If it didn't work, it wouldn't work again for them.
        So mark them as updated with the same status.  */
     for (d = file->also_make; d != 0; d = d->next)
       {
-       d->file->command_state = cs_finished;
-       d->file->updated = 1;
-       d->file->update_status = file->update_status;
-
-       if (ran && !d->file->phony)
-         /* Fetch the new modification time.
-            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.  */
-         f_mtime (d->file, 0);
+        d->file->command_state = cs_finished;
+        d->file->updated = 1;
+        d->file->update_status = file->update_status;
+
+        if (ran && !d->file->phony)
+          /* Fetch the new modification time.
+             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.  */
+          f_mtime (d->file, 0);
       }
-  else if (file->update_status == -1)
+  else if (file->update_status == us_none)
     /* Nothing was done for FILE, but it needed nothing done.
        So mark it now as "succeeded".  */
-    file->update_status = 0;
+    file->update_status = us_success;
 }
 \f
 /* Check whether another file (whose mtime is THIS_MTIME) needs updating on
@@ -1003,7 +1006,7 @@ check_dep (struct file *file, unsigned int depth,
       mtime = file_mtime (file);
       check_renamed (file);
       if (mtime == NONEXISTENT_MTIME || mtime > this_mtime)
-       *must_make_ptr = 1;
+        *must_make_ptr = 1;
     }
   else
     {
@@ -1011,19 +1014,19 @@ check_dep (struct file *file, unsigned int depth,
       FILE_TIMESTAMP mtime;
 
       if (!file->phony && file->cmds == 0 && !file->tried_implicit)
-       {
-         if (try_implicit_rule (file, depth))
-           DBF (DB_IMPLICIT, _("Found an implicit rule for `%s'.\n"));
-         else
-           DBF (DB_IMPLICIT, _("No implicit rule found for `%s'.\n"));
-         file->tried_implicit = 1;
-       }
+        {
+          if (try_implicit_rule (file, depth))
+            DBF (DB_IMPLICIT, _("Found an implicit rule for '%s'.\n"));
+          else
+            DBF (DB_IMPLICIT, _("No implicit rule found for '%s'.\n"));
+          file->tried_implicit = 1;
+        }
       if (file->cmds == 0 && !file->is_target
-         && default_file != 0 && default_file->cmds != 0)
-       {
-         DBF (DB_IMPLICIT, _("Using default commands for `%s'.\n"));
-         file->cmds = default_file->cmds;
-       }
+          && default_file != 0 && default_file->cmds != 0)
+        {
+          DBF (DB_IMPLICIT, _("Using default commands for '%s'.\n"));
+          file->cmds = default_file->cmds;
+        }
 
       check_renamed (file);
       mtime = file_mtime (file);
@@ -1031,70 +1034,77 @@ check_dep (struct file *file, unsigned int depth,
       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;
+        *must_make_ptr = 1;
       else
-       {
+        {
           /* 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;
+          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);
+            {
+              /* If the target was waiting for a dependency it has to be
+                 reconsidered, as that dependency might have finished.  */
+              if (file->command_state == cs_deps_running)
+                file->considered = !considered;
+
+              set_command_state (file, cs_not_started);
+            }
 
-         ld = 0;
-         d = file->deps;
-         while (d != 0)
-           {
+          ld = 0;
+          d = file->deps;
+          while (d != 0)
+            {
               int maybe_make;
 
-             if (is_updating (d->file))
-               {
-                 error (NILF, _("Circular %s <- %s dependency dropped."),
-                        file->name, d->file->name);
-                 if (ld == 0)
-                   {
-                     file->deps = d->next;
+              if (is_updating (d->file))
+                {
+                  error (NILF, _("Circular %s <- %s dependency dropped."),
+                         file->name, d->file->name);
+                  if (ld == 0)
+                    {
+                      file->deps = d->next;
                       free_dep (d);
-                     d = file->deps;
-                   }
-                 else
-                   {
-                     ld->next = d->next;
+                      d = file->deps;
+                    }
+                  else
+                    {
+                      ld->next = d->next;
                       free_dep (d);
-                     d = ld->next;
-                   }
-                 continue;
-               }
+                      d = ld->next;
+                    }
+                  continue;
+                }
 
-             d->file->parent = file;
+              d->file->parent = file;
               maybe_make = *must_make_ptr;
-             dep_status |= check_dep (d->file, depth, this_mtime,
+              dep_status |= check_dep (d->file, depth, this_mtime,
                                        &maybe_make);
               if (! d->ignore_mtime)
                 *must_make_ptr = maybe_make;
-             check_renamed (d->file);
-             if (dep_status != 0 && !keep_going_flag)
-               break;
+              check_renamed (d->file);
+              if (dep_status != 0 && !keep_going_flag)
+                break;
 
-             if (d->file->command_state == cs_running
-                 || d->file->command_state == cs_deps_running)
-               deps_running = 1;
+              if (d->file->command_state == cs_running
+                  || d->file->command_state == cs_deps_running)
+                deps_running = 1;
 
-             ld = d;
-             d = d->next;
-           }
+              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);
@@ -1103,56 +1113,61 @@ check_dep (struct file *file, unsigned int depth,
   return dep_status;
 }
 \f
-/* Touch FILE.  Return zero if successful, one if not.  */
+/* Touch FILE.  Return us_success if successful, us_failed if not.  */
 
-#define TOUCH_ERROR(call) return (perror_with_name (call, file->name), 1)
+#define TOUCH_ERROR(call) do{ perror_with_name ((call), file->name);    \
+                              return us_failed; }while(0)
 
-static int
+static enum update_status
 touch_file (struct file *file)
 {
   if (!silent_flag)
     message (0, "touch %s", file->name);
 
-#ifndef        NO_ARCHIVES
+  /* Print-only (-n) takes precedence over touch (-t).  */
+  if (just_print_flag)
+    return us_success;
+
+#ifndef NO_ARCHIVES
   if (ar_name (file->name))
-    return ar_touch (file->name);
+    return ar_touch (file->name) ? us_failed : us_success;
   else
 #endif
     {
       int fd = open (file->name, O_RDWR | O_CREAT, 0666);
 
       if (fd < 0)
-       TOUCH_ERROR ("touch: open: ");
+        TOUCH_ERROR ("touch: open: ");
       else
-       {
-         struct stat statbuf;
-         char buf = 'x';
+        {
+          struct stat statbuf;
+          char buf = 'x';
           int e;
 
           EINTRLOOP (e, fstat (fd, &statbuf));
-         if (e < 0)
-           TOUCH_ERROR ("touch: fstat: ");
-         /* Rewrite character 0 same as it already is.  */
-         if (read (fd, &buf, 1) < 0)
-           TOUCH_ERROR ("touch: read: ");
-         if (lseek (fd, 0L, 0) < 0L)
-           TOUCH_ERROR ("touch: lseek: ");
-         if (write (fd, &buf, 1) < 0)
-           TOUCH_ERROR ("touch: write: ");
-         /* If file length was 0, we just
-            changed it, so change it back.  */
-         if (statbuf.st_size == 0)
-           {
-             (void) close (fd);
-             fd = open (file->name, O_RDWR | O_TRUNC, 0666);
-             if (fd < 0)
-               TOUCH_ERROR ("touch: open: ");
-           }
-         (void) close (fd);
-       }
+          if (e < 0)
+            TOUCH_ERROR ("touch: fstat: ");
+          /* Rewrite character 0 same as it already is.  */
+          if (read (fd, &buf, 1) < 0)
+            TOUCH_ERROR ("touch: read: ");
+          if (lseek (fd, 0L, 0) < 0L)
+            TOUCH_ERROR ("touch: lseek: ");
+          if (write (fd, &buf, 1) < 0)
+            TOUCH_ERROR ("touch: write: ");
+          /* If file length was 0, we just
+             changed it, so change it back.  */
+          if (statbuf.st_size == 0)
+            {
+              (void) close (fd);
+              fd = open (file->name, O_RDWR | O_TRUNC, 0666);
+              if (fd < 0)
+                TOUCH_ERROR ("touch: open: ");
+            }
+          (void) close (fd);
+        }
     }
 
-  return 0;
+  return us_success;
 }
 \f
 /* Having checked and updated the dependencies of FILE,
@@ -1165,18 +1180,18 @@ remake_file (struct file *file)
   if (file->cmds == 0)
     {
       if (file->phony)
-       /* Phony target.  Pretend it succeeded.  */
-       file->update_status = 0;
+        /* Phony target.  Pretend it succeeded.  */
+        file->update_status = us_success;
       else if (file->is_target)
-       /* This is a nonexistent target file we cannot make.
-          Pretend it was successfully remade.  */
-       file->update_status = 0;
+        /* This is a nonexistent target file we cannot make.
+           Pretend it was successfully remade.  */
+        file->update_status = us_success;
       else
         {
           /* This is a dependency file we cannot remake.  Fail.  */
           if (!rebuilding_makefiles || !file->dontcare)
             complain (file);
-          file->update_status = 2;
+          file->update_status = us_failed;
         }
     }
   else
@@ -1185,20 +1200,20 @@ remake_file (struct file *file)
 
       /* The normal case: start some commands.  */
       if (!touch_flag || file->cmds->any_recurse)
-       {
-         execute_file_commands (file);
-         return;
-       }
+        {
+          execute_file_commands (file);
+          return;
+        }
 
       /* This tells notice_finished_file it is ok to touch the file.  */
-      file->update_status = 0;
+      file->update_status = us_success;
     }
 
   /* This does the touching under -t.  */
   notice_finished_file (file);
 }
 \f
-/* Return the mtime of a file, given a `struct file'.
+/* Return the mtime of a file, given a 'struct file'.
    Caches the time in the struct file to avoid excess stat calls.
 
    If the file is not found, and SEARCH is nonzero, VPATH searching and
@@ -1213,7 +1228,7 @@ f_mtime (struct file *file, int search)
 
   /* File's mtime is not known; must get it from the system.  */
 
-#ifndef        NO_ARCHIVES
+#ifndef NO_ARCHIVES
   if (ar_name (file->name))
     {
       /* This file is an archive-member reference.  */
@@ -1226,46 +1241,46 @@ f_mtime (struct file *file, int search)
       ar_parse_name (file->name, &arname, &memname);
 
       /* Find the modification time of the archive itself.
-        Also allow for its name to be changed via VPATH search.  */
+         Also allow for its name to be changed via VPATH search.  */
       arfile = lookup_file (arname);
       if (arfile == 0)
         arfile = enter_file (strcache_add (arname));
       mtime = f_mtime (arfile, search);
       check_renamed (arfile);
       if (search && strcmp (arfile->hname, arname))
-       {
-         /* The archive's name has changed.
-            Change the archive-member reference accordingly.  */
+        {
+          /* The archive's name has changed.
+             Change the archive-member reference accordingly.  */
 
           char *name;
-         unsigned int arlen, memlen;
+          unsigned int arlen, memlen;
 
-         arlen = strlen (arfile->hname);
-         memlen = strlen (memname);
+          arlen = strlen (arfile->hname);
+          memlen = strlen (memname);
 
-         name = xmalloc (arlen + 1 + memlen + 2);
-         memcpy (name, arfile->hname, arlen);
-         name[arlen] = '(';
-         memcpy (name + arlen + 1, memname, memlen);
-         name[arlen + 1 + memlen] = ')';
-         name[arlen + 1 + memlen + 1] = '\0';
+          name = alloca (arlen + 1 + memlen + 2);
+          memcpy (name, arfile->hname, arlen);
+          name[arlen] = '(';
+          memcpy (name + arlen + 1, memname, memlen);
+          name[arlen + 1 + memlen] = ')';
+          name[arlen + 1 + memlen + 1] = '\0';
 
           /* If the archive was found with GPATH, make the change permanent;
              otherwise defer it until later.  */
           if (arfile->name == arfile->hname)
-            rename_file (file, name);
+            rename_file (file, strcache_add (name));
           else
-            rehash_file (file, name);
+            rehash_file (file, strcache_add (name));
           check_renamed (file);
-       }
+        }
 
       free (arname);
 
       file->low_resolution_time = 1;
 
       if (mtime == NONEXISTENT_MTIME)
-       /* The archive doesn't exist, so its members don't exist either.  */
-       return NONEXISTENT_MTIME;
+        /* The archive doesn't exist, so its members don't exist either.  */
+        return NONEXISTENT_MTIME;
 
       member_date = ar_member_date (file->hname);
       mtime = (member_date == (time_t) -1
@@ -1278,37 +1293,37 @@ f_mtime (struct file *file, int search)
       mtime = name_mtime (file->name);
 
       if (mtime == NONEXISTENT_MTIME && search && !file->ignore_vpath)
-       {
-         /* If name_mtime failed, search VPATH.  */
-         const char *name = vpath_search (file->name, &mtime, NULL, NULL);
-         if (name
-             /* Last resort, is it a library (-lxxx)?  */
-             || (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
-                  if they didn't need to do a stat call for their work.  */
-               file->last_mtime = mtime;
+        {
+          /* If name_mtime failed, search VPATH.  */
+          const char *name = vpath_search (file->name, &mtime, NULL, NULL);
+          if (name
+              /* Last resort, is it a library (-lxxx)?  */
+              || (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
+                   if they didn't need to do a stat call for their work.  */
+                file->last_mtime = mtime;
 
               /* If we found it in VPATH, see if it's in GPATH too; if so,
                  change the name right now; if not, defer until after the
                  dependencies are updated. */
-              if (gpath_search (name, strlen(name) - strlen(file->name) - 1))
+              if (gpath_search (name, strlen (name) - strlen (file->name) - 1))
                 {
                   rename_file (file, name);
                   check_renamed (file);
                   return file_mtime (file);
                 }
 
-             rehash_file (file, name);
-             check_renamed (file);
+              rehash_file (file, name);
+              check_renamed (file);
               /* If the result of a vpath search is -o or -W, preserve it.
                  Otherwise, find the mtime of the resulting file.  */
               if (mtime != OLD_MTIME && mtime != NEW_MTIME)
                 mtime = name_mtime (name);
-           }
-       }
+            }
+        }
     }
 
   /* Files can have bogus timestamps that nothing newly made will be
@@ -1354,7 +1369,7 @@ f_mtime (struct file *file, int search)
           if (adjusted_now < adjusted_mtime)
             {
 #ifdef NO_FLOAT
-              error (NILF, _("Warning: File `%s' has modification time in the future"),
+              error (NILF, _("Warning: File '%s' has modification time in the future"),
                      file->name);
 #else
               double from_now =
@@ -1367,7 +1382,7 @@ f_mtime (struct file *file, int search)
                 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"),
+              error (NILF, _("Warning: File '%s' has modification time %s s in the future"),
                      file->name, from_now_string);
 #endif
               clock_skew_detected = 1;
@@ -1382,14 +1397,13 @@ f_mtime (struct file *file, int search)
   do
     {
       /* If this file is not implicit but it is intermediate then it was
-        made so by the .INTERMEDIATE target.  If this file has never
-        been built by us but was found now, it existed before make
-        started.  So, turn off the intermediate bit so make doesn't
-        delete it, since it didn't create it.  */
+         made so by the .INTERMEDIATE target.  If this file has never
+         been built by us but was found now, it existed before make
+         started.  So, turn off the intermediate bit so make doesn't
+         delete it, since it didn't create it.  */
       if (mtime != NONEXISTENT_MTIME && file->command_state == cs_not_started
-         && file->command_state == cs_not_started
-         && !file->tried_implicit && file->intermediate)
-       file->intermediate = 0;
+          && !file->tried_implicit && file->intermediate)
+        file->intermediate = 0;
 
       file->last_mtime = mtime;
       file = file->prev;
@@ -1519,7 +1533,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
  */
 #define LIBDIR "."
 #endif
-      LIBDIR,                  /* Defined by configuration.  */
+      LIBDIR,                   /* Defined by configuration.  */
       0
     };
 
@@ -1534,8 +1548,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
   unsigned int liblen;
 
   /* Information about the earliest (in the vpath sequence) match.  */
-  unsigned int best_vpath, best_path;
-  unsigned int std_dirs = 0;
+  unsigned int best_vpath = 0, best_path = 0;
 
   char **dp;
 
@@ -1554,38 +1567,39 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
       static char *buf = NULL;
       static unsigned int buflen = 0;
       static int libdir_maxlen = -1;
+      static unsigned int std_dirs = 0;
       char *libbuf = variable_expand ("");
 
       /* Expand the pattern using LIB as a replacement.  */
       {
-       char c = p[len];
-       char *p3, *p4;
-
-       p[len] = '\0';
-       p3 = find_percent (p);
-       if (!p3)
-         {
-           /* Give a warning if there is no pattern.  */
-           error (NILF, _(".LIBPATTERNS element `%s' is not a pattern"), p);
+        char c = p[len];
+        char *p3, *p4;
+
+        p[len] = '\0';
+        p3 = find_percent (p);
+        if (!p3)
+          {
+            /* Give a warning if there is no pattern.  */
+            error (NILF, _(".LIBPATTERNS element '%s' is not a pattern"), p);
             p[len] = c;
-           continue;
-         }
-       p4 = variable_buffer_output (libbuf, p, p3-p);
-       p4 = variable_buffer_output (p4, lib, liblen);
-       p4 = variable_buffer_output (p4, p3+1, len - (p3-p));
-       p[len] = c;
+            continue;
+          }
+        p4 = variable_buffer_output (libbuf, p, p3-p);
+        p4 = variable_buffer_output (p4, lib, liblen);
+        p4 = variable_buffer_output (p4, p3+1, len - (p3-p));
+        p[len] = c;
       }
 
-      /* Look first for `libNAME.a' in the current directory.  */
+      /* Look first for 'libNAME.a' in the current directory.  */
       mtime = name_mtime (libbuf);
       if (mtime != NONEXISTENT_MTIME)
-       {
-         if (mtime_ptr != 0)
-           *mtime_ptr = mtime;
-         file = strcache_add (libbuf);
+        {
+          if (mtime_ptr != 0)
+            *mtime_ptr = mtime;
+          file = strcache_add (libbuf);
           /* This by definition will have the best index, so stop now.  */
           break;
-       }
+        }
 
       /* Now try VPATH search on that.  */
 
@@ -1622,7 +1636,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
               std_dirs++;
             }
           buflen = strlen (libbuf);
-          buf = xmalloc(libdir_maxlen + buflen + 2);
+          buf = xmalloc (libdir_maxlen + buflen + 2);
         }
       else if (buflen < strlen (libbuf))
         {
@@ -1636,11 +1650,11 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
         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);
index a0c5cb7..8d6c635 100644 (file)
@@ -3,9 +3,7 @@
    Please do not send bug reports or questions about it to
    the Make maintainers.
 
-Copyright (C) 1988, 1989, 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.
+Copyright (C) 1988-2013 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
@@ -20,8 +18,7 @@ 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 "make.h"
-#include "job.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "commands.h"
 #include "job.h"
@@ -34,9 +31,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 char *remote_description = "Customs";
 
-/* File name of the Customs `export' client command.
+/* File name of the Customs 'export' client command.
    A full path name can be used to avoid some path-searching overhead.  */
-#define        EXPORT_COMMAND  "/usr/local/bin/export"
+#define EXPORT_COMMAND  "/usr/local/bin/export"
 
 /* ExportPermit gotten by start_remote_job_p, and used by start_remote_job.  */
 static ExportPermit permit;
@@ -78,11 +75,11 @@ start_remote_job_p (int first_p)
         }
 
       /* For secure Customs, make is installed setuid root and
-        Customs requires a privileged source port be used.  */
+         Customs requires a privileged source port be used.  */
       make_access ();
 
       if (ISDB (DB_JOBS))
-        Rpc_Debug(1);
+        Rpc_Debug (1);
 
       /* Ping the daemon once to see if it is there.  */
       inited = Customs_Ping () == RPC_SUCCESS ? 1 : -1;
@@ -91,20 +88,20 @@ start_remote_job_p (int first_p)
       user_access ();
 
       if (starting_directory == 0)
-       /* main couldn't figure it out.  */
-       inited = -1;
+        /* main couldn't figure it out.  */
+        inited = -1;
       else
-       {
-         /* Normalize the current directory path name to something
-            that should work on all machines exported to.  */
-
-         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
-              won't work, but it's not really an error.  */
-           inited = -1;
-       }
+        {
+          /* Normalize the current directory path name to something
+             that should work on all machines exported to.  */
+
+          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
+               won't work, but it's not really an error.  */
+            inited = -1;
+        }
     }
 
   if (inited < 0)
@@ -112,7 +109,7 @@ start_remote_job_p (int first_p)
 
   njobs = job_slots_used;
   if (!first_p)
-    njobs -= 1;                /* correction for being called from reap_children() */
+    njobs -= 1;         /* correction for being called from reap_children() */
 
   /* the first job should run locally, or, if the -l flag is given, we use
      that as clue as to how many local jobs should be scheduled locally */
@@ -173,9 +170,9 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
 
   /* Create a WayBill to give to the server.  */
   len = Customs_MakeWayBill (&permit, normalized_cwd, argv[0], argv,
-                            envp, retport, waybill);
+                             envp, retport, waybill);
 
-  /* Modify the waybill as if the remote child had done `child_access ()'.  */
+  /* Modify the waybill as if the remote child had done 'child_access ()'.  */
   {
     WayBill *wb = (WayBill *) waybill;
     wb->ruid = wb->euid;
@@ -189,11 +186,11 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
   sin.sin_port = htons (Customs_Port ());
   sin.sin_addr = permit.addr;
   status = Rpc_Call (sock, &sin, (Rpc_Proc) CUSTOMS_IMPORT,
-                    len, (Rpc_Opaque) waybill,
-                    sizeof(msg), (Rpc_Opaque) msg,
-                    1, &timeout);
+                     len, (Rpc_Opaque) waybill,
+                     sizeof (msg), (Rpc_Opaque) msg,
+                     1, &timeout);
 
-  host = gethostbyaddr((char *)&permit.addr, sizeof(permit.addr), AF_INET);
+  host = gethostbyaddr ((char *)&permit.addr, sizeof(permit.addr), AF_INET);
 
   if (status != RPC_SUCCESS)
     {
@@ -216,26 +213,26 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
   else
     {
       error (NILF, "*** exported to %s (id %u)",
-             host ? host->h_name : inet_ntoa (permit.addr),
-             permit.id);
+              host ? host->h_name : inet_ntoa (permit.addr),
+              permit.id);
     }
 
   fflush (stdout);
   fflush (stderr);
 
-  pid = vfork ();
+  pid = fork ();
   if (pid < 0)
     {
       /* The fork failed!  */
-      perror_with_name ("vfork", "");
+      perror_with_name ("fork", "");
       return 1;
     }
   else if (pid == 0)
     {
-      /* Child side.  Run `export' to handle the connection.  */
+      /* Child side.  Run 'export' to handle the connection.  */
       static char sock_buf[20], retsock_buf[20], id_buf[20];
       static char *new_argv[6] =
-       { EXPORT_COMMAND, "-id", sock_buf, retsock_buf, id_buf, 0 };
+        { EXPORT_COMMAND, "-id", sock_buf, retsock_buf, id_buf, 0 };
 
       /* Set up the arguments.  */
       (void) sprintf (sock_buf, "%d", sock);
@@ -244,7 +241,7 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
 
       /* Get the right stdin.  */
       if (stdin_fd != 0)
-       (void) dup2 (stdin_fd, 0);
+        (void) dup2 (stdin_fd, 0);
 
       /* Unblock signals in the child.  */
       unblock_sigs ();
@@ -253,7 +250,7 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
       exec_command (new_argv, envp);
     }
 
-  /* Parent side.  Return the `export' process's ID.  */
+  /* Parent side.  Return the 'export' process's ID.  */
   (void) close (retsock);
   (void) close (sock);
   *is_remote = 0;
index e58b72c..45c3a7c 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "job.h"
 #include "commands.h"
diff --git a/rule.c b/rule.c
index a966cc9..cb35537 100644 (file)
--- a/rule.c
+++ b/rule.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,12 +14,12 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
-#include "dep.h"
 #include "filedef.h"
+#include "dep.h"
 #include "job.h"
 #include "commands.h"
 #include "variable.h"
@@ -72,7 +70,7 @@ count_implicit_rule_limits (void)
 {
   char *name;
   int namelen;
-  struct rule *rule, *lastrule;
+  struct rule *rule;
 
   num_pattern_rules = max_pattern_targets = max_pattern_deps = 0;
   max_pattern_dep_length = 0;
@@ -80,7 +78,6 @@ count_implicit_rule_limits (void)
   name = 0;
   namelen = 0;
   rule = pattern_rules;
-  lastrule = 0;
   while (rule != 0)
     {
       unsigned int ndeps = 0;
@@ -90,10 +87,10 @@ count_implicit_rule_limits (void)
       ++num_pattern_rules;
 
       if (rule->num > max_pattern_targets)
-       max_pattern_targets = rule->num;
+        max_pattern_targets = rule->num;
 
       for (dep = rule->deps; dep != 0; dep = dep->next)
-       {
+        {
           const char *dname = dep_name (dep);
           unsigned int len = strlen (dname);
 
@@ -109,38 +106,37 @@ count_implicit_rule_limits (void)
 #endif
           ndeps++;
 
-         if (len > max_pattern_dep_length)
-           max_pattern_dep_length = len;
-
-         if (p != 0 && p2 > p)
-           {
-             /* There is a slash before the % in the dep name.
-                Extract the directory name.  */
-             if (p == dname)
-               ++p;
-             if (p - dname > namelen)
-               {
-                 namelen = p - dname;
-                 name = xrealloc (name, namelen + 1);
-               }
-             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
-                nonexistent subdirectory.  */
-
-             dep->changed = !dir_file_exists_p (name, "");
-           }
-         else
-           /* This dependency does not reside in a subdirectory.  */
-           dep->changed = 0;
-       }
+          if (len > max_pattern_dep_length)
+            max_pattern_dep_length = len;
+
+          if (p != 0 && p2 > p)
+            {
+              /* There is a slash before the % in the dep name.
+                 Extract the directory name.  */
+              if (p == dname)
+                ++p;
+              if (p - dname > namelen)
+                {
+                  namelen = p - dname;
+                  name = xrealloc (name, namelen + 1);
+                }
+              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
+                 nonexistent subdirectory.  */
+
+              dep->changed = !dir_file_exists_p (name, "");
+            }
+          else
+            /* This dependency does not reside in a subdirectory.  */
+            dep->changed = 0;
+        }
 
       if (ndeps > max_pattern_deps)
-       max_pattern_deps = ndeps;
+        max_pattern_deps = ndeps;
 
-      lastrule = rule;
       rule = next;
     }
 
@@ -151,7 +147,7 @@ count_implicit_rule_limits (void)
 /* Create a pattern rule from a suffix rule.
    TARGET is the target suffix; SOURCE is the source suffix.
    CMDS are the commands.
-   If TARGET is nil, it means the target pattern should be `(%.o)'.
+   If TARGET is nil, it means the target pattern should be '(%.o)'.
    If SOURCE is nil, it means there should be no deps.  */
 
 static void
@@ -166,8 +162,8 @@ convert_suffix_rule (const char *target, const char *source,
 
   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
       *names = strcache_add_len ("(%.obj)", 7);
 #else
@@ -221,7 +217,7 @@ convert_to_pattern (void)
     {
       unsigned int l = strlen (dep_name (d));
       if (l > maxsuffix)
-       maxsuffix = l;
+        maxsuffix = l;
     }
 
   /* Space to construct the suffix rule target name.  */
@@ -232,12 +228,12 @@ convert_to_pattern (void)
       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.  */
+         This rule exists solely to disqualify match-anything rules.  */
       convert_suffix_rule (dep_name (d), 0, 0);
 
       if (d->file->cmds != 0)
-       /* Record a pattern for this suffix's null-suffix rule.  */
-       convert_suffix_rule ("", dep_name (d), d->file->cmds);
+        /* Record a pattern for this suffix's null-suffix rule.  */
+        convert_suffix_rule ("", dep_name (d), d->file->cmds);
 
       /* Add every other suffix to this one and see if it exists as a
          two-suffix rule.  */
@@ -245,32 +241,32 @@ convert_to_pattern (void)
       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));
+          s2len = strlen (dep_name (d2));
 
           /* Can't build something from itself.  */
-         if (slen == s2len && streq (dep_name (d), dep_name (d2)))
-           continue;
-
-         memcpy (rulename + slen, dep_name (d2), s2len + 1);
-         f = lookup_file (rulename);
-         if (f == 0 || f->cmds == 0)
-           continue;
-
-         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 (NULL, /* Indicates `(%.o)'.  */
-                                dep_name (d),
-                                f->cmds);
-
-         /* The suffix rule `.X.Y:' is converted
-            to the pattern rule `%.Y: %.X'.  */
-         convert_suffix_rule (dep_name (d2), dep_name (d), f->cmds);
-       }
+          if (slen == s2len && streq (dep_name (d), dep_name (d2)))
+            continue;
+
+          memcpy (rulename + slen, dep_name (d2), s2len + 1);
+          f = lookup_file (rulename);
+          if (f == 0 || f->cmds == 0)
+            continue;
+
+          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 (NULL, /* Indicates '(%.o)'.  */
+                                 dep_name (d),
+                                 f->cmds);
+
+          /* The suffix rule '.X.Y:' is converted
+             to the pattern rule '%.Y: %.X'.  */
+          convert_suffix_rule (dep_name (d2), dep_name (d), f->cmds);
+        }
     }
 }
 
@@ -298,42 +294,42 @@ new_pattern_rule (struct rule *rule, int override)
   for (r = pattern_rules; r != 0; lastrule = r, r = r->next)
     for (i = 0; i < rule->num; ++i)
       {
-       for (j = 0; j < r->num; ++j)
-         if (!streq (rule->targets[i], r->targets[j]))
-           break;
+        for (j = 0; j < r->num; ++j)
+          if (!streq (rule->targets[i], r->targets[j]))
+            break;
         /* If all the targets matched...  */
-       if (j == r->num)
-         {
-           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)))
-               break;
-           if (d == 0 && d2 == 0)
-             {
-               /* All the dependencies matched.  */
-               if (override)
-                 {
-                   /* Remove the old rule.  */
-                   freerule (r, lastrule);
-                   /* Install the new one.  */
-                   if (pattern_rules == 0)
-                     pattern_rules = rule;
-                   else
-                     last_pattern_rule->next = rule;
-                   last_pattern_rule = rule;
-
-                   /* We got one.  Stop looking.  */
-                   goto matched;
-                 }
-               else
-                 {
-                   /* The old rule stays intact.  Destroy the new one.  */
-                   freerule (rule, (struct rule *) 0);
-                   return 0;
-                 }
-             }
-         }
+        if (j == r->num)
+          {
+            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)))
+                break;
+            if (d == 0 && d2 == 0)
+              {
+                /* All the dependencies matched.  */
+                if (override)
+                  {
+                    /* Remove the old rule.  */
+                    freerule (r, lastrule);
+                    /* Install the new one.  */
+                    if (pattern_rules == 0)
+                      pattern_rules = rule;
+                    else
+                      last_pattern_rule->next = rule;
+                    last_pattern_rule = rule;
+
+                    /* We got one.  Stop looking.  */
+                    goto matched;
+                  }
+                else
+                  {
+                    /* The old rule stays intact.  Destroy the new one.  */
+                    freerule (rule, (struct rule *) 0);
+                    return 0;
+                  }
+              }
+          }
       }
 
  matched:;
@@ -342,9 +338,9 @@ new_pattern_rule (struct rule *rule, int override)
     {
       /* There was no rule to replace.  */
       if (pattern_rules == 0)
-       pattern_rules = rule;
+        pattern_rules = rule;
       else
-       last_pattern_rule->next = rule;
+        last_pattern_rule->next = rule;
       last_pattern_rule = rule;
     }
 
@@ -355,7 +351,7 @@ new_pattern_rule (struct rule *rule, int override)
 /* Install an implicit pattern rule based on the three text strings
    in the structure P points to.  These strings come from one of
    the arrays of default implicit pattern rules.
-   TERMINAL specifies what the `terminal' field of the rule should be.  */
+   TERMINAL specifies what the 'terminal' field of the rule should be.  */
 
 void
 install_pattern_rule (struct pspec *p, int terminal)
@@ -377,7 +373,7 @@ install_pattern_rule (struct pspec *p, int terminal)
   ++r->suffixes[0];
 
   ptr = p->dep;
-  r->deps = PARSE_FILE_SEQ (&ptr, struct dep, '\0', NULL, 0);
+  r->deps = PARSE_SIMPLE_SEQ (&ptr, struct dep);
 
   if (new_pattern_rule (r, 0))
     {
@@ -386,9 +382,10 @@ install_pattern_rule (struct pspec *p, int terminal)
       r->cmds->fileinfo.filenm = 0;
       r->cmds->fileinfo.lineno = 0;
       /* These will all be string literals, but we malloc space for them
-        anyway because somebody might want to free them later.  */
+         anyway because somebody might want to free them later.  */
       r->cmds->commands = xstrdup (p->commands);
       r->cmds->command_lines = 0;
+      r->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT;
     }
 }
 
@@ -412,13 +409,13 @@ freerule (struct rule *rule, struct rule *lastrule)
   /* We can't free the storage for the commands because there
      are ways that they could be in more than one place:
        * If the commands came from a suffix rule, they could also be in
-       the `struct file's for other suffix rules or plain targets given
+       the 'struct file's for other suffix rules or plain targets given
        on the same makefile line.
        * If two suffixes that together make a two-suffix rule were each
        given twice in the .SUFFIXES list, and in the proper order, two
        identical pattern rules would be created and the second one would
-       be discarded here, but both would contain the same `struct commands'
-       pointer from the `struct file' for the suffix rule.  */
+       be discarded here, but both would contain the same 'struct commands'
+       pointer from the 'struct file' for the suffix rule.  */
 
   free (rule);
 
@@ -471,7 +468,7 @@ create_pattern_rule (const char **targets, const char **target_percents,
 \f
 /* Print the data base of rules.  */
 
-static void                    /* Useful to call from gdb.  */
+static void                     /* Useful to call from gdb.  */
 print_rule (struct rule *r)
 {
   unsigned int i;
@@ -507,7 +504,7 @@ print_rule_data_base (void)
       print_rule (r);
 
       if (r->terminal)
-       ++terminal;
+        ++terminal;
     }
 
   if (rules == 0)
@@ -515,12 +512,12 @@ print_rule_data_base (void)
   else
     {
       printf (_("\n# %u implicit rules, %u"), rules, terminal);
-#ifndef        NO_FLOAT
+#ifndef NO_FLOAT
       printf (" (%.1f%%)", (double) terminal / (double) rules * 100.0);
 #else
       {
-       int f = (terminal * 1000 + 5) / rules;
-       printf (" (%d.%d%%)", f/10, f%10);
+        int f = (terminal * 1000 + 5) / rules;
+        printf (" (%d.%d%%)", f/10, f%10);
       }
 #endif
       puts (_(" terminal."));
diff --git a/rule.h b/rule.h
index b119d21..3982639 100644 (file)
--- a/rule.h
+++ b/rule.h
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -22,14 +20,14 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 struct rule
   {
     struct rule *next;
-    const char **targets;      /* Targets of the rule.  */
-    unsigned int *lens;                /* Lengths of each target.  */
-    const char **suffixes;     /* Suffixes (after `%') of each target.  */
-    struct dep *deps;          /* Dependencies of the rule.  */
-    struct commands *cmds;     /* Commands to execute.  */
+    const char **targets;       /* Targets of the rule.  */
+    unsigned int *lens;         /* Lengths 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.  */
+    char terminal;              /* If terminal (double-colon).  */
+    char in_use;                /* If in use by a parent pattern_search.  */
   };
 
 /* For calling install_pattern_rule.  */
index 6f3383d..59dc949 100644 (file)
--- a/signame.c
+++ b/signame.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009, 2010 Free Software
-Foundation, Inc.
+Copyright (C) 1990-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 
 /* If the system provides strsignal, we don't need it. */
 
@@ -29,11 +27,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #if !HAVE_DECL_SYS_SIGLIST
 
 /* Some systems do not define NSIG in <signal.h>.  */
-#ifndef        NSIG
-#ifdef _NSIG
-#define        NSIG    _NSIG
+#ifndef NSIG
+#ifdef  _NSIG
+#define NSIG    _NSIG
 #else
-#define        NSIG    32
+#define NSIG    32
 #endif
 #endif
 
@@ -194,10 +192,10 @@ signame_init (void)
   init_sig (SIGURG, "URG", _("Urgent I/O condition"));
 #endif
 #if defined (SIGIO)
-  /* "I/O pending" has also been suggested.  A disadvantage is
-     that signal only happens when the process has
-     asked for it, not everytime I/O is pending.  Another disadvantage
-     is the confusion from giving it a different name than under Unix.  */
+  /* "I/O pending" has also been suggested.  A disadvantage is that signal
+     only happens when the process has asked for it, not every time I/O is
+     pending.  Another disadvantage is the confusion from giving it a
+     different name than under Unix.  */
   init_sig (SIGIO, "IO", _("I/O possible"));
 #endif
 #if defined (SIGWIND)
@@ -246,7 +244,7 @@ strsignal (int sig)
 # endif
 #endif
 
-  if (sig > 0 || sig < NSIG)
+  if (sig > 0 && sig < NSIG)
     return (char *) sys_siglist[sig];
 
   sprintf (buf, "Signal %d", sig);
index 830ec7d..ff6a2d1 100644 (file)
@@ -1,5 +1,5 @@
 /* Constant string caching for GNU Make.
-Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2006-2013 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
@@ -14,31 +14,42 @@ 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 "make.h"
+#include "makeint.h"
 
+#include <stddef.h>
 #include <assert.h>
 
 #include "hash.h"
 
-/* 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
    reference counting.  We just store the string, and then remember it in a
    hash so it can be looked up again. */
 
+typedef unsigned short int sc_buflen_t;
+
 struct strcache {
-  struct strcache *next;    /* The next block of strings.  */
-  char *end;                /* Pointer to the beginning of the free space.  */
-  int count;                /* # of strings in this buffer (for stats).  */
-  int bytesfree;            /* The amount of the buffer that is free.  */
+  struct strcache *next;    /* The next block of strings.  Must be first!  */
+  sc_buflen_t end;          /* Offset to the beginning of free space.  */
+  sc_buflen_t bytesfree;    /* Free space left in this buffer.  */
+  sc_buflen_t count;        /* # of strings in this buffer (for stats).  */
   char buffer[1];           /* The buffer comes after this.  */
 };
 
-static int bufsize = CACHE_BUFFER_SIZE;
+/* The size (in bytes) of each cache buffer.
+   Try to pick something that will map well into the heap.
+   This must be able to be represented by a short int (<=65535).  */
+#define CACHE_BUFFER_BASE       (8192)
+#define CACHE_BUFFER_ALLOC(_s)  ((_s) - (2 * sizeof (size_t)))
+#define CACHE_BUFFER_OFFSET     (offsetof (struct strcache, buffer))
+#define CACHE_BUFFER_SIZE(_s)   (CACHE_BUFFER_ALLOC(_s) - CACHE_BUFFER_OFFSET)
+
+static sc_buflen_t bufsize = CACHE_BUFFER_SIZE (CACHE_BUFFER_BASE);
 static struct strcache *strcache = NULL;
+static struct strcache *fullcache = NULL;
+
+static unsigned long total_buffers = 0;
+static unsigned long total_strings = 0;
+static unsigned long total_size = 0;
 
 /* 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
@@ -46,53 +57,68 @@ static struct strcache *strcache = NULL;
    that this doesn't seem to be much of an issue in practice.
  */
 static struct strcache *
-new_cache()
+new_cache ()
 {
   struct strcache *new;
-  new = xmalloc (sizeof (*new) + bufsize);
-  new->end = new->buffer;
+  new = xmalloc (bufsize + CACHE_BUFFER_OFFSET);
+  new->end = 0;
   new->count = 0;
   new->bytesfree = bufsize;
 
   new->next = strcache;
   strcache = new;
 
+  ++total_buffers;
   return new;
 }
 
 static const char *
-add_string(const char *str, int len)
+add_string (const char *str, unsigned int len)
 {
-  struct strcache *best = NULL;
+  char *res;
   struct strcache *sp;
-  const char *res;
+  struct strcache **spp = &strcache;
+  /* We need space for the nul char.  */
+  unsigned int sz = len + 1;
 
   /* If the string we want is too large to fit into a single buffer, then
-     we're screwed; nothing will ever fit!  Change the maximum size of the
-     cache to be big enough.  */
-  if (len > bufsize)
-    bufsize = len * 2;
-
-  /* First, find a cache with enough free space.  We always look through all
-     the blocks and choose the one with the best fit (the one that leaves the
-     least amount of space free).  */
-  for (sp = strcache; sp != NULL; sp = sp->next)
-    if (sp->bytesfree > len && (!best || best->bytesfree > sp->bytesfree))
-      best = sp;
+     no existing cache is large enough.  Change the maximum size.  */
+  if (sz > bufsize)
+    bufsize = CACHE_BUFFER_SIZE ((((sz + 1) / CACHE_BUFFER_BASE) + 1)
+                                 * CACHE_BUFFER_BASE);
+  else
+    /* Find the first cache with enough free space.  */
+    for (; *spp != NULL; spp = &(*spp)->next)
+      if ((*spp)->bytesfree > sz)
+        break;
 
   /* If nothing is big enough, make a new cache.  */
-  if (!best)
-    best = new_cache();
+  sp = *spp;
+  if (sp == NULL)
+    {
+      sp = new_cache ();
+      spp = &sp;
+    }
+
+  /* Add the string to this cache.  */
+  res = &sp->buffer[sp->end];
+  memmove (res, str, len);
+  res[len] = '\0';
+  sp->end += sz;
+  sp->bytesfree -= sz;
+  ++sp->count;
 
-  assert (best->bytesfree > len);
+  /* If the amount free in this cache is less than the average string size,
+     consider it full and move it to the full list.  */
+  ++total_strings;
+  total_size += sz;
 
-  /* Add the string to the best cache.  */
-  res = best->end;
-  memcpy (best->end, str, len);
-  best->end += len;
-  *(best->end++) = '\0';
-  best->bytesfree -= len + 1;
-  ++best->count;
+  if (sp->bytesfree < (total_size / total_strings) + 1)
+    {
+      *spp = (*spp)->next;
+      sp->next = fullcache;
+      fullcache = sp;
+    }
 
   return res;
 }
@@ -128,7 +154,7 @@ add_hash (const char *str, int len)
   char *const *slot = (char *const *) hash_find_slot (&strings, str);
   const char *key = *slot;
 
-  /* Count the total number of adds we performed.  */
+  /* Count the total number of add operations we performed.  */
   ++total_adds;
 
   if (!HASH_VACANT (key))
@@ -147,7 +173,10 @@ strcache_iscached (const char *str)
   struct strcache *sp;
 
   for (sp = strcache; sp != 0; sp = sp->next)
-    if (str >= sp->buffer && str < sp->end)
+    if (str >= sp->buffer && str < sp->buffer + sp->end)
+      return 1;
+  for (sp = fullcache; sp != 0; sp = sp->next)
+    if (str >= sp->buffer && str < sp->buffer + sp->end)
       return 1;
 
   return 0;
@@ -163,7 +192,7 @@ strcache_add (const char *str)
 }
 
 const char *
-strcache_add_len (const char *str, int len)
+strcache_add_len (const char *str, unsigned int len)
 {
   /* If we're not given a nul-terminated string we have to create one, because
      the hashing functions expect it.  */
@@ -179,7 +208,7 @@ strcache_add_len (const char *str, int len)
 }
 
 int
-strcache_setbufsize(int size)
+strcache_setbufsize (unsigned int size)
 {
   if (size > bufsize)
     bufsize = size;
@@ -198,49 +227,65 @@ strcache_init (void)
 void
 strcache_print_stats (const char *prefix)
 {
-  int numbuffs = 0, numstrs = 0;
-  int totsize = 0, avgsize, maxsize = 0, minsize = bufsize;
-  int totfree = 0, avgfree, maxfree = 0, minfree = bufsize;
-  int lastused = 0, lastfree = 0;
+  const struct strcache *sp;
+  unsigned long numbuffs = 0, fullbuffs = 0;
+  unsigned long totfree = 0, maxfree = 0, minfree = bufsize;
 
-  if (strcache)
+  if (strcache)
     {
-      const struct strcache *sp;
+      printf (_("\n%s No strcache buffers\n"), prefix);
+      return;
+    }
 
-      /* Count the first buffer separately since it's not full.  */
-      lastused = strcache->end - strcache->buffer;
-      lastfree = strcache->bytesfree;
+  /* Count the first buffer separately since it's not full.  */
+  for (sp = strcache->next; sp != NULL; sp = sp->next)
+    {
+      sc_buflen_t bf = sp->bytesfree;
 
-      for (sp = strcache->next; sp != NULL; sp = sp->next)
-        {
-          int bf = sp->bytesfree;
-          int sz = sp->end - sp->buffer;
+      totfree += bf;
+      maxfree = (bf > maxfree ? bf : maxfree);
+      minfree = (bf < minfree ? bf : minfree);
 
-          ++numbuffs;
-          numstrs += sp->count;
+      ++numbuffs;
+    }
+  for (sp = fullcache; sp != NULL; sp = sp->next)
+    {
+      sc_buflen_t bf = sp->bytesfree;
 
-          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);
-        }
+      ++numbuffs;
+      ++fullbuffs;
     }
 
-  avgsize = numbuffs ? (int)(totsize / numbuffs) : 0;
-  avgfree = numbuffs ? (int)(totfree / numbuffs) : 0;
+  /* Make sure we didn't lose any buffers.  */
+  assert (total_buffers == numbuffs + 1);
+
+  printf (_("\n%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu B\n"),
+          prefix, numbuffs + 1, fullbuffs, total_strings, total_size,
+          (total_size / total_strings));
 
-  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);
+  printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"),
+          prefix, bufsize, strcache->end, strcache->count,
+          (strcache->end / strcache->count));
+
+  if (numbuffs)
+    {
+      unsigned long sz = total_size - bufsize;
+      unsigned long cnt = total_strings - strcache->count;
+      sc_buflen_t avgfree = totfree / numbuffs;
+
+      printf (_("%s other used: total = %lu B / count = %lu / avg = %lu B\n"),
+              prefix, sz, cnt, sz / cnt);
+
+      printf (_("%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"),
+              prefix, totfree, maxfree, minfree, avgfree);
+    }
 
-  fputs (_("\n# strcache hash-table stats:\n# "), stdout);
+  printf (_("\n%s strcache performance: lookups = %lu / hit rate = %lu%%\n"),
+          prefix, total_adds, (long unsigned)(100.0 * (total_adds - total_strings) / total_adds));
+  fputs (_("# hash-table stats:\n# "), stdout);
   hash_print_stats (&strings, stdout);
 }
index e5a0528..9a90487 100644 (file)
@@ -1,6 +1,5 @@
 @echo off\r
-rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,\r
-rem 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
+rem Copyright (C) 1996-2013 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
index d036568..653c5a7 100644 (file)
@@ -1,3 +1,354 @@
+2013-10-09  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/patspecific_vars: Typo fixes.
+
+2013-10-05  Paul Smith  <psmith@gnu.org>
+
+       * test_driver.pl (run_all_tests): Rewrite to be more clear.
+       * scripts/features/jobserver: Avoid using $ENV{HOME} as it doesn't
+       exist everywhere.
+       * scripts/features/default_names: End with 1;
+
+       * scripts/features/loadapi: Use new calling signatures.  Verify
+       the NOEXPAND flag works.  Test with all valid function name
+       characters.
+
+2013-09-29  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/SHELL: Solaris /bin/sh can't handle options in
+       multiple words; skip that test.
+       * scripts/targets/ONESHELL: Ditto.
+
+       * scripts/variables/GNUMAKEFLAGS: Verify that GNUMAKEFLAGS is
+       cleared and options are not duplicated.
+
+2013-09-23  Paul Smith  <psmith@gnu.org>
+
+       * scripts/options/print-directory: Rename dash-w to
+       print-directory to avoid conflicts with dash-W on case-insensitive
+       filesystems.
+
+2013-09-22  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/se_implicit: Verify that order-only tokens
+       inside second expansion are parsed correctly.
+       Test for Savannah bug #31155.
+
+       * run_make_tests.pl (set_more_defaults): If we can't find
+       gnumake.h based on the make program we might be running from a
+       remote build directory.  Parse the Makefile for the right path.
+
+       Fix some test issues on Solaris.
+
+       * scripts/features/archives: Determine what output ar gives when
+       adding and replacing objects and compare with that.
+       * scripts/features/escape: Solaris /bin/sh doesn't properly handle
+       backslashes inside single quotes, so don't rely on it.
+       * scripts/features/output-sync: false(1) gives different exit
+       codes on different systems; use "exit 1" instead.
+       * scripts/features/parallelism: Increase the timeout for slower systems.
+
+2013-09-21  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/archives: Some versions of ar (MacOSX) generate
+       different output when creating archives.  Run it and verify the
+       real output.
+       * scripts/features/default_names: MacOSX is, like Windows,
+       case-preserving / case-insensitive.  Redo the test to avoid
+       checking for "UNIX".
+       * test_driver.pl (attach_default_output): Don't dup stdout into
+       stderr.  Reported by Denis Excoffier <bug-tar@Denis-Excoffier.org>
+
+       * scripts/features/se_explicit: Fix a test that behaves
+       differently with/without archive capability enabled.
+       * scripts/features/output-sync: Don't test output-sync if it's not
+       enabled.  We also skip it if parallelism is not enabled, although
+       strictly speaking some of the output-sync tests are valid even
+       without parallelism.
+       * scripts/features/jobserver: Move some tests that require the
+       jobserver from features/parallelism to a separate suite.  Only run
+       this if jobserver mode is enabled.
+
+       * scripts/features/output-sync: Test shell functions writing to
+       stderr in recipes: ensure it's captured via output-sync.  Test
+       output generated while reading makefiles and make sure it's
+       captured via output-sync.  Make sure that fatal errors dump the
+       output so it's not lost.
+
+       * scripts/options/dash-w: Add a test for -w flag.
+
+2013-09-15  Paul Smith  <psmith@gnu.org>
+
+       * scripts/misc/fopen-fail: Check for failure on infinite recursion.
+       * run_make_tests.pl (run_make_test): Allow the answer string to be
+       undef, which means that we shouldn't compare it at all.  Only the
+       exit code matters in this case.
+       * test_driver.pl (compare_output): Ditto.
+       Test for Savannah bug #27374.
+
+       * scripts/features/parallelism: Test broken jobserver on recursion.
+       Test for Savannah bug #39934.
+
+       * scripts/options/eval: Verify --eval during restart.
+       Test for Savannah bug #39203.
+
+2013-09-14  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync: Verify -Orecurse properly.
+
+2013-09-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync: Modify for output sync behavior.
+       * scripts/variables/MAKE_RESTARTS: Ditto.
+       * scripts/variables/MAKEFLAGS: Remove mode for --trace.
+       * scripts/variables/GNUMAKEFLAGS: Ditto.
+
+2013-07-22  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/rule_glob: Add tests for wildcards in rules.
+       Test for Savannah bug #39310.
+
+2013-07-09  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/se_implicit: Add a test for SE rules depending
+       on other SE rules to be built.
+
+2013-05-26  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/archives: Test for Savannah bug #38442.
+
+       * scripts/misc/bs-nl: Test for Savannah bug #39035.
+       Add a test for Savannah bug #38945.
+
+2013-05-22  Paul Smith  <psmith@gnu.org>
+
+       * scripts/options/dash-n: Fix results after MAKEFLAGS fixes.
+       * scripts/variables/MAKEFLAGS: Ditto.
+       * scripts/variables/GNUMAKEFLAGS: Ditto.
+
+2013-05-14  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/loadapi: Add plugin_is_GPL_compatible symbol.
+       * scripts/features/load: Ditto.
+
+2013-05-13  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync (output_sync_set): Update for new
+       --trace behavior.
+
+2013-05-05  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync (output_sync_set): Remove
+       extraneous enter/leave lines, which are no longer printed.
+       Add tests for syncing command line printing.
+       (output_sync_set): Rename options: "job"->"line"; "make"->"recurse"
+
+2013-05-04  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/loadapi: Use the new alloc functions.
+
+       * scripts/features/output-sync (output_sync_set): New test for
+       ordered recursive output for -Ojob / -Otarget.
+
+2013-05-03  Eli Zaretskii  <eliz@gnu.org>
+
+       * scripts/features/load: Fix signatures of testload_gmk_setup and
+       explicit_setup, to bring them in line with the documentation.
+
+2013-04-28  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync (output_sync_set): Add tests for
+       the per-job syntax mode.
+       (output_sync_set): Test improved error message location.
+
+2013-04-15  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync (output_sync_set): New arg syntax.
+
+2013-04-14  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/output-sync: Rewrite to be more reliable.
+
+       * test_driver.pl (_run_command): Don't set SIGALRM until after we
+       start the child.  Print errors to the top-level output, which will
+       be stderr.
+       (attach_default_output): Use a list of file handles as the stack.
+       (detach_default_output): Ditto.
+
+       * scripts/features/output-sync: Add a test for output-sync.
+
+2013-02-25  Paul Smith  <psmith@gnu.org>
+
+       * run_make_tests.pl (valid_option): Support the -srcdir flag.
+       (set_more_defaults): Set up $srcdir if it's not set yet.
+
+       * scripts/functions/guile: Verify gmk-eval doesn't expand twice.
+       * scripts/features/load: Rework to test just the load capability.
+       * scripts/features/loadapi: New set of tests for the load API.
+
+2013-01-19  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/load: Test loaded files with and without "./"
+       prefix.  Add tests for automatically rebuilding loaded files if
+       they are out of date or non-existent.
+
+2013-01-13  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/archives: Add a check targets that have parens,
+       but are not archives.  See Savannah bug #37878.
+
+       * scripts/options/dash-n: Verify -n is preserved after recursive /
+       re-exec.  See Savannah bug #38051.
+
+2013-01-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/parallelism: Change rule so it doesn't depend
+       on invocation order, etc.
+
+2012-10-29  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/load: New test suite for the "load" directive.
+
+2012-09-09  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/file: Get errors in the C locale, not the
+       current locale.  Fixes Savannah bug #35764.
+
+       * scripts/features/escape: Check that backslashes before
+       non-special characters are not removed.
+
+       * scripts/features/utf8: New test for UTF-8 support.
+       See Savannah bug #36529.
+
+       * scripts/targets/POSIX: Add tests for default macro values as
+       specified by IEEE Std 1003.1-2008.  See Savannah bug #37069.
+
+2012-03-04  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/se_explicit: Test $(x:%=%) format in secondary
+       expansion prerequisite lists.  See Savannah bug #16545.
+
+       * scripts/features/escape: Test escaped ":" in prerequisite lists.
+       See Savannah bug #12126.
+
+       * scripts/variables/private: Test appending private variables in
+       pattern-specific target rules.  See Savannah bug #35468.
+
+2012-03-03  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/SHELL: Ensure .SHELLFLAGS works with options
+       separated by whitespace.
+
+       * scripts/targets/ONESHELL: Try .ONESHELL in combination with
+       whitespace-separated options in .SHELLFLAGS.  See Savannah bug #35397.
+
+       * scripts/functions/filter-out: Add filter tests and test escape
+       operations.  See Savannah bug #35410.
+
+       * guile.supp: Suppress valgrind errors from Guile
+       * run_make_tests.pl: Use the Guile suppression file.
+
+       * scripts/misc/bs-nl: Check for POSIX and non-POSIX
+       backslash/newline handling.  Addresses Savannah bug #16670.
+
+2012-01-29  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/flavors: Add tests for ::=
+       * scripts/variables/define: Ditto
+
+       * scripts/functions/file: Test the new $(file ...) function.
+
+2012-01-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/guile: New regression tests for Guile support.
+
+2011-12-10  Paul Smith  <psmith@gnu.org>
+
+       * scripts/targets/SECONDARY: Add prereq statements to ensure rules
+       are printed in the right order for test #9
+
+2011-11-14  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/double_colon: Check double-colon with escaped
+       filenames.  See Savannah bug #33399.
+
+2011-09-18  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/parallelism: On re-exec make sure we preserve
+       the value of MAKEFLAGS when necessary.  See Savannah bug #33873.
+
+       * scripts/features/vpath3: Verify handling of -lfoo libraries
+       found via vpath vs. the standard directory search.
+       See Savannah bug #32511.
+
+2011-09-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/call: Verify that using export in a $(call ...)
+       context creates a global variable.  See Savannah bug #32498.
+
+2011-09-02  Paul Smith  <psmith@gnu.org>
+
+       * scripts/options/dash-n: Verify that in "-n -t", the -n takes
+       priority.  Patch from Michael Witten <mfwitten@gmail.com>.
+
+2011-08-29  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/varnesting: Test resetting of variables while
+       expanding them.  See Savannah patch #7534
+
+2011-06-12  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/archives: Check archives with whitespace at the
+       beginning, end, and extra in the middle.
+       Another test for Savannah bug #30612.
+
+2011-05-07  Paul Smith  <psmith@gnu.org>
+
+       * scripts/variables/private: Ensure we skip private variables when
+       appending.  Test for Savannah bug #32872.
+
+       * scripts/functions/wildcard: Verify wildcard used to test for
+       file existence/non-existence.
+
+2011-05-02  Paul Smith  <psmith@gnu.org>
+
+       * scripts/functions/sort: Add a test for Savannah bug #33125.
+
+2011-04-17  David A. Wheeler  <dwheeler@dwheeler.com>
+
+       * scripts/features/shell_assignment: Regression for "!=" feature
+
+2010-11-06  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/targetvars: Fix known-good output for BS/NL changes.
+       * scripts/functions/call: Ditto.
+       * scripts/variables/special: Ditto.
+
+       * scripts/misc/bs-nl: New test suite for backslash/newline testing.
+
+2010-08-29  Paul Smith  <psmith@gnu.org>
+
+       * scripts/features/errors: Add new error message to output text.
+       * scripts/variables/SHELL: Ditto.
+       * scripts/targets/POSIX: Ditto.
+       * scripts/options/dash-k: Ditto.
+       * scripts/features/vpathplus: Ditto.
+       * scripts/features/patternrules: Ditto.
+       * scripts/features/parallelism: Ditto.
+
+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
+       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
        * test_driver.pl (toplevel): Skip all hidden files/directories (ones
        beginning with ".").
 
-       * scripts/functions/andor: Tests for $(and ..) and $(or ...)
+       * scripts/functions/andor: Tests for $(and ...) and $(or ...)
        functions.
 
 2006-02-08  Boris Kolpackov  <boris@kolpackov.net>
 
 2005-08-13  Boris Kolpackov  <boris@kolpackov.net>
 
-       * scripts/functions/wildcard: Wrap calls to $(wildcard ) with
+       * scripts/functions/wildcard: Wrap calls to $(wildcard) with
        $(sort) so that the resulting order is no longer filesystem-
-       dependant.
+       dependent.
 
 2005-08-10  Boris Kolpackov  <boris@kolpackov.net>
 
 
 2005-06-09  Paul D. Smith  <psmith@gnu.org>
 
-        * scripts/functions/foreach: Add a test for Savannah bug #11913.
+       * scripts/functions/foreach: Add a test for Savannah bug #11913.
 
 2005-05-31  Boris Kolpackov  <boris@kolpackov.net>
 
 2005-05-02  Paul D. Smith  <psmith@gnu.org>
 
        * scripts/features/parallelism: Add a test for exporting recursive
-       variables containing $(shell ) calls.  Rewrite this script to use
+       variables containing $(shell) calls.  Rewrite this script to use
        run_make_test() everywhere.
 
 2005-04-07  Paul D. Smith  <psmith@gnu.org>
        ChangeLog file for the test suite created.
 \f
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1992-2013 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
index 43971ec..7fb864c 100644 (file)
@@ -72,7 +72,7 @@ Changes from 0.4.4 to 0.4.5 (April 29, 1995):
 
     Also, some tests and stuff still haven't made it in because I
     haven't had time to write the test scripts for them.  But they,
-    too, will get in eventually.  Contributions of scripts (ie, tests
+    too, will get in eventually.  Contributions of scripts (i.e., tests
     that I can just drop in) are particularly welcome and will be
     incorporated immediately.
 
@@ -162,8 +162,7 @@ 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, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1992-2013 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
index 3860bdb..0663082 100644 (file)
@@ -7,8 +7,7 @@ This entire test suite, including all test files, are copyright and
 distributed under the following terms:
 
  -----------------------------------------------------------------------------
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1992-2013 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
@@ -39,7 +38,7 @@ To run the test suite on Windows NT or DOS systems, use
 "perl.exe ./run_make-tests.pl".
 
 By default, the test engine picks up the first executable called "make"
-that it finds in your path.  You may use the -make_path option (ie,
+that it finds in your path.  You may use the -make_path option (i.e.,
 "perl run_make_tests -make_path /usr/local/src/make-3.78/make") if
 you want to run a particular copy.  This now works correctly with
 relative paths and when make is called something other than "make" (like
@@ -59,7 +58,7 @@ The options/dash-l test will not really test anything if the copy of
 make you are using can't obtain the system load.  Some systems require
 make to be setgid sys or kmem for this; if you don't want to install
 make just to test it, make it setgid to kmem or whatever group /dev/kmem
-is (ie, "chgrp kmem make;chmod g+s make" as root).  In any case, the
+is (i.e., "chgrp kmem make;chmod g+s make" as root).  In any case, the
 options/dash-l test should no longer *fail* because make can't read
 /dev/kmem.
 
diff --git a/tests/guile.supp b/tests/guile.supp
new file mode 100644 (file)
index 0000000..9e9b01b
--- /dev/null
@@ -0,0 +1,31 @@
+# Guile valgrind suppression file
+# Created with Guile 1.8.7
+
+# --- Garbage collection
+{
+  guilegc
+  Memcheck:Cond
+  ...
+  fun:scm_gc_for_newcell
+}
+{
+  guilegc
+  Memcheck:Value4
+  ...
+  fun:scm_gc_for_newcell
+}
+{
+  guilegc
+  Memcheck:Value8
+  ...
+  fun:scm_gc_for_newcell
+}
+
+
+# -- scm_alloc_struct
+{
+  guileheap
+  Memcheck:Leak
+  ...
+  fun:scm_alloc_struct
+}
index d41b40e..5e0a402 100755 (executable)
@@ -3,9 +3,7 @@
 # Simple script to make a "shadow" test directory, using symbolic links.
 # 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, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-2013 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
@@ -28,7 +26,7 @@ esac
 dest="$1"
 
 if [ ! -d "$dest" ]; then
-  echo "Destination directory \`$dest' must exist!"
+  echo "Destination directory '$dest' must exist!"
   exit 1
 fi
 
@@ -55,5 +53,5 @@ done
 
 rm -rf work
 
-echo "Shadow test suite created in \`$dest/$name'."
+echo "Shadow test suite created in '$dest/$name'."
 exit 0
old mode 100755 (executable)
new mode 100644 (file)
index 2c8c08b..54c2892
@@ -11,9 +11,7 @@
 #                         [-make <make prog>]
 #                        (and others)
 
-# 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.
+# Copyright (C) 1992-2013 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
 # 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 = '';
-$memcheck_args = '--num-callers=15 --tool=memcheck --leak-check=full';
+$memcheck_args = '--num-callers=15 --tool=memcheck --leak-check=full --suppressions=guile.supp';
 $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;
 
+# The location of the GNU make source directory
+$srcdir = '';
+
 $command_string = '';
 
 $all_tests = 0;
@@ -60,6 +62,15 @@ sub valid_option
        return 1;
    }
 
+   if ($option =~ /^-srcdir$/i) {
+       $srcdir = shift @argv;
+       if (! -f "$srcdir/gnumake.h") {
+           print "$option $srcdir: Not a valid GNU make source directory.\n";
+           exit 0;
+       }
+       return 1;
+   }
+
    if ($option =~ /^-all([-_]?tests)?$/i) {
        $all_tests = 1;
        return 1;
@@ -98,6 +109,17 @@ sub valid_option
 
 $old_makefile = undef;
 
+sub subst_make_string
+{
+    local $_ = shift;
+    $makefile and s/#MAKEFILE#/$makefile/g;
+    s/#MAKEPATH#/$mkpath/g;
+    s/#MAKE#/$make_name/g;
+    s/#PERL#/$perl_name/g;
+    s/#PWD#/$pwd/g;
+    return $_;
+}
+
 sub run_make_test
 {
   local ($makestring, $options, $answer, $err_code, $timeout) = @_;
@@ -115,16 +137,9 @@ sub run_make_test
       $makefile = &get_tmpfile();
     }
 
-    # Make sure it ends in a newline.
+    # Make sure it ends in a newline and substitute any special tokens.
     $makestring && $makestring !~ /\n$/s and $makestring .= "\n";
-
-    # Replace @MAKEFILE@ with the makefile name and @MAKE@ with the path to
-    # make
-    $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;
+    $makestring = subst_make_string($makestring);
 
     # Populate the makefile!
     open(MAKEFILE, "> $makefile") || die "Failed to open $makefile: $!\n";
@@ -133,13 +148,10 @@ sub run_make_test
   }
 
   # Do the same processing on $answer as we did on $makestring.
-
-  $answer && $answer !~ /\n$/s and $answer .= "\n";
-  $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;
+  if (defined $answer) {
+      $answer && $answer !~ /\n$/s and $answer .= "\n";
+      $answer = subst_make_string($answer);
+  }
 
   run_make_with_options($makefile, $options, &get_logfile(0),
                         $err_code, $timeout);
@@ -228,14 +240,16 @@ sub run_make_with_options {
 sub print_usage
 {
    &print_standard_usage ("run_make_tests",
-                          "[-make_path make_pathname] [-memcheck] [-massif]",);
+                          "[-make MAKE_PATHNAME] [-srcdir SRCDIR] [-memcheck] [-massif]",);
 }
 
 sub print_help
 {
    &print_standard_help (
-        "-make_path",
+        "-make",
         "\tYou may specify the pathname of the copy of make to run.",
+        "-srcdir",
+        "\tSpecify the make source directory.",
         "-valgrind",
         "-memcheck",
         "\tRun the test suite under valgrind's memcheck tool.",
@@ -317,7 +331,7 @@ sub set_more_defaults
    $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE):\n
 'echo \"all:;\@echo \\\$(MAKE)\" | $make_path -f-' failed!\n";
    $make_path = $mk;
-   print "Make\t= `$make_path'\n" if $debug;
+   print "Make\t= '$make_path'\n" if $debug;
 
    $string = `$make_path -v -f /dev/null 2> /dev/null`;
 
@@ -329,12 +343,8 @@ sub set_more_defaults
      $make_name = $1;
    }
    else {
-     if ($make_path =~ /$pathsep([^\n$pathsep]*)$/) {
-       $make_name = $1;
-     }
-     else {
-       $make_name = $make_path;
-     }
+     $make_path =~ /^(?:.*$pathsep)?(.+)$/;
+     $make_name = $1;
    }
 
    # prepend pwd if this is a relative path (ie, does not
@@ -350,6 +360,24 @@ sub set_more_defaults
       $mkpath = $make_path;
    }
 
+   # If srcdir wasn't provided on the command line, see if the
+   # location of the make program gives us a clue.  Don't fail if not;
+   # we'll assume it's been installed into /usr/include or wherever.
+   if (! $srcdir) {
+       $make_path =~ /^(.*$pathsep)?/;
+       my $d = $1 || '../';
+       -f "${d}gnumake.h" and $srcdir = $d;
+   }
+
+   # Not with the make program, so see if we can get it out of the makefile
+   if (! $srcdir && open(MF, "< ../Makefile")) {
+       local $/ = undef;
+       $_ = <MF>;
+       close(MF);
+       /^abs_srcdir\s*=\s*(.*?)\s*$/m;
+       -f "$1/gnumake.h" and $srcdir = $1;
+   }
+
    # Get Purify log info--if any.
 
    if (exists $ENV{PURIFYOPTIONS}
@@ -367,6 +395,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) {
diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives
new file mode 100644 (file)
index 0000000..a7ec881
--- /dev/null
@@ -0,0 +1,95 @@
+#                                                              -*-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));
+
+# Some versions of ar print different things on creation.  Find out.
+my $created = `ar rv libxx.a a1.o 2>&1`;
+
+# Some versions of ar print different things on add.  Find out.
+my $add = `ar rv libxx.a a2.o 2>&1`;
+$add =~ s/a2\.o/#OBJECT#/g;
+
+# Some versions of ar print different things on replacement.  Find out.
+my $repl = `ar rv libxx.a a2.o 2>&1`;
+$repl =~ s/a2\.o/#OBJECT#/g;
+
+unlink('libxx.a');
+
+# Very simple
+run_make_test('all: libxx.a(a1.o)',
+              '', "ar rv libxx.a a1.o\n$created");
+
+# Multiple .o's.  Add a new one to the existing library
+($_ = $add) =~ s/#OBJECT#/a2.o/g;
+run_make_test('all: libxx.a(a1.o a2.o)',
+              '', "ar rv libxx.a a2.o\n$_");
+
+# Touch one of the .o's so it's rebuilt
+utouch(-40, 'a1.o');
+($_ = $repl) =~ s/#OBJECT#/a1.o/g;
+run_make_test(undef, '', "ar rv libxx.a 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');
+($_ = $repl) =~ s/#OBJECT#/a1.o/g;
+run_make_test(undef, '', "ar rv libxx.a a1.o\n$_");
+
+# Use both wildcards and simple names
+utouch(-50, 'a2.o');
+($_ = $add) =~ s/#OBJECT#/a3.o/g;
+$_ .= "ar rv libxx.a a2.o\n";
+($_ .= $repl) =~ s/#OBJECT#/a2.o/g;
+run_make_test('all: libxx.a(a3.o *.o)', '',
+              "ar rv libxx.a a3.o\n$_");
+
+# Check whitespace handling
+utouch(-40, 'a2.o');
+($_ = $repl) =~ s/#OBJECT#/a2.o/g;
+run_make_test('all: libxx.a(  a3.o    *.o     )', '',
+              "ar rv libxx.a a2.o\n$_");
+
+rmfiles(qw(a1.o a2.o a3.o libxx.a));
+
+# Check non-archive targets
+# See Savannah bug #37878
+run_make_test(q!
+all: foo(bar).baz
+foo(bar).baz: ; @echo '$@'
+!,
+              '', "foo(bar).baz\n");
+
+# Check renaming of archive targets.
+# See Savannah bug #38442
+
+mkdir('artest', 0777);
+touch('foo.vhd');
+
+run_make_test(q!
+DIR = artest
+vpath % $(DIR)
+default: lib(foo)
+(%): %.vhd ; @cd $(DIR) && touch $(*F) && $(AR) $(ARFLAGS) $@ $(*F) >/dev/null 2>&1 && rm $(*F)
+.PHONY: default
+!,
+              '', "");
+
+run_make_test(undef, '', "#MAKE#: Nothing to be done for 'default'.\n");
+
+unlink('foo.vhd');
+remove_directory_tree('artest');
+
+# This tells the test driver that the perl test script executed properly.
+1;
index e53127e..2e83880 100644 (file)
@@ -10,32 +10,35 @@ open(MAKEFILE,"> $makefile");
 print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n";
 close(MAKEFILE);
 
-# DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
-# Just test what we can here (avoid Makefile versus makefile test).
-
-if ($port_type eq 'UNIX') {
-  # Create another makefile called "makefile"
-  open(MAKEFILE,"> makefile");
-  print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
-  close(MAKEFILE);
-}
-
-# Create another makefile called "Makefile"
-open(MAKEFILE,"> Makefile");
-print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
+# Create another makefile called "makefile"
+open(MAKEFILE,"> makefile");
+print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
 close(MAKEFILE);
 
+# DOS/WIN32/MacOSX platforms are case-insensitive / case-preserving, so
+# Makefile is the same file as makefile.  Just test what we can here.
+
+my $case_sensitive = 0;
+if (! -f 'Makefile') {
+    # Create another makefile called "Makefile"
+    $case_sensitive = 1;
+    open(MAKEFILE,"> Makefile");
+    print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
+    close(MAKEFILE);
+}
+
+run_make_with_options("","",&get_logfile);
+compare_output("It chose GNUmakefile\n",&get_logfile(1));
+unlink($makefile);
 
-&run_make_with_options("","",&get_logfile);
-&compare_output("It chose GNUmakefile\n",&get_logfile(1));
-unlink $makefile;
+run_make_with_options("","",&get_logfile);
+compare_output("It chose makefile\n",&get_logfile(1));
+unlink("makefile");
 
-if ($port_type eq 'UNIX') {
-  &run_make_with_options("","",&get_logfile);
-  &compare_output("It chose makefile\n",&get_logfile(1));
-  unlink "makefile";
+if ($case_sensitive) {
+    run_make_with_options("","",&get_logfile);
+    compare_output("It chose Makefile\n",&get_logfile(1));
+    unlink("Makefile");
 }
 
-&run_make_with_options("","",&get_logfile);
-&compare_output("It chose Makefile\n",&get_logfile(1));
-unlink "Makefile";
+1;
index cad605d..1097775 100644 (file)
@@ -151,5 +151,14 @@ two');
 
 unlink('result','one','two');
 
+# TEST 10: check for proper backslash handling
+#          Savannah bug #33399
+
+run_make_test('
+a\ xb :: ; @echo one
+a\ xb :: ; @echo two
+',
+              '', "one\ntwo\n");
+
 # This tells the test driver that the perl test script executed properly.
 1;
index e372fe0..c0339cb 100644 (file)
@@ -42,15 +42,17 @@ close(MAKEFILE);
 
 unlink("cleanit");
 $cleanit_error = `sh -c "$rm_command cleanit 2>&1"`;
+chomp $cleanit_error;
 $delete_error_code = $? >> 8;
 
 # TEST #1
 # -------
 
-$answer = "$rm_command cleanit\n"
-         . $cleanit_error
-         ."$make_name: [clean] Error $delete_error_code (ignored)\n"
-         ."$rm_command foo\n";
+$answer = "$rm_command cleanit
+$cleanit_error
+$makefile:2: recipe for target 'clean' failed
+$make_name: [clean] Error $delete_error_code (ignored)
+$rm_command foo\n";
 
 &run_make_with_options($makefile,"",&get_logfile);
 
@@ -74,10 +76,11 @@ if (!$vos)
 # TEST #2
 # -------
 
-$answer = "$rm_command cleanit\n"
-         . $cleanit_error
-         ."$make_name: [clean2] Error $delete_error_code (ignored)\n"
-         ."$rm_command foo\n";
+$answer = "$rm_command cleanit
+$cleanit_error
+$makefile:5: recipe for target 'clean2' failed
+$make_name: [clean2] Error $delete_error_code (ignored)
+$rm_command foo\n";
 
 &run_make_with_options($makefile,"clean2 -i",&get_logfile);
 
index 97a2994..bf069df 100644 (file)
@@ -2,12 +2,10 @@
 $description = "Test various types of escaping in makefiles.";
 
 $details = "\
-Make sure that escaping of `:' works in target names.
+Make sure that escaping of ':' works in target names.
 Make sure escaping of whitespace works in target names.
-Make sure that escaping of '#' works.";
-
-
-close(MAKEFILE);
+Make sure that escaping of '#' works.
+Make sure that backslash before non-special characters are kept.";
 
 
 # TEST 1
@@ -26,7 +24,7 @@ foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
 
 run_make_test(undef,
              'path=pre:',
-             "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+             "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
              512);
 
 # TEST 3: This one should work, since we escape the ":".
@@ -39,7 +37,7 @@ run_make_test(undef,
 
 run_make_test(undef,
              "'path=pre\\\\:'",
-             "#MAKEFILE#:2: *** target pattern contains no `%'.  Stop.",
+             "#MAKEFILE#:2: *** target pattern contains no '%'.  Stop.",
              512);
 
 # TEST 5: This one should work
@@ -54,5 +52,23 @@ run_make_test(undef,
              'sharp',
              'foo#bar.ext = (foo#bar.ext)');
 
+# Test escaped colons in prerequisites
+# Quoting of backslashes in q!! is kind of messy.
+# Solaris sh does not properly handle backslashes even in '' so just
+# check the output make prints, not what the shell interprets.
+run_make_test(q!
+foo: foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar
+foo foo\\:bar foo\\\\\\:bar foo\\\\\\\\\\:bar: ; : '$@'
+!,
+              '', ": 'foo:bar'\n: 'foo\\:bar'\n: 'foo\\\\:bar'\n: 'foo'\n");
+
+# Test backslash before non-special chars: should be kept as-is
+
+run_make_test(q!
+all: ..\foo
+.DEFAULT: ; : '$@'
+!,
+              '', ": '..\\foo'\n");
+
 # This tells the test driver that the perl test script executed properly.
 1;
index ba8908c..ee014bd 100644 (file)
@@ -1,6 +1,6 @@
 #                                     -*-mode: perl; rm-trailing-spaces: nil-*-
 
-$description = "Test various forms of the GNU make `include' command.";
+$description = "Test various forms of the GNU make 'include' command.";
 
 $details = "\
 Test include, -include, sinclude and various regressions involving them.
@@ -60,7 +60,7 @@ run_make_test
 error: foo.mk ; @echo $@
 ',
    '',
-   "#MAKE#: *** No rule to make target `foo.mk', needed by `error'.  Stop.\n",
+   "#MAKE#: *** No rule to make target 'foo.mk', needed by 'error'.  Stop.\n",
    512
   );
 
@@ -128,7 +128,7 @@ foo: baz
 bar: baz
 ',
 '',
-"#MAKE#: *** No rule to make target `baz', needed by `bar'.  Stop.\n",
+"#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
@@ -144,7 +144,7 @@ bar: baz
 baz: end
 ',
 '',
-"#MAKE#: *** No rule to make target `end', needed by `baz'.  Stop.\n",
+"#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
@@ -162,7 +162,7 @@ baz: end
 ',
 '',
 "#MAKEFILE#:2: bar: No such file or directory
-#MAKE#: *** No rule to make target `end', needed by `baz'.  Stop.\n",
+#MAKE#: *** No rule to make target 'end', needed by 'baz'.  Stop.\n",
 512);
 
 if ($all_tests) {
@@ -172,7 +172,7 @@ if ($all_tests) {
 include foo
 foo: ; @echo foo = bar > $@
 !,
-                  '', "#MAKE#: `foo' is up to date.\n");
+                  '', "#MAKE#: 'foo' is up to date.\n");
     rmfiles('foo');
 }
 
diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
new file mode 100644 (file)
index 0000000..cedd4b3
--- /dev/null
@@ -0,0 +1,61 @@
+#                                                                    -*-perl-*-
+
+$description = "Test jobserver.";
+
+$details = "These tests are ones that specifically are different when the
+jobserver feature is available.  Most -j tests are the same whether or not
+jobserver is available, and those appear in the 'parallelism' test suite.";
+
+exists $FEATURES{'jobserver'} or return -1;
+
+if (!$parallel_jobs) {
+  return -1;
+}
+
+# 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
+
+unlink('inc.mk');
+
+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");
+
+unlink('inc.mk');
+
+# Test recursion when make doesn't think it exists.
+# See Savannah bug #39934
+# Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474
+
+open(MAKEFILE,"> Makefile2");
+print MAKEFILE '
+vpath %.c ../
+foo:
+';
+close(MAKEFILE);
+
+run_make_test(q!
+default: ; @ #MAKEPATH# -f Makefile2
+!,
+              '-j2 --no-print-directory',
+"#MAKE#[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
+#MAKE#[1]: Nothing to be done for 'foo'.");
+
+rmfiles('Makefile2');
+
+1;
diff --git a/tests/scripts/features/load b/tests/scripts/features/load
new file mode 100644 (file)
index 0000000..2e3f263
--- /dev/null
@@ -0,0 +1,102 @@
+#                                                                    -*-perl-*-
+$description = "Test the load operator.";
+
+$details = "Test dynamic loading of modules.";
+
+# Don't do anything if this system doesn't support "load"
+exists $FEATURES{load} or return -1;
+
+my $sobuild = '$(CC) '.($srcdir? "-I$srcdir":'').' -g -shared -fPIC -o $@ $<';
+
+# First build a shared object
+# Provide both a default and non-default load symbol
+
+unlink(qw(testload.c testload.so));
+
+open(my $F, '> testload.c') or die "open: testload.c: $!\n";
+print $F <<'EOF' ;
+#include <string.h>
+#include <stdio.h>
+
+#include "gnumake.h"
+
+int plugin_is_GPL_compatible;
+
+int
+testload_gmk_setup (gmk_floc *pos)
+{
+    gmk_eval ("TESTLOAD = implicit", 0);
+    return 1;
+}
+
+int
+explicit_setup (gmk_floc *pos)
+{
+    gmk_eval ("TESTLOAD = explicit", 0);
+    return 1;
+}
+EOF
+close($F) or die "close: testload.c: $!\n";
+
+# Make sure we can compile
+run_make_test('testload.so: testload.c ; @'.$sobuild, '', '');
+
+# TEST 1
+run_make_test(q!
+PRE := $(.LOADED)
+load testload.so
+POST := $(.LOADED)
+all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD)
+!,
+              '', "pre= post=testload.so implicit\n");
+
+# TEST 2
+# Load using an explicit function
+run_make_test(q!
+PRE := $(.LOADED)
+load ./testload.so(explicit_setup)
+POST := $(.LOADED)
+all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD)
+!,
+              '', "pre= post=testload.so explicit\n");
+
+# TEST 4
+# Check multiple loads
+run_make_test(q!
+PRE := $(.LOADED)
+load ./testload.so
+load testload.so(explicit_setup)
+POST := $(.LOADED)
+all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD)
+!,
+              '', "pre= post=testload.so implicit\n");
+
+# TEST 5
+# Check auto-rebuild of loaded file that's out of date
+utouch(-10, 'testload.so');
+touch('testload.c');
+
+run_make_test(q!
+PRE := $(.LOADED)
+load ./testload.so
+POST := $(.LOADED)
+all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD)
+testload.so: testload.c ; @echo "rebuilding $@"; !.$sobuild,
+              '', "rebuilding testload.so\npre= post=testload.so implicit\n");
+
+# TEST 5
+# Check auto-rebuild of loaded file when it doesn't exist
+unlink('testload.so');
+
+run_make_test(q!
+PRE := $(.LOADED)
+-load ./testload.so(explicit_setup)
+POST := $(.LOADED)
+all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD)
+%.so: %.c ; @echo "rebuilding $@"; !.$sobuild,
+              '', "rebuilding testload.so\npre= post=testload.so explicit\n");
+
+unlink(qw(testload.c testload.so)) unless $keep;
+
+# This tells the test driver that the perl test script executed properly.
+1;
diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi
new file mode 100644 (file)
index 0000000..6d3b03f
--- /dev/null
@@ -0,0 +1,112 @@
+#                                                                    -*-perl-*-
+$description = "Test the shared object load API.";
+
+$details = "Verify the different aspects of the shared object API.";
+
+# Don't do anything if this system doesn't support "load"
+exists $FEATURES{load} or return -1;
+
+my $sobuild = '$(CC) '.($srcdir? "-I$srcdir":'').' -g -shared -fPIC -o $@ $<';
+
+# First build a shared object
+# Provide both a default and non-default load symbol
+
+unlink(qw(testapi.c testapi.so));
+
+open(my $F, '> testapi.c') or die "open: testapi.c: $!\n";
+print $F <<'EOF' ;
+#include <string.h>
+#include <stdio.h>
+
+#include "gnumake.h"
+
+int plugin_is_GPL_compatible;
+
+static char *
+test_eval (const char *buf)
+{
+    gmk_eval (buf, 0);
+    return NULL;
+}
+
+static char *
+test_expand (const char *val)
+{
+    return gmk_expand (val);
+}
+
+static char *
+test_noexpand (const char *val)
+{
+    char *str = gmk_alloc (strlen (val));
+    strcpy (str, val);
+    return str;
+}
+
+static char *
+func_test (const char *funcname, unsigned int argc, char **argv)
+{
+    char *mem;
+
+    if (strcmp (funcname, "test-expand") == 0)
+        return test_expand (argv[0]);
+
+    if (strcmp (funcname, "test-eval") == 0)
+        return test_eval (argv[0]);
+
+    if (strcmp (funcname, "test-noexpand") == 0)
+        return test_noexpand (argv[0]);
+
+    mem = gmk_alloc (sizeof ("unknown"));
+    strcpy (mem, "unknown");
+    return mem;
+}
+
+int
+testapi_gmk_setup ()
+{
+    gmk_add_function ("test-expand", func_test, 1, 1, GMK_FUNC_DEFAULT);
+    gmk_add_function ("test-noexpand", func_test, 1, 1, GMK_FUNC_NOEXPAND);
+    gmk_add_function ("test-eval", func_test, 1, 1, GMK_FUNC_DEFAULT);
+    gmk_add_function ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.", func_test, 0, 0, 0);
+    return 1;
+}
+EOF
+close($F) or die "close: testapi.c: $!\n";
+
+run_make_test('testapi.so: testapi.c ; @'.$sobuild, '', '');
+
+# TEST 1
+# Check the gmk_expand() function
+run_make_test(q!
+EXPAND = expansion
+all: ; @echo $(test-expand $$(EXPAND))
+load testapi.so
+!,
+              '', "expansion\n");
+
+# TEST 2
+# Check the eval operation.  Prove that the argument is expanded only once
+run_make_test(q!
+load testapi.so
+TEST = bye
+ASSIGN = VAR = $(TEST) $(shell echo there)
+$(test-eval $(value ASSIGN))
+TEST = hi
+all:;@echo '$(VAR)'
+!,
+              '', "hi there\n");
+
+# TEST 2
+# Check the no-expand capability
+run_make_test(q!
+load testapi.so
+TEST = hi
+all:;@echo '$(test-noexpand $(TEST))'
+!,
+              '', "\$(TEST)\n");
+
+unlink(qw(testapi.c testapi.so)) unless $keep;
+
+# This tells the test driver that the perl test script executed properly.
+1;
index 6f120f1..e706e17 100644 (file)
@@ -47,7 +47,7 @@ else
                        $error_code);
 
 # Create the answer to what should be produced by this Makefile
-$answer = "$make_name: *** No rule to make target `extra.h', needed by `foo.o'.  Stop.\n";
+$answer = "$make_name: *** No rule to make target 'extra.h', needed by 'foo.o'.  Stop.\n";
 
 &compare_output($answer,&get_logfile(1));
 
diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync
new file mode 100644 (file)
index 0000000..75d7e81
--- /dev/null
@@ -0,0 +1,334 @@
+#                                                                    -*-perl-*-
+
+$description = "Test --output-sync (-O) option.";
+
+$details = "Test the synchronization of output from parallel jobs.";
+
+# If we don't have output sync support, never mind.
+exists $FEATURES{'output-sync'} or return -1;
+
+# Output sync can't be tested without parallelization
+$parallel_jobs or return -1;
+
+
+if ($vos) {
+  $sleep_command = "sleep -seconds";
+}
+else {
+  $sleep_command = "sleep";
+}
+
+# The following subdirectories with Makefiles are used in several
+# of the following tests.  The model is:
+#   foo/Makefile - has a "foo" target that waits for the bar target
+#   bar/Makefile - has a "bar" target that runs immediately
+#                - has a "baz" target that waits for the foo target
+#
+# So, you start the two sub-makes in parallel and first the "bar" target is
+# built, followed by "foo", followed by "baz".  The trick is that first each
+# target prints a "start" statement, then waits (if appropriate), then prints
+# an end statement.  Thus we can tell if the -O flag is working, since
+# otherwise these statements would be mixed together.
+
+@syncfiles = ();
+
+sub output_sync_clean {
+    rmfiles('foo/Makefile', 'bar/Makefile', @syncfiles);
+    rmdir('foo');
+    rmdir('bar');
+}
+
+# We synchronize the different jobs by having them wait for a sentinel file to
+# be created, instead of relying on a certain amount of time passing.
+# Unfortunately in this test we have to sleep after we see the sync file,
+# since we also want to make the obtaining of the write synchronization lock
+# reliable.  If things are too fast, then sometimes a different job will steal
+# the output sync lock and the output is mis-ordered from what we expect.
+sub output_sync_wait {
+    return "while [ ! -f ../mksync.$_[0] ]; do :; done; rm -f ../mksync.$_[0].wait; $sleep_command 1";
+}
+sub output_sync_set {
+    return "date > ../mksync.$_[0]";
+}
+
+@syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start);
+
+output_sync_clean();
+mkdir('foo', 0777);
+mkdir('bar', 0777);
+
+$set_foo = output_sync_set('foo');
+$set_bar = output_sync_set('bar');
+$set_foo_start = output_sync_set('foo_start');
+$set_bar_start = output_sync_set('bar_start');
+
+$wait_foo = output_sync_wait('foo');
+$wait_bar = output_sync_wait('bar');
+$wait_foo_start = output_sync_set('foo_start');
+$wait_bar_start = output_sync_set('bar_start');
+
+open(MAKEFILE,"> foo/Makefile");
+print MAKEFILE <<EOF;
+all: foo
+
+foo: foo-base ; \@$set_foo
+
+foo-base:
+\t\@echo foo: start
+\t\@$wait_bar
+\t\@echo foo: end
+
+foo-job: foo-job-base ; \@$set_foo
+
+foo-job-base:
+\t\@$wait_bar_start
+\t\@echo foo: start
+\t\@$set_foo_start
+\t\@$wait_bar
+\t\@echo foo: end
+
+foo-fail:
+\t\@echo foo-fail: start
+\t\@$wait_bar
+\t\@echo foo-fail: end
+\t\@exit 1
+EOF
+close(MAKEFILE);
+
+open(MAKEFILE,"> bar/Makefile");
+print MAKEFILE <<EOF;
+all: bar baz
+
+bar: bar-base ; \@$set_bar
+bar-base:
+\t\@echo bar: start
+\t\@echo bar: end
+
+bar-job: bar-job-base ; \@$set_bar
+
+bar-job-base:
+\t\@echo bar: start
+\t\@$set_bar_start
+\t\@$wait_foo_start
+\t\@echo bar: end
+
+baz: baz-base
+baz-base:
+\t\@echo baz: start
+\t\@$wait_foo
+\t\@echo baz: end
+EOF
+close(MAKEFILE);
+
+# Test per-make synchronization.
+unlink(@syncfiles);
+run_make_test(qq!
+all: make-foo make-bar
+
+make-foo: ; \$(MAKE) -C foo
+
+make-bar: ; \$(MAKE) -C bar!,
+              '-j -Orecurse',
+"#MAKEPATH# -C foo
+#MAKE#[1]: Entering directory '#PWD#/foo'
+foo: start
+foo: end
+#MAKE#[1]: Leaving directory '#PWD#/foo'
+#MAKEPATH# -C bar
+#MAKE#[1]: Entering directory '#PWD#/bar'
+bar: start
+bar: end
+baz: start
+baz: end
+#MAKE#[1]: Leaving directory '#PWD#/bar'\n", 0, 6);
+
+# Test per-target synchronization.
+# Note we have to sleep again here after starting the foo makefile before
+# starting the bar makefile, otherwise the "entering/leaving" messages for the
+# submakes might be ordered differently than we expect.
+
+unlink(@syncfiles);
+run_make_test(qq!
+x=1
+\$xMAKEFLAGS += --no-print-directory
+
+all: make-foo make-bar
+
+make-foo: ; \$(MAKE) -C foo
+
+make-bar: ; $sleep_command 1 ; \$(MAKE) -C bar!,
+              '-j --output-sync=target',
+"#MAKEPATH# -C foo
+$sleep_command 1 ; #MAKEPATH# -C bar
+#MAKE#[1]: Entering directory '#PWD#/bar'
+bar: start
+bar: end
+#MAKE#[1]: Leaving directory '#PWD#/bar'
+#MAKE#[1]: Entering directory '#PWD#/foo'
+foo: start
+foo: end
+#MAKE#[1]: Leaving directory '#PWD#/foo'
+#MAKE#[1]: Entering directory '#PWD#/bar'
+baz: start
+baz: end
+#MAKE#[1]: Leaving directory '#PWD#/bar'\n", 0, 6);
+
+# Rerun but this time suppress the directory tracking
+unlink(@syncfiles);
+run_make_test(undef, '-j --output-sync=target x=',
+              "#MAKEPATH# -C foo
+$sleep_command 1 ; #MAKEPATH# -C bar
+bar: start
+bar: end
+foo: start
+foo: end
+baz: start
+baz: end\n", 0, 6);
+
+# Test that messages from make itself are enclosed with
+# "Entering/Leaving directory" messages.
+unlink(@syncfiles);
+run_make_test(qq!
+all: make-foo-fail make-bar-bar
+
+make-foo-fail: ; \$(MAKE) -C foo foo-fail
+
+make-bar-bar: ; $sleep_command 1 ; \$(MAKE) -C bar bar!,
+              '-j -O',
+"#MAKEPATH# -C foo foo-fail
+$sleep_command 1 ; #MAKEPATH# -C bar bar
+#MAKE#[1]: Entering directory '#PWD#/bar'
+bar: start
+bar: end
+#MAKE#[1]: Leaving directory '#PWD#/bar'
+#MAKE#[1]: Entering directory '#PWD#/foo'
+foo-fail: start
+foo-fail: end
+Makefile:20: recipe for target 'foo-fail' failed
+#MAKE#[1]: *** [foo-fail] Error 1
+#MAKE#[1]: Leaving directory '#PWD#/foo'
+#MAKEFILE#:4: recipe for target 'make-foo-fail' failed
+#MAKE#: *** [make-foo-fail] Error 2\n",
+512);
+
+# Test the per-job synchronization.
+# For this we'll have bar-job:
+#   print start, invoke bar-start, wait for foo-start, print end, print-bar-end
+# And foo-job:
+#   wait for bar-start, print foo-start, wait for bar-end, print end
+
+unlink(@syncfiles);
+run_make_test(qq!
+all: make-foo make-bar
+
+make-foo: ; \$(MAKE) -C foo foo-job
+
+make-bar: ; $sleep_command 1 ; \$(MAKE) -C bar bar-job!,
+              '-j --output-sync=line',
+"#MAKEPATH# -C foo foo-job
+$sleep_command 1 ; #MAKEPATH# -C bar bar-job
+#MAKE#[1]: Entering directory '#PWD#/foo'
+foo: start
+#MAKE#[1]: Leaving directory '#PWD#/foo'
+#MAKE#[1]: Entering directory '#PWD#/bar'
+bar: start
+#MAKE#[1]: Leaving directory '#PWD#/bar'
+#MAKE#[1]: Entering directory '#PWD#/bar'
+bar: end
+#MAKE#[1]: Leaving directory '#PWD#/bar'
+#MAKE#[1]: Entering directory '#PWD#/foo'
+foo: end
+#MAKE#[1]: Leaving directory '#PWD#/foo'\n", 0, 6);
+
+
+# Remove temporary directories and contents.
+output_sync_clean();
+
+# Ensure recursion doesn't mis-order or double-print output
+run_make_test(qq!
+all:
+\t\@echo foo
+\t\@+echo bar
+!,
+              '-j -Oline', "foo\nbar\n");
+
+run_make_test(undef, '-j -Otarget', "foo\nbar\n");
+
+# Ensure when make writes out command it's not misordered
+run_make_test(qq!
+all:
+\t\@echo foobar
+\ttrue
+!,
+              '-j -Oline', "foobar\ntrue\n");
+
+run_make_test(undef, '-j -Otarget', "foobar\ntrue\n");
+
+# Ensure that shell functions inside recipes write stderr to the sync file
+run_make_test(q!
+all: ; @: $(shell echo foo 1>&2)
+!,
+              '-w -Oline', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n");
+
+# Ensure that output generated while parsing makefiles is synced
+# when appropriate.
+run_make_test(q!
+$(shell echo foo 1>&2)
+all: ; echo bar
+!,
+              '-s -w -Otarget', "#MAKE#: Entering directory '#PWD#'\nfoo\n#MAKE#: Leaving directory '#PWD#'\n#MAKE#: Entering directory '#PWD#'\nbar\n#MAKE#: Leaving directory '#PWD#'\n");
+
+# Test recursion
+$m1 = get_tmpfile();
+$m2 = get_tmpfile();
+
+open(M1, "> $m1");
+print M1 <<'EOF';
+$(shell echo d1 stderr 1>&2)
+$(info d1 stdout)
+all:; @:
+EOF
+close(M1);
+
+open(M2, "> $m2");
+print M2 <<'EOF';
+$(shell echo d2 stderr 1>&2)
+$(info d2 stdout)
+all:; @:
+# Force an ordering on the output
+$(shell sleep 1)
+EOF
+close(M2);
+
+run_make_test(qq!
+all: t1 t2
+t1: ; \@\$(MAKE) -f $m1
+t2: ; \@\$(MAKE) -f $m2
+!,
+              "-j -Oline", "#MAKE#[1]: Entering directory '#PWD#'\nd1 stderr\nd1 stdout\n#MAKE#[1]: Leaving directory '#PWD#'\n#MAKE#[1]: Entering directory '#PWD#'\nd2 stderr\nd2 stdout\n#MAKE#[1]: Leaving directory '#PWD#'\n");
+
+rmfiles($m1, $m2);
+
+# Ensure that output generated while parsing makefiles is synced
+# when appropriate.
+$m1 = get_tmpfile();
+
+open(M1, "> $m1");
+print M1 <<'EOF';
+$(shell echo d1 stderr 1>&2)
+$(info d1 stdout)
+$(error d1 failed)
+all:; @:
+EOF
+close(M1);
+
+run_make_test(qq!
+all: t1
+t1: ; -\@\$(MAKE) -f $m1
+!,
+              "-j -Oline", "#MAKE#[1]: Entering directory '#PWD#'\nd1 stderr\nd1 stdout\n$m1:3: *** d1 failed.  Stop.\n#MAKE#[1]: Leaving directory '#PWD#'\n#MAKEFILE#:3: recipe for target 't1' failed\n#MAKE#: [t1] Error 2 (ignored)\n");
+
+rmfiles($m1);
+
+# This tells the test driver that the perl test script executed properly.
+1;
index cc0f84f..c702c26 100644 (file)
@@ -41,7 +41,7 @@ all: 1 2; \@echo success
 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' > \$\@",
               "-j4",
-              "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
+              "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
 
 rmfiles(qw(1.inc 2.inc));
 
@@ -60,7 +60,7 @@ 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' > \$\@",
               "-j4",
-              "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n");
+              "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
 
 rmfiles(qw(1.inc 2.inc));
 
@@ -91,21 +91,24 @@ run_make_test("
 all: fail.1 ok fail.2 fail.3
 
 fail.1 fail.2 fail.3:
-       \@sleep \$(patsubst fail.%,%,\$\@)
+       \@$sleep_command \$(patsubst fail.%,%,\$\@)
        \@echo Fail
        \@exit 1
 
 ok:
-       \@sleep 4
+       \@$sleep_command 4
        \@echo Ok done",
-              '-rR -j5', 'Fail
+              '-rR -j5', "Fail
+#MAKEFILE#:6: recipe for target 'fail.1' failed
 #MAKE#: *** [fail.1] Error 1
 #MAKE#: *** Waiting for unfinished jobs....
 Fail
+#MAKEFILE#:6: recipe for target 'fail.2' failed
 #MAKE#: *** [fail.2] Error 1
 Fail
+#MAKEFILE#:6: recipe for target 'fail.3' failed
 #MAKE#: *** [fail.3] Error 1
-Ok done',
+Ok done",
              512);
 
 
@@ -140,81 +143,40 @@ intermed: | phony ; touch $@
 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
+# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec
+# See Savannah bug #33873
+
+$extraENV{MAKEFLAGS} = '-j4';
 
 run_make_test(q!
+things = thing1 thing2
+all: $(things)
+thing1:; @sleep 1; echo '$@ start'; sleep 2; echo '$@ end'
+thing2:; @echo '$@ start'; sleep 2; echo '$@ end'
 -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' > $@
+inc.mk: ; @touch $@
 !,
-              '--no-print-directory -j2', "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n");
+              '', "thing2 start\nthing1 start\nthing2 end\nthing1 end\n");
 
+delete $extraENV{MAKEFLAGS};
 rmfiles('inc.mk');
 
-if ($all_tests) {
-    # Implicit files aren't properly recreated during parallel builds
-    # Savannah bug #26864
+# Ensure intermediate/secondary files are not pruned incorrectly.
+# See Savannah bug #30653
 
-    # 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));
-}
+utouch(-15, 'file2');
+utouch(-10, 'file4');
+utouch(-5,  'file1');
 
-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
+run_make_test(q!
+.INTERMEDIATE: file3
+file4: file3 ; @mv -f $< $@
+file3: file2 ; touch $@
+file2: file1 ; @touch $@
 !,
-                  '-j2',
-                  '#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.
-true
-true
-');
-}
+              '--no-print-directory -j2', "touch file3");
+
+rmfiles('file1', 'file2', 'file3', 'file4');
 
 # Make sure that all jobserver FDs are closed if we need to re-exec the
 # master copy.
index 8ca228d..a530bba 100644 (file)
@@ -81,7 +81,7 @@ all: bar baz
 
 b%: pattern := good $$t
 
-global := orginal $$t
+global := original $$t
 
 
 # normal target
@@ -103,14 +103,14 @@ else
 %z: a := global: $(global) pattern: $(pattern) inherit: $(inherit)
 endif
 
-%z: ; @echo \'pattrn: $a;\'
+%z: ; @echo \'pattern: $a;\'
 
 
 global := new $$t
 ',
 '',
-'normal: global: orginal $t pattern:  inherit: ;
-pattrn: global: orginal $t pattern:  inherit: ;');
+'normal: global: original $t pattern:  inherit: ;
+pattern: global: original $t pattern:  inherit: ;');
 
 
 # TEST #7 -- test expansion of pattern-specific recursive variables
@@ -118,7 +118,7 @@ pattrn: global: orginal $t pattern:  inherit: ;');
 run_make_test(undef, # reuse previous makefile
 'rec=1',
 'normal: global: new $t pattern: good $t inherit: good $t;
-pattrn: global: new $t pattern: good $t inherit: good $t;');
+pattern: global: new $t pattern: good $t inherit: good $t;');
 
 # TEST #8: override in pattern-specific variables
 
index eebe7c0..0ff49a7 100644 (file)
@@ -110,7 +110,8 @@ $(dir)/foo.bar:
 
 ',
 "dir=$dir",
-"#MAKE#: *** [$dir/foo.bar] Error 1",
+"#MAKEFILE#:6: recipe for target '$dir/foo.bar' failed
+#MAKE#: *** [$dir/foo.bar] Error 1",
 512);
 
 unlink("$dir/foo.bar");
@@ -203,7 +204,7 @@ CWEAVE := :
 %.tex : %.w %.ch
 !,
               'foo.tex',
-              "#MAKE#: *** No rule to make target `foo.tex'.  Stop.", 512);
+              "#MAKE#: *** No rule to make target 'foo.tex'.  Stop.", 512);
 
 unlink(@f);
 
index a6b8f90..fd5e351 100644 (file)
@@ -18,7 +18,7 @@ last:
 ',
               ('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')),
               ($vos
-               ? "#MAKE#: Entering directory `#PWD#'
+               ? "#MAKE#: Entering directory '#PWD#'
 make 'CFLAGS=-O' -f #MAKEFILE# foo
 make CFLAGS=-O
 MAKELEVEL = 0
@@ -26,20 +26,20 @@ make 'CFLAGS=-O' -f #MAKEFILE# last
 make CFLAGS=-O
 MAKELEVEL = 0
 THE END
-#MAKE#: Leaving directory `#PWD#'"
-               : "#MAKE#: Entering directory `#PWD#'
+#MAKE#: Leaving directory '#PWD#'"
+               : "#MAKE#: Entering directory '#PWD#'
 #MAKEPATH# -f #MAKEFILE# foo
-#MAKE#[1]: Entering directory `#PWD#'
+#MAKE#[1]: Entering directory '#PWD#'
 #MAKEPATH#
 MAKELEVEL = 1
 #MAKEPATH# -f #MAKEFILE# last
-#MAKE#[2]: Entering directory `#PWD#'
+#MAKE#[2]: Entering directory '#PWD#'
 #MAKEPATH#
 MAKELEVEL = 2
 THE END
-#MAKE#[2]: Leaving directory `#PWD#'
-#MAKE#[1]: Leaving directory `#PWD#'
-#MAKE#: Leaving directory `#PWD#'"));
+#MAKE#[2]: Leaving directory '#PWD#'
+#MAKE#[1]: Leaving directory '#PWD#'
+#MAKE#: Leaving directory '#PWD#'"));
 
 
 # Test command line overrides.
index 9952ced..eb1a349 100644 (file)
@@ -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/tests/scripts/features/rule_glob b/tests/scripts/features/rule_glob
new file mode 100644 (file)
index 0000000..2d377e7
--- /dev/null
@@ -0,0 +1,37 @@
+#                                                                    -*-perl-*-
+
+$description = "Test globbing in targets and prerequisites.";
+
+$details = "";
+
+touch(qw(a.one a.two a.three));
+
+# Test wildcards in regular targets and prerequisites
+run_make_test(q{
+.PHONY: all a.one a.two a.three
+all: a.one* a.t[a-z0-9]o a.th[!q]ee
+a.o[Nn][Ee] a.t*: ; @echo $@
+},
+              '', "a.one\na.two\na.three");
+
+# Test wildcards in pattern targets and prerequisites
+run_make_test(q{
+.PHONY: all
+all: a.four
+%.four : %.t* ; @echo $@: $(sort $^)
+},
+              '', "a.four: a.three a.two");
+
+# Test wildcards in second expansion targets and prerequisites
+run_make_test(q{
+.PHONY: all
+all: a.four
+.SECONDEXPANSION:
+%.four : $$(sort %.t*) ; @echo $@: $(sort $^)
+},
+              '', "a.four: a.three a.two");
+
+unlink(qw(a.one a.two a.three));
+
+# This tells the test driver that the perl test script executed properly.
+1;
index 79e0a36..790017a 100644 (file)
@@ -6,6 +6,9 @@ $details = "";
 # TEST #0: Test handing of '$' in prerequisites with and without second
 # expansion.
 
+# If we don't support archives then the prerequisite is different
+my $prereq = exists $FEATURES{'archives'} ? '$' : '$(PRE)';
+
 run_make_test(q!
 ifdef SE
   .SECONDEXPANSION:
@@ -18,7 +21,7 @@ PRE = three four
 .DEFAULT: ; @echo '$@'
 !,
               '',
-              "\$\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
+              "$prereq\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
 
 run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
 
@@ -115,7 +118,7 @@ run_make_test(q!
 .SECONDEXPANSION:
 all : $$(eval $$(info test))
 !,
-            '', "test\n#MAKE#: Nothing to be done for `all'.\n");
+            '', "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.
@@ -152,5 +155,13 @@ a%l: q1x $$+ q2x ; @echo '$+'
                   '', "q1x bar bar q2x bar bar\n");
 
 
-# This tells the test driver that the perl test script executed properly.
+# Allow patsubst shorthand in second expansion context.
+# Requires the colon to be quoted.  Savannah bug #16545
+run_make_test(q!
+.PHONY: foo.bar
+.SECONDEXPANSION:
+foo: $$(@\\:%=%.bar); @echo '$^'
+!,
+              '', "foo.bar\n");
+
 1;
index e9acb2f..ec09d8d 100644 (file)
@@ -222,5 +222,39 @@ foo.o:
 !,
               '', "\n");
 
+# Test #10: Test second expansion with second expansion prerequisites
+# Ensures pattern_search() recurses with SE prereqs.
+touch('a');
+run_make_test(q!
+.SECONDEXPANSION:
+sim_base_rgg := just_a_name
+sim_base_src := a
+sim_base_f := a a a
+sim_%.f: $${sim_$$*_f}
+       echo $@
+sim_%.src: $${sim_$$*_src}
+       echo $@
+sim_%: \
+       $$(if $$(sim_$$*_src),sim_%.src) \
+       $$(if $$(sim_$$*_f),sim_%.f) \
+       $$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s)
+       echo $@
+!,
+              '-s sim_base', "#MAKE#: *** No rule to make target 'sim_base'.  Stop.", 512);
+
+unlink('a');
+
+# Ensure that order-only tokens embedded in second expansions are parsed
+run_make_test(q!
+.SECONDEXPANSION:
+PREREQS=p1|p2
+P2=p2
+all : foo bar
+f%o: $$(PREREQS) ; @echo '$@' from '$^' and '$|'
+b%r: p1|$$(P2)   ; @echo '$@' from '$^' and '$|'
+p% : ; : $@
+!,
+              "", ": p1\n: p2\nfoo from p1 and p2\nbar from p1 and p2\n");
+
 # This tells the test driver that the perl test script executed properly.
 1;
diff --git a/tests/scripts/features/shell_assignment b/tests/scripts/features/shell_assignment
new file mode 100644 (file)
index 0000000..686e4bd
--- /dev/null
@@ -0,0 +1,65 @@
+#                                                                    -*-perl-*-
+
+$description = "Test BSD-style shell assignments (VAR != VAL) for variables.";
+
+$details = "";
+
+# TEST 0: Basic shell assignment (!=).
+
+run_make_test('
+.POSIX:
+
+demo1!=printf \'  1   2 3\n4\n\n5 \n \n 6\n\n\n\n\'
+demo2 != printf \'7 8\n \'
+demo3 != printf \'$$(demo2)\'
+demo4 != printf \' 2 3 \n\'
+demo5 != printf \' 2 3 \n\n\'
+all: ; @echo "<$(demo1)> <$(demo2)> <$(demo3)> <$(demo4)> <${demo5}>"
+',
+              '', "<  1   2 3 4  5     6   > <7 8  > <7 8  > < 2 3 > < 2 3  >\n");
+
+# TEST 1: Handle '#' the same way as BSD make
+
+run_make_test('
+foo1!=echo bar#baz
+hash != printf \'\043\'
+foo2!= echo "bar$(hash)baz"
+
+all: ; @echo "<$(foo1)> <$(hash)> <$(foo2)>"
+',
+              '', "<bar> <#> <bar#baz>\n");
+
+# TEST 2: shell assignment variables (from !=) should be recursive.
+# Note that variables are re-evaluated later, so the shell can output
+# a value like $(XYZZY) as part of !=.  The $(XYZZY) will be EVALUATED
+# when the value containing it is evaluated.  On the negative side, this
+# means if you don't want this, you need to escape dollar signs as $$.
+# On the positive side, it means that shell programs can output macros
+# that are then evaluated as they are traditionally evaluated.. and that
+# you can use traditional macro evaluation semantics to implement !=.
+
+run_make_test('
+XYZZY = fiddle-dee-dee
+dollar = $$
+VAR3 != printf \'%s\' \'$(dollar)(XYZZY)\'
+
+all: ; @echo "<$(VAR3)>"
+',
+              '', "<fiddle-dee-dee>\n");
+
+
+# TEST 3: Overrides invoke shell anyway; they just don't store the result
+# in a way that is visible.
+
+run_make_test('
+
+override != echo abc > ,abc ; cat ,abc
+
+all: ; @echo "<$(override)>" ; cat ,abc
+',
+              'override=xyz', "<xyz>\nabc\n");
+
+unlink(',abc');
+
+
+1;
index ddd6c1f..a9b8dbe 100644 (file)
@@ -237,10 +237,20 @@ a: ; @echo "$(FOO)"
 
 run_make_test(undef, 'FOO=C', "C f1\n");
 
+# TEST #19: Conditional variables with command-line settings
+
+run_make_test('
+a: FOO ?= f1
+a: ; @echo "$(FOO)"
+',
+              '', "f1\n");
+
+run_make_test(undef, 'FOO=C', "C\n");
+
 # TEST #20: Check for continuation after semicolons
 
 run_make_test(q!
-a: A = 'hello; \
+a: A = 'hello;\
 world'
 a: ; @echo $(A)
 !,
diff --git a/tests/scripts/features/utf8 b/tests/scripts/features/utf8
new file mode 100644 (file)
index 0000000..54bc471
--- /dev/null
@@ -0,0 +1,11 @@
+#                                                                    -*-perl-*-
+
+$description = "Test support for UTF-8.";
+
+$details = "";
+
+# Verify that the UTF-8 BOM is ignored.
+run_make_test("\xEF\xBB\xBFall: ; \@echo \$\@\n", '', "all");
+
+# This tells the test driver that the perl test script executed properly.
+1;
index 15d5071..d8f3ffb 100644 (file)
@@ -1,29 +1,30 @@
-$description = "The following test creates a makefile to ...";
+#                                                                    -*-perl-*-
+$description = "Test recursive variables";
 
 $details = "";
 
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "x = variable1\n"
-              ."variable2 := Hello\n"
-              ."y = \$(subst 1,2,\$(x))\n"
-              ."z = y\n"
-              ."a := \$(\$(\$(z)))\n"
-              ."all: \n"
-              ."\t\@echo \$(a)\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile,"",&get_logfile);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "Hello\n";
-
-&compare_output($answer,&get_logfile(1));
+run_make_test('
+x = variable1
+variable2 := Hello
+y = $(subst 1,2,$(x))
+z = y
+a := $($($(z)))
+all: 
+       @echo $(a)
+',
+              '', "Hello\n");
+
+# This tests resetting the value of a variable while expanding it.
+# You may only see problems with this if you're using valgrind or
+# some other memory checker that poisons freed memory.
+# See Savannah patch #7534
+
+run_make_test('
+VARIABLE = $(eval VARIABLE := echo hi)$(VARIABLE)
+wololo:
+       @$(VARIABLE)
+',
+              '', "hi\n");
 
 1;
 
index a3aebd9..ec24165 100644 (file)
@@ -74,7 +74,7 @@ vpath-d/a: fail.te
 vpath-d/b : fail.te
 vpath-d/fail.te:
 !,
-              '', "#MAKE#: Nothing to be done for `default'.\n");
+              '', "#MAKE#: Nothing to be done for 'default'.\n");
 
 rmdir('vpath-d');
 
index 978c5ee..c6ede28 100644 (file)
@@ -1,50 +1,35 @@
-#                                                                     -*-perl-*-
+#                                                                    -*-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");
+my @dirs_to_make = qw(a1 b1 a2 b2 b3);
+for my $d (@dirs_to_make) {
+    mkdir($d, 0777);
+}
 
+my @files_to_touch = ("a1${pathsep}lib1.a",
+                      "a1${pathsep}libc.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");
+run_make_test('
+vpath %.h b3
+vpath %.a a1
+vpath %.so b1
+vpath % a2 b2
+vpath % b3
+all: -l1 -lc -l2 -l3; @echo $^
+',
+              '', "a1${pathsep}lib1.a a1${pathsep}libc.a a2${pathsep}lib2.a lib3.a\n");
+
+unlink(@files_to_touch);
+for my $d (@dirs_to_make) {
+    rmdir($d);
 }
 
 1;
index f7683f5..5e6217b 100644 (file)
@@ -57,7 +57,7 @@ sub touchfiles {
 
 push(@touchedfiles, "bar.c");
 
-$answer = "$make_name: Nothing to be done for `general'.\n";
+$answer = "$make_name: Nothing to be done for 'general'.\n";
 
 &compare_output($answer,&get_logfile(1));
 
index a37fbed..361788c 100644 (file)
@@ -86,6 +86,7 @@ cat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1
 
 $answer = "not creating notarget.c from notarget.d
 cat notarget.c > notarget.b 2>/dev/null || exit 1
+$makefile:16: recipe for target 'notarget.b' failed
 $make_name: *** [notarget.b] Error 1
 ";
 
index f3c5470..9db9da7 100644 (file)
@@ -13,7 +13,7 @@ print MAKEFILE <<'EOMAKE';
 #
 reverse = $2 $1
 
-# A complex `map' function, using recursive `call'.
+# A complex 'map' function, using recursive 'call'.
 #
 map = $(foreach a,$2,$(call $1,$a))
 
@@ -38,7 +38,7 @@ two = $(call one,$(1),foo,$(2))
 DEP_foo = bar baz quux
 DEP_baz = quux blarp
 rest = $(wordlist 2,$(words ${1}),${1})
-tclose = $(if $1,$(firstword $1) \
+tclose = $(if $1,$(firstword $1)\
                $(call tclose,$(sort ${DEP_$(firstword $1)} $(call rest,$1))))
 
 all: ; @echo '$(call reverse,bar,foo)'; \
@@ -96,4 +96,15 @@ close(MAKEFILE);
 $answer = "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n";
 &compare_output($answer,&get_logfile(1));
 
+# Ensure that variables are defined in global scope even in a $(call ...)
+
+delete $ENV{X123};
+
+run_make_test('
+tst = $(eval export X123)
+$(call tst)
+all: ; @echo "$${X123-not set}"
+',
+              '', "\n");
+
 1;
diff --git a/tests/scripts/functions/file b/tests/scripts/functions/file
new file mode 100644 (file)
index 0000000..9a4cd02
--- /dev/null
@@ -0,0 +1,101 @@
+#                                                                    -*-perl-*-
+
+$description = 'Test the $(file ...) function.';
+
+# Test > and >>
+run_make_test(q!
+define A
+a
+b
+endef
+B = c d
+$(file >file.out,$(A))
+$(foreach L,$(B),$(file >>     file.out,$L))
+x:;@echo hi; cat file.out
+!,
+              '', "hi\na\nb\nc\nd");
+
+unlink('file.out');
+
+# Test >> to a non-existent file
+run_make_test(q!
+define A
+a
+b
+endef
+$(file     >>     file.out,$(A))
+x:;@cat file.out
+!,
+              '', "a\nb");
+
+unlink('file.out');
+
+# Test > to a read-only file
+touch('file.out');
+chmod(0444, 'file.out');
+
+# Find the error that will be printed
+# This seems complicated, but we need the message from the C locale
+my $loc = undef;
+if ($has_POSIX) {
+    $loc = POSIX::setlocale(POSIX::LC_MESSAGES);
+    POSIX::setlocale(POSIX::LC_MESSAGES, 'C');
+}
+my $e;
+open(my $F, '>', 'file.out') and die "Opened read-only file!\n";
+$e = "$!";
+$loc and POSIX::setlocale(POSIX::LC_MESSAGES, $loc);
+
+run_make_test(q!
+define A
+a
+b
+endef
+$(file     >     file.out,$(A))
+x:;@cat file.out
+!,
+              '', "#MAKEFILE#:6: *** open: file.out: $e.  Stop.",
+              512);
+
+unlink('file.out');
+
+# Use variables for operator and filename
+run_make_test(q!
+define A
+a
+b
+endef
+OP = >
+FN = file.out
+$(file     $(OP)     $(FN),$(A))
+x:;@cat file.out
+!,
+              '', "a\nb");
+
+unlink('file.out');
+
+# Don't add newlines if one already exists
+run_make_test(q!
+define A
+a
+b
+
+endef
+$(file >file.out,$(A))
+x:;@cat file.out
+!,
+              '', "a\nb");
+
+unlink('file.out');
+
+# Empty text
+run_make_test(q!
+$(file >file.out,)
+$(file >>file.out,)
+x:;@cat file.out
+!,
+              '', "\n\n");
+
+unlink('file.out');
+
+1;
index 6c8b27a..1fe4819 100644 (file)
@@ -1,6 +1,6 @@
 #                                                                    -*-perl-*-
 
-$description = "Test the filter-out function.";
+$description = "Test the filter and filter-out functions.";
 
 $details = "The makefile created in this test has two variables.  The
 filter-out function is first used to discard names ending in
@@ -11,18 +11,32 @@ which is only used if there are multiple literals present in both
 the pattern and text arguments.  The result of both filter-out
 functions is the same single .elc name.\n";
 
-open(MAKEFILE,"> $makefile");
+# Basic test -- filter
+run_make_test(q!
+files1 := $(filter %.o, foo.elc bar.o lose.o)
+files2 := $(filter %.o foo.i, foo.i bar.i lose.i foo.elc bar.o lose.o)
+all: ; @echo '$(files1) $(files2)'
+!,
+              '', "bar.o lose.o foo.i bar.o lose.o\n");
 
-print MAKEFILE <<'EOF';
+# Basic test -- filter-out
+run_make_test(q!
 files1 := $(filter-out %.o, foo.elc bar.o lose.o)
 files2 := $(filter-out foo.i bar.i lose.i %.o, foo.i bar.i lose.i foo.elc bar.o lose.o)
-all: ; @echo $(files1) $(files2)
-EOF
+all: ; @echo '$(files1) $(files2)'
+!,
+              '', "foo.elc foo.elc\n");
 
-close(MAKEFILE);
+# Escaped patterns
+run_make_test(q!all:;@echo '$(filter foo\%bar,foo%bar fooXbar)'!,
+              '', "foo%bar\n");
 
-&run_make_with_options($makefile, "", &get_logfile, 0);
-$answer = "foo.elc foo.elc\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(q!all:;@echo '$(filter foo\%\%\\\\\%\%bar,foo%%\\%%bar fooX\\Ybar)'!,
+              '', "foo%%\\%%bar\n");
+
+run_make_test(q!
+X = $(filter foo\\\\\%bar,foo\%bar foo\Xbar)
+all:;@echo '$(X)'!,
+              '', "foo\\%bar\n");
 
 1;
index 82e99d7..4d1a11d 100644 (file)
@@ -1,5 +1,5 @@
 #                                                                    -*-perl-*-
-# $Id: foreach,v 1.5 2006/03/10 02:20:46 psmith Exp $
+# $Id$
 
 $description = "Test the foreach function.";
 
@@ -62,7 +62,7 @@ y = $x
 
 all: ; @echo $y',
               '',
-              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'.  Stop.",
+              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'.  Stop.",
               512);
 
 run_make_test('
@@ -71,7 +71,7 @@ y := $x
 
 all: ; @echo $y',
               '',
-              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'.  Stop.",
+              "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'.  Stop.",
               512);
 
 1;
diff --git a/tests/scripts/functions/guile b/tests/scripts/functions/guile
new file mode 100644 (file)
index 0000000..c63bec9
--- /dev/null
@@ -0,0 +1,99 @@
+#                                                                    -*-perl-*-
+
+$description = 'Test the $(guile ...) function.';
+
+$details = 'This only works on systems that support it.';
+
+# If this instance of make doesn't support GNU Guile, skip it
+# This detects if guile is loaded using the "load" directive
+# $makefile = get_tmpfile();
+# open(MAKEFILE, "> $makefile") || die "Failed to open $makefile: $!\n";
+# print MAKEFILE q!
+# -load guile
+# all: ; @echo $(filter guile,$(.LOADED))
+# !;
+# close(MAKEFILE) || die "Failed to write $makefile: $!\n";
+# $cmd = subst_make_string("#MAKEPATH# -f $makefile");
+# $log = get_logfile(0);
+# $code = run_command_with_output($log, $cmd);
+# read_file_into_string ($log) eq "guile\n" and $FEATURES{guile} = 1;
+
+# If we don't have Guile support, never mind.
+exists $FEATURES{guile} or return -1;
+
+# Verify simple data type conversions
+# Currently we don't support vectors:
+#    echo '$(guile (vector 1 2 3))'; \
+run_make_test(q!
+x:;@echo '$(guile #f)'; \
+    echo '$(guile #t)'; \
+    echo '$(guile #\c)'; \
+    echo '$(guile 1234)'; \
+    echo '$(guile 'foo)'; \
+    echo '$(guile "bar")'; \
+    echo '$(guile (cons 'a 'b))'; \
+    echo '$(guile '(a b (c . d) 1 (2) 3))'
+!,
+              '', "\n#t\nc\n1234\nfoo\nbar\na b\na b c d 1 2 3");
+
+# Verify the gmk-expand function
+run_make_test(q!
+VAR = $(guile (gmk-expand "$(shell echo hi)"))
+x:;@echo '$(VAR)'
+!,
+              '', "hi");
+
+# Verify the gmk-eval function
+# Prove that the string is expanded only once (by eval)
+run_make_test(q!
+TEST = bye
+EVAL = VAR = $(TEST) $(shell echo there)
+$(guile (gmk-eval "$(value EVAL)"))
+TEST = hi
+x:;@echo '$(VAR)'
+!,
+              '', "hi there");
+
+# Verify the gmk-eval function with a list
+run_make_test(q!
+$(guile (gmk-eval '(VAR = 1 (2) () 3)))
+x:;@echo '$(VAR)'
+!,
+              '', "1 2 3");
+
+# Verify the gmk-var function
+run_make_test(q!
+VALUE = hi $(shell echo there)
+VAR = $(guile (gmk-var "VALUE"))
+x:;@echo '$(VAR)'
+!,
+              '', "hi there");
+
+# Verify the gmk-var function with a symbol
+run_make_test(q!
+VALUE = hi $(shell echo there)
+VAR = $(guile (gmk-var 'VALUE))
+x:;@echo '$(VAR)'
+!,
+              '', "hi there");
+
+# Write a Guile program using define and run it
+run_make_test(q!
+# Define the "fib" function in Guile
+define fib
+;; A procedure for counting the n:th Fibonacci number
+;; See SICP, p. 37
+(define (fib n)
+  (cond ((= n 0) 0)
+        ((= n 1) 1)
+        (else (+ (fib (- n 1))
+                 (fib (- n 2))))))
+endef
+$(guile $(fib))
+
+# Now run it
+x:;@echo $(guile (fib $(FIB)))
+!,
+              'FIB=10', "55");
+
+1;
index d472102..b558910 100644 (file)
@@ -1,55 +1,47 @@
-$description = "The following test creates a makefile to verify\n"
-              ."the ability of make to sort lists of object. Sort\n"
-              ."will also remove any duplicate entries. This will also\n"
-              ."be tested.";
-
-$details = "The make file is built with a list of object in a random order\n"
-          ."and includes some duplicates. Make should sort all of the elements\n"
-          ."remove all duplicates\n";
-
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "foo := moon_light days \n"
-              ."foo1:= jazz\n"
-              ."bar := captured \n"
-              ."bar2 = boy end, has rise A midnight \n"
-              ."bar3:= \$(foo)\n"
-              ."s1  := _by\n"
-              ."s2  := _and_a\n"
-              ."t1  := \$(addsuffix \$(s1), \$(bar) )\n"
-              ."t2  := \$(addsuffix \$(s2), \$(foo1) )\n" 
-              ."t3  := \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \n"
-              ."t4  := \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \n"
-              ."t5  := \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \n"
-              ."t6  := \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \n"
-              ."t7  := \$(t6) \$(t6) \$(t6) \n"
-              ."p1  := \$(addprefix \$(foo1), \$(s2) )\n"
-              ."blank:= \n"
-              ."all:\n"
-              ."\t\@echo \$(sort \$(bar2) \$(foo)  \$(addsuffix \$(s1), \$(bar) ) \$(t2) \$(bar2) \$(bar3))\n"
-              ."\t\@echo \$(sort \$(blank) \$(foo) \$(bar2) \$(t1) \$(p1) )\n"
-              ."\t\@echo \$(sort \$(foo) \$(bar2) \$(t1) \$(t4) \$(t5) \$(t7) \$(t6) )\n";
-
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile,"",&get_logfile);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "A boy captured_by days end, has jazz_and_a midnight moon_light rise\n"
-         ."A boy captured_by days end, has jazz_and_a midnight moon_light rise\n"
-         ."A boy captured_by days end, has jazz_and_a midnight moon_light rise\n";
-
-&compare_output($answer,&get_logfile(1));
+#                                                                    -*-perl-*-
+
+$description = "The following test creates a makefile to verify
+the ability of make to sort lists of object. Sort
+will also remove any duplicate entries. This will also
+be tested.";
+
+$details = "The make file is built with a list of object in a random order
+and includes some duplicates. Make should sort all of the elements
+remove all duplicates\n";
+
+run_make_test('
+foo := moon_light days
+foo1:= jazz
+bar := captured 
+bar2 = boy end, has rise A midnight 
+bar3:= $(foo)
+s1  := _by
+s2  := _and_a
+t1  := $(addsuffix $(s1), $(bar) )
+t2  := $(addsuffix $(s2), $(foo1) )
+t3  := $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) 
+t4  := $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) 
+t5  := $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) 
+t6  := $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) 
+t7  := $(t6) $(t6) $(t6) 
+p1  := $(addprefix $(foo1), $(s2) )
+blank:= 
+all:
+       @echo $(sort $(bar2) $(foo)  $(addsuffix $(s1), $(bar) ) $(t2) $(bar2) $(bar3))
+       @echo $(sort $(blank) $(foo) $(bar2) $(t1) $(p1) )
+       @echo $(sort $(foo) $(bar2) $(t1) $(t4) $(t5) $(t7) $(t6) )
+',
+              '', 'A boy captured_by days end, has jazz_and_a midnight moon_light rise
+A boy captured_by days end, has jazz_and_a midnight moon_light rise
+A boy captured_by days end, has jazz_and_a midnight moon_light rise
+');
+
+
+# Test with non-space/tab whitespace.  Note that you can't see the
+# original bug except using valgrind.
+
+run_make_test("FOO = a b\tc\rd\fe \f \f \f \f \ff
+all: ; \@echo \$(words \$(sort \$(FOO)))\n",
+              '', "5\n");
 
 1;
-
-
-
-
-
-
index 2841f5d..bcd84ad 100644 (file)
@@ -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;
index 34527ea..4dcc940 100644 (file)
@@ -56,32 +56,32 @@ wordlist-e1: ; @echo $(wordlist ,,$(FOO))
 wordlist-e2: ; @echo $(wordlist abc ,,$(FOO))
 wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))',
               'word-e1',
-              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
+              "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: ''.  Stop.",
               512);
 
 run_make_test(undef,
               'word-e2',
-              "#MAKEFILE#:4: *** non-numeric first argument to `word' function: 'abc '.  Stop.",
+              "#MAKEFILE#:4: *** non-numeric first argument to 'word' function: 'abc '.  Stop.",
               512);
 
 run_make_test(undef,
               'word-e3',
-              "#MAKEFILE#:5: *** non-numeric first argument to `word' function: '1a'.  Stop.",
+              "#MAKEFILE#:5: *** non-numeric first argument to 'word' function: '1a'.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e1',
-              "#MAKEFILE#:7: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
+              "#MAKEFILE#:7: *** non-numeric first argument to 'wordlist' function: ''.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e2',
-              "#MAKEFILE#:8: *** non-numeric first argument to `wordlist' function: 'abc '.  Stop.",
+              "#MAKEFILE#:8: *** non-numeric first argument to 'wordlist' function: 'abc '.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e3',
-              "#MAKEFILE#:9: *** non-numeric second argument to `wordlist' function: ' 12a '.  Stop.",
+              "#MAKEFILE#:9: *** non-numeric second argument to 'wordlist' function: ' 12a '.  Stop.",
               512);
 
 # Test error conditions again, but this time in a variable reference
@@ -94,37 +94,37 @@ WL = $(wordlist $s,$e,$(FOO))
 word-e: ; @echo $(W)
 wordlist-e: ; @echo $(WL)',
               'word-e x=',
-              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: ''.  Stop.",
+              "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: ''.  Stop.",
               512);
 
 run_make_test(undef,
               'word-e x=abc',
-              "#MAKEFILE#:3: *** non-numeric first argument to `word' function: 'abc'.  Stop.",
+              "#MAKEFILE#:3: *** non-numeric first argument to 'word' function: 'abc'.  Stop.",
               512);
 
 run_make_test(undef,
               'word-e x=0',
-              "#MAKEFILE#:3: *** first argument to `word' function must be greater than 0.  Stop.",
+              "#MAKEFILE#:3: *** first argument to 'word' function must be greater than 0.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e s= e=',
-              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: ''.  Stop.",
+              "#MAKEFILE#:4: *** non-numeric first argument to 'wordlist' function: ''.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e s=abc e=',
-              "#MAKEFILE#:4: *** non-numeric first argument to `wordlist' function: 'abc'.  Stop.",
+              "#MAKEFILE#:4: *** non-numeric first argument to 'wordlist' function: 'abc'.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e s=4 e=12a',
-              "#MAKEFILE#:4: *** non-numeric second argument to `wordlist' function: '12a'.  Stop.",
+              "#MAKEFILE#:4: *** non-numeric second argument to 'wordlist' function: '12a'.  Stop.",
               512);
 
 run_make_test(undef,
               'wordlist-e s=0 e=12',
-              "#MAKEFILE#:4: *** invalid first argument to `wordlist' function: `0'.  Stop.",
+              "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: '0'.  Stop.",
               512);
 
 
diff --git a/tests/scripts/misc/bs-nl b/tests/scripts/misc/bs-nl
new file mode 100644 (file)
index 0000000..4fc3f63
--- /dev/null
@@ -0,0 +1,129 @@
+#                                                                    -*-perl-*-
+$description = "Test backslash-newline handling.";
+
+$details = "";
+
+# TEST #1
+# -------
+
+# Backslash-newlines in recipes
+
+# These are basic backslash-newlines with no tricks
+run_make_test("fast:;\@echo fa\\\nst\n",
+              '', 'fast');
+
+run_make_test("slow:;\@: no-op; echo sl\\\now\n",
+              '', 'slow');
+
+run_make_test("dquote:;\@echo \"dqu\\\note\"\n",
+              '', 'dquote');
+
+run_make_test("squote:;\@echo 'squ\\\note'\n",
+              '', "squ\\\note");
+
+# Ensure that a leading prefix character is omitted
+run_make_test("fast:;\@echo fa\\\n\tst\n",
+              '', 'fast');
+
+run_make_test("slow:;\@: no-op; echo sl\\\n\tow\n",
+              '', 'slow');
+
+run_make_test("dquote:;\@echo \"dqu\\\n\tote\"\n",
+              '', 'dquote');
+
+run_make_test("squote:;\@echo 'squ\\\n\tote'\n",
+              '', "squ\\\note");
+
+# Ensure that ONLY the leading prefix character is omitted
+run_make_test("fast:;\@echo fa\\\n\t  st\n",
+              '', 'fa st');
+
+run_make_test("slow:;\@: no-op; echo sl\\\n\t\tow\n",
+              '', "sl ow");
+
+run_make_test("dquote:;\@echo \"dqu\\\n\t    ote\"\n",
+              '', 'dqu    ote');
+
+run_make_test("squote:;\@echo 'squ\\\n\t\t   ote'\n",
+              '', "squ\\\n\t   ote");
+
+# Backslash-newlines in variable values
+
+# Simple
+run_make_test(q!
+var = he\
+llo
+var:;@echo '|$(var)|'!,
+              '', "|he llo|");
+
+# Condense trailing space
+run_make_test(q!
+var = he  \
+llo
+var:;@echo '|$(var)|'!,
+              '', "|he llo|");
+
+# Remove leading space
+run_make_test(q!
+var = he\
+    llo
+var:;@echo '|$(var)|'!,
+              '', "|he llo|");
+
+# Multiple bs/nl condensed
+run_make_test(q!
+var = he\
+\
+\
+    llo
+var:;@echo '|$(var)|'!,
+              '', "|he llo|");
+
+# POSIX: Preserve trailing space
+run_make_test(q!
+.POSIX:
+x = y
+var = he  \
+llo
+var:;@echo '|$(var)|'!,
+              '', "|he   llo|");
+
+# POSIX: One space per bs-nl
+run_make_test(q!
+.POSIX:
+x = y
+var = he\
+\
+\
+    llo
+var:;@echo '|$(var)|'!,
+              '', "|he   llo|");
+
+# Savannah #39035: handle whitespace in call
+run_make_test(q!
+f = echo $(1)
+t:; @$(call f,"a \
+            b"); \
+        $(call f,"a \
+            b")
+!,
+              '', "a b\na b\n");
+
+# Savannah #38945: handle backslash CRLF
+# We need our own makefile so we can set binmode
+my $m1 = get_tmpfile();
+open(MAKEFILE, "> $m1");
+binmode(MAKEFILE);
+print MAKEFILE "FOO = foo \\\r\n";
+close(MAKEFILE);
+
+my $m2 = get_tmpfile();
+open(MAKEFILE, "> $m2");
+print MAKEFILE "include $m1\ndefine BAR\nall: ; \@echo \$(FOO) bar\nendef\n\$(eval \$(BAR))\n";
+close(MAKEFILE);
+
+run_make_with_options($m2, '', get_logfile());
+compare_output("foo bar\n", get_logfile(1));
+
+
+1;
diff --git a/tests/scripts/misc/fopen-fail b/tests/scripts/misc/fopen-fail
new file mode 100644 (file)
index 0000000..6580e51
--- /dev/null
@@ -0,0 +1,15 @@
+#                                                                    -*-perl-*-
+
+$description = "Make sure make exits with an error if fopen fails.";
+
+# Recurse infinitely until we run out of open files, and ensure we
+# fail with a non-zero exit code.  Don't bother to test the output
+# since it's hard to know what it will be, exactly.
+# See Savannah bug #27374.
+
+run_make_test(q!
+include $(lastword $(MAKEFILE_LIST))
+!,
+              '', undef, 512);
+
+1;
index b3142c2..8ad0f8e 100644 (file)
@@ -26,7 +26,7 @@ TAB =   \t  \# A TAB and some spaces
 \$(STR)
 
 \$(STR) \$(TAB)",
-              '', "#MAKE#: Nothing to be done for `all'.");
+              '', "#MAKE#: Nothing to be done for 'all'.");
 
 # TEST 2
 
index e36842e..9c708b7 100644 (file)
@@ -22,13 +22,13 @@ foo: bar.x
 ',
               '', 'cp bar.x foo');
 
-run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'.");
+run_make_test(undef, '', "#MAKE#: Nothing to be done for 'all'.");
 run_make_test(undef, '-B', 'cp bar.x foo');
 
 # Put the timestamp for foo into the future; it should still be remade.
 
 utouch(1000, 'foo');
-run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'.");
+run_make_test(undef, '', "#MAKE#: Nothing to be done for 'all'.");
 run_make_test(undef, '-B', 'cp bar.x foo');
 
 # Clean up
index 5864ffd..42d0a8b 100644 (file)
@@ -34,9 +34,9 @@ if (-f $example) {
 }
 
 # Create the answer to what should be produced by this Makefile
-$answer = "$make_name: Entering directory `$wpath'\n"
+$answer = "$make_name: Entering directory '$wpath'\n"
         . "$delete_command EXAMPLE\n"
-        . "$make_name: Leaving directory `$wpath'\n";
+        . "$make_name: Leaving directory '$wpath'\n";
 
 &compare_output($answer,&get_logfile(1));
 
@@ -62,9 +62,9 @@ if (-f $example) {
 }
 
 # Create the answer to what should be produced by this Makefile
-$answer = "$make_name: Entering directory `$wpath'\n"
+$answer = "$make_name: Entering directory '$wpath'\n"
         . "$delete_command EXAMPLEslash\n"
-        . "$make_name: Leaving directory `$wpath'\n";
+        . "$make_name: Leaving directory '$wpath'\n";
 
 &compare_output($answer,&get_logfile(1));
 
index 8dc5d9b..d47a8d8 100644 (file)
@@ -51,9 +51,9 @@ $answer = "This is another included makefile\n";
 
 
 $answer = "$mkpath ANOTHER -f $makefile
-${make_name}[1]: Entering directory `$pwd'
+${make_name}[1]: Entering directory '$pwd'
 This is another included makefile
-${make_name}[1]: Leaving directory `$pwd'\n";
+${make_name}[1]: Leaving directory '$pwd'\n";
 
 &run_make_with_options($makefile,"-I $workdir recurse",&get_logfile);
 &compare_output($answer,&get_logfile(1));
index d3fde87..20b9f74 100644 (file)
@@ -12,7 +12,7 @@ a.x b.x: ; echo >> $@
 
 # Run it again: nothing should happen
 
-run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
+run_make_test(undef, '', "#MAKE#: 'a.x' is up to date.");
 
 # Now run it with -W b.x: should rebuild a.x
 
@@ -21,7 +21,7 @@ run_make_test(undef, '-W b.x', 'echo >> a.x');
 # Put the timestamp for a.x into the future; it should still be remade.
 
 utouch(1000, 'a.x');
-run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
+run_make_test(undef, '', "#MAKE#: 'a.x' is up to date.");
 run_make_test(undef, '-W b.x', 'echo >> a.x');
 
 # Clean up
index d87a786..e784e0d 100644 (file)
@@ -57,10 +57,10 @@ else {
 
 # Create the answer to what should be produced by this Makefile
 $answer = "cc -c main.c
-$make_name: *** No rule to make target `kbd.c', needed by `kbd.o'.
+$make_name: *** No rule to make target 'kbd.c', needed by 'kbd.o'.
 cc -c commands.c
 cc -c display.c
-$make_name: Target `edit' not remade because of errors.\n";
+$make_name: Target 'edit' not remade because of errors.\n";
 
 # COMPARE RESULTS
 
@@ -92,8 +92,9 @@ close(MAKEFILE);
 &run_make_with_options($makefile2, "-k", &get_logfile, $error_code);
 
 $answer = "exit 1
+$makefile2:9: recipe for target 'foo.o' failed
 $make_name: *** [foo.o] Error 1
-$make_name: Target `all' not remade because of errors.\n";
+$make_name: Target 'all' not remade because of errors.\n";
 
 &compare_output($answer, &get_logfile(1));
 
@@ -106,8 +107,8 @@ ifile: no-such-file; @false
 ',
               '-k',
               "#MAKEFILE#:2: ifile: No such file or directory
-#MAKE#: *** No rule to make target `no-such-file', needed by `ifile'.
-#MAKE#: Failed to remake makefile `ifile'.
+#MAKE#: *** No rule to make target 'no-such-file', needed by 'ifile'.
+#MAKE#: Failed to remake makefile 'ifile'.
 hi\n",
               512);
 
index de19f42..dfed419 100644 (file)
@@ -3,37 +3,24 @@ $description = "Test the -n option.\n";
 
 $details = "Try various uses of -n and ensure they all give the correct results.\n";
 
-open(MAKEFILE, "> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE <<'EOMAKE';
+touch('orig');
 
+run_make_test(q!
 final: intermediate ; echo >> $@
 intermediate: orig ; echo >> $@
-
-EOMAKE
-
-close(MAKEFILE);
-
-&touch('orig');
-
-# TEST 0
-
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "echo >> intermediate\necho >> final\n";
-&compare_output($answer, &get_logfile(1));
+!,
+              '', "echo >> intermediate\necho >> final\n");
 
 # TEST 1
 
-&run_make_with_options($makefile, "-Worig -n", &get_logfile);
-$answer = "echo >> intermediate\necho >> final\n";
-&compare_output($answer, &get_logfile(1));
+run_make_test(undef, '-Worig -n', "echo >> intermediate\necho >> final\n");
 
-unlink('orig', 'intermediate', 'final');
+rmfiles(qw(orig intermediate final));
 
 # We consider the actual updated timestamp of targets with all
-# recursive commands, even with -n.
+# recursive commands, even with -n.  Switching this to the new model
+# is non-trivial because we use a trick below to change the log content
+# before we compare it ...
 
 $makefile2 = &get_tmpfile;
 
@@ -56,15 +43,58 @@ close(MAKEFILE);
 # TEST 2
 
 &run_make_with_options($makefile2, "", &get_logfile);
-$answer = "$make_name: `a' is up to date.\n";
+$answer = "$make_name: 'a' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 # TEST 3
 
 &run_make_with_options($makefile2, "-n", &get_logfile);
-$answer = "$make_name: `a' is up to date.\n";
+$answer = "$make_name: 'a' is up to date.\n";
+&compare_output($answer, &get_logfile(1));
+
+# TEST 4
+
+unlink(qw(a b));
+
+&run_make_with_options($makefile2, "-t -n", &get_logfile);
+
+open(DASH_N_LOG, ">>" . &get_logfile(1));
+print DASH_N_LOG "a exists but should not!\n" if -e 'a';
+print DASH_N_LOG "b exists but should not!\n" if -e 'b';
+close(DASH_N_LOG);
+
+&compare_output("touch b\ntouch a\n", &get_logfile(1));
+
+# CLEANUP
+
+unlink(qw(a b c));
+
+# Ensure -n continues to be included with recursive/re-execed make
+# See Savannah bug #38051
+
+$topmake = &get_tmpfile;
+$submake = &get_tmpfile;
+
+open(MAKEFILE, "> $topmake");
+print MAKEFILE <<"EOF";
+foo: ; \@\$(MAKE) -f "$submake" bar
+EOF
+close(MAKEFILE);
+
+
+# The bar target should print what would happen, but not actually run
+open(MAKEFILE, "> $submake");
+print MAKEFILE <<'EOF';
+inc: ; touch $@
+-include inc
+bar: ; @echo $(strip $(MAKEFLAGS))
+EOF
+close(MAKEFILE);
+
+&run_make_with_options($topmake, '-n --no-print-directory', &get_logfile);
+$answer = "$make_path -f \"$submake\" bar\ntouch inc\necho n --no-print-directory\n";
 &compare_output($answer, &get_logfile(1));
 
-unlink('a', 'b', 'c');
+unlink('inc');
 
 1;
index 06a035c..0f82409 100644 (file)
@@ -16,4 +16,14 @@ recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!,
 run_make_test(undef, '--no-print-directory --eval=\$\(info\ eval\) recurse',
               "eval\neval\nall\nrecurse");
 
+# Make sure that --eval is handled correctly during restarting
+run_make_test(q!
+all: ; @echo $@
+-include gen.mk
+gen.mk: ; @echo > $@
+!,
+              '--eval=\$\(info\ eval\)', "eval\neval\nall");
+
+unlink('gen.mk');
+
 1;
diff --git a/tests/scripts/options/print-directory b/tests/scripts/options/print-directory
new file mode 100644 (file)
index 0000000..a05bbee
--- /dev/null
@@ -0,0 +1,33 @@
+#                                                                    -*-perl-*-
+
+$description = "Test the -w option to GNU make.";
+
+# Simple test without -w
+run_make_test(q!
+all: ; @echo hi
+!,
+        "", "hi\n");
+
+# Simple test with -w
+run_make_test(undef, "-w",
+              "#MAKE#: Entering directory '#PWD#'\nhi\n#MAKE#: Leaving directory '#PWD#'\n");
+
+# Test makefile rebuild to ensure no enter/leave
+run_make_test(q!
+include foo
+all: ;@:
+foo: ; touch foo
+!,
+        "", "#MAKEFILE#:2: foo: No such file or directory\ntouch foo\n");
+unlink('foo');
+
+# Test makefile rebuild with -w
+run_make_test(q!
+include foo
+all: ;@:
+foo: ; touch foo
+!,
+        "-w", "#MAKE#: Entering directory '#PWD#'\n#MAKEFILE#:2: foo: No such file or directory\ntouch foo\n#MAKE#: Leaving directory '#PWD#'\n");
+unlink('foo');
+
+1;
index 40d2564..a1bfce0 100644 (file)
@@ -26,7 +26,7 @@ if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
   # Without -L, nothing should happen
   # With -L, it should update targ
   run_make_test('targ: sym ; @echo make $@ from $<', '',
-                "#MAKE#: `targ' is up to date.");
+                "#MAKE#: 'targ' is up to date.");
   run_make_test(undef, '-L', "make targ from sym");
 
   # Now update dep; in all cases targ should be out of date.
@@ -36,8 +36,8 @@ if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
 
   # Now update targ; in all cases targ should be up to date.
   &touch('targ');
-  run_make_test(undef, '', "#MAKE#: `targ' is up to date.");
-  run_make_test(undef, '-L', "#MAKE#: `targ' is up to date.");
+  run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
+  run_make_test(undef, '-L', "#MAKE#: 'targ' is up to date.");
 
   # Add in a new link between sym and dep.  Be sure it's newer than targ.
   sleep(1);
@@ -46,7 +46,7 @@ if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
 
   # Without -L, nothing should happen
   # With -L, it should update targ
-  run_make_test(undef, '', "#MAKE#: `targ' is up to date.");
+  run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
   run_make_test(undef, '-L', "make targ from sym");
 
   rmfiles('targ', 'dep', 'sym', 'dep1');
@@ -56,7 +56,7 @@ if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
 
   symlink("../$dirname/dep", 'sym');
   run_make_test('targ: sym ; @echo make $@ from $<', '',
-                "#MAKE#: *** No rule to make target `sym', needed by `targ'.  Stop.", 512);
+                "#MAKE#: *** No rule to make target 'sym', needed by 'targ'.  Stop.", 512);
 
   run_make_test('targ: sym ; @echo make $@ from $<', '-L',
                 'make targ from sym');
index 34bfaea..ce15507 100644 (file)
@@ -18,8 +18,8 @@ all: ; @echo ref $(EREF) $(UREF)',
 
 # With --warn-undefined-variables, it should warn me
 run_make_test(undef, '--warn-undefined-variables',
-              "#MAKEFILE#:7: warning: undefined variable `UNDEFINED'
-#MAKEFILE#:9: warning: undefined variable `UNDEFINED'
+              "#MAKEFILE#:7: warning: undefined variable 'UNDEFINED'
+#MAKEFILE#:9: warning: undefined variable 'UNDEFINED'
 ref");
 
 1;
index 0cabde9..f3d5148 100644 (file)
@@ -35,9 +35,9 @@ close(MAKEFILE);
 &run_make_with_options($makefile,'bar',&get_logfile);
 
 # Create the answer to what should be produced by this Makefile
-$answer = "${make_name}[1]: Entering directory `$pwd'\n"
+$answer = "${make_name}[1]: Entering directory '$pwd'\n"
         . "Executing rule BAR\n"
-        . "${make_name}[1]: Leaving directory `$pwd'\n";
+        . "${make_name}[1]: Leaving directory '$pwd'\n";
 
 # COMPARE RESULTS
 
index 4fdd7a2..2b3021b 100644 (file)
@@ -42,7 +42,7 @@ $answer = "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n";
 # TEST #1
 
 &run_make_with_options($makefile,'foo.d',&get_logfile);
-$answer = "$make_name: `foo.d' is up to date.\n";
+$answer = "$make_name: 'foo.d' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 # TEST #2
@@ -63,7 +63,7 @@ $answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm bar.e foo
 # TEST #4
 
 &run_make_with_options($makefile,'foo.c',&get_logfile);
-$answer = "$make_name: `foo.c' is up to date.\n";
+$answer = "$make_name: 'foo.c' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 # TEST #5
index 997423f..87713da 100644 (file)
@@ -4,6 +4,10 @@ $description = "Test the behaviour of the .ONESHELL target.";
 
 $details = "";
 
+# Some shells (*shakes fist at Solaris*) cannot handle multiple flags in
+# separate arguments.
+my $t = `/bin/sh -e -c true 2>/dev/null`;
+my $multi_ok = $? == 0;
 
 # Simple
 
@@ -17,6 +21,21 @@ all:
 [ 0"$a" -eq "$$" ] || echo fail
 ');
 
+# Simple but use multi-word SHELLFLAGS
+
+if ($multi_ok) {
+    run_make_test(q!
+.ONESHELL:
+.SHELLFLAGS = -e -c
+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!
index 9c30e18..a24e3bc 100644 (file)
@@ -1,6 +1,6 @@
 #                                                                    -*-perl-*-
 
-$description = "Test the behaviour of the .PHONY target.";
+$description = "Test the behaviour of the .POSIX target.";
 
 $details = "";
 
@@ -17,7 +17,8 @@ run_make_test(qq!
 .POSIX:
 all: ; \@$script
 !,
-              '', "#MAKE#: *** [all] Error $err\n", 512);
+              '', "#MAKEFILE#:3: recipe for target 'all' failed
+#MAKE#: *** [all] Error $err\n", 512);
 
 # User settings must override .POSIX
 $flags = '-xc';
@@ -29,5 +30,28 @@ all: ; \@$script
 !,
               '', $out);
 
+# Test the default value of various POSIX-specific variables
+my %POSIX = (AR => 'ar', ARFLAGS => '-rv',
+             YACC => 'yacc', YFLAGS => '',
+             LEX => 'lex', LFLAGS => '',
+             LDFLAGS => '',
+             CC => 'c99', CFLAGS => '-O',
+             FC => 'fort77', FFLAGS => '-O 1',
+             GET => 'get', GFLAGS => '',
+             SCCSFLAGS => '', SCCSGETFLAGS => '-s');
+my $make = join('', map { "\t\@echo '$_=\$($_)'\n" } sort keys %POSIX);
+my $r = join('', map { "$_=$POSIX{$_}\n"} sort keys %POSIX);
+run_make_test(qq!
+.POSIX:
+all:
+$make
+!,
+              '', $r);
+
+# Make sure that local settings take precedence
+%extraENV = map { $_ => "xx-$_" } keys %POSIX;
+$r = join('', map { "$_=xx-$_\n"} sort keys %POSIX);
+run_make_test(undef, '', $r);
+
 # This tells the test driver that the perl test script executed properly.
 1;
index c954ee9..447c275 100644 (file)
@@ -44,7 +44,7 @@ $answer = "cp foo.f foo.e\ncp foo.e foo.d\n";
 unlink('foo.e');
 
 &run_make_with_options($makefile,'foo.d',&get_logfile);
-$answer = "$make_name: `foo.d' is up to date.\n";
+$answer = "$make_name: 'foo.d' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 # TEST #3
@@ -67,7 +67,7 @@ $answer = "cp foo.e foo.c\n";
 unlink('foo.e');
 
 &run_make_with_options($makefile,'foo.c',&get_logfile);
-$answer = "$make_name: `foo.c' is up to date.\n";
+$answer = "$make_name: 'foo.c' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 # TEST #6
@@ -103,7 +103,7 @@ close(MAKEFILE);
 touch('final');
 
 &run_make_with_options($makefile2, '', &get_logfile);
-$answer = "$make_name: `final' is up to date.\n";
+$answer = "$make_name: 'final' is up to date.\n";
 &compare_output($answer, &get_logfile(1));
 
 unlink('source', 'final', 'intermediate');
@@ -129,10 +129,11 @@ touch(qw(1.a 2.a));
 run_make_test('
 %.c : %.b ; cp $< $@
 %.b : %.a ; cp $< $@
-all : 1.c 2.c', '-rR -j',
+all : 1.c 2.c
+2.a: 1.c', '-rR -j',
 'cp 1.a 1.b
-cp 2.a 2.b
 cp 1.b 1.c
+cp 2.a 2.b
 cp 2.b 2.c
 rm 1.b 2.b');
 
index 1c06506..8188ce7 100644 (file)
@@ -42,7 +42,7 @@ run_make_test('
 .DEFAULT_GOAL = foo
 ',
 '',
-'#MAKE#: *** No rule to make target `foo\'.  Stop.',
+"#MAKE#: *** No rule to make target 'foo'.  Stop.",
 512);
 
 
diff --git a/tests/scripts/variables/GNUMAKEFLAGS b/tests/scripts/variables/GNUMAKEFLAGS
new file mode 100644 (file)
index 0000000..e9c0d55
--- /dev/null
@@ -0,0 +1,42 @@
+#                                                                    -*-perl-*-
+
+$description = "Test proper behavior of GNUMAKEFLAGS";
+
+# Accept flags from GNUMAKEFLAGS as well as MAKEFLAGS
+# Results always go in MAKEFLAGS
+
+$extraENV{'GNUMAKEFLAGS'} = '-e -r -R';
+
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+              '', 'erR');
+
+# Long arguments mean everything is prefixed with "-"
+
+$extraENV{'GNUMAKEFLAGS'} = '--no-print-directory -e -r -R --trace';
+
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+              '', "#MAKEFILE#:2: target 'all' does not exist
+echo erR --trace --no-print-directory
+erR --trace --no-print-directory");
+
+# Verify that re-exec / recursion doesn't duplicate flags from GNUMAKEFLAGS
+
+unlink('x.mk');
+
+$extraENV{GNUMAKEFLAGS} = '-Itst/bad -Oline';
+
+run_make_test(q!
+recurse: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAGS; #MAKEPATH# -f #MAKEFILE# all
+all: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAGS
+-include x.mk
+x.mk: ; @echo $@; echo MAKEFLAGS = $$MAKEFLAGS; echo GNUMAKEFLAGS = $$GNUMAKEFLAGS; echo > $@
+!,
+              "", "x.mk\nMAKEFLAGS = -Itst/bad -Oline\nGNUMAKEFLAGS =\nrecurse\nMAKEFLAGS = -Itst/bad -Oline\nGNUMAKEFLAGS =\n#MAKE#[1]: Entering directory '#PWD#'\nall\nMAKEFLAGS = w -Itst/bad -Oline\nGNUMAKEFLAGS =\n#MAKE#[1]: Leaving directory '#PWD#'\n");
+
+unlink('x.mk');
+
+1;
index 826f2fa..9182954 100644 (file)
@@ -20,7 +20,7 @@ run_make_test('
 .LIBPATTERNS = mtest_foo.a mtest_%.a
 all: -lfoo ; @echo "build $@ from $<"
 ',
-              '', "#MAKE#: .LIBPATTERNS element `mtest_foo.a' is not a pattern
+              '', "#MAKE#: .LIBPATTERNS element 'mtest_foo.a' is not a pattern
 build all from mtest_foo.a\n");
 
 # TEST 2: target-specific override
index d1081da..dc62160 100644 (file)
@@ -16,8 +16,8 @@ foo:
 !,
               '',
               "#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n"
-              . "#MAKE#[1]: Entering directory `#PWD#'\n"
-              . "#MAKEPATH#\n#MAKE#[1]: Leaving directory `#PWD#'\n");
+              . "#MAKE#[1]: Entering directory '#PWD#'\n"
+              . "#MAKEPATH#\n#MAKE#[1]: Leaving directory '#PWD#'\n");
 
 rmfiles("foo");
 
index 0b567e8..8a5d0f6 100644 (file)
@@ -1,4 +1,4 @@
-#                                                                   -*-perl-*-
+#                                                                    -*-perl-*-
 
 $description = "Test proper behavior of MAKEFLAGS";
 
@@ -8,36 +8,34 @@ $details = "DETAILS";
 run_make_test(q!
 all: ; @echo $(MAKEFLAGS)
 !,
-              '-e -r -R', 'Rre');
+              '-e -r -R', 'erR');
 
 # Long arguments mean everything is prefixed with "-"
 run_make_test(q!
 all: ; @echo $(MAKEFLAGS)
 !,
-              '--no-print-directory -e -r -R', '--no-print-directory -Rre');
+              '--no-print-directory -e -r -R --trace', "#MAKEFILE#:2: target 'all' does not exist
+echo erR --trace --no-print-directory
+erR --trace --no-print-directory");
 
 
-if ($all_tests) {
-    # Recursive invocations of make should accumulate MAKEFLAGS values.
-    # Savannah bug #2216
-    run_make_test(q!
+# 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)'
+       @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)'
        @$(MAKE) -f #MAKEFILE# print
 print:
-       @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
-       @echo $(MSG)
+       @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)'
 .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');
-}
+jump Works: MAKEFLAGS=e --no-print-directory
+print Works: MAKEFLAGS=e --no-print-directory');
 
 1;
index 53ab738..ef8e368 100644 (file)
@@ -52,10 +52,10 @@ MAKE_RESTARTS=1
 foo.x:1: bar.x: No such file or directory
 MAKE_RESTARTS=2
 recurse MAKE_RESTARTS=
+#MAKE#[1]: Entering directory '#PWD#'
 MAKE_RESTARTS=
-#MAKE#[1]: Entering directory `#PWD#'
 all MAKE_RESTARTS=
-#MAKE#[1]: Leaving directory `#PWD#'");
+#MAKE#[1]: Leaving directory '#PWD#'");
 
 rmfiles('foo.x', 'bar.x');
 
index 7b7e7fe..1d01ba3 100644 (file)
@@ -70,6 +70,22 @@ all: ; \@$script
 !,
               '', $out);
 
+# Do it again but add spaces to SHELLFLAGS
+
+# Some shells (*shakes fist at Solaris*) cannot handle multiple flags in
+# separate arguments.
+my $t = `/bin/sh -e -c true 2>/dev/null`;
+my $multi_ok = $? == 0;
+
+if ($multi_ok) {
+    $flags = '-x -c';
+    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';
@@ -81,6 +97,7 @@ run_make_test(qq!
 .SHELLFLAGS = $flags
 all: ; \@$script
 !,
-              '', "$out#MAKE#: *** [all] Error $err\n", 512);
+              '', "$out#MAKEFILE#:3: recipe for target 'all' failed
+#MAKE#: *** [all] Error $err\n", 512);
 
 1;
index f91519e..7324cbc 100644 (file)
@@ -30,6 +30,10 @@ define simple :=
 @echo $(FOO)
 endef
 
+define posix ::=
+@echo $(FOO)
+endef
+
 append = @echo a
 
 define append +=
@@ -49,10 +53,54 @@ FOO = there
 
 all: ; $(multi)
        $(simple)
+       $(posix)
+       $(append)
+       $(cond)
+',
+              '', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n");
+
+# TEST 1a: Various new-style define/endef, with no spaces
+
+run_make_test('
+FOO = foo
+
+define multi=
+echo hi
+@echo $(FOO)
+endef # this is the end
+
+define simple:=
+@echo $(FOO)
+endef
+
+define posix::=
+@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)
+       $(posix)
        $(append)
        $(cond)
 ',
-              '', "echo hi\nhi\nthere\nfoo\na\nb\nfirst\n");
+              '', "echo hi\nhi\nthere\nfoo\nfoo\na\nb\nfirst\n");
 
 # TEST 2: define in true section of conditional (containing conditional)
 
@@ -112,7 +160,7 @@ ouch
 endef
 all: ; @echo ok
 ',
-              '', "#MAKEFILE#:3: extraneous text after `define' directive\nok\n");
+              '', "#MAKEFILE#:3: extraneous text after 'define' directive\nok\n");
 
 # TEST 7: NEGATIVE: extra text after endef
 
@@ -123,7 +171,7 @@ ouch
 endef $(NAME)
 all: ; @echo ok
 ',
-              '', "#MAKEFILE#:5: extraneous text after `endef' directive\nok\n");
+              '', "#MAKEFILE#:5: extraneous text after 'endef' directive\nok\n");
 
 # TEST 8: NEGATIVE: missing endef
 
@@ -134,7 +182,7 @@ define NAME =
 ouch
 endef$(NAME)
 ',
-              '', "#MAKEFILE#:4: *** missing `endef', unterminated `define'.  Stop.\n", 512);
+              '', "#MAKEFILE#:4: *** missing 'endef', unterminated 'define'.  Stop.\n", 512);
 
 # -------------------------
 # Make sure that prefix characters apply properly to define/endef values.
index 92feed6..ba133ea 100644 (file)
@@ -73,4 +73,24 @@ all: ; @echo $(foo)
 ',
               '', "Hello\n");
 
+# TEST 6: Simple using POSIX syntax
+run_make_test('
+bar = Goodbye
+foo ::= $(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Goodbye\n");
+
+# TEST 7: POSIX syntax no spaces
+run_make_test('
+bar = Goodbye
+foo::=$(bar)
+bar = ${ugh}
+ugh = Hello
+all: ; @echo $(foo)
+',
+              '', "Goodbye\n");
+
 1;
index b4baf5f..8967ffb 100644 (file)
@@ -75,4 +75,48 @@ a b: ; @echo $@=$(private)
 ',
                '', "b=a\na=a\n");
 
+# 9: make sure private suppresses inheritance
+run_make_test(q!
+DEFS = FOO
+all: bar1
+bar1: private DEFS += 1
+bar3: private DEFS += 3
+bar1: bar2
+bar2: bar3
+bar1 bar2 bar3: ; @echo '$@: $(DEFS)'
+!,
+              '', "bar3: FOO 3\nbar2: FOO\nbar1: FOO 1\n");
+
+# 10: Test append with pattern-specific variables and private
+
+run_make_test(q!
+IA = global
+PA = global
+PS = global
+S = global
+PS = global
+SV = global
+b%: IA += b%
+b%: private PA += b%
+b%: private PS = b%
+bar: all
+bar: IA += bar
+bar: private PA += bar
+bar: private PS = bar
+a%: IA += a%
+a%: private PA += a%
+a%: private PS = a%
+all: IA += all
+all: private PA += all
+all: private PS = all
+
+bar all: ; @echo '$@: IA=$(IA)'; echo '$@: PA=$(PA)'; echo '$@: PS=$(PS)'
+!,
+              '', "all: IA=global b% bar a% all
+all: PA=global a% all
+all: PS=all
+bar: IA=global b% bar
+bar: PA=global b% bar
+bar: PS=bar\n");
+
 1;
index a1e15c2..4637b2a 100644 (file)
@@ -53,7 +53,7 @@ all:
 # Test the .RECIPEPREFIX variable
 &run_make_test('
 define foo
-: foo-one \
+: foo-one\
 foo-two
 : foo-three
        : foo-four
index dec869d..2f83270 100644 (file)
@@ -5,9 +5,7 @@
 # Written 91-12-02 through 92-01-01 by Stephen McGee.
 # Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize.
 #
-# Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1991-2013 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
@@ -30,7 +28,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.30 2010/07/28 05:39:50 psmith Exp $
+# $Id$
 
 
 # The number of test categories we've run
@@ -89,6 +87,7 @@ sub toplevel
 
   foreach (# UNIX-specific things
            'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
+           'LD_LIBRARY_PATH',
            # Purify things
            'PURIFYOPTIONS',
            # Windows NT-specific stuff
@@ -131,7 +130,7 @@ sub toplevel
 
   &parse_command_line (@ARGV);
 
-  print "OS name = `$osname'\n" if $debug;
+  print "OS name = '$osname'\n" if $debug;
 
   $workpath = "$cwdslash$workdir";
   $scriptpath = "$cwdslash$scriptdir";
@@ -166,7 +165,7 @@ sub toplevel
         $dir = $1;
         push (@rmdirs, $dir);
         -d "$workpath/$dir"
-          || mkdir ("$workpath/$dir", 0777)
+           || mkdir ("$workpath/$dir", 0777)
            || &error ("Couldn't mkdir $workpath/$dir: $!\n");
       }
     }
@@ -175,7 +174,7 @@ sub toplevel
   {
     print "Finding tests...\n";
     opendir (SCRIPTDIR, $scriptpath)
-       || &error ("Couldn't opendir $scriptpath: $!\n");
+        || &error ("Couldn't opendir $scriptpath: $!\n");
     @dirs = grep (!/^(\..*|CVS|RCS)$/, readdir (SCRIPTDIR) );
     closedir (SCRIPTDIR);
     foreach $dir (@dirs)
@@ -185,13 +184,13 @@ sub toplevel
       mkdir ("$workpath/$dir", 0777)
            || &error ("Couldn't mkdir $workpath/$dir: $!\n");
       opendir (SCRIPTDIR, "$scriptpath/$dir")
-         || &error ("Couldn't opendir $scriptpath/$dir: $!\n");
+          || &error ("Couldn't opendir $scriptpath/$dir: $!\n");
       @files = grep (!/^(\..*|CVS|RCS|.*~)$/, readdir (SCRIPTDIR) );
       closedir (SCRIPTDIR);
       foreach $test (@files)
       {
         -d $test and next;
-       push (@TESTS, "$dir/$test");
+        push (@TESTS, "$dir/$test");
       }
     }
   }
@@ -203,7 +202,7 @@ sub toplevel
 
   print "\n";
 
-  &run_each_test;
+  run_all_tests();
 
   foreach $dir (@rmdirs)
   {
@@ -221,7 +220,7 @@ sub toplevel
     print "s" unless $total_tests_failed == 1;
     print " in $categories_failed Categor";
     print ($categories_failed == 1 ? "y" : "ies");
-    print " Failed (See .$diffext files in $workdir dir for details) :-(\n\n";
+    print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n";
     return 0;
   }
   else
@@ -276,15 +275,15 @@ sub get_osname
     eval "chop (\$osname = `sh -c 'uname -nmsr 2>&1'`)";
     if ($osname =~ /not found/i)
     {
-       $osname = "(something posixy with no uname)";
+        $osname = "(something posixy with no uname)";
     }
     elsif ($@ ne "" || $?)
     {
         eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)";
         if ($@ ne "" || $?)
         {
-           $osname = "(something posixy)";
-       }
+            $osname = "(something posixy)";
+        }
     }
     $vos = 0;
     $pathsep = "/";
@@ -416,128 +415,133 @@ sub print_banner
   print "\n";
 }
 
-sub run_each_test
+sub run_all_tests
 {
-  $categories_run = 0;
+    $categories_run = 0;
+
+    foreach $testname (sort @TESTS) {
+        $suite_passed = 1;       # reset by test on failure
+        $num_of_logfiles = 0;
+        $num_of_tmpfiles = 0;
+        $description = "";
+        $details = "";
+        $old_makefile = undef;
+        $testname =~ s/^$scriptpath$pathsep//;
+        $perl_testname = "$scriptpath$pathsep$testname";
+        $testname =~ s/(\.pl|\.perl)$//;
+        $testpath = "$workpath$pathsep$testname";
+        # Leave enough space in the extensions to append a number, even
+        # though it needs to fit into 8+3 limits.
+        if ($short_filenames) {
+            $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";
 
-  foreach $testname (sort @TESTS)
-  {
-    ++$categories_run;
-    $suite_passed = 1;       # reset by test on failure
-    $num_of_logfiles = 0;
-    $num_of_tmpfiles = 0;
-    $description = "";
-    $details = "";
-    $old_makefile = undef;
-    $testname =~ s/^$scriptpath$pathsep//;
-    $perl_testname = "$scriptpath$pathsep$testname";
-    $testname =~ s/(\.pl|\.perl)$//;
-    $testpath = "$workpath$pathsep$testname";
-    # Leave enough space in the extensions to append a number, even
-    # though it needs to fit into 8+3 limits.
-    if ($short_filenames) {
-      $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();
 
-    &setup_for_test;          # suite-defined
+        $output = "........................................................ ";
 
-    $output = "........................................................ ";
+        substr($output,0,length($testname)) = "$testname ";
 
-    substr($output,0,length($testname)) = "$testname ";
+        print $output;
 
-    print $output;
+        $tests_run = 0;
+        $tests_passed = 0;
 
-    # Run the actual test!
-    $tests_run = 0;
-    $tests_passed = 0;
+        # Run the test!
+        $code = do $perl_testname;
 
-    $code = do $perl_testname;
+        ++$categories_run;
+        $total_tests_run += $tests_run;
+        $total_tests_passed += $tests_passed;
 
-    $total_tests_run += $tests_run;
-    $total_tests_passed += $tests_passed;
+        # How did it go?
+        if (!defined($code)) {
+            # Failed to parse or called die
+            if (length ($@)) {
+                warn "\n*** Test died ($testname): $@\n";
+            } else {
+                warn "\n*** Couldn't parse $perl_testname\n";
+            }
+            $status = "FAILED ($tests_passed/$tests_run passed)";
+        }
 
-    # How did it go?
-    if (!defined($code))
-    {
-      $suite_passed = 0;
-      if (length ($@)) {
-        warn "\n*** Test died ($testname): $@\n";
-      } else {
-        warn "\n*** Couldn't run $perl_testname\n";
-      }
-    }
-    elsif ($code == -1) {
-      $suite_passed = 0;
-    }
-    elsif ($code != 1 && $code != -1) {
-      $suite_passed = 0;
-      warn "\n*** Test returned $code\n";
-    }
+        elsif ($code == -1) {
+            # Skipped... not supported
+            $status = "N/A";
+            --$categories_run;
+        }
 
-    if ($suite_passed) {
-      ++$categories_passed;
-      $status = "ok     ($tests_passed passed)";
-      for ($i = $num_of_tmpfiles; $i; $i--)
-      {
-        &rmfiles ($tmp_filename . &num_suffix ($i) );
-      }
+        elsif ($code != 1) {
+            # Bad result... this shouldn't really happen.  Usually means that
+            # the suite forgot to end with "1;".
+            warn "\n*** Test returned $code\n";
+            $status = "FAILED ($tests_passed/$tests_run passed)";
+        }
 
-      for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--)
-      {
-        &rmfiles ($log_filename . &num_suffix ($i) );
-        &rmfiles ($base_filename . &num_suffix ($i) );
-      }
-    }
-    elsif (!defined $code || $code > 0) {
-      $status = "FAILED ($tests_passed/$tests_run passed)";
-    }
-    elsif ($code < 0) {
-      $status = "N/A";
-      --$categories_run;
-    }
+        elsif ($tests_run == 0) {
+            # Nothing was done!!
+            $status = "FAILED (no tests found!)";
+        }
 
-    # If the verbose option has been specified, then a short description
-    # of each test is printed before displaying the results of each test
-    # describing WHAT is being tested.
+        elsif ($tests_run > $tests_passed) {
+            # Lose!
+            $status = "FAILED ($tests_passed/$tests_run passed)";
+        }
 
-    if ($verbose)
-    {
-      if ($detail)
-      {
-        print "\nWHAT IS BEING TESTED\n";
-        print "--------------------";
-      }
-      print "\n\n$description\n\n";
-    }
+        else {
+            # Win!
+            ++$categories_passed;
+            $status = "ok     ($tests_passed passed)";
+
+            # Clean up
+            for ($i = $num_of_tmpfiles; $i; $i--) {
+                rmfiles($tmp_filename . num_suffix($i));
+            }
+            for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--) {
+                rmfiles($log_filename . num_suffix($i));
+                rmfiles($base_filename . num_suffix($i));
+            }
+        }
 
-    # If the detail option has been specified, then the details of HOW
-    # the test is testing what it says it is testing in the verbose output
-    # will be displayed here before the results of the test are displayed.
+        # If the verbose option has been specified, then a short description
+        # of each test is printed before displaying the results of each test
+        # describing WHAT is being tested.
 
-    if ($detail)
-    {
-      print "\nHOW IT IS TESTED\n";
-      print "----------------";
-      print "\n\n$details\n\n";
-    }
+        if ($verbose) {
+            if ($detail) {
+                print "\nWHAT IS BEING TESTED\n";
+                print "--------------------";
+            }
+            print "\n\n$description\n\n";
+        }
 
-    print "$status\n";
-  }
+        # If the detail option has been specified, then the details of HOW
+        # the test is testing what it says it is testing in the verbose output
+        # will be displayed here before the results of the test are displayed.
+
+        if ($detail) {
+            print "\nHOW IT IS TESTED\n";
+            print "----------------";
+            print "\n\n$details\n\n";
+        }
+
+        print "$status\n";
+    }
 }
 
 # If the keep flag is not set, this subroutine deletes all filenames that
@@ -654,38 +658,43 @@ sub compare_output
   local($answer,$logfile) = @_;
   local($slurp, $answer_matched) = ('', 0);
 
-  print "Comparing Output ........ " if $debug;
+  ++$tests_run;
 
-  $slurp = &read_file_into_string ($logfile);
+  if (! defined $answer) {
+      print "Ignoring output ........ " if $debug;
+      $answer_matched = 1;
+  } else {
+      print "Comparing Output ........ " if $debug;
 
-  # For make, get rid of any time skew error before comparing--too bad this
-  # has to go into the "generic" driver code :-/
-  $slurp =~ s/^.*modification time .*in the future.*\n//gm;
-  $slurp =~ s/^.*Clock skew detected.*\n//gm;
+      $slurp = &read_file_into_string ($logfile);
 
-  ++$tests_run;
+      # For make, get rid of any time skew error before comparing--too bad this
+      # has to go into the "generic" driver code :-/
+      $slurp =~ s/^.*modification time .*in the future.*\n//gm;
+      $slurp =~ s/^.*Clock skew detected.*\n//gm;
 
-  if ($slurp eq $answer) {
-    $answer_matched = 1;
-  } else {
-    # See if it is a slash or CRLF problem
-    local ($answer_mod, $slurp_mod) = ($answer, $slurp);
+      if ($slurp eq $answer) {
+          $answer_matched = 1;
+      } else {
+          # See if it is a slash or CRLF problem
+          local ($answer_mod, $slurp_mod) = ($answer, $slurp);
 
-    $answer_mod =~ tr,\\,/,;
-    $answer_mod =~ s,\r\n,\n,gs;
+          $answer_mod =~ tr,\\,/,;
+          $answer_mod =~ s,\r\n,\n,gs;
 
-    $slurp_mod =~ tr,\\,/,;
-    $slurp_mod =~ 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_mod 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 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)
@@ -707,11 +716,8 @@ sub compare_output
 
     local($command) = "diff -c " . &get_basefile . " " . $logfile;
     &run_command_with_output(&get_difffile,$command);
-  } else {
-      &rmfiles ();
   }
 
-  $suite_passed = 0;
   return 0;
 }
 
@@ -731,6 +737,9 @@ sub read_file_into_string
   return $slurp;
 }
 
+my @OUTSTACK = ();
+my @ERRSTACK = ();
+
 sub attach_default_output
 {
   local ($filename) = @_;
@@ -743,17 +752,16 @@ sub attach_default_output
     return 1;
   }
 
-  open ("SAVEDOS" . $default_output_stack_level . "out", ">&STDOUT")
-        || &error ("ado: $! duping STDOUT\n", 1);
-  open ("SAVEDOS" . $default_output_stack_level . "err", ">&STDERR")
-        || &error ("ado: $! duping STDERR\n", 1);
+  my $dup = undef;
+  open($dup, '>&', STDOUT) or error("ado: $! duping STDOUT\n", 1);
+  push @OUTSTACK, $dup;
 
-  open (STDOUT, "> " . $filename)
-        || &error ("ado: $filename: $!\n", 1);
-  open (STDERR, ">&STDOUT")
-        || &error ("ado: $filename: $!\n", 1);
+  $dup = undef;
+  open($dup, '>&', STDERR) or error("ado: $! duping STDERR\n", 1);
+  push @ERRSTACK, $dup;
 
-  $default_output_stack_level++;
+  open(STDOUT, '>', $filename) or error("ado: $filename: $!\n", 1);
+  open(STDERR, ">&STDOUT") or error("ado: $filename: $!\n", 1);
 }
 
 # close the current stdout/stderr, and restore the previous ones from
@@ -770,23 +778,13 @@ sub detach_default_output
     return 1;
   }
 
-  if (--$default_output_stack_level < 0)
-  {
-    &error ("default output stack has flown under!\n", 1);
-  }
-
-  close (STDOUT);
-  close (STDERR);
+  @OUTSTACK or error("default output stack has flown under!\n", 1);
 
-  open (STDOUT, ">&SAVEDOS" . $default_output_stack_level . "out")
-        || &error ("ddo: $! duping STDOUT\n", 1);
-  open (STDERR, ">&SAVEDOS" . $default_output_stack_level . "err")
-        || &error ("ddo: $! duping STDERR\n", 1);
+  close(STDOUT);
+  close(STDERR);
 
-  close ("SAVEDOS" . $default_output_stack_level . "out")
-        || &error ("ddo: $! closing SCSDOSout\n", 1);
-  close ("SAVEDOS" . $default_output_stack_level . "err")
-         || &error ("ddo: $! closing SAVEDOSerr\n", 1);
+  open (STDOUT, '>&', pop @OUTSTACK) or error("ddo: $! duping STDOUT\n", 1);
+  open (STDERR, '>&', pop @ERRSTACK) or error("ddo: $! duping STDERR\n", 1);
 }
 
 # This runs a command without any debugging info.
@@ -800,14 +798,19 @@ sub _run_command
   resetENV();
 
   eval {
-      local $SIG{ALRM} = sub { die "timeout\n"; };
+      my $pid = fork();
+      if (! $pid) {
+          exec(@_) or die "Cannot execute $_[0]\n";
+      }
+      local $SIG{ALRM} = sub { my $e = $ERRSTACK[0]; print $e "\nTest timed out after $test_timeout seconds\n"; die "timeout\n"; };
       alarm $test_timeout;
-      $code = system(@_);
+      waitpid($pid, 0) > 0 or die "No such pid: $pid\n";
+      $code = $?;
       alarm 0;
   };
   if ($@) {
       # The eval failed.  If it wasn't SIGALRM then die.
-      $@ eq "timeout\n" or die;
+      $@ eq "timeout\n" or die "Command failed: $@";
 
       # Timed out.  Resend the alarm to our process group to kill the children.
       $SIG{ALRM} = 'IGNORE';
@@ -841,8 +844,12 @@ sub run_command_with_output
 
   print "\nrun_command_with_output($filename,$runname): @_\n" if $debug;
   &attach_default_output ($filename);
-  my $code = _run_command(@_);
+  my $code = eval { _run_command(@_) };
+  my $err = $@;
   &detach_default_output;
+
+  $err and die $err;
+
   print "run_command_with_output returned $code.\n" if $debug;
 
   return $code;
@@ -942,7 +949,7 @@ sub touch
 
   foreach $file (@_) {
     (open(T, ">> $file") && print(T "\n") && close(T))
-       || &error("Couldn't touch $file: $!\n", 1);
+        || &error("Couldn't touch $file: $!\n", 1);
   }
 }
 
index 915be20..2ff14b6 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,12 +14,12 @@ 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 "make.h"
+#include "makeint.h"
 
 #include <assert.h>
 
-#include "dep.h"
 #include "filedef.h"
+#include "dep.h"
 #include "job.h"
 #include "commands.h"
 #include "variable.h"
@@ -100,7 +98,7 @@ static struct pattern_var *
 lookup_pattern_var (struct pattern_var *start, const char *target)
 {
   struct pattern_var *p;
-  unsigned int targlen = strlen(target);
+  unsigned int targlen = strlen (target);
 
   for (p = start ? start->next : pattern_vars; p != 0; p = p->next)
     {
@@ -160,14 +158,14 @@ variable_hash_cmp (const void *xv, const void *yv)
   return_STRING_N_COMPARE (x->name, y->name, x->length);
 }
 
-#ifndef        VARIABLE_BUCKETS
-#define VARIABLE_BUCKETS               523
+#ifndef VARIABLE_BUCKETS
+#define VARIABLE_BUCKETS                523
 #endif
-#ifndef        PERFILE_VARIABLE_BUCKETS
-#define        PERFILE_VARIABLE_BUCKETS        23
+#ifndef PERFILE_VARIABLE_BUCKETS
+#define PERFILE_VARIABLE_BUCKETS        23
 #endif
-#ifndef        SMALL_SCOPE_VARIABLE_BUCKETS
-#define        SMALL_SCOPE_VARIABLE_BUCKETS    13
+#ifndef SMALL_SCOPE_VARIABLE_BUCKETS
+#define SMALL_SCOPE_VARIABLE_BUCKETS    13
 #endif
 
 static struct variable_set global_variable_set;
@@ -181,7 +179,7 @@ void
 init_hash_global_variable_set (void)
 {
   hash_init (&global_variable_set.table, VARIABLE_BUCKETS,
-            variable_hash_1, variable_hash_2, variable_hash_cmp);
+             variable_hash_1, variable_hash_2, variable_hash_cmp);
 }
 
 /* Define variable named NAME with value VALUE in SET.  VALUE is copied.
@@ -195,7 +193,7 @@ 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)
+                        const gmk_floc *flocp)
 {
   struct variable *v;
   struct variable **var_slot;
@@ -215,25 +213,25 @@ define_variable_in_set (const char *name, unsigned int length,
   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;
+        /* 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;
 
       /* A variable of this name is already defined.
-        If the old definition is from a stronger source
-        than this one, don't redefine it.  */
+         If the old definition is from a stronger source
+         than this one, don't redefine it.  */
       if ((int) origin >= (int) v->origin)
-       {
-         if (v->value != 0)
-           free (v->value);
-         v->value = xstrdup (value);
+        {
+          if (v->value != 0)
+            free (v->value);
+          v->value = xstrdup (value);
           if (flocp != 0)
             v->fileinfo = *flocp;
           else
             v->fileinfo.filenm = 0;
-         v->origin = origin;
-         v->recursive = recursive;
-       }
+          v->origin = origin;
+          v->recursive = recursive;
+        }
       return v;
     }
 
@@ -282,7 +280,21 @@ define_variable_in_set (const char *name, unsigned int length,
    variable (makefile, command line or environment). */
 
 static void
-free_variable_name_and_value (const void *item);
+free_variable_name_and_value (const void *item)
+{
+  struct variable *v = (struct variable *) item;
+  free (v->name);
+  free (v->value);
+}
+
+void
+free_variable_set (struct variable_set_list *list)
+{
+  hash_map (&list->set->table, free_variable_name_and_value);
+  hash_free (&list->set->table, 1);
+  free (list->set);
+  free (list);
+}
 
 void
 undefine_variable_in_set (const char *name, unsigned int length,
@@ -307,17 +319,17 @@ undefine_variable_in_set (const char *name, unsigned int length,
   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;
+        /* 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);
-       }
+        }
     }
 }
 
@@ -412,7 +424,7 @@ lookup_special_var (struct variable *var)
 \f
 /* Lookup a variable whose name is a string starting at NAME
    and with LENGTH chars.  NAME need not be null-terminated.
-   Returns address of the `struct variable' containing all info
+   Returns address of the 'struct variable' containing all info
    on the variable, or nil if no such variable is defined.  */
 
 struct variable *
@@ -433,7 +445,7 @@ lookup_variable (const char *name, unsigned int length)
 
       v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
       if (v && (!is_parent || !v->private_var))
-       return v->special ? lookup_special_var (v) : v;
+        return v->special ? lookup_special_var (v) : v;
 
       is_parent |= setlist->next_is_parent;
     }
@@ -499,7 +511,7 @@ lookup_variable (const char *name, unsigned int length)
 \f
 /* Lookup a variable whose name is a string starting at NAME
    and with LENGTH chars in set SET.  NAME need not be null-terminated.
-   Returns address of the `struct variable' containing all info
+   Returns address of the 'struct variable' containing all info
    on the variable, or nil if no such variable is defined.  */
 
 struct variable *
@@ -531,7 +543,7 @@ initialize_file_variables (struct file *file, int reading)
   if (l == 0)
     {
       l = (struct variable_set_list *)
-       xmalloc (sizeof (struct variable_set_list));
+        xmalloc (sizeof (struct variable_set_list));
       l->set = xmalloc (sizeof (struct variable_set));
       hash_init (&l->set->table, PERFILE_VARIABLE_BUCKETS,
                  variable_hash_1, variable_hash_2, variable_hash_cmp);
@@ -634,7 +646,7 @@ create_new_variable_set (void)
 
   set = xmalloc (sizeof (struct variable_set));
   hash_init (&set->table, SMALL_SCOPE_VARIABLE_BUCKETS,
-            variable_hash_1, variable_hash_2, variable_hash_cmp);
+             variable_hash_1, variable_hash_2, variable_hash_cmp);
 
   setlist = (struct variable_set_list *)
     xmalloc (sizeof (struct variable_set_list));
@@ -645,23 +657,6 @@ create_new_variable_set (void)
   return setlist;
 }
 
-static void
-free_variable_name_and_value (const void *item)
-{
-  struct variable *v = (struct variable *) item;
-  free (v->name);
-  free (v->value);
-}
-
-void
-free_variable_set (struct variable_set_list *list)
-{
-  hash_map (&list->set->table, free_variable_name_and_value);
-  hash_free (&list->set->table, 1);
-  free (list->set);
-  free (list);
-}
-
 /* Create a new variable set and push it on the current setlist.
    If we're pushing a global scope (that is, the current scope is the global
    scope) then we need to "push" it the other way: file variable sets point
@@ -671,7 +666,7 @@ free_variable_set (struct variable_set_list *list)
 struct variable_set_list *
 push_new_variable_scope (void)
 {
-  current_variable_set_list = create_new_variable_set();
+  current_variable_set_list = create_new_variable_set ();
   if (current_variable_set_list->next == &global_setlist)
     {
       /* It was the global, so instead of new -> &global we want to replace
@@ -694,7 +689,7 @@ pop_variable_scope (void)
   struct variable_set *set;
 
   /* Can't call this if there's no scope to pop!  */
-  assert(current_variable_set_list->next != NULL);
+  assert (current_variable_set_list->next != NULL);
 
   if (current_variable_set_list != &global_setlist)
     {
@@ -734,17 +729,17 @@ merge_variable_sets (struct variable_set *to_set,
   for ( ; from_var_slot < from_var_end; from_var_slot++)
     if (! HASH_VACANT (*from_var_slot))
       {
-       struct variable *from_var = *from_var_slot;
-       struct variable **to_var_slot
-         = (struct variable **) hash_find_slot (&to_set->table, *from_var_slot);
-       if (HASH_VACANT (*to_var_slot))
-         hash_insert_at (&to_set->table, from_var, to_var_slot);
-       else
-         {
-           /* GKM FIXME: delete in from_set->table */
-           free (from_var->value);
-           free (from_var);
-         }
+        struct variable *from_var = *from_var_slot;
+        struct variable **to_var_slot
+          = (struct variable **) hash_find_slot (&to_set->table, *from_var_slot);
+        if (HASH_VACANT (*to_var_slot))
+          hash_insert_at (&to_set->table, from_var, to_var_slot);
+        else
+          {
+            /* GKM FIXME: delete in from_set->table */
+            free (from_var->value);
+            free (from_var);
+          }
       }
 }
 
@@ -778,9 +773,9 @@ merge_variable_set_lists (struct variable_set_list **setlist0,
   if (setlist1 != &global_setlist)
     {
       if (last0 == 0)
-       *setlist0 = setlist1;
+        *setlist0 = setlist1;
       else
-       last0->next = setlist1;
+        last0->next = setlist1;
     }
 }
 \f
@@ -802,12 +797,13 @@ define_automatic_variables (void)
   define_variable_cname (MAKELEVEL_NAME, buf, o_env, 0);
 
   sprintf (buf, "%s%s%s",
-          version_string,
-          (remote_description == 0 || remote_description[0] == '\0')
-          ? "" : "-",
-          (remote_description == 0 || remote_description[0] == '\0')
-          ? "" : remote_description);
+           version_string,
+           (remote_description == 0 || remote_description[0] == '\0')
+           ? "" : "-",
+           (remote_description == 0 || remote_description[0] == '\0')
+           ? "" : remote_description);
   define_variable_cname ("MAKE_VERSION", buf, o_default, 0);
+  define_variable_cname ("MAKE_HOST", make_host, o_default, 0);
 
 #ifdef  __MSDOS__
   /* Allow to specify a special shell just for Make,
@@ -821,14 +817,14 @@ define_automatic_variables (void)
     /* $(MAKESHELL) overrides $(SHELL) even if -e is in effect.  */
     if (mshp)
       (void) define_variable (shell_str, shlen,
-                             mshp->value, o_env_override, 0);
+                              mshp->value, o_env_override, 0);
     else if (comp)
       {
-       /* $(COMSPEC) shouldn't override $(SHELL).  */
-       struct variable *shp = lookup_variable (shell_str, shlen);
+        /* $(COMSPEC) shouldn't override $(SHELL).  */
+        struct variable *shp = lookup_variable (shell_str, shlen);
 
-       if (!shp)
-         (void) define_variable (shell_str, shlen, comp->value, o_env, 0);
+        if (!shp)
+          (void) define_variable (shell_str, shlen, comp->value, o_env, 0);
       }
   }
 #elif defined(__EMX__)
@@ -846,13 +842,13 @@ define_automatic_variables (void)
        did not come from the environment */
     if (!replace || !*replace->value)
       if (shell && *shell->value && (shell->origin == o_env
-         || shell->origin == o_env_override))
-       {
-         /* overwrite whatever we got from the environment */
-         free(shell->value);
-         shell->value = xstrdup (default_shell);
-         shell->origin = o_default;
-       }
+          || shell->origin == o_env_override))
+        {
+          /* overwrite whatever we got from the environment */
+          free (shell->value);
+          shell->value = xstrdup (default_shell);
+          shell->origin = o_default;
+        }
 
     /* Some people do not like cmd to be used as the default
        if $SHELL is not defined in the Makefile.
@@ -872,11 +868,11 @@ define_automatic_variables (void)
     if (replace && *replace->value)
       /* overwrite $SHELL */
       (void) define_variable (shell_str, shlen, replace->value,
-                             replace->origin, 0);
+                              replace->origin, 0);
     else
       /* provide a definition if there is none */
       (void) define_variable (shell_str, shlen, default_shell,
-                             o_default, 0);
+                              o_default, 0);
   }
 
 #endif
@@ -917,7 +913,23 @@ define_automatic_variables (void)
   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
+#elif defined(__MSDOS__) || defined(WINDOWS32)
+  /* For consistency, remove the trailing backslash as well as slash.  */
+  define_variable_cname ("@D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $@)))",
+                         o_automatic, 1);
+  define_variable_cname ("%D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $%)))",
+                         o_automatic, 1);
+  define_variable_cname ("*D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $*)))",
+                         o_automatic, 1);
+  define_variable_cname ("<D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $<)))",
+                         o_automatic, 1);
+  define_variable_cname ("?D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $?)))",
+                         o_automatic, 1);
+  define_variable_cname ("^D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $^)))",
+                         o_automatic, 1);
+  define_variable_cname ("+D", "$(patsubst %/,%,$(patsubst %\\,%,$(dir $+)))",
+                         o_automatic, 1);
+#else  /* not __MSDOS__, not WINDOWS32 */
   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);
@@ -938,7 +950,7 @@ define_automatic_variables (void)
 int export_all_variables;
 
 /* Create a new environment for FILE's commands.
-   If FILE is nil, this is for the `shell' function.
+   If FILE is nil, this is for the 'shell' function.
    The child's MAKELEVEL variable is incremented.  */
 
 char **
@@ -959,7 +971,7 @@ target_environment (struct file *file)
     set_list = file->variables;
 
   hash_init (&table, VARIABLE_BUCKETS,
-            variable_hash_1, variable_hash_2, variable_hash_cmp);
+             variable_hash_1, variable_hash_2, variable_hash_cmp);
 
   /* Run through all the variable sets in the list,
      accumulating variables in TABLE.  */
@@ -969,68 +981,68 @@ target_environment (struct file *file)
       v_slot = (struct variable **) set->table.ht_vec;
       v_end = v_slot + set->table.ht_size;
       for ( ; v_slot < v_end; v_slot++)
-       if (! HASH_VACANT (*v_slot))
-         {
-           struct variable **new_slot;
-           struct variable *v = *v_slot;
-
-           /* If this is a per-target variable and it hasn't been touched
-              already then look up the global version and take its export
-              value.  */
-           if (v->per_target && v->export == v_default)
-             {
-               struct variable *gv;
-
-               gv = lookup_variable_in_set (v->name, strlen(v->name),
+        if (! HASH_VACANT (*v_slot))
+          {
+            struct variable **new_slot;
+            struct variable *v = *v_slot;
+
+            /* If this is a per-target variable and it hasn't been touched
+               already then look up the global version and take its export
+               value.  */
+            if (v->per_target && v->export == v_default)
+              {
+                struct variable *gv;
+
+                gv = lookup_variable_in_set (v->name, strlen (v->name),
                                              &global_variable_set);
-               if (gv)
-                 v->export = gv->export;
-             }
+                if (gv)
+                  v->export = gv->export;
+              }
 
-           switch (v->export)
-             {
-             case v_default:
-               if (v->origin == o_default || v->origin == o_automatic)
-                 /* Only export default variables by explicit request.  */
-                 continue;
+            switch (v->export)
+              {
+              case v_default:
+                if (v->origin == o_default || v->origin == o_automatic)
+                  /* Only export default variables by explicit request.  */
+                  continue;
 
                 /* The variable doesn't have a name that can be exported.  */
                 if (! v->exportable)
                   continue;
 
-               if (! export_all_variables
-                   && v->origin != o_command
-                   && v->origin != o_env && v->origin != o_env_override)
-                 continue;
-               break;
-
-             case v_export:
-               break;
-
-             case v_noexport:
-               {
-                 /* 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)
-                 continue;
-               break;
-             }
-
-           new_slot = (struct variable **) hash_find_slot (&table, v);
-           if (HASH_VACANT (*new_slot))
-             hash_insert_at (&table, v, new_slot);
-         }
+                if (! export_all_variables
+                    && v->origin != o_command
+                    && v->origin != o_env && v->origin != o_env_override)
+                  continue;
+                break;
+
+              case v_export:
+                break;
+
+              case v_noexport:
+                {
+                  /* 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)
+                  continue;
+                break;
+              }
+
+            new_slot = (struct variable **) hash_find_slot (&table, v);
+            if (HASH_VACANT (*new_slot))
+              hash_insert_at (&table, v, new_slot);
+          }
     }
 
   makelevel_key.name = MAKELEVEL_NAME;
@@ -1044,32 +1056,32 @@ target_environment (struct file *file)
   for ( ; v_slot < v_end; v_slot++)
     if (! HASH_VACANT (*v_slot))
       {
-       struct variable *v = *v_slot;
-
-       /* If V is recursively expanded and didn't come from the environment,
-          expand its value.  If it came from the environment, it should
-          go back into the environment unchanged.  */
-       if (v->recursive
-           && v->origin != o_env && v->origin != o_env_override)
-         {
-           char *value = recursively_expand_for_file (v, file);
+        struct variable *v = *v_slot;
+
+        /* If V is recursively expanded and didn't come from the environment,
+           expand its value.  If it came from the environment, it should
+           go back into the environment unchanged.  */
+        if (v->recursive
+            && v->origin != o_env && v->origin != o_env_override)
+          {
+            char *value = recursively_expand_for_file (v, file);
 #ifdef WINDOWS32
-           if (strcmp(v->name, "Path") == 0 ||
-               strcmp(v->name, "PATH") == 0)
-             convert_Path_to_windows32(value, ';');
+            if (strcmp (v->name, "Path") == 0 ||
+                strcmp (v->name, "PATH") == 0)
+              convert_Path_to_windows32 (value, ';');
 #endif
-           *result++ = xstrdup (concat (3, v->name, "=", value));
-           free (value);
-         }
-       else
-         {
+            *result++ = xstrdup (concat (3, v->name, "=", value));
+            free (value);
+          }
+        else
+          {
 #ifdef WINDOWS32
-            if (strcmp(v->name, "Path") == 0 ||
-                strcmp(v->name, "PATH") == 0)
-              convert_Path_to_windows32(v->value, ';');
+            if (strcmp (v->name, "Path") == 0 ||
+                strcmp (v->name, "PATH") == 0)
+              convert_Path_to_windows32 (v->value, ';');
 #endif
-           *result++ = xstrdup (concat (3, v->name, "=", v->value));
-         }
+            *result++ = xstrdup (concat (3, v->name, "=", v->value));
+          }
       }
 
   *result = xmalloc (100);
@@ -1095,11 +1107,34 @@ set_special_var (struct variable *var)
   return var;
 }
 \f
+/* Given a string, shell-execute it and return a malloc'ed string of the
+ * result. This removes only ONE newline (if any) at the end, for maximum
+ * compatibility with the *BSD makes.  If it fails, returns NULL. */
+
+char *
+shell_result (const char *p)
+{
+  char *buf;
+  unsigned int len;
+  char *args[2];
+  char *result;
+
+  install_variable_buffer (&buf, &len);
+
+  args[0] = (char *) p;
+  args[1] = NULL;
+  variable_buffer_output (func_shell_base (variable_buffer, args, 0), "\0", 1);
+  result = strdup (variable_buffer);
+
+  restore_variable_buffer (buf, len);
+  return result;
+}
+\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,
+do_variable_definition (const gmk_floc *flocp, const char *varname,
                         const char *value, enum variable_origin origin,
                         enum variable_flavor flavor, int target_var)
 {
@@ -1120,10 +1155,20 @@ do_variable_definition (const struct floc *flocp, const char *varname,
     case f_simple:
       /* A simple variable definition "var := value".  Expand the value.
          We have to allocate memory since otherwise it'll clobber the
-        variable buffer, and we may still need that if we're looking at a
+         variable buffer, and we may still need that if we're looking at a
          target-specific variable.  */
       p = alloc_value = allocated_variable_expand (value);
       break;
+    case f_shell:
+      {
+        /* A shell definition "var != value".  Expand value, pass it to
+           the shell, and store the result in recursively-expanded var. */
+        char *q = allocated_variable_expand (value);
+        p = alloc_value = shell_result (q);
+        free (q);
+        flavor = f_recursive;
+        break;
+      }
     case f_conditional:
       /* A conditional variable definition "var ?= value".
          The value is set IFF the variable is not defined yet. */
@@ -1136,7 +1181,7 @@ do_variable_definition (const struct floc *flocp, const char *varname,
       /* FALLTHROUGH */
     case f_recursive:
       /* A recursive variable definition "var = value".
-        The value is used verbatim.  */
+         The value is used verbatim.  */
       p = value;
       break;
     case f_append:
@@ -1201,7 +1246,7 @@ do_variable_definition (const struct floc *flocp, const char *varname,
 #ifdef __MSDOS__
   /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but
      non-Unix systems don't conform to this default configuration (in
-     fact, most of them don't even have `/bin').  On the other hand,
+     fact, most of them don't even have '/bin').  On the other hand,
      $SHELL in the environment, if set, points to the real pathname of
      the shell.
      Therefore, we generally won't let lines like "SHELL=/bin/sh" from
@@ -1220,62 +1265,62 @@ do_variable_definition (const struct floc *flocp, const char *varname,
 
       /* See if we can find "/bin/sh.exe", "/bin/sh.com", etc.  */
       if (__dosexec_find_on_path (p, NULL, shellpath))
-       {
-         char *tp;
+        {
+          char *tp;
 
-         for (tp = shellpath; *tp; tp++)
+          for (tp = shellpath; *tp; tp++)
             if (*tp == '\\')
               *tp = '/';
 
-         v = define_variable_loc (varname, strlen (varname),
+          v = define_variable_loc (varname, strlen (varname),
                                    shellpath, origin, flavor == f_recursive,
                                    flocp);
-       }
+        }
       else
-       {
-         const char *shellbase, *bslash;
-         struct variable *pathv = lookup_variable ("PATH", 4);
-         char *path_string;
-         char *fake_env[2];
-         size_t pathlen = 0;
-
-         shellbase = strrchr (p, '/');
-         bslash = strrchr (p, '\\');
-         if (!shellbase || bslash > shellbase)
-           shellbase = bslash;
-         if (!shellbase && p[1] == ':')
-           shellbase = p + 1;
-         if (shellbase)
-           shellbase++;
-         else
-           shellbase = p;
-
-         /* Search for the basename of the shell (with standard
-            executable extensions) along the $PATH.  */
-         if (pathv)
-           pathlen = strlen (pathv->value);
-         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] = 0;
-         if (__dosexec_find_on_path (shellbase, fake_env, shellpath))
-           {
-             char *tp;
-
-             for (tp = shellpath; *tp; tp++)
+        {
+          const char *shellbase, *bslash;
+          struct variable *pathv = lookup_variable ("PATH", 4);
+          char *path_string;
+          char *fake_env[2];
+          size_t pathlen = 0;
+
+          shellbase = strrchr (p, '/');
+          bslash = strrchr (p, '\\');
+          if (!shellbase || bslash > shellbase)
+            shellbase = bslash;
+          if (!shellbase && p[1] == ':')
+            shellbase = p + 1;
+          if (shellbase)
+            shellbase++;
+          else
+            shellbase = p;
+
+          /* Search for the basename of the shell (with standard
+             executable extensions) along the $PATH.  */
+          if (pathv)
+            pathlen = strlen (pathv->value);
+          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] = 0;
+          if (__dosexec_find_on_path (shellbase, fake_env, shellpath))
+            {
+              char *tp;
+
+              for (tp = shellpath; *tp; tp++)
                 if (*tp == '\\')
                   *tp = '/';
 
-             v = define_variable_loc (varname, strlen (varname),
+              v = define_variable_loc (varname, strlen (varname),
                                        shellpath, origin,
                                        flavor == f_recursive, flocp);
-           }
-         else
-           v = lookup_variable (varname, strlen (varname));
+            }
+          else
+            v = lookup_variable (varname, strlen (varname));
 
-         free (path_string);
-       }
+          free (path_string);
+        }
     }
   else
 #endif /* __MSDOS__ */
@@ -1286,7 +1331,7 @@ do_variable_definition (const struct floc *flocp, const char *varname,
       extern char *default_shell;
 
       /* Call shell locator function. If it returns TRUE, then
-        set no_default_sh_exe to indicate sh was found and
+         set no_default_sh_exe to indicate sh was found and
          set new value for SHELL variable.  */
 
       if (find_and_set_default_shell (p))
@@ -1347,61 +1392,72 @@ do_variable_definition (const struct floc *flocp, const char *varname,
 \f
 /* Parse P (a null-terminated string) as a variable definition.
 
-   If it is not a variable definition, return NULL.
+   If it is not a variable definition, return NULL and the contents of *VAR
+   are undefined, except NAME is set to the first non-space character or NIL.
 
    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.  */
+   assignment token and set the following fields (only) of *VAR:
+    name   : name of the variable (ALWAYS SET) (NOT NUL-TERMINATED!)
+    length : length of the variable name
+    value  : value of the variable (nul-terminated)
+    flavor : flavor of the variable
+   Other values in *VAR are unchanged.
+  */
 
 char *
-parse_variable_definition (const char *p, enum variable_flavor *flavor)
+parse_variable_definition (const char *p, struct variable *var)
 {
   int wspace = 0;
+  const char *e = NULL;
 
   p = next_token (p);
+  var->name = (char *)p;
+  var->length = 0;
 
   while (1)
     {
       int c = *p++;
 
       /* If we find a comment or EOS, it's not a variable definition.  */
-      if (c == '\0' || c == '#')
-       return NULL;
+      if (STOP_SET (c, MAP_COMMENT|MAP_NUL))
+        return NULL;
 
       if (c == '$')
-       {
-         /* 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++;
-         if (c == '(')
-           closeparen = ')';
-         else if (c == '{')
-           closeparen = '}';
-         else
+        {
+          /* 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++;
+          if (c == '(')
+            closeparen = ')';
+          else if (c == '{')
+            closeparen = '}';
+          else
             /* '$$' 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.  */
-         count = 0;
-         for (; *p != '\0'; ++p)
-           {
-             if (*p == c)
-               ++count;
-             else if (*p == closeparen && --count < 0)
-               {
-                 ++p;
-                 break;
-               }
-           }
+            continue;
+
+          /* P now points past the opening paren or brace.
+             Count parens or braces until it is matched.  */
+          count = 0;
+          for (; *p != '\0'; ++p)
+            {
+              if (*p == c)
+                ++count;
+              else if (*p == closeparen && --count < 0)
+                {
+                  ++p;
+                  break;
+                }
+            }
           continue;
-       }
+        }
 
       /* If we find whitespace skip it, and remember we found it.  */
       if (isblank ((unsigned char)c))
         {
           wspace = 1;
+          e = p - 1;
           p = next_token (p);
           c = *p;
           if (c == '\0')
@@ -1411,24 +1467,29 @@ parse_variable_definition (const char *p, enum variable_flavor *flavor)
 
 
       if (c == '=')
-       {
-         *flavor = f_recursive;
-         return (char *)p;
-       }
+        {
+          var->flavor = f_recursive;
+          if (! e)
+            e = p - 1;
+          break;
+        }
 
-      /* Match assignment variants (:=, +=, ?=)  */
+      /* Match assignment variants (:=, +=, ?=, !=)  */
       if (*p == '=')
         {
           switch (c)
             {
               case ':':
-                *flavor = f_simple;
+                var->flavor = f_simple;
                 break;
               case '+':
-                *flavor = f_append;
+                var->flavor = f_append;
                 break;
               case '?':
-                *flavor = f_conditional;
+                var->flavor = f_conditional;
+                break;
+              case '!':
+                var->flavor = f_shell;
                 break;
               default:
                 /* If we skipped whitespace, non-assignments means no var.  */
@@ -1438,50 +1499,55 @@ parse_variable_definition (const char *p, enum variable_flavor *flavor)
                 /* Might be assignment, or might be $= or #=.  Check.  */
                 continue;
             }
-          return (char *)++p;
+          if (! e)
+            e = p - 1;
+          ++p;
+          break;
+        }
+
+      /* Check for POSIX ::= syntax  */
+      if (c == ':')
+        {
+          /* A colon other than :=/::= is not a variable defn.  */
+          if (*p != ':' || p[1] != '=')
+            return NULL;
+
+          /* POSIX allows ::= to be the same as GNU make's := */
+          var->flavor = f_simple;
+          if (! e)
+            e = p - 1;
+          p += 2;
+          break;
         }
-      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;
     }
 
+  var->length = e - var->name;
+  var->value = next_token (p);
   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
+   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)
+  if (!parse_variable_definition (line, v))
     return NULL;
 
-  end = line - (flavor == f_recursive ? 1 : 2);
-  while (end > beg && isblank ((unsigned char)end[-1]))
-    --end;
-  line = next_token (line);
-  v->value = line;
-  v->flavor = flavor;
-
   /* Expand the name, so "$(foo)bar = baz" works.  */
-  name = alloca (end - beg + 1);
-  memcpy (name, beg, end - beg);
-  name[end - beg] = '\0';
+  name = alloca (v->length + 1);
+  memcpy (name, v->name, v->length);
+  name[v->length] = '\0';
   v->name = allocated_variable_expand (name);
 
   if (v->name[0] == '\0')
@@ -1499,12 +1565,12 @@ assign_variable_definition (struct variable *v, char *line)
 
    See the comments for assign_variable_definition().
 
-   If LINE was recognized as a variable definition, a pointer to its `struct
+   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 *
-try_variable_definition (const struct floc *flocp, char *line,
+try_variable_definition (const gmk_floc *flocp, char *line,
                          enum variable_origin origin, int target_var)
 {
   struct variable v;
@@ -1537,6 +1603,9 @@ print_variable (const void *item, void *arg)
 
   switch (v->origin)
     {
+    case o_automatic:
+      origin = _("automatic");
+      break;
     case o_default:
       origin = _("default");
       break;
@@ -1553,10 +1622,7 @@ print_variable (const void *item, void *arg)
       origin = _("command line");
       break;
     case o_override:
-      origin = _("`override' directive");
-      break;
-    case o_automatic:
-      origin = _("automatic");
+      origin = _("'override' directive");
       break;
     case o_invalid:
     default:
@@ -1567,12 +1633,12 @@ print_variable (const void *item, void *arg)
   if (v->private_var)
     fputs (" private", stdout);
   if (v->fileinfo.filenm)
-    printf (_(" (from `%s', line %lu)"),
+    printf (_(" (from '%s', line %lu)"),
             v->fileinfo.filenm, v->fileinfo.lineno);
   putchar ('\n');
   fputs (prefix, stdout);
 
-  /* Is this a `define'?  */
+  /* Is this a 'define'?  */
   if (v->recursive && strchr (v->value, '\n') != 0)
     printf ("define %s\n%s\nendef\n", v->name, v->value);
   else
@@ -1584,30 +1650,51 @@ print_variable (const void *item, void *arg)
       /* Check if the value is just whitespace.  */
       p = next_token (v->value);
       if (p != v->value && *p == '\0')
-       /* All whitespace.  */
-       printf ("$(subst ,,%s)", v->value);
+        /* All whitespace.  */
+        printf ("$(subst ,,%s)", v->value);
       else if (v->recursive)
-       fputs (v->value, stdout);
+        fputs (v->value, stdout);
       else
-       /* Double up dollar signs.  */
-       for (p = v->value; *p != '\0'; ++p)
-         {
-           if (*p == '$')
-             putchar ('$');
-           putchar (*p);
-         }
+        /* Double up dollar signs.  */
+        for (p = v->value; *p != '\0'; ++p)
+          {
+            if (*p == '$')
+              putchar ('$');
+            putchar (*p);
+          }
       putchar ('\n');
     }
 }
 
 
+static void
+print_auto_variable (const void *item, void *arg)
+{
+  const struct variable *v = item;
+
+  if (v->origin == o_automatic)
+    print_variable (item, arg);
+}
+
+
+static void
+print_noauto_variable (const void *item, void *arg)
+{
+  const struct variable *v = item;
+
+  if (v->origin != o_automatic)
+    print_variable (item, arg);
+}
+
+
 /* Print all the variables in SET.  PREFIX is printed before
    the actual variable definitions (everything else is comments).  */
 
 void
-print_variable_set (struct variable_set *set, char *prefix)
+print_variable_set (struct variable_set *set, char *prefix, int pauto)
 {
-  hash_map_arg (&set->table, print_variable, prefix);
+  hash_map_arg (&set->table, (pauto ? print_auto_variable : print_variable),
+                prefix);
 
   fputs (_("# variable set hash-table stats:\n"), stdout);
   fputs ("# ", stdout);
@@ -1622,7 +1709,7 @@ print_variable_data_base (void)
 {
   puts (_("\n# Variables\n"));
 
-  print_variable_set (&global_variable_set, "");
+  print_variable_set (&global_variable_set, "", 0);
 
   puts (_("\n# Pattern-specific Variable Values"));
 
@@ -1651,7 +1738,24 @@ void
 print_file_variables (const struct file *file)
 {
   if (file->variables != 0)
-    print_variable_set (file->variables->set, "# ");
+    print_variable_set (file->variables->set, "# ", 1);
+}
+
+void
+print_target_variables (const struct file *file)
+{
+  if (file->variables != 0)
+    {
+      int l = strlen (file->name);
+      char *t = alloca (l + 3);
+
+      strcpy (t, file->name);
+      t[l] = ':';
+      t[l+1] = ' ';
+      t[l+2] = '\0';
+
+      hash_map_arg (&file->variables->set->table, print_noauto_variable, t);
+    }
 }
 
 #ifdef WINDOWS32
index c215867..dec75b1 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -22,62 +20,63 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
    Increasing numeric values signify less-overridable definitions.  */
 enum variable_origin
   {
-    o_default,         /* Variable from the default set.  */
-    o_env,             /* Variable from environment.  */
-    o_file,            /* Variable given in a makefile.  */
-    o_env_override,    /* Variable from environment, if -e.  */
-    o_command,         /* Variable given by user.  */
-    o_override,        /* Variable from an `override' directive.  */
-    o_automatic,       /* Automatic variable -- cannot be set.  */
-    o_invalid          /* Core dump time.  */
+    o_default,          /* Variable from the default set.  */
+    o_env,              /* Variable from environment.  */
+    o_file,             /* Variable given in a makefile.  */
+    o_env_override,     /* Variable from environment, if -e.  */
+    o_command,          /* Variable given by user.  */
+    o_override,         /* Variable from an 'override' directive.  */
+    o_automatic,        /* Automatic variable -- cannot be set.  */
+    o_invalid           /* Core dump time.  */
   };
 
 enum variable_flavor
   {
     f_bogus,            /* Bogus (error) */
-    f_simple,           /* Simple definition (:=) */
+    f_simple,           /* Simple definition (:= or ::=) */
     f_recursive,        /* Recursive definition (=) */
     f_append,           /* Appending definition (+=) */
-    f_conditional       /* Conditional definition (?=) */
+    f_conditional,      /* Conditional definition (?=) */
+    f_shell             /* Shell assignment (!=) */
   };
 
 /* Structure that represents one variable definition.
    Each bucket of the hash table is a chain of these,
-   chained through `next'.  */
+   chained through 'next'.  */
 
 #define EXP_COUNT_BITS  15      /* This gets all the bitfields into 32 bits */
 #define EXP_COUNT_MAX   ((1<<EXP_COUNT_BITS)-1)
 
 struct variable
   {
-    char *name;                        /* Variable name.  */
-    int length;                        /* strlen (name) */
-    char *value;               /* Variable value.  */
-    struct floc fileinfo;       /* Where the variable was defined.  */
-    unsigned int recursive:1;  /* Gets recursively re-evaluated.  */
-    unsigned int append:1;     /* Nonzero if an appending target-specific
+    char *name;                 /* Variable name.  */
+    char *value;                /* Variable value.  */
+    gmk_floc fileinfo;          /* Where the variable was defined.  */
+    int length;                 /* strlen (name) */
+    unsigned int recursive:1;   /* Gets recursively re-evaluated.  */
+    unsigned int append:1;      /* Nonzero if an appending target-specific
                                    variable.  */
     unsigned int conditional:1; /* Nonzero if set with a ?=. */
-    unsigned int per_target:1; /* Nonzero if a target-specific variable.  */
+    unsigned int per_target:1;  /* Nonzero if a target-specific 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 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.  */
     enum variable_flavor
-      flavor ENUM_BITFIELD (3);        /* Variable flavor.  */
+      flavor ENUM_BITFIELD (3); /* Variable flavor.  */
     enum variable_origin
-      origin ENUM_BITFIELD (3);        /* Variable origin.  */
+      origin ENUM_BITFIELD (3); /* Variable origin.  */
     enum variable_export
       {
-       v_export,               /* Export this variable.  */
-       v_noexport,             /* Don't export this variable.  */
-       v_ifset,                /* Export it if it has a non-default value.  */
-       v_default               /* Decide in target_environment.  */
+        v_export,               /* Export this variable.  */
+        v_noexport,             /* Don't export this variable.  */
+        v_ifset,                /* Export it if it has a non-default value.  */
+        v_default               /* Decide in target_environment.  */
       } export ENUM_BITFIELD (2);
   };
 
@@ -85,15 +84,15 @@ struct variable
 
 struct variable_set
   {
-    struct hash_table table;   /* Hash table of variables.  */
+    struct hash_table table;    /* Hash table of variables.  */
   };
 
 /* Structure that represents a list of variable sets.  */
 
 struct variable_set_list
   {
-    struct variable_set_list *next;    /* Link in the chain.  */
-    struct variable_set *set;          /* Variable set.  */
+    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.  */
   };
 
@@ -117,7 +116,7 @@ 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) \
+#define allocated_variable_expand(line) \
   allocated_variable_expand_for_file (line, (struct file *) 0)
 char *expand_argument (const char *str, const char *end);
 char *variable_expand_string (char *line, const char *string, long length);
@@ -134,6 +133,8 @@ 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);
+char *func_shell_base (char *o, char **argv, int trim_newlines);
+
 
 /* expand.c */
 char *recursively_expand_for_file (struct variable *v, struct file *file);
@@ -147,22 +148,26 @@ 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 print_file_variables (const struct file *file);
+void print_target_variables (const struct file *file);
 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,
+struct variable *do_variable_definition (const gmk_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 *v);
 struct variable *assign_variable_definition (struct variable *v, char *line);
-struct variable *try_variable_definition (const struct floc *flocp, char *line,
+struct variable *try_variable_definition (const gmk_floc *flocp, char *line,
                                           enum variable_origin origin,
                                           int target_var);
 void init_hash_global_variable_set (void);
 void hash_init_function_table (void);
+void define_new_function(const gmk_floc *flocp, const char *name,
+                         unsigned int min, unsigned int max, unsigned int flags,
+                         gmk_func_ptr func);
 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);
@@ -172,7 +177,7 @@ struct variable *define_variable_in_set (const char *name, unsigned int length,
                                          enum variable_origin origin,
                                          int recursive,
                                          struct variable_set *set,
-                                         const struct floc *flocp);
+                                         const gmk_floc *flocp);
 
 /* Define a variable in the current variable set.  */
 
@@ -216,7 +221,7 @@ void undefine_variable_in_set (const char *name, unsigned int length,
 #define warn_undefined(n,l) do{\
                               if (warn_undefined_variables_flag) \
                                 error (reading_file, \
-                                       _("warning: undefined variable `%.*s'"), \
+                                       _("warning: undefined variable '%.*s'"), \
                                 (int)(l), (n)); \
                               }while(0)
 
@@ -228,4 +233,4 @@ struct pattern_var *create_pattern_var (const char *target,
 extern int export_all_variables;
 
 #define MAKELEVEL_NAME "MAKELEVEL"
-#define MAKELEVEL_LENGTH (sizeof (MAKELEVEL_NAME) - 1)
+#define MAKELEVEL_LENGTH (CSTRLEN (MAKELEVEL_NAME))
index a770e22..af461f7 100644 (file)
--- a/version.c
+++ b/version.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -18,7 +16,7 @@ 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
-   (which it would do because make.h was found in $srcdir).  */
+   (which it would do because makeint.h was found in $srcdir).  */
 #include <config.h>
 
 #ifndef MAKE_HOST
index cb17818..ef53acc 100644 (file)
--- a/vmsdir.h
+++ b/vmsdir.h
@@ -1,6 +1,5 @@
 /* dirent.h for vms
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -45,7 +44,7 @@ struct direct
      + ((dp)->d_namlen+1))     \
     + 3) & ~3)
 
-#define d_ino  d_fileno                /* compatability */
+#define d_ino  d_fileno                /* compatibility */
 
 
 /*
index 5b867d9..1907e3a 100644 (file)
@@ -1,6 +1,5 @@
 /* VMS functions
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -15,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "debug.h"
 #include "job.h"
 
index f58fee7..c87d68c 100644 (file)
--- a/vmsify.c
+++ b/vmsify.c
@@ -1,6 +1,5 @@
 /* vmsify.c -- Module for vms <-> unix file name conversion
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index 05c8dba..8bacc86 100644 (file)
--- a/vmsjobs.c
+++ b/vmsjobs.c
@@ -1,8 +1,7 @@
 /* --------------- 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,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -32,10 +31,10 @@ vmsWaitForChildren(int *status)
   while (1)
     {
       if (!vms_jobsefnmask)
-       {
-         *status = 0;
-         return;
-       }
+        {
+          *status = 0;
+          return;
+        }
 
       *status = sys$wflor (32, vms_jobsefnmask);
     }
@@ -60,9 +59,9 @@ vms_redirect (struct dsc$descriptor_s *desc, char *fname, char *ibuf)
     {
       strcpy (fname, vmsify (fptr, 0));
       if (strchr (fname, '.') == 0)
-       strcat (fname, ".");
+        strcat (fname, ".");
     }
-  desc->dsc$w_length = strlen(fname);
+  desc->dsc$w_length = strlen (fname);
   desc->dsc$a_pointer = fname;
   desc->dsc$b_dtype = DSC$K_DTYPE_T;
   desc->dsc$b_class = DSC$K_CLASS_S;
@@ -75,7 +74,7 @@ vms_redirect (struct dsc$descriptor_s *desc, char *fname, char *ibuf)
 
 /* found apostrophe at (p-1)
    inc p until after closing apostrophe.
- */
+*/
 
 char *
 vms_handle_apos (char *p)
@@ -87,25 +86,21 @@ vms_handle_apos (char *p)
   alast = 0;
 
   while (*p != 0)
-    {
-      if (*p == '"')
-       {
-          if (alast)
-            {
-              alast = 0;
-              p++;
-           }
-         else
-           {
-             p++;
-             if (strchr (SEPCHARS, *p))
-               break;
-             alast = 1;
-           }
-       }
+    if (*p == '"')
+      if (alast)
+        {
+          alast = 0;
+          p++;
+        }
       else
-       p++;
-    }
+        {
+          p++;
+          if (strchr (SEPCHARS, *p))
+            break;
+          alast = 1;
+        }
+    else
+      p++;
 
   return p;
 }
@@ -119,100 +114,99 @@ static int ctrlYPressed= 0;
 int
 vmsHandleChildTerm(struct child *child)
 {
-    int status;
-    register struct child *lastc, *c;
-    int child_failed;
+  int status;
+  register struct child *lastc, *c;
+  int child_failed;
 
-    vms_jobsefnmask &= ~(1 << (child->efn - 32));
+  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);
-      }
+  lib$free_ef (&child->efn);
+  if (child->comname)
+    {
+      if (!ISDB (DB_JOBS) && !ctrlYPressed)
+        unlink (child->comname);
+      free (child->comname);
+    }
 
-    (void) sigblock (fatal_signal_mask);
+  (void) sigblock (fatal_signal_mask);
 
-    child_failed = !(child->cstatus & 1 || ((child->cstatus & 7) == 0));
+  child_failed = !(child->cstatus & 1 || ((child->cstatus & 7) == 0));
 
-    /* Search for a child matching the deceased one.  */
-    lastc = 0;
+  /* Search for a child matching the deceased one.  */
+  lastc = 0;
 #if defined(RECURSIVEJOBS) /* I've had problems with recursive stuff and process handling */
-    for (c = children; c != 0 && c != child; lastc = c, c = c->next)
-      ;
+  for (c = children; c != 0 && c != child; lastc = c, c = c->next)
+    ;
 #else
-    c = child;
+  c = child;
 #endif
 
-    if (child_failed && !c->noerror && !ignore_errors_flag)
-      {
-       /* The commands failed.  Write an error message,
-          delete non-precious targets, and abort.  */
-       child_error (c->file->name, c->cstatus, 0, 0, 0);
-       c->file->update_status = 1;
-       delete_child_targets (c);
-      }
-    else
-      {
-       if (child_failed)
-         {
-           /* The commands failed, but we don't care.  */
-           child_error (c->file->name, c->cstatus, 0, 0, 1);
-           child_failed = 0;
-         }
+  if (child_failed && !c->noerror && !ignore_errors_flag)
+    {
+      /* The commands failed.  Write an error message,
+         delete non-precious targets, and abort.  */
+      child_error (c, c->cstatus, 0, 0, 0);
+      c->file->update_status = us_failed;
+      delete_child_targets (c);
+    }
+  else
+    {
+      if (child_failed)
+        {
+          /* The commands failed, but we don't care.  */
+          child_error (c, c->cstatus, 0, 0, 1);
+          child_failed = 0;
+        }
 
 #if defined(RECURSIVEJOBS) /* I've had problems with recursive stuff and process handling */
-       /* If there are more commands to run, try to start them.  */
-       start_job (c);
-
-       switch (c->file->command_state)
-         {
-         case cs_running:
-           /* Successfully started.  */
-           break;
-
-         case cs_finished:
-           if (c->file->update_status != 0) {
-               /* We failed to start the commands.  */
-               delete_child_targets (c);
-           }
-           break;
-
-         default:
-           error (NILF, _("internal error: `%s' command_state"),
-                   c->file->name);
-           abort ();
-           break;
-         }
+      /* If there are more commands to run, try to start them.  */
+      start_job (c);
+
+      switch (c->file->command_state)
+        {
+        case cs_running:
+          /* Successfully started.  */
+          break;
+
+        case cs_finished:
+          if (c->file->update_status != us_success)
+            /* We failed to start the commands.  */
+            delete_child_targets (c);
+          break;
+
+        default:
+          error (NILF, _("internal error: '%s' command_state"),
+                 c->file->name);
+          abort ();
+          break;
+        }
 #endif /* RECURSIVEJOBS */
-      }
+    }
 
-    /* Set the state flag to say the commands have finished.  */
-    c->file->command_state = cs_finished;
-    notice_finished_file (c->file);
+  /* Set the state flag to say the commands have finished.  */
+  c->file->command_state = cs_finished;
+  notice_finished_file (c->file);
 
 #if defined(RECURSIVEJOBS) /* I've had problems with recursive stuff and process handling */
-    /* Remove the child from the chain and free it.  */
-    if (lastc == 0)
-      children = c->next;
-    else
-      lastc->next = c->next;
-    free_child (c);
+  /* Remove the child from the chain and free it.  */
+  if (lastc == 0)
+    children = c->next;
+  else
+    lastc->next = c->next;
+  free_child (c);
 #endif /* RECURSIVEJOBS */
 
-    /* There is now another slot open.  */
-    if (job_slots_used > 0)
-      --job_slots_used;
+  /* There is now another slot open.  */
+  if (job_slots_used > 0)
+    --job_slots_used;
 
-    /* If the job failed, and the -k flag was not given, die.  */
-    if (child_failed && !keep_going_flag)
-      die (EXIT_FAILURE);
+  /* If the job failed, and the -k flag was not given, die.  */
+  if (child_failed && !keep_going_flag)
+    die (EXIT_FAILURE);
 
-    (void) sigsetmask (sigblock (0) & ~(fatal_signal_mask));
+  (void) sigsetmask (sigblock (0) & ~(fatal_signal_mask));
 
-    return 1;
+  return 1;
 }
 
 /* VMS:
@@ -233,67 +227,71 @@ static unsigned short int chan= 0;
 static void
 reEnableAst(void)
 {
-       lib$enable_ctrl (&oldCtrlMask,0);
+  lib$enable_ctrl (&oldCtrlMask,0);
 }
 
 static int
 astYHandler (void)
 {
-       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;
+  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
 tryToSetupYAst(void)
 {
-       $DESCRIPTOR(inputDsc,"SYS$COMMAND");
-       int     status;
-       struct {
-               short int       status, count;
-               int     dvi;
-       } iosb;
-       unsigned short int loc_chan;
-
-       setupYAstTried++;
-
-       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, 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;
-       }
-
-       /* called from AST handler ? */
-       if (setupYAstTried>1)
-               return;
-       if (atexit(reEnableAst))
-               fprintf (stderr,
-                         _("-warning, you may have to re-enable CTRL-Y handling from DCL.\n"));
-       status= lib$disable_ctrl (&ctrlMask, &oldCtrlMask);
-       if (!(status&SS$_NORMAL)) {
-               lib$signal(status);
-               return;
-       }
-       if (!chan)
-               chan = loc_chan;
+  $DESCRIPTOR(inputDsc,"SYS$COMMAND");
+  int     status;
+  struct {
+    short int       status, count;
+    int     dvi;
+  } iosb;
+  unsigned short int loc_chan;
+
+  setupYAstTried++;
+
+  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, 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;
+    }
+
+  /* called from AST handler ? */
+  if (setupYAstTried>1)
+    return;
+  if (atexit(reEnableAst))
+    fprintf (stderr,
+             _("-warning, you may have to re-enable CTRL-Y handling from DCL.\n"));
+  status= lib$disable_ctrl (&ctrlMask, &oldCtrlMask);
+  if (!(status&SS$_NORMAL))
+    {
+      lib$signal(status);
+      return;
+    }
+  if (!chan)
+    chan = loc_chan;
 }
 
 int
@@ -350,63 +348,61 @@ child_execute_job (char *argv, struct child *child)
           continue;
         }
       switch (*p)
-       {
-         case '#':
-           *p-- = 0;
-           *q-- = 0;
-           break;
-         case '\\':
-           p++;
-           if (*p == '\n')
-             p++;
-           if (isspace ((unsigned char)*p))
-             {
-               do { p++; } while (isspace ((unsigned char)*p));
-               p--;
-             }
-           *q = *p;
-           break;
-         case '<':
-           p = vms_redirect (&ifiledsc, ifile, p);
-           *q = ' ';
-           have_redirection = 1;
-           break;
-         case '>':
-           have_redirection = 1;
-           if (*(p-1) == '2')
-             {
-               q--;
-               if (strncmp (p, ">&1", 3) == 0)
-                 {
-                   p += 3;
-                   strcpy (efile, "sys$output");
-                   efiledsc.dsc$w_length = strlen(efile);
-                   efiledsc.dsc$a_pointer = efile;
-                   efiledsc.dsc$b_dtype = DSC$K_DTYPE_T;
-                   efiledsc.dsc$b_class = DSC$K_CLASS_S;
-                 }
-               else
-                 {
-                   p = vms_redirect (&efiledsc, efile, p);
-                 }
-             }
-           else
-             {
-                if (*(p+1) == '>')
-                  {
-                    have_append = 1;
-                    p += 1;
-                  }
-               p = vms_redirect (&ofiledsc, ofile, p);
-             }
-           *q = ' ';
-           break;
-         case '\n':
-           have_newline = 1;
-         default:
-           *q = *p;
-           break;
-       }
+        {
+        case '#':
+          *p-- = 0;
+          *q-- = 0;
+          break;
+        case '\\':
+          p++;
+          if (*p == '\n')
+            p++;
+          if (isspace ((unsigned char)*p))
+            {
+              do { p++; } while (isspace ((unsigned char)*p));
+              p--;
+            }
+          *q = *p;
+          break;
+        case '<':
+          p = vms_redirect (&ifiledsc, ifile, p);
+          *q = ' ';
+          have_redirection = 1;
+          break;
+        case '>':
+          have_redirection = 1;
+          if (*(p-1) == '2')
+            {
+              q--;
+              if (strncmp (p, ">&1", 3) == 0)
+                {
+                  p += 3;
+                  strcpy (efile, "sys$output");
+                  efiledsc.dsc$w_length = strlen(efile);
+                  efiledsc.dsc$a_pointer = efile;
+                  efiledsc.dsc$b_dtype = DSC$K_DTYPE_T;
+                  efiledsc.dsc$b_class = DSC$K_CLASS_S;
+                }
+              else
+                  p = vms_redirect (&efiledsc, efile, p);
+            }
+          else
+            {
+              if (*(p+1) == '>')
+                {
+                  have_append = 1;
+                  p += 1;
+                }
+              p = vms_redirect (&ofiledsc, ofile, p);
+            }
+          *q = ' ';
+          break;
+        case '\n':
+          have_newline = 1;
+        default:
+          *q = *p;
+          break;
+        }
     }
   *q = *p;
   while (isspace ((unsigned char)*--q))
@@ -423,55 +419,55 @@ child_execute_job (char *argv, struct child *child)
       p = cmd + 8;
 
       if ((*(p) == 'c')
-         && (*(p+1) == 'd')
-         && ((*(p+2) == ' ') || (*(p+2) == '\t')))
-       {
-         p += 3;
-         while ((*p == ' ') || (*p == '\t'))
-           p++;
-         DB (DB_JOBS, (_("BUILTIN CD %s\n"), p));
-         if (chdir (p))
-           return 0;
-         else
-           return 1;
-       }
+          && (*(p+1) == 'd')
+          && ((*(p+2) == ' ') || (*(p+2) == '\t')))
+        {
+          p += 3;
+          while ((*p == ' ') || (*p == '\t'))
+            p++;
+          DB (DB_JOBS, (_("BUILTIN CD %s\n"), p));
+          if (chdir (p))
+            return 0;
+          else
+            return 1;
+        }
       else if ((*(p) == 'r')
-         && (*(p+1) == 'm')
-         && ((*(p+2) == ' ') || (*(p+2) == '\t')))
-       {
-         int in_arg;
-
-         /* rm  */
-         p += 3;
-         while ((*p == ' ') || (*p == '\t'))
-           p++;
-         in_arg = 1;
-
-         DB (DB_JOBS, (_("BUILTIN RM %s\n"), p));
-         while (*p)
-           {
-             switch (*p)
-               {
-                 case ' ':
-                 case '\t':
-                   if (in_arg)
-                     {
-                       *p++ = ';';
-                       in_arg = 0;
-                     }
-                   break;
-                 default:
-                   break;
-               }
-             p++;
-           }
-       }
+               && (*(p+1) == 'm')
+               && ((*(p+2) == ' ') || (*(p+2) == '\t')))
+        {
+          int in_arg;
+
+          /* rm  */
+          p += 3;
+          while ((*p == ' ') || (*p == '\t'))
+            p++;
+          in_arg = 1;
+
+          DB (DB_JOBS, (_("BUILTIN RM %s\n"), p));
+          while (*p)
+            {
+              switch (*p)
+                {
+                case ' ':
+                case '\t':
+                  if (in_arg)
+                    {
+                      *p++ = ';';
+                      in_arg = 0;
+                    }
+                  break;
+                default:
+                  break;
+                }
+              p++;
+            }
+        }
       else
-       {
-         printf(_("Unknown builtin command '%s'\n"), cmd);
-         fflush(stdout);
-         return 0;
-       }
+        {
+          printf (_("Unknown builtin command '%s'\n"), cmd);
+          fflush (stdout);
+          return 0;
+        }
     }
 
   /* Create a *.com file if either the command is too long for
@@ -486,56 +482,54 @@ child_execute_job (char *argv, struct child *child)
       FILE *outfile;
       char c;
       char *sep;
-      int alevel = 0;  /* apostrophe level */
+      int alevel = 0;   /* apostrophe level */
 
       if (strlen (cmd) == 0)
-       {
-         printf (_("Error, empty command\n"));
-         fflush (stdout);
-         return 0;
-       }
+        {
+          printf (_("Error, empty command\n"));
+          fflush (stdout);
+          return 0;
+        }
 
-      outfile = open_tmpfile (&child->comname, "sys$scratch:CMDXXXXXX.COM");
+      outfile = output_tmpfile (&child->comname, "sys$scratch:CMDXXXXXX.COM");
       if (outfile == 0)
-       pfatal_with_name (_("fopen (temporary file)"));
+        pfatal_with_name (_("fopen (temporary file)"));
       comnamelen = strlen (child->comname);
 
       if (ifile[0])
-       {
-         fprintf (outfile, "$ assign/user %s sys$input\n", ifile);
+        {
+          fprintf (outfile, "$ assign/user %s sys$input\n", ifile);
           DB (DB_JOBS, (_("Redirected input from %s\n"), ifile));
-         ifiledsc.dsc$w_length = 0;
-       }
+          ifiledsc.dsc$w_length = 0;
+        }
 
       if (efile[0])
-       {
-         fprintf (outfile, "$ define sys$error %s\n", efile);
+        {
+          fprintf (outfile, "$ define sys$error %s\n", efile);
           DB (DB_JOBS, (_("Redirected error to %s\n"), efile));
-         efiledsc.dsc$w_length = 0;
-       }
+          efiledsc.dsc$w_length = 0;
+        }
 
       if (ofile[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;
-            }
-       }
+        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;
       for (c = '\n'; c; c = *q++)
-       {
-         switch (c)
-           {
+        {
+          switch (c)
+            {
             case '\n':
               /* At a newline, skip any whitespace around a leading $
                  from the command and issue exactly one $ into the DCL. */
@@ -552,8 +546,8 @@ child_execute_job (char *argv, struct child *child)
               p = sep = q;
               break;
 
-             /* Nice places for line breaks are after strings, after
-                comma or space and before slash. */
+              /* Nice places for line breaks are after strings, after
+                 comma or space and before slash. */
             case '"':
               q = vms_handle_apos (q);
               sep = q;
@@ -568,25 +562,25 @@ child_execute_job (char *argv, struct child *child)
               break;
             default:
               break;
-           }
-         if (sep - p > 78)
-           {
-             /* Enough stuff for a line. */
-             fwrite (p, 1, sep - p, outfile);
-             p = sep;
-             if (*sep)
-               {
-                 /* The command continues.  */
-                 fputc ('-', outfile);
-               }
-             fputc ('\n', outfile);
-           }
-       }
+            }
+          if (sep - p > 78)
+            {
+              /* Enough stuff for a line. */
+              fwrite (p, 1, sep - p, outfile);
+              p = sep;
+              if (*sep)
+                {
+                  /* The command continues.  */
+                  fputc ('-', outfile);
+                }
+              fputc ('\n', outfile);
+            }
+        }
 
       if (*p)
         {
           fwrite (p, 1, --q - p, outfile);
-      fputc ('\n', outfile);
+          fputc ('\n', outfile);
         }
 
       if (have_append)
@@ -631,66 +625,66 @@ child_execute_job (char *argv, struct child *child)
 
   vms_jobsefnmask |= (1 << (child->efn - 32));
 
-/*
-             LIB$SPAWN  [command-string]
-                       [,input-file]
-                       [,output-file]
-                       [,flags]
-                       [,process-name]
-                       [,process-id] [,completion-status-address] [,byte-integer-event-flag-num]
-                       [,AST-address] [,varying-AST-argument]
-                       [,prompt-string] [,cli] [,table]
-*/
+  /*
+    LIB$SPAWN  [command-string]
+    [,input-file]
+    [,output-file]
+    [,flags]
+    [,process-name]
+    [,process-id] [,completion-status-address] [,byte-integer-event-flag-num]
+    [,AST-address] [,varying-AST-argument]
+    [,prompt-string] [,cli] [,table]
+  */
 
 #ifndef DONTWAITFORCHILD
-/*
*     Code to make ctrl+c and ctrl+y working.
*     The problem starts with the synchronous case where after lib$spawn is
*     called any input will go to the child. But with input re-directed,
*     both control characters won't make it to any of the programs, neither
*     the spawning nor to the spawned one. Hence the caller needs to spawn
*     with CLI$M_NOWAIT to NOT give up the input focus. A sys$waitfr
*     has to follow to simulate the wanted synchronous behaviour.
*     The next problem is ctrl+y which isn't caught by the crtl and
*     therefore isn't converted to SIGQUIT (for a signal handler which is
*     already established). The only way to catch ctrl+y, is an AST
*     assigned to the input channel. But ctrl+y handling of DCL needs to be
*     disabled, otherwise it will handle it. Not to mention the previous
*     ctrl+y handling of DCL needs to be re-established before make exits.
*     One more: At the time of LIB$SPAWN signals are blocked. SIGQUIT will
*     make it to the signal handler after the child "normally" terminates.
*     This isn't enough. It seems reasonable for simple command lines like
*     a 'cc foobar.c' spawned in a subprocess but it is unacceptable for
*     spawning make. Therefore we need to abort the process in the AST.
- *
*     Prior to the spawn it is checked if an AST is already set up for
*     ctrl+y, if not one is set up for a channel to SYS$COMMAND. In general
*     this will work except if make is run in a batch environment, but there
*     nobody can press ctrl+y. During the setup the DCL handling of ctrl+y
*     is disabled and an exit handler is established to re-enable it.
*     If the user interrupts with ctrl+y, the assigned AST will fire, force
*     an abort to the subprocess and signal SIGQUIT, which will be caught by
*     the already established handler and will bring us back to common code.
*     After the spawn (now /nowait) a sys$waitfr simulates the /wait and
*     enables the ctrl+y be delivered to this code. And the ctrl+c too,
*     which the crtl converts to SIGINT and which is caught by the common
*     signal handler. Because signals were blocked before entering this code
*     sys$waitfr will always complete and the SIGQUIT will be processed after
*     it (after termination of the current block, somewhere in common code).
*     And SIGINT too will be delayed. That is ctrl+c can only abort when the
*     current command completes. Anyway it's better than nothing :-)
- */
+  /*
  * Code to make ctrl+c and ctrl+y working.
  * The problem starts with the synchronous case where after lib$spawn is
  * called any input will go to the child. But with input re-directed,
  * both control characters won't make it to any of the programs, neither
  * the spawning nor to the spawned one. Hence the caller needs to spawn
  * with CLI$M_NOWAIT to NOT give up the input focus. A sys$waitfr
  * has to follow to simulate the wanted synchronous behaviour.
  * The next problem is ctrl+y which isn't caught by the crtl and
  * therefore isn't converted to SIGQUIT (for a signal handler which is
  * already established). The only way to catch ctrl+y, is an AST
  * assigned to the input channel. But ctrl+y handling of DCL needs to be
  * disabled, otherwise it will handle it. Not to mention the previous
  * ctrl+y handling of DCL needs to be re-established before make exits.
  * One more: At the time of LIB$SPAWN signals are blocked. SIGQUIT will
  * make it to the signal handler after the child "normally" terminates.
  * This isn't enough. It seems reasonable for simple command lines like
  * a 'cc foobar.c' spawned in a subprocess but it is unacceptable for
  * spawning make. Therefore we need to abort the process in the AST.
  *
  * Prior to the spawn it is checked if an AST is already set up for
  * ctrl+y, if not one is set up for a channel to SYS$COMMAND. In general
  * this will work except if make is run in a batch environment, but there
  * nobody can press ctrl+y. During the setup the DCL handling of ctrl+y
  * is disabled and an exit handler is established to re-enable it.
  * If the user interrupts with ctrl+y, the assigned AST will fire, force
  * an abort to the subprocess and signal SIGQUIT, which will be caught by
  * the already established handler and will bring us back to common code.
  * After the spawn (now /nowait) a sys$waitfr simulates the /wait and
  * enables the ctrl+y be delivered to this code. And the ctrl+c too,
  * which the crtl converts to SIGINT and which is caught by the common
  * signal handler. Because signals were blocked before entering this code
  * sys$waitfr will always complete and the SIGQUIT will be processed after
  * it (after termination of the current block, somewhere in common code).
  * And SIGINT too will be delayed. That is ctrl+c can only abort when the
  * current command completes. Anyway it's better than nothing :-)
  */
 
   if (!setupYAstTried)
     tryToSetupYAst();
-  status = lib$spawn (&cmddsc,                                 /* cmd-string  */
-                     (ifiledsc.dsc$w_length == 0)?0:&ifiledsc, /* input-file  */
-                     (ofiledsc.dsc$w_length == 0)?0:&ofiledsc, /* output-file */
-                     &spflags,                                 /* flags  */
-                     &pnamedsc,                                /* proc name  */
-                     &child->pid, &child->cstatus, &child->efn,
-                     0, 0,
-                     0, 0, 0);
+  status = lib$spawn (&cmddsc,                                  /* cmd-string */
+                      (ifiledsc.dsc$w_length == 0)?0:&ifiledsc, /* input-file */
+                      (ofiledsc.dsc$w_length == 0)?0:&ofiledsc, /* output-file */
+                      &spflags,                                 /* flags */
+                      &pnamedsc,                                /* proc name */
+                      &child->pid, &child->cstatus, &child->efn,
+                      0, 0,
+                      0, 0, 0);
   if (status & 1)
     {
       status= sys$waitfr (child->efn);
@@ -698,13 +692,13 @@ child_execute_job (char *argv, struct child *child)
     }
 #else
   status = lib$spawn (&cmddsc,
-                     (ifiledsc.dsc$w_length == 0)?0:&ifiledsc,
-                     (ofiledsc.dsc$w_length == 0)?0:&ofiledsc,
-                     &spflags,
-                     &pnamedsc,
-                     &child->pid, &child->cstatus, &child->efn,
-                     vmsHandleChildTerm, child,
-                     0, 0, 0);
+                      (ifiledsc.dsc$w_length == 0)?0:&ifiledsc,
+                      (ofiledsc.dsc$w_length == 0)?0:&ofiledsc,
+                      &spflags,
+                      &pnamedsc,
+                      &child->pid, &child->cstatus, &child->efn,
+                      vmsHandleChildTerm, child,
+                      0, 0, 0);
 #endif
 
   if (!(status & 1))
diff --git a/vpath.c b/vpath.c
index 9f41b27..94956fa 100644 (file)
--- a/vpath.c
+++ b/vpath.c
@@ -1,7 +1,5 @@
 /* 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, 2007, 2008, 2009,
-2010 Free Software Foundation, Inc.
+Copyright (C) 1988-2013 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
@@ -16,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include "filedef.h"
 #include "variable.h"
 #ifdef WINDOWS32
@@ -28,9 +26,9 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 struct vpath
   {
-    struct vpath *next;        /* Pointer to next struct in the linked list.  */
+    struct vpath *next; /* Pointer to next struct in the linked list.  */
     const char *pattern;/* The pattern to match.  */
-    const char *percent;/* Pointer into `pattern' where the `%' is.  */
+    const char *percent;/* Pointer into 'pattern' where the '%' is.  */
     unsigned int patlen;/* Length of the pattern.  */
     const char **searchpath; /* Null-terminated list of directories.  */
     unsigned int maxlen;/* Maximum length of any entry in the list.  */
@@ -90,15 +88,15 @@ build_vpath_lists ()
       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.  */
+      /* 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 (gp, p);
 
       /* Store the created path as the general path,
-        and restore the old list of vpaths.  */
+         and restore the old list of vpaths.  */
       general_vpath = vpaths;
       vpaths = save_vpaths;
     }
@@ -123,15 +121,15 @@ build_vpath_lists ()
       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.  */
+      /* 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 (gp, p);
 
       /* Store the created path as the GPATH,
-        and restore the old list of vpaths.  */
+         and restore the old list of vpaths.  */
       gpaths = vpaths;
       vpaths = save_vpaths;
     }
@@ -148,7 +146,7 @@ build_vpath_lists ()
    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 DIRPATH
-   separated by the path element separator (defined in make.h) are
+   separated by the path element separator (defined in makeint.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
    slashes stripped off if present (and if the directory is not the
@@ -177,36 +175,36 @@ construct_vpath_list (char *pattern, char *dirpath)
       lastpath = 0;
       path = vpaths;
       while (path != 0)
-       {
-         struct vpath *next = path->next;
-
-         if (pattern == 0
-             || (((percent == 0 && path->percent == 0)
-                  || (percent - pattern == path->percent - path->pattern))
-                 && streq (pattern, path->pattern)))
-           {
-             /* Remove it from the linked list.  */
-             if (lastpath == 0)
-               vpaths = path->next;
-             else
-               lastpath->next = next;
-
-             /* Free its unused storage.  */
+        {
+          struct vpath *next = path->next;
+
+          if (pattern == 0
+              || (((percent == 0 && path->percent == 0)
+                   || (percent - pattern == path->percent - path->pattern))
+                  && streq (pattern, path->pattern)))
+            {
+              /* Remove it from the linked list.  */
+              if (lastpath == 0)
+                vpaths = path->next;
+              else
+                lastpath->next = next;
+
+              /* Free its unused storage.  */
               /* MSVC erroneously warns without a cast here.  */
-             free ((void *)path->searchpath);
-             free (path);
-           }
-         else
-           lastpath = path;
+              free ((void *)path->searchpath);
+              free (path);
+            }
+          else
+            lastpath = path;
 
-         path = next;
-       }
+          path = next;
+        }
 
       return;
     }
 
 #ifdef WINDOWS32
-    convert_vpath_to_windows32(dirpath, ';');
+    convert_vpath_to_windows32 (dirpath, ';');
 #endif
 
   /* Skip over any initial separators and blanks.  */
@@ -237,49 +235,49 @@ construct_vpath_list (char *pattern, char *dirpath)
       v = p;
       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] == '\\')))
+             /* 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
+             && *p != PATH_SEPARATOR_CHAR
 #endif
-            && !isblank ((unsigned char)*p))
-       ++p;
+             && !isblank ((unsigned char)*p))
+        ++p;
 
       len = p - v;
       /* Make sure there's no trailing slash,
-        but still allow "/" as a directory.  */
+         but still allow "/" as a directory.  */
 #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;
+        --len;
 
       /* Put the directory on the vpath list.  */
       if (len > 1 || *v != '.')
-       {
+        {
           vpath[elem++] = dir_name (strcache_add_len (v, len));
           if (len > maxvpath)
             maxvpath = len;
-       }
+        }
 
       /* Skip over separators and blanks between entries.  */
       while (*p == PATH_SEPARATOR_CHAR || isblank ((unsigned char)*p))
-       ++p;
+        ++p;
     }
 
   if (elem > 0)
     {
       struct vpath *path;
       /* ELEM is now incremented one element past the last
-        entry, to where the nil-pointer terminator goes.
-        Usually this is maxelem - 1.  If not, shrink down.  */
+         entry, to where the nil-pointer terminator goes.
+         Usually this is maxelem - 1.  If not, shrink down.  */
       if (elem < (maxelem - 1))
-       vpath = xrealloc (vpath, (elem+1) * sizeof (const char *));
+        vpath = xrealloc (vpath, (elem+1) * sizeof (const char *));
 
       /* Put the nil-pointer terminator on the end of the VPATH list.  */
       vpath[elem] = NULL;
@@ -308,12 +306,13 @@ construct_vpath_list (char *pattern, char *dirpath)
 int
 gpath_search (const char *file, unsigned int len)
 {
-  const char **gp;
-
   if (gpaths && (len <= gpaths->maxlen))
-    for (gp = gpaths->searchpath; *gp != NULL; ++gp)
-      if (strneq (*gp, file, len) && (*gp)[len] == '\0')
-        return 1;
+    {
+      const char **gp;
+      for (gp = gpaths->searchpath; *gp != NULL; ++gp)
+        if (strneq (*gp, file, len) && (*gp)[len] == '\0')
+          return 1;
+    }
 
   return 0;
 }
@@ -336,7 +335,7 @@ selective_vpath_search (struct vpath *path, const char *file,
   const char **vpath = path->searchpath;
   unsigned int maxvpath = path->maxlen;
   unsigned int i;
-  unsigned int flen, vlen, name_dplen;
+  unsigned int flen, name_dplen;
   int exists = 0;
 
   /* Find out if *FILE is a target.
@@ -357,7 +356,7 @@ selective_vpath_search (struct vpath *path, const char *file,
 #ifdef HAVE_DOS_PATHS
   /* We need the rightmost slash or backslash.  */
   {
-    const char *bslash = strrchr(file, '\\');
+    const char *bslash = strrchr (file, '\\');
     if (!n || bslash > n)
       n = bslash;
   }
@@ -376,54 +375,52 @@ selective_vpath_search (struct vpath *path, const char *file,
   for (i = 0; vpath[i] != 0; ++i)
     {
       int exists_in_cache = 0;
-      char *p;
-
-      p = name;
+      char *p = name;
+      unsigned int vlen = strlen (vpath[i]);
 
       /* Put the next VPATH entry into NAME at P and increment P past it.  */
-      vlen = strlen (vpath[i]);
       memcpy (p, vpath[i], vlen);
       p += vlen;
 
       /* Add the directory prefix already in *FILE.  */
       if (name_dplen > 0)
-       {
+        {
 #ifndef VMS
-         *p++ = '/';
+          *p++ = '/';
 #endif
-         memcpy (p, file, name_dplen);
-         p += 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 (p != name && p[-1] == '\\' )
-       p[-1] = '/';
+        p[-1] = '/';
 #endif
       /* Now add the name-within-directory at the end of NAME.  */
 #ifndef VMS
       if (p != name && p[-1] != '/')
-       {
-         *p = '/';
-         memcpy (p + 1, filename, flen + 1);
-       }
+        {
+          *p = '/';
+          memcpy (p + 1, filename, flen + 1);
+        }
       else
 #endif
-       memcpy (p, filename, 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.
-        If *FILE is a target, then the file must be mentioned in the
-        makefile also as a target to be chosen.
+         a target, that is enough for us to decide this file exists.
+         If *FILE is a target, then the file must be mentioned in the
+         makefile also as a target to be chosen.
 
-        The restriction that *FILE must not be a target for a
-        makefile-mentioned file to be chosen was added by an
-        inadequately commented change in July 1990; I am not sure off
-        hand what problem it fixes.
+         The restriction that *FILE must not be a target for a
+         makefile-mentioned file to be chosen was added by an
+         inadequately commented change in July 1990; I am not sure off
+         hand what problem it fixes.
 
-        In December 1993 I loosened this restriction to allow a file
-        to be chosen if it is mentioned as a target in a makefile.  This
-        seem logical.
+         In December 1993 I loosened this restriction to allow a file
+         to be chosen if it is mentioned as a target in a makefile.  This
+         seem logical.
 
          Special handling for -W / -o: make sure we preserve the special
          values here.  Actually this whole thing is a little bogus: I think
@@ -433,8 +430,8 @@ selective_vpath_search (struct vpath *path, const char *file,
          we use it.
       */
       {
-       struct file *f = lookup_file (name);
-       if (f != 0)
+        struct file *f = lookup_file (name);
+        if (f != 0)
           {
             exists = not_target || f->is_target;
             if (exists && mtime_ptr
@@ -447,41 +444,41 @@ selective_vpath_search (struct vpath *path, const char *file,
       }
 
       if (!exists)
-       {
-         /* That file wasn't mentioned in the makefile.
-            See if it actually exists.  */
+        {
+          /* That file wasn't mentioned in the makefile.
+             See if it actually exists.  */
 
 #ifdef VMS
-         exists_in_cache = exists = dir_file_exists_p (vpath[i], filename);
+          exists_in_cache = exists = dir_file_exists_p (vpath[i], filename);
 #else
-         /* Clobber a null into the name at the last slash.
-            Now NAME is the name of the directory to look in.  */
-         *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.
-            Does the file we seek exist in it?  */
-         exists_in_cache = exists = dir_file_exists_p (name, filename);
+          /* Clobber a null into the name at the last slash.
+             Now NAME is the name of the directory to look in.  */
+          *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.
+             Does the file we seek exist in it?  */
+          exists_in_cache = exists = dir_file_exists_p (name, filename);
 #endif
-       }
+        }
 
       if (exists)
-       {
-         /* The file is in the directory cache.
-            Now check that it actually exists in the filesystem.
-            The cache may be out of date.  When vpath thinks a file
-            exists, but stat fails for it, confusion results in the
-            higher levels.  */
+        {
+          /* The file is in the directory cache.
+             Now check that it actually exists in the filesystem.
+             The cache may be out of date.  When vpath thinks a file
+             exists, but stat fails for it, confusion results in the
+             higher levels.  */
 
-         struct stat st;
+          struct stat st;
 
 #ifndef VMS
-         /* Put the slash back in NAME.  */
-         *p = '/';
+          /* Put the slash back in NAME.  */
+          *p = '/';
 #endif
 
-         if (exists_in_cache)  /* Makefile-mentioned file need not exist.  */
-           {
+          if (exists_in_cache)  /* Makefile-mentioned file need not exist.  */
+            {
               int e;
 
               EINTRLOOP (e, stat (name, &st)); /* Does it really exist?  */
@@ -511,7 +508,7 @@ selective_vpath_search (struct vpath *path, const char *file,
             *path_index = i;
 
           return strcache_add_len (name, (p + 1 - name) + flen);
-       }
+        }
     }
 
   return 0;
@@ -595,26 +592,26 @@ print_vpath_data_base (void)
       printf ("vpath %s ", v->pattern);
 
       for (i = 0; v->searchpath[i] != 0; ++i)
-       printf ("%s%c", v->searchpath[i],
-               v->searchpath[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR);
+        printf ("%s%c", v->searchpath[i],
+                v->searchpath[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR);
     }
 
   if (vpaths == 0)
-    puts (_("# No `vpath' search paths."));
+    puts (_("# No 'vpath' search paths."));
   else
-    printf (_("\n# %u `vpath' search paths.\n"), nvpaths);
+    printf (_("\n# %u 'vpath' search paths.\n"), nvpaths);
 
   if (general_vpath == 0)
-    puts (_("\n# No general (`VPATH' variable) search path."));
+    puts (_("\n# No general ('VPATH' variable) search path."));
   else
     {
       const char **path = general_vpath->searchpath;
       unsigned int i;
 
-      fputs (_("\n# General (`VPATH' variable) search path:\n# "), stdout);
+      fputs (_("\n# General ('VPATH' variable) search path:\n# "), stdout);
 
       for (i = 0; path[i] != 0; ++i)
-       printf ("%s%c", path[i],
-               path[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR);
+        printf ("%s%c", path[i],
+                path[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR);
     }
 }
diff --git a/w32/.deps/libw32_a-misc.Po b/w32/.deps/libw32_a-misc.Po
deleted file mode 100644 (file)
index 9ce06a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/w32/.deps/libw32_a-pathstuff.Po b/w32/.deps/libw32_a-pathstuff.Po
deleted file mode 100644 (file)
index 9ce06a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/w32/.deps/libw32_a-sub_proc.Po b/w32/.deps/libw32_a-sub_proc.Po
deleted file mode 100644 (file)
index 9ce06a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/w32/.deps/libw32_a-w32err.Po b/w32/.deps/libw32_a-w32err.Po
deleted file mode 100644 (file)
index 9ce06a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/w32/Makefile b/w32/Makefile
deleted file mode 100644 (file)
index 8c95760..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-# 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, 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 program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-# Makefile.am to create libw32.a for mingw32 host.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 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/>.
-
-
-pkgdatadir = $(datadir)/make
-pkgincludedir = $(includedir)/make
-pkglibdir = $(libdir)/make
-pkglibexecdir = $(libexecdir)/make
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = 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 \
-       $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-ARFLAGS = cru
-libw32_a_AR = $(AR) $(ARFLAGS)
-libw32_a_LIBADD =
-am_libw32_a_OBJECTS = libw32_a-misc.$(OBJEXT) \
-       libw32_a-sub_proc.$(OBJEXT) libw32_a-w32err.$(OBJEXT) \
-       libw32_a-pathstuff.$(OBJEXT)
-libw32_a_OBJECTS = $(am_libw32_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(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)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libw32_a_SOURCES)
-DIST_SOURCES = $(libw32_a_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run aclocal-1.11
-ALLOCA = 
-AMTAR = ${SHELL} /home/psmith/src/make/make-rel/config/missing --run tar
-AR = ar
-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
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = 
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-ECHO_C = 
-ECHO_N = -n
-ECHO_T = 
-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 = $(install_sh) -c -s
-INTLLIBS = 
-KMEM_GROUP = 
-LDFLAGS = 
-LIBICONV = -liconv
-LIBINTL = 
-LIBOBJS = 
-LIBS = -lrt 
-LTLIBICONV = -liconv
-LTLIBINTL = 
-LTLIBOBJS = 
-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
-NEED_SETGID = false
-OBJEXT = o
-PACKAGE = make
-PACKAGE_BUGREPORT = bug-make@gnu.org
-PACKAGE_NAME = GNU make
-PACKAGE_STRING = GNU make 3.82
-PACKAGE_TARNAME = make
-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/bash
-STRIP = 
-USE_NLS = yes
-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
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__tar = ${AMTAR} chof - "$$tardir"
-am__untar = ${AMTAR} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias = 
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = x86_64-unknown-linux-gnu
-host_alias = 
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = unknown
-htmldir = ${docdir}
-includedir = ${prefix}/include
-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 = ${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
-
-libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       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 \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLIBRARIES:
-       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) 
-       -rm -f libw32.a
-       $(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
-       $(RANLIB) libw32.a
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-
-distclean-compile:
-       -rm -f *.tab.c
-
-include ./$(DEPDIR)/libw32_a-misc.Po
-include ./$(DEPDIR)/libw32_a-pathstuff.Po
-include ./$(DEPDIR)/libw32_a-sub_proc.Po
-include ./$(DEPDIR)/libw32_a-w32err.Po
-
-.c.o:
-       $(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:
-       $(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
-       $(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
-       $(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
-       $(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
-       $(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
-       $(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
-       $(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
-       $(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
-       $(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`
-
-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; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       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; 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; \
-         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)
-       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; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(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)'; \
-         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; \
-         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 -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -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 clean-noinstLIBRARIES mostlyclean-am
-
-distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-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
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.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-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
-
-
-# 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 b8e2071..be757fe 100644 (file)
@@ -1,6 +1,5 @@
 # Makefile.am to create libw32.a for mingw32 host.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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
@@ -19,6 +18,6 @@
 noinst_LIBRARIES = libw32.a
 
 libw32_a_SOURCES =  subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
-                   pathstuff.c
+                   compat/posixfcn.c pathstuff.c
 
 libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir)
index c5ea5b5..9683105 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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.
@@ -16,8 +16,7 @@
 @SET_MAKE@
 
 # Makefile.am to create libw32.a for mingw32 host.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 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
 # this program.  If not, see <http://www.gnu.org/licenses/>.
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -57,42 +73,67 @@ 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/intlmacosx.m4 \
        $(top_srcdir)/config/lib-ld.m4 \
        $(top_srcdir)/config/lib-link.m4 \
        $(top_srcdir)/config/lib-prefix.m4 $(top_srcdir)/config/nls.m4 \
        $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
-       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LIBRARIES = $(noinst_LIBRARIES)
 ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 libw32_a_AR = $(AR) $(ARFLAGS)
 libw32_a_LIBADD =
 am_libw32_a_OBJECTS = libw32_a-misc.$(OBJEXT) \
        libw32_a-sub_proc.$(OBJEXT) libw32_a-w32err.$(OBJEXT) \
-       libw32_a-pathstuff.$(OBJEXT)
+       libw32_a-posixfcn.$(OBJEXT) libw32_a-pathstuff.$(OBJEXT)
 libw32_a_OBJECTS = $(am_libw32_a_OBJECTS)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(libw32_a_SOURCES)
 DIST_SOURCES = $(libw32_a_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
@@ -112,16 +153,21 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GLOBINC = @GLOBINC@
 GLOBLIB = @GLOBLIB@
 GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
 KMEM_GROUP = @KMEM_GROUP@
 LDFLAGS = @LDFLAGS@
 LIBICONV = @LIBICONV@
@@ -134,8 +180,8 @@ LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MAKE_HOST = @MAKE_HOST@
 MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
 NEED_SETGID = @NEED_SETGID@
 OBJEXT = @OBJEXT@
@@ -148,6 +194,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REMOTE = @REMOTE@
@@ -157,6 +206,8 @@ STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -209,7 +260,7 @@ 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
+                   compat/posixfcn.c pathstuff.c
 
 libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir)
 all: all-am
@@ -249,10 +300,10 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) 
-       -rm -f libw32.a
-       $(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
-       $(RANLIB) libw32.a
+libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) $(EXTRA_libw32_a_DEPENDENCIES) 
+       $(AM_V_at)-rm -f libw32.a
+       $(AM_V_AR)$(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
+       $(AM_V_at)$(RANLIB) libw32.a
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -262,78 +313,93 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-misc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-pathstuff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-posixfcn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-sub_proc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-w32err.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 libw32_a-misc.o: subproc/misc.c
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-misc.Tpo $(DEPDIR)/libw32_a-misc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-sub_proc.Tpo $(DEPDIR)/libw32_a-sub_proc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-w32err.Tpo $(DEPDIR)/libw32_a-w32err.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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-posixfcn.o: compat/posixfcn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-posixfcn.o -MD -MP -MF $(DEPDIR)/libw32_a-posixfcn.Tpo -c -o libw32_a-posixfcn.o `test -f 'compat/posixfcn.c' || echo '$(srcdir)/'`compat/posixfcn.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-posixfcn.Tpo $(DEPDIR)/libw32_a-posixfcn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='compat/posixfcn.c' object='libw32_a-posixfcn.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-posixfcn.o `test -f 'compat/posixfcn.c' || echo '$(srcdir)/'`compat/posixfcn.c
+
+libw32_a-posixfcn.obj: compat/posixfcn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-posixfcn.obj -MD -MP -MF $(DEPDIR)/libw32_a-posixfcn.Tpo -c -o libw32_a-posixfcn.obj `if test -f 'compat/posixfcn.c'; then $(CYGPATH_W) 'compat/posixfcn.c'; else $(CYGPATH_W) '$(srcdir)/compat/posixfcn.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-posixfcn.Tpo $(DEPDIR)/libw32_a-posixfcn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='compat/posixfcn.c' object='libw32_a-posixfcn.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-posixfcn.obj `if test -f 'compat/posixfcn.c'; then $(CYGPATH_W) 'compat/posixfcn.c'; else $(CYGPATH_W) '$(srcdir)/compat/posixfcn.c'; fi`
 
 libw32_a-pathstuff.o: pathstuff.c
-@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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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@   $(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@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(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_V_at)$(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)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`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(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`
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -431,10 +497,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
index 8d66e47..bc776dd 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
diff --git a/w32/compat/posixfcn.c b/w32/compat/posixfcn.c
new file mode 100644 (file)
index 0000000..1d852f5
--- /dev/null
@@ -0,0 +1,456 @@
+/* Replacements for Posix functions and Posix functionality for MS-Windows.
+
+Copyright (C) 2013 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 <string.h>
+#include <io.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <windows.h>
+
+#include "dlfcn.h"
+
+#include "makeint.h"
+#include "job.h"
+
+#ifndef NO_OUTPUT_SYNC
+/* Support for OUTPUT_SYNC and related functionality.  */
+
+/* Emulation of fcntl that supports only F_GETFD and F_SETLKW.  */
+int
+fcntl (intptr_t fd, int cmd, ...)
+{
+  va_list ap;
+
+  va_start (ap, cmd);
+
+  switch (cmd)
+    {
+      case F_GETFD:
+        va_end (ap);
+        /* Could have used GetHandleInformation, but that isn't
+           supported on Windows 9X.  */
+        if (_get_osfhandle (fd) == -1)
+          return -1;
+        return 0;
+      case F_SETLKW:
+        {
+          void *buf = va_arg (ap, void *);
+          struct flock *fl = (struct flock *)buf;
+          HANDLE hmutex = (HANDLE)fd;
+          static struct flock last_fl;
+          short last_type = last_fl.l_type;
+
+          va_end (ap);
+
+          if (hmutex == INVALID_HANDLE_VALUE || !hmutex)
+            return -1;
+
+          last_fl = *fl;
+
+          switch (fl->l_type)
+            {
+
+              case F_WRLCK:
+                {
+                  DWORD result;
+
+                  if (last_type == F_WRLCK)
+                    {
+                      /* Don't call WaitForSingleObject if we already
+                         own the mutex, because doing so will require
+                         us to call ReleaseMutex an equal number of
+                         times, before the mutex is actually
+                         released.  */
+                      return 0;
+                    }
+
+                  result = WaitForSingleObject (hmutex, INFINITE);
+                  switch (result)
+                    {
+                      case WAIT_OBJECT_0:
+                        /* We don't care if the mutex owner crashed or
+                           exited.  */
+                      case WAIT_ABANDONED:
+                        return 0;
+                      case WAIT_FAILED:
+                      case WAIT_TIMEOUT: /* cannot happen, really */
+                        {
+                          DWORD err = GetLastError ();
+
+                          /* Invalidate the last command.  */
+                          memset (&last_fl, 0, sizeof (last_fl));
+
+                          switch (err)
+                            {
+                              case ERROR_INVALID_HANDLE:
+                              case ERROR_INVALID_FUNCTION:
+                                errno = EINVAL;
+                                return -1;
+                              default:
+                                errno = EDEADLOCK;
+                                return -1;
+                            }
+                        }
+                    }
+                }
+              case F_UNLCK:
+                {
+                  /* FIXME: Perhaps we should call ReleaseMutex
+                     repatedly until it errors out, to make sure the
+                     mutext is released even if we somehow managed to
+                     to take ownership multiple times?  */
+                  BOOL status = ReleaseMutex (hmutex);
+
+                  if (status)
+                    return 0;
+                  else
+                    {
+                      DWORD err = GetLastError ();
+
+                      if (err == ERROR_NOT_OWNER)
+                        errno = EPERM;
+                      else
+                        {
+                          memset (&last_fl, 0, sizeof (last_fl));
+                          errno = EINVAL;
+                        }
+                      return -1;
+                    }
+                }
+              default:
+                errno = ENOSYS;
+                return -1;
+            }
+        }
+      default:
+        errno = ENOSYS;
+        va_end (ap);
+        return -1;
+    }
+}
+
+static intptr_t mutex_handle = -1;
+
+/* Record in a static variable the mutex handle we were requested to
+   use.  That nameless mutex was created by the top-level Make, and
+   its handle was passed to us via inheritance.  The value of that
+   handle is passed via the command-line arguments, so that we know
+   which handle to use.  */
+void
+record_sync_mutex (const char *str)
+{
+  char *endp;
+  intptr_t hmutex = strtol (str, &endp, 16);
+
+  if (*endp == '\0')
+    mutex_handle = hmutex;
+  else
+    {
+      mutex_handle = -1;
+      errno = EINVAL;
+    }
+}
+
+/* Create a new mutex or reuse one created by our parent.  */
+intptr_t
+create_mutex (void)
+{
+  SECURITY_ATTRIBUTES secattr;
+  intptr_t hmutex = -1;
+
+  /* If we have a mutex handle passed from the parent Make, just use
+     that.  */
+  if (mutex_handle > 0)
+    return mutex_handle;
+
+  /* We are the top-level Make, and we want the handle to be inherited
+     by our child processes.  */
+  secattr.nLength = sizeof (secattr);
+  secattr.lpSecurityDescriptor = NULL; /* use default security descriptor */
+  secattr.bInheritHandle = TRUE;
+
+  hmutex = (intptr_t)CreateMutex (&secattr, FALSE, NULL);
+  if (!hmutex)
+    {
+      DWORD err = GetLastError ();
+
+      fprintf (stderr, "CreateMutex: error %lu\n", err);
+      errno = ENOLCK;
+      hmutex = -1;
+    }
+
+  mutex_handle = hmutex;
+  return hmutex;
+}
+
+/* Return non-zero if F1 and F2 are 2 streams representing the same
+   file or pipe or device.  */
+int
+same_stream (FILE *f1, FILE *f2)
+{
+  HANDLE fh1 = (HANDLE)_get_osfhandle (fileno (f1));
+  HANDLE fh2 = (HANDLE)_get_osfhandle (fileno (f2));
+
+  /* Invalid file descriptors get treated as different streams.  */
+  if (fh1 && fh1 != INVALID_HANDLE_VALUE
+      && fh2 && fh2 != INVALID_HANDLE_VALUE)
+    {
+      if (fh1 == fh2)
+        return 1;
+      else
+        {
+          DWORD ftyp1 = GetFileType (fh1), ftyp2 = GetFileType (fh2);
+
+          if (ftyp1 != ftyp2
+              || ftyp1 == FILE_TYPE_UNKNOWN || ftyp2 == FILE_TYPE_UNKNOWN)
+            return 0;
+          else if (ftyp1 == FILE_TYPE_CHAR)
+            {
+              /* For character devices, check if they both refer to a
+                 console.  This loses if both handles refer to the
+                 null device (FIXME!), but in that case we don't care
+                 in the context of Make.  */
+              DWORD conmode1, conmode2;
+
+              /* Each process on Windows can have at most 1 console,
+                 so if both handles are for the console device, they
+                 are the same.  We also compare the console mode to
+                 distinguish between stdin and stdout/stderr.  */
+              if (GetConsoleMode (fh1, &conmode1)
+                  && GetConsoleMode (fh2, &conmode2)
+                  && conmode1 == conmode2)
+                return 1;
+            }
+          else
+            {
+              /* For disk files and pipes, compare their unique
+                 attributes.  */
+              BY_HANDLE_FILE_INFORMATION bhfi1, bhfi2;
+
+              /* Pipes get zero in the volume serial number, but do
+                 appear to have meaningful information in file index
+                 attributes.  We test file attributes as well, for a
+                 good measure.  */
+              if (GetFileInformationByHandle (fh1, &bhfi1)
+                  && GetFileInformationByHandle (fh2, &bhfi2))
+                return (bhfi1.dwVolumeSerialNumber == bhfi2.dwVolumeSerialNumber
+                        && bhfi1.nFileIndexLow == bhfi2.nFileIndexLow
+                        && bhfi1.nFileIndexHigh == bhfi2.nFileIndexHigh
+                        && bhfi1.dwFileAttributes == bhfi2.dwFileAttributes);
+            }
+        }
+    }
+  return 0;
+}
+
+/* A replacement for tmpfile, since the MSVCRT implementation creates
+   the file in the root directory of the current drive, which might
+   not be writable by our user.  Most of the code borrowed from
+   create_batch_file, see job.c.  */
+FILE *
+tmpfile (void)
+{
+  char temp_path[MAXPATHLEN];
+  unsigned path_size = GetTempPath (sizeof temp_path, temp_path);
+  int path_is_dot = 0;
+  /* The following variable is static so we won't try to reuse a name
+     that was generated a little while ago, because that file might
+     not be on disk yet, since we use FILE_ATTRIBUTE_TEMPORARY below,
+     which tells the OS it doesn't need to flush the cache to disk.
+     If the file is not yet on disk, we might think the name is
+     available, while it really isn't.  This happens in parallel
+     builds, where Make doesn't wait for one job to finish before it
+     launches the next one.  */
+  static unsigned uniq = 0;
+  static int second_loop = 0;
+  const char base[] = "gmake_tmpf";
+  const unsigned sizemax = sizeof base - 1 + 4 + 10 + 10;
+  unsigned pid = GetCurrentProcessId ();
+
+  if (path_size == 0)
+    {
+      path_size = GetCurrentDirectory (sizeof temp_path, temp_path);
+      path_is_dot = 1;
+    }
+
+  ++uniq;
+  if (uniq >= 0x10000 && !second_loop)
+    {
+      /* If we already had 64K batch files in this
+         process, make a second loop through the numbers,
+         looking for free slots, i.e. files that were
+         deleted in the meantime.  */
+      second_loop = 1;
+      uniq = 1;
+    }
+  while (path_size > 0 &&
+         path_size + sizemax < sizeof temp_path &&
+         !(uniq >= 0x10000 && second_loop))
+    {
+      HANDLE h;
+
+      sprintf (temp_path + path_size,
+               "%s%s%u-%x.tmp",
+               temp_path[path_size - 1] == '\\' ? "" : "\\",
+               base, pid, uniq);
+      h = CreateFile (temp_path,  /* file name */
+                      GENERIC_READ | GENERIC_WRITE | DELETE, /* desired access */
+                      FILE_SHARE_READ | FILE_SHARE_WRITE,    /* share mode */
+                      NULL,                                  /* default security attributes */
+                      CREATE_NEW,                            /* creation disposition */
+                      FILE_ATTRIBUTE_NORMAL |                /* flags and attributes */
+                      FILE_ATTRIBUTE_TEMPORARY |
+                      FILE_FLAG_DELETE_ON_CLOSE,
+                      NULL);                                 /* no template file */
+
+      if (h == INVALID_HANDLE_VALUE)
+        {
+          const DWORD er = GetLastError ();
+
+          if (er == ERROR_FILE_EXISTS || er == ERROR_ALREADY_EXISTS)
+            {
+              ++uniq;
+              if (uniq == 0x10000 && !second_loop)
+                {
+                  second_loop = 1;
+                  uniq = 1;
+                }
+            }
+
+          /* The temporary path is not guaranteed to exist, or might
+             not be writable by user.  Use the current directory as
+             fallback.  */
+          else if (path_is_dot == 0)
+            {
+              path_size = GetCurrentDirectory (sizeof temp_path, temp_path);
+              path_is_dot = 1;
+            }
+
+          else
+            {
+              errno = EACCES;
+              break;
+            }
+        }
+      else
+        {
+          int fd = _open_osfhandle ((intptr_t)h, 0);
+
+          return _fdopen (fd, "w+b");
+        }
+    }
+
+  if (uniq >= 0x10000)
+    errno = EEXIST;
+  return NULL;
+}
+
+#endif  /* !NO_OUTPUT_SYNC */
+
+#if MAKE_LOAD
+
+/* Support for dynamic loading of objects.  */
+
+
+static DWORD last_err;
+
+void *
+dlopen (const char *file, int mode)
+{
+  char dllfn[MAX_PATH], *p;
+  HANDLE dllhandle;
+
+  if ((mode & ~(RTLD_LAZY | RTLD_NOW | RTLD_GLOBAL)) != 0)
+    {
+      errno = EINVAL;
+      last_err = ERROR_INVALID_PARAMETER;
+      return NULL;
+    }
+
+  if (!file)
+    dllhandle = GetModuleHandle (NULL);
+  else
+    {
+      /* MSDN says to be sure to use backslashes in the DLL file name.  */
+      strcpy (dllfn, file);
+      for (p = dllfn; *p; p++)
+        if (*p == '/')
+          *p = '\\';
+
+      dllhandle = LoadLibrary (dllfn);
+    }
+  if (!dllhandle)
+    last_err = GetLastError ();
+
+  return dllhandle;
+}
+
+char *
+dlerror (void)
+{
+  static char errbuf[1024];
+  DWORD ret;
+
+  if (!last_err)
+    return NULL;
+
+  ret = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
+                       | FORMAT_MESSAGE_IGNORE_INSERTS,
+                       NULL, last_err, 0, errbuf, sizeof (errbuf), NULL);
+  while (ret > 0 && (errbuf[ret - 1] == '\n' || errbuf[ret - 1] == '\r'))
+    --ret;
+
+  errbuf[ret] = '\0';
+  if (!ret)
+    sprintf (errbuf, "Error code %lu", last_err);
+
+  last_err = 0;
+  return errbuf;
+}
+
+void *
+dlsym (void *handle, const char *name)
+{
+  FARPROC addr = NULL;
+
+  if (!handle || handle == INVALID_HANDLE_VALUE)
+    {
+      last_err = ERROR_INVALID_PARAMETER;
+      return NULL;
+    }
+
+  addr = GetProcAddress (handle, name);
+  if (!addr)
+    last_err = GetLastError ();
+
+  return (void *)addr;
+}
+
+int
+dlclose (void *handle)
+{
+  if (!handle || handle == INVALID_HANDLE_VALUE)
+    return -1;
+  if (!FreeLibrary (handle))
+    return -1;
+
+  return 0;
+}
+
+
+#endif  /* MAKE_LOAD */
+
index 6e77c8b..e75a1b1 100644 (file)
@@ -1,6 +1,5 @@
 /* Windows version of dirent.h
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
diff --git a/w32/include/dlfcn.h b/w32/include/dlfcn.h
new file mode 100644 (file)
index 0000000..e920703
--- /dev/null
@@ -0,0 +1,29 @@
+/* dlfcn.h replacement for MS-Windows build.
+Copyright (C) 2013 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 DLFCN_H
+#define DLFCN_H
+
+#define RTLD_LAZY   1
+#define RTLD_NOW    2
+#define RTLD_GLOBAL 4
+
+extern void *dlopen (const char *, int);
+extern void *dlsym (void *, const char *);
+extern char *dlerror (void);
+extern int   dlclose (void *);
+
+#endif  /* DLFCN_H */
index e56e822..4e34a13 100644 (file)
@@ -1,6 +1,5 @@
 /* Definitions for Windows path manipulation.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index 8166dce..c7d9fee 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
@@ -21,11 +20,11 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /*
  * Component Name:
  *
- * $Date: 2010/07/13 01:20:43 $
+ * $Date$
  *
- * $Source: /sources/make/make/w32/include/sub_proc.h,v $
+ * $Source$
  *
- * $Id: sub_proc.h,v 1.12 2010/07/13 01:20:43 psmith Exp $
+ * $Id$
  */
 
 #define EXTERN_DECL(entry, args) extern entry args
@@ -40,9 +39,10 @@ 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(HANDLE process_wait_for_any, (int block, DWORD* pdwWaitStatus));
 EXTERN_DECL(void process_register, (HANDLE proc));
-EXTERN_DECL(HANDLE process_easy, (char** argv, char** env));
+EXTERN_DECL(HANDLE process_easy, (char** argv, char** env,
+                                 int outfd, int errfd));
 EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal));
 EXTERN_DECL(int process_used_slots, (VOID_DECL));
 
@@ -56,5 +56,16 @@ 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]));
+EXTERN_DECL(void process_noinherit, (int fildes));
+
+/* jobserver routines */
+EXTERN_DECL(int open_jobserver_semaphore, (const char* name));
+EXTERN_DECL(int create_jobserver_semaphore, (int tokens));
+EXTERN_DECL(void free_jobserver_semaphore, (VOID_DECL));
+EXTERN_DECL(int acquire_jobserver_semaphore, (VOID_DECL));
+EXTERN_DECL(int release_jobserver_semaphore, (VOID_DECL));
+EXTERN_DECL(int has_jobserver_semaphore, (VOID_DECL));
+EXTERN_DECL(char* get_jobserver_semaphore_name, (VOID_DECL));
+EXTERN_DECL(int wait_for_semaphore_or_child_process, (VOID_DECL));
 
 #endif
index 65369ba..938a119 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
@@ -22,6 +21,6 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define EXTERN_DECL(entry, args) entry args
 #endif
 
-EXTERN_DECL(char * map_windows32_error_to_string, (DWORD error));
+EXTERN_DECL(const char * map_windows32_error_to_string, (DWORD error));
 
 #endif /* !_W32ERR_H */
index 1f8269e..0e33821 100644 (file)
@@ -1,6 +1,5 @@
 /* Path conversion for Windows pathnames.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
@@ -15,7 +14,7 @@ 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 "make.h"
+#include "makeint.h"
 #include <string.h>
 #include <stdlib.h>
 #include "pathstuff.h"
index 46c838c..5258fa3 100644 (file)
@@ -1,8 +1,7 @@
-# NOTE: If you have no `make' program at all to process this makefile, run
-# `build.bat' instead.
+# NOTE: If you have no 'make' program at all to process this makefile, run
+# 'build.bat' instead.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 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
index dee4072..ecd2ab7 100644 (file)
@@ -1,24 +1,23 @@
-@if "%1" == "gcc" GoTo GCCBuild\r
+@if "%COMPILER%" == "gcc" GoTo GCCBuild\r
 if not exist .\WinDebug\nul mkdir .\WinDebug\r
-cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c\r
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c\r
 cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c sub_proc.c\r
-cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c w32err.c\r
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c w32err.c\r
 lib.exe /NOLOGO /OUT:.\WinDebug\subproc.lib  .\WinDebug/misc.obj  .\WinDebug/sub_proc.obj  .\WinDebug/w32err.obj\r
 if not exist .\WinRel\nul mkdir .\WinRel\r
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c misc.c\r
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c sub_proc.c\r
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c w32err.c\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c misc.c\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c sub_proc.c\r
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c w32err.c\r
 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 -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
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o\r
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -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, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
+rem Copyright (C) 1996-2013 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
index 6759c17..1e3f3a1 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
index 00b4bac..259a119 100644 (file)
@@ -1,6 +1,5 @@
 /* Definitions for Windows
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 1996-2013 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
index dcb77bf..f790ca3 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
@@ -18,22 +17,24 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <config.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <io.h>                /* for _get_osfhandle */
 #ifdef _MSC_VER
 # include <stddef.h>    /* for intptr_t */
 #else
 # include <stdint.h>
 #endif
+#include <string.h>
 #include <process.h>  /* for msvc _beginthreadex, _endthreadex */
 #include <signal.h>
 #include <windows.h>
 
+#include "makeint.h"
 #include "sub_proc.h"
 #include "proc.h"
 #include "w32err.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 {
        intptr_t sv_stdin[2];
@@ -58,6 +59,126 @@ static sub_process *proc_array[MAXIMUM_WAIT_OBJECTS];
 static int proc_index = 0;
 static int fake_exits_pending = 0;
 
+/* Windows jobserver implementation variables */
+static char jobserver_semaphore_name[MAX_PATH + 1];
+static HANDLE jobserver_semaphore = NULL;
+
+/* Open existing jobserver semaphore */
+int open_jobserver_semaphore(const char* name)
+{
+    jobserver_semaphore = OpenSemaphore(
+        SEMAPHORE_ALL_ACCESS,  // Semaphore access setting
+        FALSE,                 // Child processes DON'T inherit
+        name);                 // Semaphore name
+
+    if (jobserver_semaphore == NULL)
+        return 0;
+
+    return 1;        
+}
+
+/* Create new jobserver semaphore */
+int create_jobserver_semaphore(int tokens)
+{
+    sprintf(jobserver_semaphore_name, "gmake_semaphore_%d", _getpid());
+
+    jobserver_semaphore = CreateSemaphore(
+        NULL,                          // Use default security descriptor
+        tokens,                                // Initial count
+        tokens,                        // Maximum count
+        jobserver_semaphore_name);     // Semaphore name
+
+    if (jobserver_semaphore == NULL)
+        return 0;
+
+    return 1;        
+}
+
+/* Close jobserver semaphore */
+void free_jobserver_semaphore()
+{
+    if (jobserver_semaphore != NULL)
+    {
+        CloseHandle(jobserver_semaphore);
+        jobserver_semaphore = NULL;
+    }
+}
+
+/* Decrement semaphore count */
+int acquire_jobserver_semaphore()
+{
+    DWORD dwEvent = WaitForSingleObject(
+        jobserver_semaphore,   // Handle to semaphore
+        0);                    // DON'T wait on semaphore
+
+    return (dwEvent == WAIT_OBJECT_0);
+}
+
+/* Increment semaphore count */
+int release_jobserver_semaphore()
+{
+    BOOL bResult = ReleaseSemaphore( 
+        jobserver_semaphore,   // handle to semaphore
+        1,                     // increase count by one
+        NULL);                 // not interested in previous count
+
+    return (bResult);
+}
+
+int has_jobserver_semaphore()
+{
+    return (jobserver_semaphore != NULL);
+}
+
+char* get_jobserver_semaphore_name()
+{
+    return (jobserver_semaphore_name);
+}
+
+/* Wait for either the jobserver semaphore to become signalled or one of our
+ * child processes to terminate.
+ */
+int wait_for_semaphore_or_child_process()
+{
+    HANDLE handles[MAXIMUM_WAIT_OBJECTS];
+    DWORD dwHandleCount = 1;
+    DWORD dwEvent;
+    int i;
+
+    /* Add jobserver semaphore to first slot. */
+    handles[0] = jobserver_semaphore;
+
+    /* Build array of handles to wait for */
+    for (i = 0; i < proc_index; i++) 
+    {
+        /* Don't wait on child processes that have already finished */
+        if (fake_exits_pending && proc_array[i]->exit_code)
+            continue;
+
+        handles[dwHandleCount++] = (HANDLE) proc_array[i]->pid;
+    }
+
+    dwEvent = WaitForMultipleObjects( 
+        dwHandleCount, // number of objects in array
+        handles,       // array of objects
+        FALSE,         // wait for any object
+        INFINITE);     // wait until object is signalled
+
+    switch(dwEvent)
+    {
+      case WAIT_FAILED:
+        return -1;
+
+      case WAIT_OBJECT_0:
+        /* Indicate that the semaphore was signalled */
+        return 1;
+
+      default:
+        /* Assume that one or more of the child processes terminated. */
+        return 0;
+    }
+}
+
 /*
  * When a process has been waited for, adjust the wait state
  * array so that we don't wait for it again
@@ -87,7 +208,7 @@ process_adjust_wait_state(sub_process* pproc)
  * Waits for any of the registered child processes to finish.
  */
 static sub_process *
-process_wait_for_any_private(void)
+process_wait_for_any_private(int block, DWORD* pdwWaitStatus)
 {
        HANDLE handles[MAXIMUM_WAIT_OBJECTS];
        DWORD retval, which;
@@ -106,7 +227,7 @@ process_wait_for_any_private(void)
 
        /* wait for someone to exit */
        if (!fake_exits_pending) {
-               retval = WaitForMultipleObjects(proc_index, handles, FALSE, INFINITE);
+               retval = WaitForMultipleObjects(proc_index, handles, FALSE, (block ? INFINITE : 0));
                which = retval - WAIT_OBJECT_0;
        } else {
                fake_exits_pending--;
@@ -114,13 +235,19 @@ process_wait_for_any_private(void)
                which = i;
        }
 
+        /* If the pointer is not NULL, set the wait status result variable. */
+        if (pdwWaitStatus)
+            *pdwWaitStatus = retval;
+
        /* return pointer to process */
-       if (retval != WAIT_FAILED) {
+        if ((retval == WAIT_TIMEOUT) || (retval == WAIT_FAILED)) {
+               return NULL;
+        }
+       else {
                sub_process* pproc = proc_array[which];
                process_adjust_wait_state(pproc);
                return pproc;
-       } else
-               return NULL;
+       } 
 }
 
 /*
@@ -179,9 +306,9 @@ process_used_slots(void)
  */
 
 HANDLE
-process_wait_for_any(void)
+process_wait_for_any(int block, DWORD* pdwWaitStatus)
 {
-       sub_process* pproc = process_wait_for_any_private();
+       sub_process* pproc = process_wait_for_any_private(block, pdwWaitStatus);
 
        if (!pproc)
                return NULL;
@@ -216,6 +343,15 @@ process_exit_code(HANDLE proc)
        return (((sub_process *)proc)->exit_code);
 }
 
+void
+process_noinherit(int fd)
+{
+  HANDLE fh = (HANDLE)_get_osfhandle(fd);
+
+  if (fh && fh != INVALID_HANDLE_VALUE)
+       SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0);
+}
+
 /*
 2006-02:
 All the following functions are currently unused.
@@ -336,17 +472,19 @@ process_init_fd(HANDLE stdinh, HANDLE stdouth, HANDLE stderrh)
        sub_process *pproc;
 
        pproc = malloc(sizeof(*pproc));
-       memset(pproc, 0, sizeof(*pproc));
+       if (pproc) {
+               memset(pproc, 0, sizeof(*pproc));
 
-       /*
-        * Just pass the provided file handles to the 'child side' of the
-        * pipe, bypassing pipes altogether.
-        */
-       pproc->sv_stdin[1]  = (intptr_t) stdinh;
-       pproc->sv_stdout[1] = (intptr_t) stdouth;
-       pproc->sv_stderr[1] = (intptr_t) stderrh;
+               /*
+                * Just pass the provided file handles to the 'child
+                * side' of the pipe, bypassing pipes altogether.
+                */
+               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;
+               pproc->last_err = pproc->lerrno = 0;
+       }
 
        return((HANDLE)pproc);
 }
@@ -403,6 +541,26 @@ find_file(const char *exec_path, const char *path_var,
        return INVALID_HANDLE_VALUE;
 }
 
+/*
+ * Return non-zero of FNAME specifies a batch file and its name
+ * includes embedded whitespace.
+ */
+
+static int
+batch_file_with_spaces(const char *fname)
+{
+       size_t fnlen = strlen(fname);
+
+       return (fnlen > 4
+               && (_strnicmp(fname + fnlen - 4, ".bat", 4) == 0
+                   || _strnicmp(fname + fnlen - 4, ".cmd", 4) == 0)
+               /* The set of characters in the 2nd arg to strpbrk
+                  should be the same one used by make_command_line
+                  below to decide whether an argv[] element needs
+                  quoting.  */
+               && strpbrk(fname, " \t") != NULL);
+}
+
 
 /*
  * Description:   Create the child process to be helped
@@ -433,6 +591,7 @@ process_begin(
        STARTUPINFO startInfo;
        PROCESS_INFORMATION procInfo;
        char *envblk=NULL;
+       int pass_null_exec_path = 0;
 
        /*
         *  Shell script detection...  if the exec_path starts with #! then
@@ -514,8 +673,28 @@ process_begin(
 
        if (file_not_found)
                command_line = make_command_line( shell_name, exec_path, argv);
-       else
+       else {
+               /* If exec_fname includes whitespace, CreateProcess
+                  behaves erratically and unreliably, and often fails
+                  if argv[0] also includes whitespace (and thus will
+                  be quoted by make_command_line below).  So in that
+                  case, we don't pass exec_fname as the 1st arg to
+                  CreateProcess, but instead replace argv[0] with
+                  exec_fname (to keep its leading directories and
+                  extension as found by find_file), and pass NULL to
+                  CreateProcess as its 1st arg.  This works around
+                  the bugs in CreateProcess, which are probably
+                  caused by its passing the command to cmd.exe with
+                  some incorrect quoting.  */
+               if (!shell_name
+                   && batch_file_with_spaces(exec_fname)
+                   && _stricmp(exec_path, argv[0]) == 0) {
+                       pass_null_exec_path = 1;
+                       free (argv[0]);
+                       argv[0] = xstrdup(exec_fname);
+               }
                command_line = make_command_line( shell_name, exec_fname, argv);
+       }
 
        if ( command_line == NULL ) {
                pproc->last_err = 0;
@@ -532,7 +711,7 @@ process_begin(
                }
        }
 
-       if ((shell_name) || (file_not_found)) {
+       if (shell_name || file_not_found || pass_null_exec_path) {
                exec_path = 0;  /* Search for the program in %Path% */
        } else {
                exec_path = exec_fname;
@@ -585,9 +764,12 @@ process_begin(
        CloseHandle(procInfo.hThread);
 
        /* Close the halves of the pipes we don't need */
-        CloseHandle((HANDLE)pproc->sv_stdin[1]);
-        CloseHandle((HANDLE)pproc->sv_stdout[1]);
-        CloseHandle((HANDLE)pproc->sv_stderr[1]);
+       if ((HANDLE)pproc->sv_stdin[1] != INVALID_HANDLE_VALUE)
+         CloseHandle((HANDLE)pproc->sv_stdin[1]);
+       if ((HANDLE)pproc->sv_stdout[1] != INVALID_HANDLE_VALUE)
+         CloseHandle((HANDLE)pproc->sv_stdout[1]);
+       if ((HANDLE)pproc->sv_stderr[1] != INVALID_HANDLE_VALUE)
+         CloseHandle((HANDLE)pproc->sv_stderr[1]);
         pproc->sv_stdin[1] = 0;
         pproc->sv_stdout[1] = 0;
         pproc->sv_stderr[1] = 0;
@@ -600,6 +782,7 @@ process_begin(
 
 
 
+#if 0  /* unused */
 static DWORD
 proc_stdin_thread(sub_process *pproc)
 {
@@ -844,6 +1027,7 @@ process_pipe_io(
                return(0);
 
 }
+#endif /* unused */
 
 /*
  * Purpose: collects output from child process and returns results
@@ -865,7 +1049,7 @@ process_file_io(
         DWORD ierr;
 
        if (proc == NULL)
-               pproc = process_wait_for_any_private();
+               pproc = process_wait_for_any_private(1, 0);
        else
                pproc = (sub_process *)proc;
 
@@ -927,7 +1111,7 @@ done2:
 
 /*
  * Description:  Clean up any leftover handles, etc.  It is up to the
- * caller to manage and free the input, ouput, and stderr buffers.
+ * caller to manage and free the input, output, and stderr buffers.
  */
        void
 process_cleanup(
@@ -938,11 +1122,14 @@ process_cleanup(
 
        if (pproc->using_pipes) {
                for (i= 0; i <= 1; i++) {
-                       if ((HANDLE)pproc->sv_stdin[i])
+                       if ((HANDLE)pproc->sv_stdin[i]
+                           && (HANDLE)pproc->sv_stdin[i] != INVALID_HANDLE_VALUE)
                                CloseHandle((HANDLE)pproc->sv_stdin[i]);
-                       if ((HANDLE)pproc->sv_stdout[i])
+                       if ((HANDLE)pproc->sv_stdout[i]
+                           && (HANDLE)pproc->sv_stdout[i] != INVALID_HANDLE_VALUE)
                                CloseHandle((HANDLE)pproc->sv_stdout[i]);
-                       if ((HANDLE)pproc->sv_stderr[i])
+                       if ((HANDLE)pproc->sv_stderr[i]
+                           && (HANDLE)pproc->sv_stderr[i] != INVALID_HANDLE_VALUE)
                                CloseHandle((HANDLE)pproc->sv_stderr[i]);
                }
        }
@@ -1205,52 +1392,110 @@ make_command_line( char *shell_name, char *full_exec_path, char **argv)
 HANDLE
 process_easy(
        char **argv,
-       char **envp)
+       char **envp,
+       int outfd,
+       int errfd)
 {
-  HANDLE hIn;
-  HANDLE hOut;
-  HANDLE hErr;
-  HANDLE hProcess;
+  HANDLE hIn = INVALID_HANDLE_VALUE;
+  HANDLE hOut = INVALID_HANDLE_VALUE;
+  HANDLE hErr = INVALID_HANDLE_VALUE;
+  HANDLE hProcess, tmpIn, tmpOut, tmpErr;
+  DWORD e;
 
   if (proc_index >= MAXIMUM_WAIT_OBJECTS) {
        DB (DB_JOBS, ("process_easy: All process slots used up\n"));
        return INVALID_HANDLE_VALUE;
   }
+  /* Standard handles returned by GetStdHandle can be NULL or
+     INVALID_HANDLE_VALUE if the parent process closed them.  If that
+     happens, we open the null device and pass its handle to
+     CreateProcess as the corresponding handle to inherit.  */
+  tmpIn = GetStdHandle(STD_INPUT_HANDLE);
   if (DuplicateHandle(GetCurrentProcess(),
-                      GetStdHandle(STD_INPUT_HANDLE),
-                      GetCurrentProcess(),
-                      &hIn,
-                      0,
-                      TRUE,
-                      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fprintf(stderr,
-            "process_easy: DuplicateHandle(In) failed (e=%ld)\n",
-            GetLastError());
-    return INVALID_HANDLE_VALUE;
+                     tmpIn,
+                     GetCurrentProcess(),
+                     &hIn,
+                     0,
+                     TRUE,
+                     DUPLICATE_SAME_ACCESS) == FALSE) {
+    if ((e = GetLastError()) == ERROR_INVALID_HANDLE) {
+      tmpIn = CreateFile("NUL", GENERIC_READ,
+                        FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+      if (tmpIn != INVALID_HANDLE_VALUE
+         && DuplicateHandle(GetCurrentProcess(),
+                            tmpIn,
+                            GetCurrentProcess(),
+                            &hIn,
+                            0,
+                            TRUE,
+                            DUPLICATE_SAME_ACCESS) == FALSE)
+       CloseHandle(tmpIn);
+    }
+    if (hIn == INVALID_HANDLE_VALUE) {
+      fprintf(stderr, "process_easy: DuplicateHandle(In) failed (e=%ld)\n", e);
+      return INVALID_HANDLE_VALUE;
+    }
   }
+  if (outfd >= 0)
+    tmpOut = (HANDLE)_get_osfhandle (outfd);
+  else
+    tmpOut = GetStdHandle (STD_OUTPUT_HANDLE);
   if (DuplicateHandle(GetCurrentProcess(),
-                      GetStdHandle(STD_OUTPUT_HANDLE),
-                      GetCurrentProcess(),
-                      &hOut,
-                      0,
-                      TRUE,
-                      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fprintf(stderr,
-           "process_easy: DuplicateHandle(Out) failed (e=%ld)\n",
-           GetLastError());
-    return INVALID_HANDLE_VALUE;
+                     tmpOut,
+                     GetCurrentProcess(),
+                     &hOut,
+                     0,
+                     TRUE,
+                     DUPLICATE_SAME_ACCESS) == FALSE) {
+    if ((e = GetLastError()) == ERROR_INVALID_HANDLE) {
+      tmpOut = CreateFile("NUL", GENERIC_WRITE,
+                         FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+      if (tmpOut != INVALID_HANDLE_VALUE
+         && DuplicateHandle(GetCurrentProcess(),
+                            tmpOut,
+                            GetCurrentProcess(),
+                            &hOut,
+                            0,
+                            TRUE,
+                            DUPLICATE_SAME_ACCESS) == FALSE)
+       CloseHandle(tmpOut);
+    }
+    if (hOut == INVALID_HANDLE_VALUE) {
+      fprintf(stderr, "process_easy: DuplicateHandle(Out) failed (e=%ld)\n", e);
+      return INVALID_HANDLE_VALUE;
+    }
   }
+  if (errfd >= 0)
+    tmpErr = (HANDLE)_get_osfhandle (errfd);
+  else
+    tmpErr = GetStdHandle(STD_ERROR_HANDLE);
   if (DuplicateHandle(GetCurrentProcess(),
-                      GetStdHandle(STD_ERROR_HANDLE),
-                      GetCurrentProcess(),
-                      &hErr,
-                      0,
-                      TRUE,
-                      DUPLICATE_SAME_ACCESS) == FALSE) {
-    fprintf(stderr,
-            "process_easy: DuplicateHandle(Err) failed (e=%ld)\n",
-            GetLastError());
-    return INVALID_HANDLE_VALUE;
+                     tmpErr,
+                     GetCurrentProcess(),
+                     &hErr,
+                     0,
+                     TRUE,
+                     DUPLICATE_SAME_ACCESS) == FALSE) {
+    if ((e = GetLastError()) == ERROR_INVALID_HANDLE) {
+      tmpErr = CreateFile("NUL", GENERIC_WRITE,
+                         FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+      if (tmpErr != INVALID_HANDLE_VALUE
+         && DuplicateHandle(GetCurrentProcess(),
+                            tmpErr,
+                            GetCurrentProcess(),
+                            &hErr,
+                            0,
+                            TRUE,
+                            DUPLICATE_SAME_ACCESS) == FALSE)
+       CloseHandle(tmpErr);
+    }
+    if (hErr == INVALID_HANDLE_VALUE) {
+      fprintf(stderr, "process_easy: DuplicateHandle(Err) failed (e=%ld)\n", e);
+      return INVALID_HANDLE_VALUE;
+    }
   }
 
   hProcess = process_init_fd(hIn, hOut, hErr);
@@ -1263,9 +1508,12 @@ process_easy(
     ((sub_process*) hProcess)->exit_code = process_last_err(hProcess);
 
     /* close up unused handles */
-    CloseHandle(hIn);
-    CloseHandle(hOut);
-    CloseHandle(hErr);
+    if (hIn != INVALID_HANDLE_VALUE)
+      CloseHandle(hIn);
+    if (hOut != INVALID_HANDLE_VALUE)
+      CloseHandle(hOut);
+    if (hErr != INVALID_HANDLE_VALUE)
+      CloseHandle(hErr);
   }
 
   process_register(hProcess);
index 80d796e..facfabc 100644 (file)
@@ -1,6 +1,5 @@
 /* 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.
+Copyright (C) 1996-2013 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
@@ -15,7 +14,9 @@ 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 <stdlib.h>
 #include <windows.h>
+#include "makeint.h"
 #include "w32err.h"
 
 /*
@@ -26,14 +27,24 @@ this program.  If not, see <http://www.gnu.org/licenses/>.  */
  * Notes/Dependencies:  I got this from
  *      comp.os.ms-windows.programmer.win32
  */
-char *
+const 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
+/*
+ * We used to have an MSVC-specific '__declspec (thread)' qualifier
+ * here, with the following comment:
+ *
+ * __declspec (thread) necessary if you will use multiple threads on MSVC
+ *
+ * However, Make was never multithreaded on Windows (except when
+ * Ctrl-C is hit, in which case the main thread is stopped
+ * immediately, so it doesn't matter in this context).  The functions
+ * on sub_proc.c that started and stopped additional threads were
+ * never used, and are now #ifdef'ed away.  Until we need more than
+ * one thread, we have no problems with the following buffer being
+ * static.  (If and when we do need it to be in thread-local storage,
+ * the corresponding GCC qualifier is '__thread'.)
+ */
+    static char szMessageBuffer[128];
        /* Fill message buffer with a default message in
         * case FormatMessage fails
         */
@@ -43,6 +54,7 @@ static char szMessageBuffer[128];
         *  Special code for winsock error handling.
         */
        if (ercode > WSABASEERR) {
+#if 0
                HMODULE hModule = GetModuleHandle("wsock32");
                if (hModule != NULL) {
                        FormatMessage(FORMAT_MESSAGE_FROM_HMODULE,
@@ -54,6 +66,9 @@ static char szMessageBuffer[128];
                                NULL);
                        FreeLibrary(hModule);
                }
+#else
+               fatal(NILF, szMessageBuffer);
+#endif
        } else {
                /*
                 *  Default system message handling