diff options
author | Kévin THIERRY <kevin.thierry@open.eurogiciel.org> | 2014-11-05 08:27:15 +0100 |
---|---|---|
committer | Kévin THIERRY <kevin.thierry@open.eurogiciel.org> | 2014-11-05 08:27:15 +0100 |
commit | e15597c3e85dedc015ff923a88febd46a1551f71 (patch) | |
tree | 467fdb092d1fa76bcb63d4db653e8176dae24e62 | |
parent | 9789b4dba120180760ec948089fc98ebab6eb28b (diff) | |
download | make-sandbox/kevinthierry/upstream.tar.gz make-sandbox/kevinthierry/upstream.tar.bz2 make-sandbox/kevinthierry/upstream.zip |
Imported Upstream version 4.0upstream/4.0sandbox/kevinthierry/upstream
293 files changed, 54566 insertions, 34858 deletions
@@ -1,10 +1,11 @@ -Notes on the Free Translation Project -************************************* +1 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. @@ -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 @@ -1,3 +1,1619 @@ +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. @@ -3994,15 +5610,14 @@ -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 diff --git a/Makefile.DOS b/Makefile.DOS index 58c950c..42cd487 100644 --- a/Makefile.DOS +++ b/Makefile.DOS @@ -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 diff --git a/Makefile.am b/Makefile.am index 92acdc2..5156f47 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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: diff --git a/Makefile.ami b/Makefile.ami index 8cc67df..efbab01 100644 --- a/Makefile.ami +++ b/Makefile.ami @@ -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 diff --git a/Makefile.in b/Makefile.in index 6481e99..9814180 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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 @@ -36,6 +35,23 @@ 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: @@ -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. -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. + + +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. -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 -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 -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. -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. -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. -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). -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. -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. -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>. -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. -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.) -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.) -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). -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. -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. -Version 3.66 +Version 3.66 (21 May 1993) * `make --version' (or `make -v') now exits immediately after printing the version number. -Version 3.65 +Version 3.65 (09 May 1993) * Make now supports long-named members in `ar' archive files. -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'. -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.) ------------------------------------------------------------------------------- -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 @@ -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 @@ -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! ------------------------------------------------------------------------------- -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 diff --git a/README.Amiga b/README.Amiga index 091b8b4..1fabe07 100644 --- a/README.Amiga +++ b/README.Amiga @@ -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 ------------------------------------------------------------------------------- -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 @@ -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> ------------------------------------------------------------------------------- -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 @@ -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. ------------------------------------------------------------------------------- -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 @@ -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. + +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. + +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. -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. -$ 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 @@ -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. ------------------------------------------------------------------------------- -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/README.customs b/README.customs index 0ad1837..8b3fa74 100644 --- a/README.customs +++ b/README.customs @@ -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: ------------------------------------------------------------------------------- -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 @@ -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 diff --git a/acinclude.m4 b/acinclude.m4 index 0e56441..b7d8efd 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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" @@ -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. @@ -13,18 +14,181 @@ 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]) @@ -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) @@ -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; @@ -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 @@ -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; } -/* 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 */ -/* 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. */ @@ -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 /* 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. */ diff --git a/build.sh.in b/build.sh.in index 213df8d..92957bd 100755 --- a/build.sh.in +++ b/build.sh.in @@ -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}" diff --git a/build_w32.bat b/build_w32.bat index de758b0..148dfac 100644 --- a/build_w32.bat +++ b/build_w32.bat @@ -1,6 +1,5 @@ @echo off
-rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-rem 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1996-2013 Free Software Foundation, Inc.
rem This file is part of GNU Make.
rem
rem GNU Make is free software; you can redistribute it and/or modify it under
@@ -16,21 +15,84 @@ rem rem You should have received a copy of the GNU General Public License along
rem with this program. If not, see <http://www.gnu.org/licenses/>.
-if exist config.h.W32 GoTo NotCVS
-sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.in > config.h.W32.sed
+if "%1" == "-h" GoTo Usage
+if "%1" == "--help" GoTo Usage
+if not exist config.h.W32.template GoTo NotSCM
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > config.h.W32.sed
echo s,%%PACKAGE%%,make,g >> config.h.W32.sed
sed -f config.h.W32.sed config.h.W32.template > config.h.W32
-:NotCVS
-if not exist config.h copy config.h.W32 config.h
+echo static const char *const GUILE_module_defn = ^" \> gmk-default.h
+sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\/" gmk-default.scm >> gmk-default.h
+echo ^";>> gmk-default.h
+:NotSCM
+copy config.h.W32 config.h
+
+rem Guile configuration
+set GUILECFLAGS=
+set GUILELIBS=
+set GUILESRC=
+set NOGUILE=
+set OPT=-O2
+set COMPILER=
+set PKGMSC=
+:ParseSW
+if "%1" == "--debug" GoTo SetOpt
+if "%1" == "--without-guile" GoTo NoGuile
+if "%1" == "gcc" GoTo SetCC
+if "%1" == "" GoTo ChkGuile
+:SetOpt
+set OPT=-O0
+shift
+GoTo ParseSW
+:NoGuile
+set NOGUILE=Y
+echo "Building without Guile"
+shift
+GoTo ParseSW
+:SetCC
+set COMPILER=gcc
+echo "Building with GCC"
+shift
+GoTo ParseSW
+rem Build with Guile is supported only on NT and later versions
+:ChkGuile
+if "%NOGUILE%" == "Y" GoTo GuileDone
+if not "%OS%" == "Windows_NT" GoTo NoGuile
+pkg-config --help > guile.tmp 2> NUL
+if ERRORLEVEL 1 GoTo NoPkgCfg
+echo "Checking for Guile 2.0"
+if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax
+pkg-config --cflags --short-errors "guile-2.0" > guile.tmp
+if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp
+pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > guile.tmp
+if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp
+if not "%GUILECFLAGS%" == "" GoTo GuileDone
+echo "Checking for Guile 1.8"
+pkg-config --cflags --short-errors "guile-1.8" > guile.tmp
+if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp
+pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > guile.tmp
+if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp
+if not "%GUILECFLAGS%" == "" GoTo GuileDone
+echo "No Guile found, building without Guile"
+GoTo GuileDone
+:NoPkgCfg
+echo "pkg-config not found, building without Guile"
+:GuileDone
+if not "%GUILECFLAGS%" == "" echo "Guile found, building with Guile"
+if not "%GUILECFLAGS%" == "" set GUILESRC=guile.c
+if not "%GUILECFLAGS%" == "" set GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE
+if "%COMPILER%" == "gcc" if "%OPT%" == "-O0" echo "Building without compiler optimizations"
cd w32\subproc
+echo.
echo "Creating the subproc library"
-%ComSpec% /c build.bat %1
+%ComSpec% /c build.bat
cd ..\..
if exist link.dbg del link.dbg
if exist link.rel del link.rel
-echo "Creating GNU Make for Windows 9X/NT/2K/XP"
-if "%1" == "gcc" GoTo GCCBuild
+echo.
+echo "Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8"
+if "%COMPILER%" == "gcc" GoTo GCCBuild
set make=gnumake
echo on
if not exist .\WinDebug\nul mkdir .\WinDebug
@@ -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
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c
echo WinDebug\dir.obj >>link.dbg
-cl.exe /nologo /MT /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
+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
echo WinDebug\main.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c
echo WinDebug\getopt1.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c
echo WinDebug\job.obj >>link.dbg
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c output.c
+echo WinDebug\output.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c
echo WinDebug\read.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c
@@ -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
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c
echo WinDebug\implicit.obj >>link.dbg
+cl.exe /nologo /MT /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
+echo WinDebug\loadapi.obj >>link.dbg
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c load.c
+echo WinDebug\load.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\compat\dirent.c
echo WinDebug\dirent.obj >>link.dbg
+cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\compat\posixfcn.c
+echo WinDebug\posixfcn.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\glob.c
echo WinDebug\glob.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\fnmatch.c
echo WinDebug\fnmatch.obj >>link.dbg
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\pathstuff.c
echo WinDebug\pathstuff.obj >>link.dbg
+if "%GUILESRC%" == "" GoTo LinkDbg
+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
+echo WinDebug\guile.obj >>link.dbg
+:LinkDbg
echo off
echo "Linking WinDebug/%make%.exe"
-rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /OUT:.\WinDebug/%make%.exe .\WinDebug/variable.obj .\WinDebug/rule.obj .\WinDebug/remote-stub.obj .\WinDebug/commands.obj .\WinDebug/file.obj .\WinDebug/getloadavg.obj .\WinDebug/default.obj .\WinDebug/signame.obj .\WinDebug/expand.obj .\WinDebug/dir.obj .\WinDebug/main.obj .\WinDebug/getopt1.obj .\WinDebug/job.obj .\WinDebug/read.obj .\WinDebug/version.obj .\WinDebug/getopt.obj .\WinDebug/arscan.obj .\WinDebug/remake.obj .\WinDebug/hash.obj .\WinDebug/strcache.obj .\WinDebug/misc.obj .\WinDebug/ar.obj .\WinDebug/function.obj .\WinDebug/vpath.obj .\WinDebug/implicit.obj .\WinDebug/dirent.obj .\WinDebug/glob.obj .\WinDebug/fnmatch.obj .\WinDebug/pathstuff.obj
-echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib >>link.dbg
+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
+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
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /OUT:.\WinDebug/%make%.exe @link.dbg
if not exist .\WinDebug/%make%.exe echo "WinDebug build failed"
if exist .\WinDebug/%make%.exe echo "WinDebug build succeeded!"
@@ -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
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c
echo WinRel\dir.obj >>link.rel
-cl.exe /nologo /MT /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
+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
echo WinRel\main.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c
echo WinRel\getopt1.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c
echo WinRel\job.obj >>link.rel
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c output.c
+echo WinRel\output.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c
echo WinRel\read.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c
@@ -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
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c
echo WinRel\implicit.obj >>link.rel
+cl.exe /nologo /MT /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
+echo WinRel\loadapi.obj >>link.rel
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c load.c
+echo WinRel\load.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\compat\dirent.c
echo WinRel\dirent.obj >>link.rel
+cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\compat\posixfcn.c
+echo WinRel\posixfcn.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\glob.c
echo WinRel\glob.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\fnmatch.c
echo WinRel\fnmatch.obj >>link.rel
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\pathstuff.c
echo WinRel\pathstuff.obj >>link.rel
+if "%GUILESRC%" == "" GoTo LinkRel
+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
+echo WinRel\guile.obj >>link.rel
+:LinkRel
echo off
echo "Linking WinRel/%make%.exe"
-rem link.exe kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /OUT:.\WinRel/%make%.exe .\WinRel/variable.obj .\WinRel/rule.obj .\WinRel/remote-stub.obj .\WinRel/commands.obj .\WinRel/file.obj .\WinRel/getloadavg.obj .\WinRel/default.obj .\WinRel/signame.obj .\WinRel/expand.obj .\WinRel/dir.obj .\WinRel/main.obj .\WinRel/getopt1.obj .\WinRel/job.obj .\WinRel/read.obj .\WinRel/version.obj .\WinRel/getopt.obj .\WinRel/arscan.obj .\WinRel/remake.obj .\WinRel/misc.obj .\WinRel/hash.obj .\WinRel/strcache.obj .\WinRel/ar.obj .\WinRel/function.obj .\WinRel/vpath.obj .\WinRel/implicit.obj .\WinRel/dirent.obj .\WinRel/glob.obj .\WinRel/fnmatch.obj .\WinRel/pathstuff.obj
-echo kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib >>link.rel
+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
+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
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /OUT:.\WinRel/%make%.exe @link.rel
if not exist .\WinRel/%make%.exe echo "WinRel build failed"
if exist .\WinRel/%make%.exe echo "WinRel build succeeded!"
@@ -170,34 +256,66 @@ set make= GoTo BuildEnd
:GCCBuild
echo on
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c main.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o
-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
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %GUILECFLAGS% -c main.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c output.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c loadapi.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c load.c
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o
+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
+@echo off
+set GUILEOBJ=
+if "%GUILESRC%" == "" GoTo LinkGCC
+set GUILEOBJ=guile.o
+echo on
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% %GUILECFLAGS% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c guile.c
+:LinkGCC
+@echo off
+Rem The version NN of libgnumake-NN.dll.a should be bumped whenever
+Rem the API changes in binary-incompatible manner.
+@echo on
+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
+@GoTo BuildEnd
+:Usage
+echo Usage: %0 [options] [gcc]
+echo Options:
+echo. --debug For GCC only, make a debug build
+echo. (MSVC build always makes both debug and release)
+echo. --without-guile Do not compile Guile support even if found
+echo. --help Display these instructions and exit
:BuildEnd
+@echo off
+set GUILEOBJ=
+set GUILESRC=
+set GUILELIBS=
+set GUILECFLAGS=
+set PKGMSC=
+set OPT=
+set COMPILER=
+set NOGUILE=
echo on
@@ -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 @@ -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 } /* 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; } } @@ -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); @@ -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); @@ -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 diff --git a/config.h-vms b/config.h-vms index a6f19b6..8d307ee 100644 --- a/config.h-vms +++ b/config.h-vms @@ -1,7 +1,6 @@ /* config.h-vms. Generated by hand by Klaus Kmpf <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" diff --git a/config.h.W32 b/config.h.W32 index 4ac84f7..664816d 100644 --- a/config.h.W32 +++ b/config.h.W32 @@ -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 "" diff --git a/config.h.in b/config.h.in index da28f93..bd6843f 100644 --- a/config.h.in +++ b/config.h.in @@ -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 @@ -35,15 +35,20 @@ */ #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 @@ -55,6 +60,18 @@ 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 @@ -71,12 +88,12 @@ */ #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 @@ -89,9 +106,6 @@ /* 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 @@ -116,7 +130,10 @@ /* 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. */ @@ -203,9 +220,6 @@ /* 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 @@ -284,42 +298,27 @@ /* 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 @@ -427,6 +426,11 @@ /* 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 @@ -452,11 +456,11 @@ /* 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 diff --git a/config/ChangeLog b/config/ChangeLog index aed4694..4e3155b 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -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. -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 diff --git a/config/Makefile.am b/config/Makefile.am index 203a5ee..f770e64 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -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. diff --git a/config/Makefile.in b/config/Makefile.in index 41127d6..3a05524 100644 --- a/config/Makefile.in +++ b/config/Makefile.in @@ -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 @@ -33,6 +32,23 @@ # 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 index 59535eb..0000000 --- a/config/codeset.m4 +++ /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 -]) diff --git a/config/compile b/config/compile index c0096a7..862a14e 100755 --- a/config/compile +++ b/config/compile @@ -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 diff --git a/config/config.guess b/config/config.guess index 115f944..b79252d 100644 --- a/config/config.guess +++ b/config/config.guess @@ -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 diff --git a/config/config.rpath b/config/config.rpath index 4db13e5..17298f2 100755 --- a/config/config.rpath +++ b/config/config.rpath @@ -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" diff --git a/config/config.sub b/config/config.sub index 204218c..61cb4bc 100644 --- a/config/config.sub +++ b/config/config.sub @@ -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) diff --git a/config/depcomp b/config/depcomp index df8eea7..25a39e6 100755 --- a/config/depcomp +++ b/config/depcomp @@ -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" ;; diff --git a/config/dospaths.m4 b/config/dospaths.m4 index da544f8..3686377 100644 --- a/config/dospaths.m4 +++ b/config/dospaths.m4 @@ -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 @@ -18,21 +17,17 @@ # 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.])]) +]) diff --git a/config/gettext.m4 b/config/gettext.m4 index a374f03..f84e6a5 100644 --- a/config/gettext.m4 +++ b/config/gettext.m4 @@ -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 index 9c9f3db..0000000 --- a/config/glibc21.m4 +++ /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" - ] -) diff --git a/config/iconv.m4 b/config/iconv.m4 index c5f3579..e2041b9 100644 --- a/config/iconv.m4 +++ b/config/iconv.m4 @@ -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 ]) diff --git a/config/install-sh b/config/install-sh index 6781b98..a9244eb 100755 --- a/config/install-sh +++ b/config/install-sh @@ -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 index 55dddcf..0000000 --- a/config/intdiv0.m4 +++ /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 index 0000000..dd91025 --- /dev/null +++ b/config/intlmacosx.m4 @@ -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 index dfb08cc..0000000 --- a/config/intmax.m4 +++ /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 index fd007c3..0000000 --- a/config/inttypes-pri.m4 +++ /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 index ab370ff..0000000 --- a/config/inttypes.m4 +++ /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 index f342eba..0000000 --- a/config/inttypes_h.m4 +++ /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 index 1319dd1..0000000 --- a/config/isc-posix.m4 +++ /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 index ffd4008..0000000 --- a/config/lcmessage.m4 +++ /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 -]) diff --git a/config/lib-ld.m4 b/config/lib-ld.m4 index 38aeaec..ebb3052 100644 --- a/config/lib-ld.m4 +++ b/config/lib-ld.m4 @@ -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 diff --git a/config/lib-link.m4 b/config/lib-link.m4 index eeb200d..c73bd8e 100644 --- a/config/lib-link.m4 +++ b/config/lib-link.m4 @@ -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]) +]) diff --git a/config/lib-prefix.m4 b/config/lib-prefix.m4 index 8aff5a9..1601cea 100644 --- a/config/lib-prefix.m4 +++ b/config/lib-prefix.m4 @@ -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 index 1333d2f..0000000 --- a/config/longdouble.m4 +++ /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 index d7d7350..0000000 --- a/config/longlong.m4 +++ /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 -]) diff --git a/config/mdate-sh b/config/mdate-sh index e631b22..60dc485 100755 --- a/config/mdate-sh +++ b/config/mdate-sh @@ -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 diff --git a/config/missing b/config/missing index 28055d2..86a8fc3 100755 --- a/config/missing +++ b/config/missing @@ -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 index d2d5f21..0000000 --- a/config/mkinstalldirs +++ /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 diff --git a/config/nls.m4 b/config/nls.m4 index 36bc493..003704c 100644 --- a/config/nls.m4 +++ b/config/nls.m4 @@ -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]) ]) diff --git a/config/po.m4 b/config/po.m4 index e161998..47f36a4 100644 --- a/config/po.m4 +++ b/config/po.m4 @@ -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 index 186ba6a..0000000 --- a/config/printf-posix.m4 +++ /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 -]) diff --git a/config/progtest.m4 b/config/progtest.m4 index 8fe527c..2d804ac 100644 --- a/config/progtest.m4 +++ b/config/progtest.m4 @@ -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 index dc1f54f..0000000 --- a/config/signed.m4 +++ /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 index 5762fc3..0000000 --- a/config/size_max.m4 +++ /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 index 32ba7ae..0000000 --- a/config/stdint_h.m4 +++ /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 -]) diff --git a/config/texinfo.tex b/config/texinfo.tex index bab1b33..bfd765d 100644 --- a/config/texinfo.tex +++ b/config/texinfo.tex @@ -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 @@ -24,13 +24,14 @@ % % 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. % @@ -116,10 +117,11 @@ % 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 @@ -158,15 +160,18 @@ \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. @@ -215,7 +220,7 @@ \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 @@ -226,6 +231,13 @@ \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. % @@ -269,9 +281,9 @@ \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 @@ -310,10 +322,13 @@ % % 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 @@ -545,7 +560,7 @@ } \def\inenvironment#1{% \ifx#1\empty - out of any environment% + outside of any environment% \else in environment \expandafter\string#1% \fi @@ -557,7 +572,7 @@ \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 @@ -583,7 +598,7 @@ \def\:{\spacefactor=1000 } % @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak @@ -608,7 +623,7 @@ \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 +} + +% % @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 index b5f28d4..0000000 --- a/config/uintmax_t.m4 +++ /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 index 1da8b80..0000000 --- a/config/ulonglong.m4 +++ /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 index d8fd1ec..0000000 --- a/config/wchar_t.m4 +++ /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 index 3d8d215..0000000 --- a/config/wint_t.m4 +++ /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 index 9b7cf9b..0000000 --- a/config/xsize.m4 +++ /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) -]) diff --git a/configh.dos b/configh.dos index ee840f4..03bf8db 100644 --- a/configh.dos +++ b/configh.dos @@ -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" @@ -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. - -AMTAR=${AMTAR-"${am_missing_run}tar"} +# 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}' -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 @@ -5583,6 +5944,123 @@ fi { $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 + + 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. */ + +#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 @@ -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,293 +8185,421 @@ _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 -int -main () -{ -return closedir (opendir (".")) != 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_closedir_void=no + + +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 - ac_cv_func_closedir_void=yes + _pkg_short_errors_supported=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + 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 +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 + 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 @@ -9035,47 +9735,236 @@ fi { $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 -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) +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# 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 "$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 ;; +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 +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 @@ -10066,9 +10983,10 @@ fi # 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 = "" \$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 1 "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 index 0000000..d73dd8c --- /dev/null +++ b/configure.ac @@ -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: diff --git a/configure.bat b/configure.bat index c7b4591..aba3a3b 100644 --- a/configure.bat +++ b/configure.bat @@ -1,6 +1,5 @@ @echo off
-rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1994-2013 Free Software Foundation, Inc.
rem This file is part of GNU Make.
rem
rem GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/configure.in b/configure.in deleted file mode 100644 index 0b03617..0000000 --- a/configure.in +++ /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: @@ -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 @@ -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 }; @@ -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); +} @@ -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); @@ -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) /* 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 @@ -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); } /* 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); } -/* 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); } diff --git a/doc/Makefile.am b/doc/Makefile.am index 67eec3a..ed519a1 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -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 diff --git a/doc/Makefile.in b/doc/Makefile.in index a1089bc..c7a018f 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -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 @@ -33,6 +32,23 @@ # 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"; \ diff --git a/doc/fdl.texi b/doc/fdl.texi index fc19ddd..cb71f05 100644 --- a/doc/fdl.texi +++ b/doc/fdl.texi @@ -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: - diff --git a/doc/make-stds.texi b/doc/make-stds.texi index 7cc9537..db01628 100644 --- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -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: diff --git a/doc/make.info b/doc/make.info index bd28f2b..c6ad6e6 100644 --- a/doc/make.info +++ b/doc/make.info @@ -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 Indirect: -make.info-1: 1319 -make.info-2: 293656 +make.info-1: 1338 +make.info-2: 291887 Tag Table: (Indirect) -Node: Top1319 -Node: Overview14709 -Node: Preparing15719 -Node: Reading16690 -Node: Bugs17617 -Node: Introduction19446 -Node: Rule Introduction21037 -Node: Simple Makefile22970 -Node: How Make Works26666 -Node: Variables Simplify29321 -Node: make Deduces31527 -Node: Combine By Prerequisite33260 -Node: Cleanup34289 -Node: Makefiles35707 -Node: Makefile Contents36543 -Node: Makefile Names39649 -Node: Include41260 -Ref: Include-Footnote-145008 -Node: MAKEFILES Variable45142 -Node: Remaking Makefiles46683 -Node: Overriding Makefiles50907 -Node: Reading Makefiles52935 -Node: Secondary Expansion55947 -Node: Rules63388 -Node: Rule Example66060 -Node: Rule Syntax66914 -Node: Prerequisite Types69507 -Node: Wildcards72374 -Node: Wildcard Examples74092 -Node: Wildcard Pitfall75441 -Node: Wildcard Function77230 -Node: Directory Search79014 -Node: General Search80148 -Node: Selective Search81855 -Node: Search Algorithm84843 -Node: Recipes/Search87361 -Node: Implicit/Search88684 -Node: Libraries/Search89626 -Node: Phony Targets91596 -Node: Force Targets96665 -Node: Empty Targets97702 -Node: Special Targets99007 -Node: Multiple Targets106862 -Node: Multiple Rules108727 -Node: Static Pattern110945 -Node: Static Usage111597 -Node: Static versus Implicit115316 -Node: Double-Colon117057 -Node: Automatic Prerequisites118817 -Node: Recipes123095 -Node: Recipe Syntax124268 -Node: Splitting Lines126383 -Node: Variables in Recipes129483 -Node: Echoing130802 -Node: Execution132077 -Ref: Execution-Footnote-1133488 -Node: One Shell133633 -Node: Choosing the Shell136948 -Node: Parallel141094 -Node: Errors144815 -Node: Interrupts148483 -Node: Recursion150066 -Node: MAKE Variable152164 -Node: Variables/Recursion154411 -Node: Options/Recursion159861 -Node: -w Option165021 -Node: Canned Recipes166016 -Node: Empty Recipes169000 -Node: Using Variables170148 -Node: Reference173523 -Node: Flavors175081 -Node: Advanced180821 -Node: Substitution Refs181326 -Node: Computed Names182879 -Node: Values187425 -Node: Setting188342 -Node: Appending190378 -Node: Override Directive194304 -Node: Multi-Line195931 -Node: Undefine Directive198754 -Node: Environment199840 -Node: Target-specific202091 -Node: Pattern-specific205108 -Node: Suppressing Inheritance206954 -Node: Special Variables208408 -Node: Conditionals213121 -Node: Conditional Example213834 -Node: Conditional Syntax216397 -Node: Testing Flags222127 -Node: Functions223228 -Node: Syntax of Functions224659 -Node: Text Functions226858 -Node: File Name Functions235429 -Node: Conditional Functions240651 -Node: Foreach Function243025 -Node: Call Function246237 -Node: Value Function249122 -Node: Eval Function250559 -Node: Origin Function252835 -Node: Flavor Function256051 -Node: Shell Function257117 -Node: Make Control Functions258751 -Node: Running260413 -Node: Makefile Arguments262396 -Node: Goals263112 -Node: Instead of Execution267851 -Node: Avoiding Compilation271433 -Node: Overriding273407 -Node: Testing275710 -Node: Options Summary277594 -Node: Implicit Rules287992 -Node: Using Implicit290137 -Node: Catalogue of Rules293656 -Node: Implicit Variables303004 -Node: Chained Rules307761 -Node: Pattern Rules311772 -Node: Pattern Intro313307 -Node: Pattern Examples315895 -Node: Automatic Variables317701 -Node: Pattern Match325059 -Node: Match-Anything Rules328382 -Node: Canceling Rules332256 -Node: Last Resort332970 -Node: Suffix Rules334799 -Node: Implicit Rule Search338524 -Node: Archives342023 -Node: Archive Members342721 -Node: Archive Update344331 -Node: Archive Symbols346242 -Node: Archive Pitfalls347476 -Node: Archive Suffix Rules348198 -Node: Features349745 -Node: Missing358290 -Node: Makefile Conventions362017 -Node: Makefile Basics362996 -Node: Utilities in Makefiles366163 -Node: Command Variables368661 -Node: DESTDIR371900 -Node: Directory Variables374067 -Node: Standard Targets388682 -Ref: Standard Targets-Footnote-1402458 -Node: Install Command Categories402558 -Node: Quick Reference407084 -Node: Error Messages418767 -Node: Complex Makefile426463 -Node: GNU Free Documentation License434974 -Node: Concept Index460136 -Node: Name Index526637 +Node: Top1338 +Node: Overview16115 +Node: Preparing17130 +Node: Reading18101 +Node: Bugs19028 +Node: Introduction20857 +Node: Rule Introduction22454 +Node: Simple Makefile24387 +Node: How Make Works28129 +Node: Variables Simplify30784 +Node: make Deduces32990 +Node: Combine By Prerequisite34723 +Node: Cleanup35752 +Node: Makefiles37170 +Node: Makefile Contents38006 +Node: Splitting Lines41188 +Node: Makefile Names42949 +Node: Include44560 +Ref: Include-Footnote-148308 +Node: MAKEFILES Variable48442 +Node: Remaking Makefiles49983 +Node: Overriding Makefiles54208 +Node: Reading Makefiles56236 +Node: Secondary Expansion59690 +Node: Rules67152 +Node: Rule Example69825 +Node: Rule Syntax70679 +Node: Prerequisite Types73272 +Node: Wildcards76139 +Node: Wildcard Examples77858 +Node: Wildcard Pitfall79207 +Node: Wildcard Function80996 +Node: Directory Search82780 +Node: General Search83915 +Node: Selective Search85622 +Node: Search Algorithm88610 +Node: Recipes/Search91128 +Node: Implicit/Search92451 +Node: Libraries/Search93393 +Node: Phony Targets95364 +Node: Force Targets100440 +Node: Empty Targets101477 +Node: Special Targets102782 +Node: Multiple Targets110640 +Node: Multiple Rules112505 +Node: Static Pattern114723 +Node: Static Usage115375 +Node: Static versus Implicit119095 +Node: Double-Colon120836 +Node: Automatic Prerequisites122596 +Node: Recipes126861 +Node: Recipe Syntax128034 +Node: Splitting Recipe Lines130149 +Node: Variables in Recipes133302 +Node: Echoing134628 +Node: Execution135903 +Ref: Execution-Footnote-1137316 +Node: One Shell137461 +Node: Choosing the Shell140776 +Node: Parallel144922 +Node: Parallel Output147591 +Node: Parallel Input152020 +Node: Errors153141 +Node: Interrupts156809 +Node: Recursion158392 +Node: MAKE Variable160492 +Node: Variables/Recursion162739 +Node: Options/Recursion168185 +Node: -w Option174203 +Node: Canned Recipes175198 +Node: Empty Recipes178183 +Node: Using Variables179331 +Node: Reference182761 +Node: Flavors184319 +Node: Advanced190301 +Node: Substitution Refs190806 +Node: Computed Names192359 +Node: Values196906 +Node: Setting197823 +Node: Appending200730 +Node: Override Directive204674 +Node: Multi-Line206301 +Node: Undefine Directive209125 +Node: Environment210211 +Node: Target-specific212462 +Node: Pattern-specific215489 +Node: Suppressing Inheritance217335 +Node: Special Variables218788 +Node: Conditionals224226 +Node: Conditional Example224939 +Node: Conditional Syntax227502 +Node: Testing Flags233263 +Node: Functions234364 +Node: Syntax of Functions235924 +Node: Text Functions238258 +Node: File Name Functions246829 +Node: Conditional Functions252051 +Node: Foreach Function254425 +Node: File Function257638 +Node: Call Function259639 +Node: Value Function262524 +Node: Eval Function263961 +Node: Origin Function266237 +Node: Flavor Function269455 +Node: Make Control Functions270497 +Node: Shell Function272183 +Node: Guile Function273816 +Node: Running274566 +Node: Makefile Arguments276549 +Node: Goals277265 +Node: Instead of Execution282004 +Node: Avoiding Compilation285717 +Node: Overriding287691 +Node: Testing290003 +Node: Options Summary291887 +Node: Implicit Rules303579 +Node: Using Implicit305725 +Node: Catalogue of Rules309244 +Node: Implicit Variables318592 +Node: Chained Rules323705 +Node: Pattern Rules327716 +Node: Pattern Intro329250 +Node: Pattern Examples331838 +Node: Automatic Variables333645 +Node: Pattern Match341003 +Node: Match-Anything Rules344326 +Node: Canceling Rules348205 +Node: Last Resort348919 +Node: Suffix Rules350748 +Node: Implicit Rule Search354473 +Node: Archives357973 +Node: Archive Members358678 +Node: Archive Update360288 +Node: Archive Symbols362199 +Node: Archive Pitfalls363433 +Node: Archive Suffix Rules364155 +Node: Extending make365702 +Node: Guile Integration366839 +Node: Guile Types368065 +Node: Guile Interface370487 +Node: Guile Example371774 +Node: Loading Objects373965 +Node: load Directive375452 +Node: Remaking Loaded Objects378206 +Node: Loaded Object API378840 +Node: Loaded Object Example385601 +Node: Features387849 +Node: Missing397021 +Node: Makefile Conventions400749 +Node: Makefile Basics401728 +Node: Utilities in Makefiles404895 +Node: Command Variables407393 +Node: DESTDIR410632 +Node: Directory Variables412799 +Node: Standard Targets428164 +Node: Install Command Categories442269 +Node: Quick Reference446795 +Node: Error Messages459490 +Node: Complex Makefile467403 +Node: GNU Free Documentation License476021 +Node: Concept Index501183 +Node: Name Index571815 End Tag Table diff --git a/doc/make.info-1 b/doc/make.info-1 index 509ce05..4025d3e 100644 --- a/doc/make.info-1 +++ b/doc/make.info-1 @@ -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 + 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. 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. 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 + + +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. + 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. -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. -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 + + +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. + + +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. + 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'. + 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") + 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. 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. 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. -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. -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 + + +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'. 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. 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. 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. -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: -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). - - -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. +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). + + +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. + + 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. - -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. - - -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. - - -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.). - diff --git a/doc/make.info-2 b/doc/make.info-2 index cd95ff0..af881aa 100644 --- a/doc/make.info-2 +++ b/doc/make.info-2 @@ -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 +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. + + +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. + + +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.). + + 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::. -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'. -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. + + +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'. + + +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. + + +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. + + + +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. + + +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 + + +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. + + +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. + + +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. + + +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 + + +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. 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. 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. 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'. 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. 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: 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. 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. 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. - 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 * 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) diff --git a/doc/make.texi b/doc/make.texi index fc7e8a3..8fbdb61 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -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. diff --git a/doc/stamp-vti b/doc/stamp-vti index aac448b..047ad02 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -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 diff --git a/doc/version.texi b/doc/version.texi index aac448b..047ad02 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -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 diff --git a/dosbuild.bat b/dosbuild.bat index c911e18..4091463 100644 --- a/dosbuild.bat +++ b/dosbuild.bat @@ -1,6 +1,5 @@ @echo off
-rem Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-rem 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1998-2013 Free Software Foundation, Inc.
rem This file is part of GNU Make.
rem
rem GNU Make is free software; you can redistribute it and/or modify it under
@@ -21,6 +20,7 @@ echo Building Make for MSDOS rem Echo ON so they will see what is going on.
@echo on
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o
+gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g output.c -o output.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g job.c -o job.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g dir.c -o dir.o
gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g file.c -o file.o
@@ -52,9 +52,11 @@ ar rv libglob.a glob.o fnmatch.o @echo off
cd ..
echo commands.o > respf.$$$
-for %%f in (job dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
+for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
echo glob/libglob.a >> respf.$$$
+rem gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g guile.c -o guile.o
+rem echo guile.o >> respf.$$$
@echo Linking...
@echo on
gcc -o make.new @respf.$$$
@@ -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); } /* 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); } /* 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; @@ -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) } /* 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 } -/* 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, ×pec) == 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 @@ -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) @@ -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); } @@ -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) #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)); } diff --git a/getloadavg.c b/getloadavg.c index f9d7964..0f5d400 100644 --- a/getloadavg.c +++ b/getloadavg.c @@ -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 */ #ifdef TEST -#include "make.h" +#include "makeint.h" int main (int argc, char **argv) @@ -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 '?': @@ -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. @@ -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 '?': @@ -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 diff --git a/glob/Makefile.in b/glob/Makefile.in index 44be58d..3f79418 100644 --- a/glob/Makefile.in +++ b/glob/Makefile.in @@ -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. @@ -34,6 +34,23 @@ # 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: diff --git a/glob/glob.h b/glob/glob.h index a613aff..0992de3 100644 --- a/glob/glob.h +++ b/glob/glob.h @@ -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 index 0000000..9fa09a6 --- /dev/null +++ b/gmk-default.h @@ -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 index 0000000..89db652 --- /dev/null +++ b/gmk-default.scm @@ -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 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_ */ @@ -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; +} @@ -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 ** @@ -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 *)); @@ -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) @@ -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; + #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 (); } @@ -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; } @@ -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); @@ -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 */ @@ -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 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); +} @@ -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; + /* 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; + } - if (sh_found) - DB (DB_VERBOSE, - (_("find_and_set_shell() path search set default_shell = %s\n"), - default_shell)); + ep = strchr (p, PATH_SEPARATOR_CHAR); + } + + /* 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,6 +1515,98 @@ main (int argc, char **argv, char **envp) #endif /* WINDOWS32 */ #endif + /* We may move, but until we do, here we are. */ + starting_directory = current_directory; + +#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. */ + + if (jobserver_fds) + { + 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]; + +#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); @@ -1357,34 +1620,34 @@ main (int argc, char **argv, char **envp) char *value, *p; /* Figure out how much space will be taken up by the command-line - variable definitions. */ + 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; - } + { + 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. */ + { + 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. */ + 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. @@ -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); } /* 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); } /* 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); } - -/* 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); -} @@ -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 @@ -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 diff --git a/make_msvc_net2003.vcproj b/make_msvc_net2003.vcproj index 357dfba..be620ad 100644 --- a/make_msvc_net2003.vcproj +++ b/make_msvc_net2003.vcproj @@ -154,6 +154,11 @@ <File
RelativePath=".\getopt1.c">
</File>
+<!--
+ <File
+ RelativePath=".\guile.c">
+ </File>
+-->
<File
RelativePath=".\hash.c">
</File>
@@ -167,6 +172,12 @@ RelativePath=".\job.c">
</File>
<File
+ RelativePath=".\load.c">
+ </File>
+ <File
+ RelativePath=".\output.c">
+ </File>
+ <File
RelativePath=".\main.c">
</File>
<File
@@ -203,6 +214,9 @@ RelativePath=".\w32\compat\dirent.c">
</File>
<File
+ RelativePath=".\w32\compat\posixfcn.c">
+ </File>
+ <File
RelativePath=".\w32\subproc\misc.c">
<FileConfiguration
Name="Debug|Win32">
@@ -264,13 +278,19 @@ RelativePath=".\gettext.h">
</File>
<File
+ RelativePath=".\gmk-default.h">
+ </File>
+ <File
RelativePath=".\hash.h">
</File>
<File
RelativePath=".\job.h">
</File>
<File
- RelativePath=".\make.h">
+ RelativePath=".\output.h">
+ </File>
+ <File
+ RelativePath=".\makeint.h">
</File>
<File
RelativePath=".\rule.h">
diff --git a/makefile.com b/makefile.com index d2d05d1..6359c47 100644 --- a/makefile.com +++ b/makefile.com @@ -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 diff --git a/makefile.vms b/makefile.vms index 1e6a88e..e5950b7 100644 --- a/makefile.vms +++ b/makefile.vms @@ -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 Kmpf (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) $< $@ @@ -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) -/* 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; @@ -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; } -/* 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 */ -} /* 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) } -/* 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) #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 -#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 */ } - + #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 - - -/* 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 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; + } + } +} + +/* 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 +} + + +#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 */ + + +/* 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 +} + + +/* 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); + } +} + + +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); +} + + +/* 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; +} + +/* 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 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 diff --git a/po/ChangeLog b/po/ChangeLog index dbc21b4..cd7de0c 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -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. -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 @@ -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? diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 53efc5e..83d8838 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -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: diff --git a/po/Makevars b/po/Makevars index 2103ce8..900e794 100644 --- a/po/Makevars +++ b/po/Makevars @@ -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 diff --git a/po/POTFILES.in b/po/POTFILES.in index 05208bb..ba156ee 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -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 diff --git a/po/Rules-quot b/po/Rules-quot index 9c2a995..af52487 100644 --- a/po/Rules-quot +++ b/po/Rules-quot @@ -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 \ Binary files differ@@ -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 Binary files differnew file mode 100644 index 0000000..babe63b --- /dev/null +++ b/po/cs.gmo diff --git a/po/cs.po b/po/cs.po new file mode 100644 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" +#~ "# " Binary files differ@@ -1,121 +1,129 @@ # 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 "forsg p at bruge en ikke understttet 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 "'berr arkivmedlem' er ikke tilgngelig p VMS" - -#: ar.c:149 -#, c-format -msgid "touch: Archive `%s' does not exist" -msgstr "berr: 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 "berr: '%s' er ikke et gyldigt arkiv" - -#: ar.c:159 -#, c-format -msgid "touch: Member `%s' does not exist in `%s'" -msgstr "berr: 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 "berr: 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 udtrkke 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 sge 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 vre 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 mske 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 mske 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 udfre" +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 undersges 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 (ngle %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 (ngle %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-sgning," +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 omrde; 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 ml:" +msgstr "# Ikke et mål:" -#: file.c:929 +#: file.c:954 msgid "# Precious file (prerequisite of .PRECIOUS)." -msgstr "# Vrdifuld fil (forudstning for .PRECIOUS)." +msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." -#: file.c:931 +#: file.c:956 msgid "# Phony target (prerequisite of .PHONY)." -msgstr "# Falsk ml (forudstning for .PHONY)." +msgstr "# Falsk mål (forudsætning for .PHONY)." -#: file.c:933 -#, fuzzy +#: file.c:958 msgid "# Command line target." -msgstr "# Kommandolinjeml." +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 udfrt implicit regelsgning." +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 udfrt implicit regelsgning." +msgstr "# Der er ikke udført implicit regelsøgning." -#: file.c:940 -#, c-format -msgid "# Implicit/static pattern stem: `%s'\n" -msgstr "# Implicit/statisk mnsterstamme: '%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 udfres 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 afhngigheder udfres 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 "# Behver 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 vrdi i 'update_status'-felt!" - -#: file.c:997 -msgid "# Invalid value in `command_state' member!" -msgstr "# Ugyldig vrdi 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 frste 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 "frste argument til 'word'-functionen skal vre strre 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 frste 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 "insufficient number of arguments (%d) to function `%s'" -msgstr "Utilstrkkeligt antal argumenter (%d) til funktionen '%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 "Uimplementeret p denne platform: funktion '%s'" +msgid "write: %s: %s" +msgstr "skrivefejl: %s" -#: function.c:2212 +#: function.c:2164 #, c-format -msgid "unterminated call to function `%s': missing `%c'" -msgstr "Uafsluttet kald til funktionen '%s'; manglende '%c'" +msgid "Invalid file operation: %s" +msgstr "" -#: getopt.c:661 +#: function.c:2279 +#, fuzzy, c-format +msgid "insufficient number of arguments (%d) to function '%s'" +msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'" + +#: function.c:2291 +#, fuzzy, c-format +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:2548 #, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "%s: tilvalg '%s' er flertydigt\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 "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: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' krver 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 krver 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 "Sammenstd=%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 "Undgr 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 "Prver mnsterregel 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 regelforudstning '%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 forudstning '%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 "Prver regelforudstning '%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 "Prver implicit forudstning '%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 forudstning '%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)" +msgstr "Kan ikke oprette midlertidig fil\n" -#: job.c:449 -#, c-format -msgid "*** [%s] Error 0x%x (ignored)" -msgstr "*** [%s] Fejl 0x%x (ignoreret)" - -#: 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 "Hster 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 "Hster 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 kde.\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 igangstning 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 igangstning\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 "Stter barn 0x%08lx (%s), PID %ld%s i kden.\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 mlet '%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 belastningsgrnser 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 belastningsgrnse: " +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:2015 +#: 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: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 hstede brne-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 ml betingelseslst.\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 allerfrst 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 fejlsgningsinformation.\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 " -"fejlsgningsinformation.\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" -" Miljvariable 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" -" Ls 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 Ignorr 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" -" Sg 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 Fortst selvom nogen ml 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" -" Udfr 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 vrende 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 Udfr ingen kommandoer; afslutningskoden " -"fortller 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 variabelvrdier 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" -" Slr -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 Berr ml 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 slet 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 vrende 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 nr 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 fejlsgningsniveau-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" -"Uhndteret 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 "Adgangskrnkelse: 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 "Adgangskrnkelse: lseoperation 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 stter 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 stisgning stter 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 "udfrt sleep(30). Fortstter.\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)" +msgstr "udført sleep(30). Fortsætter.\n" -#: main.c:1703 -msgid "Parallel jobs (-j) are not supported on this platform." -msgstr "Parallelle job (-j) er ikke understttet p denne platform." - -#: main.c:1704 -msgid "Resetting to single job (-j1) mode." -msgstr "Stter 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: slr 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 tilgngelig: bruger -j1. Tilfj '+' 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 "klargring 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' fr mske 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 "Udfrer 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 ml og ingen makefil fundet" +msgstr "Ingen angivne mål og ingen makefil fundet" -#: main.c:2272 +#: main.c:2520 msgid "No targets" -msgstr "Ingen ml" +msgstr "Ingen mål" -#: main.c:2277 +#: main.c:2525 msgid "Updating goal targets....\n" -msgstr "Opdaterer endeml....\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 vre 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] [ml] ...\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 krver et positivt heltalligt argument" - -#: main.c:2617 -#, c-format -msgid "the `-%c' option requires a positive integral argument" -msgstr "'-%c'-tilvalget krver 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 klokkeslt -#: 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 klokkeslt -#: 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: Gr 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: Gr 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]: Gr 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]: Gr 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" -#: 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 "Lser makefiler...\n" +msgstr "Læser makefiler...\n" #: read.c:333 -#, c-format -msgid "Reading makefile `%s'" -msgstr "Lser 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-endeml)" +msgstr " (ingen standard-endemål)" #: read.c:337 #, c-format msgid " (search path)" -msgstr " (sgesti)" +msgstr " (søgesti)" #: read.c:339 #, c-format msgid " (don't care)" -msgstr " (ikke ndvendig)" +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 fr det frste ml" +msgstr "kommandoer begynder før første mål" -#: read.c:940 -#, fuzzy +#: read.c:1036 msgid "missing rule before recipe" -msgstr "manglende regel fr 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 mlmnster" +msgstr "manglende målmønster" -#: read.c:1165 +#: read.c:1265 msgid "multiple target patterns" -msgstr "flere mlmnstre" +msgstr "flere målmønstre" -#: read.c:1169 -#, c-format -msgid "target pattern contains no `%%'" -msgstr "mlmnster 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-ml 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 mnsterregler" +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 "ml '%s' passer ikke til mlmnstret" +#: 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 "mlfil '%s' har bde :- 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' optrder 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: tilsidestter kommandoer for ml '%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 ml '%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 gre 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 "Beskrer 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 ml '%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 ml '%s' som behves 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 mlfil '%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 forgves prvet 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 hj " -"oplsning" +"*** 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 "Cirkulr %s <- %s afhngighed opgivet." +msgstr "Cirkulær %s <- %s afhængighed opgivet." -#: remake.c:651 -#, c-format -msgid "Finished prerequisites of target file `%s'.\n" -msgstr "Afsluttet forudstningerne for mlfil '%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 "Forudstningerne 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 mlfil '%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 "Mlet '%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 "Forudstningen '%s' angiver kun rkkeflgen ift. mlet '%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 "Forudstningen '%s' for mlet '%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 "Forudstningen '%s' er nyere end mlet '%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 "Forudstningen '%s' er ldre end mlet '%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 "Mlet '%s' er med dobbelt-kolon og har ingen forudstninger.\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 forudstninger 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 mlet '%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 mlet '%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 udfrt.\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 mlfil '%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 "Mlfil '%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 trnger mlfilen '%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 mnster" +#: 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 forldet/ubrugt ud, og -# koden er ikke understttet 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 "Lg 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-flde" +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_flde" +msgstr "IOT_fælde" -#: signame.c:117 +#: signame.c:115 msgid "EMT trap" -msgstr "Emulatorflde" +msgstr "Emulatorfælde" -#: signame.c:120 +#: signame.c:118 msgid "Floating point exception" -msgstr "Undtagelsestilflde ved flydendetals-operation" +msgstr "Undtagelsestilfælde ved flydendetals-operation" -#: signame.c:123 +#: signame.c:121 msgid "Killed" -msgstr "Drbt" +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 "Rret 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 "Strmmen 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 lse 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 "Begrnsning af CPU-tid overskredet" +msgstr "Begrænsning af CPU-tid overskredet" -#: signame.c:176 +#: signame.c:174 msgid "File size limit exceeded" -msgstr "Grnse for filstrrelse overskredet" +msgstr "Grænse for filstørrelse overskredet" -#: signame.c:179 +#: signame.c:177 msgid "Virtual timer expired" -msgstr "Virtuel tidsgrnse overskredet" +msgstr "Virtuel tidsgrænse overskredet" -#: signame.c:182 +#: signame.c:180 msgid "Profiling timer expired" -msgstr "Profileringstiden udlb" +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 "Fortsttes" +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 "Informationsforesprgsel" +msgstr "Informationsforespørgsel" -#: signame.c:222 +#: signame.c:220 msgid "Floating point co-processor not available" -msgstr "Flydendetalshjlpeprocessor ikke tilgngelig" +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 variabelst-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" -"# Mnsterspecifikke variabelvrdier" +"# Mønsterspecifikke variabelværdier" -#: variable.c:1641 +#: variable.c:1728 msgid "" "\n" "# No pattern-specific variable values." msgstr "" "\n" -"# Ingen mnsterspecifikke variabelvrdier." +"# Ingen mønsterspecifikke variabelværdier." -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" "\n" -"# %u mnsterspecifikke variabelvrdier" +"# %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 ndt 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 "Udfrer 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-sgestier\n" +"# VPATH-søgestier\n" -#: vpath.c:603 -msgid "# No `vpath' search paths." -msgstr "# Ingen 'vpath'-sgestier" +#: 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'-sgestier.\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) sgesti." +"# 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) sgesti:\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 uhstede brn.\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 tilgngelig." +#~ msgstr "Angiv ikke -j eller --jobs hvis sh.exe ikke er tilgængelig." #~ msgid "Resetting make for single job mode." -#~ msgstr "Stter 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 FORML.\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 "ml '%s' efterlader forudstningsmnstret 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 fejlsgningsprogram at hnge sig p" +#~ msgstr "Stands proces for at tillade et fejlsøgningsprogram at hænge sig på" #~ msgid "# No variables." #~ msgstr "# Ingen variabler." Binary files differ@@ -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 untersttzte Funktionalitt zu verwenden: %s" -#: ar.c:125 +#: ar.c:123 msgid "touch archive member is not available on VMS" msgstr "" "VMS stellt nicht die Mglichkeit einer nderung \n" "der Zeitmarken von Archiveintrgen zur Verfgung" -#: 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 gltiges 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: Ungnstiger Rckgabewert 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 mglicherweise gekrzt)" -#: 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 gelscht" -#: 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 gelscht" -#: 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 gelscht" -#: commands.c:640 -#, c-format -msgid "*** Deleting file `%s'" +#: commands.c:648 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" msgstr "*** Datei %s wird gelscht" -#: commands.c:676 +#: commands.c:684 #, fuzzy msgid "# recipe to execute" msgstr "# Auszufhrende 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 ( Schlssel (key) %s, letzte nderung (mtime) %d): \n" "Konnte nicht geffnet 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 (Gert %d, I-Knoten (inode) [%d,%d,%d]): \n" "Konnte nicht geffnet werden.\n" -#: dir.c:1021 +#: dir.c:1014 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" "# %s (Gert %ld, I-Knoten (inode) %ld): \n" "Konnte nicht geffnet werden.\n" -#: dir.c:1048 +#: dir.c:1041 #, c-format msgid "# %s (key %s, mtime %d): " msgstr "# %s (Schlssel (key) %s, letzte nderung (mtime) %d): " -#: dir.c:1052 +#: dir.c:1045 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (Gert %d, I-Knoten (inode) [%d,%d,%d]): " -#: dir.c:1057 +#: dir.c:1050 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (Gert %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 " Unmglichkeiten" -#: 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 " Unmglichkeiten 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 (schlielich) 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 fr 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 fr 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 fr %s werden ignoriert, \n" "die fr %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 gendert 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 gendert werden" -#: file.c:392 -#, c-format -msgid "*** Deleting intermediate file `%s'" +#: file.c:396 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" msgstr "*** Lschen der Zwischendatei %s" -#: file.c:396 +#: file.c:400 #, fuzzy msgid "Removing intermediate files...\n" msgstr "*** Lschen der Zwischendatei %s" -#: file.c:803 +#: file.c:808 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Zeitstempel auerhalb 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 "# Vorgetuschtes 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 durchgefhrt." -#: file.c:938 +#: file.c:965 msgid "# Implicit rule search has not been done." msgstr "# Suche nach impliziten Regeln wurde nicht durchgefhrt." -#: 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 fr implizites/statisches Muster: %s\n" -#: file.c:942 +#: file.c:969 msgid "# File is an intermediate prerequisite." msgstr "# Datei ist ein Zwischenschritt in den Abhngigkeiten." -#: file.c:946 +#: file.c:973 msgid "# Also makes:" msgstr "# Erzeugt auerdem:" -#: file.c:952 +#: file.c:979 msgid "# Modification time never checked." msgstr "# Zeit der letzten nderung wurde nicht berprft." -#: 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 gendert %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 fr Abhngigkeiten (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 "# Ungltiger 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 "# Ungltiger 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 grer 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 fr 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 "Lsche temporre 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) fr 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) fr die Funktion %s" + +#: function.c:2555 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%d) for function %s\n" +msgstr "Zuwenig Argumente (%d) fr 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: ungltige 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 fr %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 fr Archiveintrge fr %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 "Unmgliche 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 "Unmgliche 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 "temporre 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 "Lsche temporre Stapelverarbeitungsdatei %s\n" -#: job.c:861 +#: job.c:843 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Lsche temporre 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 gehrten 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 fr den Kindprozess 0x%08lx (%s) erhalten.\n" -#: job.c:1787 +#: job.c:1977 msgid "read jobs pipe" msgstr "Lese Pipe fr 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" +" bentigt 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 Lastbeschrnkung nicht erzwungen werden" -#: job.c:1912 +#: job.c:2120 msgid "cannot enforce load limit: " msgstr "Lasteinschrnkung 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 temporre 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 untersttzt." + +#: 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 Kompatibilittsgrnden 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 ausfhren; 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 tatschlich 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 ungltig" -#: 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 fr 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 (temporre Datei)" - -#: main.c:1545 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporre Datei)" - -#: main.c:1703 -msgid "Parallel jobs (-j) are not supported on this platform." -msgstr "" -"Parallele Abarbeitung (-j) \n" -"wird auf dieser Plattform nicht untersttzt." - -#: 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 verfgbar." -#: 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 verfgbar: -j1 wird gesetzt. + zur Ursprungsregel\n" "hinzufgen." -#: 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 (temporre Datei)" + +#: main.c:1796 +msgid "fwrite (temporary file)" +msgstr "fwrite (temporre Datei)" + +#: main.c:1984 +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" +"Parallele Abarbeitung (-j) \n" +"wird auf dieser Plattform nicht untersttzt." + +#: 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 fr die Jobs" -#: main.c:1792 +#: main.c:2039 msgid "init jobserver pipe" msgstr "Initialisierung der Pipe fr den jobserver" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." msgstr "Symbolische Links sind nicht untersttzt: -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 knnte 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 ursprngliche Verzeichnis wechseln." -#: main.c:2102 +#: main.c:2354 #, fuzzy, c-format msgid "Re-executing[%u]:" msgstr "Erneute Ausfhrung:" -#: main.c:2215 +#: main.c:2463 msgid "unlink (temporary file): " msgstr "unlink (temporre 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 knnte unvollstndig 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 (tatschlich %lu), Gruppe %lu (tatschlich %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 (tatschlich %lu), Gruppe %lu (tatschlich %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 ~-Auflsung)" -#: 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 "Ungltige 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 enthlt 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 "berflssiger 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 "berflssiger 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 "berflssiger 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 "berflssiges %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 enthlt sowohl :- als auch ::-Eintrge" -#: 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 fr 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 fr 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 "Fr 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 Abhngigkeitsgraph).\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" " bentigt 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 fr %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 fr %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 fr %s.\n" -#: remake.c:535 remake.c:1057 +#: remake.c:535 remake.c:1067 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Zirkulre Datei %s <- %s Abhngigkeit 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 fr 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 abhngige 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 fr 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 jnger als das davon abhngige 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 abhngige 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 fr %s und keine Voraussetzung \n" "wurde tatschlich verndert.\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 ausgefhrt.\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 fr %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 zuknftige 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 zuknftige 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 "Zerstrte 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 "Dateigrenschranke 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 verndert" -#: 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 mglich" -#: 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 fr Fliekommaoperationen 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 fr %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 fr %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 mssen Sie STRG-Y aus DCL wieder ermglichen.\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 ausgefhrt\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 "# Ungltiger 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" Binary files differ@@ -1,22 +1,24 @@ # Mensajes en espaol para GNU make. -# Copyright (C) 1996, 2001 Free Software Foundation, Inc. -# Max de Mendizbal <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 Mendizbal <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 Mendizbal <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 Mendizbal <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 caracterstica no implementada: `%s'" # Sugerencia: touch -> `touch'. sv @@ -31,111 +33,115 @@ msgstr "Se intent utilizar una caracterstica no implementada: `%s'" # 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 vlido" -#: 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: Cdigo de retorno errneo 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 informacin del mdulo, estado = %d" +"fallo en lbr$set_module() para extraer la informacin del mdulo, 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' podra 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' podra 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: podra no estar establecido.\n" @@ -151,14 +157,14 @@ msgstr "# %s: podra no estar establecido.\n" # No sobrara 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 sobrara 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 traduccin 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 ms 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 razn 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 implcitas em+ # Utilic por bsqueda 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 bsqueda en reglas " "implcitas," # "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 sern 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 sern tenidas en cuenta en favor de las que " "estn en `%s'." @@ -270,46 +276,46 @@ msgstr "" # Me suena que eso de colon es algo as como punto, dos puntos o punto y coma. # Podras 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; sustituyndola %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:" # Pondra: es una dependencia de em+ # Si, tienes razn. 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 traduccin correcta. Que tal si al rato # se les ocurre hacer una nueva instruccin .INCONDITIONAL. # Si quieres podramos pensar en otra traduccin como seuelo 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)." # Estn traduciendo commands como comandos? Son ms bien ordenes o # instrucciones. Por mi parte no hay problema, incluso me gusta ms # comandos, pero es un anglicismo. mm -#: file.c:933 -#, fuzzy +#: file.c:958 msgid "# Command line target." -msgstr "# Objetivo de lnea de instrucciones." +msgstr "# Objetivo en lnea de instrucciones." # Habra que entender esto # Creo que esto es lo que significa. El fuente no es demasiado claro. mm @@ -345,15 +350,22 @@ msgstr "# Objetivo de lnea de instrucciones." # As pues tu traduccin es completamente equivocada, lo siento. # Pondra: 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 omisin, MAKEFILES, o -include/sinclude makefile." +#: file.c:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# No hay reglas implcitas." + # Propongo efectuada en lugar de terminada. sv # Ok. Es ms literal. mm # Atencin ! , es la bsqueda 'de'reglas implcitas em+ # Ok. Ojo, debo pluralizar regla e implcita. Platicarlo con Ulrich. mm -#: file.c:937 +#: file.c:964 msgid "# Implicit rule search has been done." msgstr "# La bsqueda de reglas implcitas ha sido efectuada." @@ -361,22 +373,22 @@ msgstr "# La bsqueda de reglas implcitas ha sido efectuada." # Ok. Es ms literal. mm # Atencin ! , es la bsqueda 'de'reglas implcitas em+ # Ok. Ojo, debo pluralizar regla e implcita. Platicarlo con Ulrich. mm -#: file.c:938 +#: file.c:965 msgid "# Implicit rule search has not been done." msgstr "# La bsqueda de reglas implcitas 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 patrn implcita/esttica: `%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 "# Tambin hace:" @@ -384,71 +396,62 @@ msgstr "# Tambin hace:" # Ok. Mejora. mm # No pondra nunca, sino simplemente 'no se comprob 'em+ # Si, es lo mismo pero es ms espaol. mm -#: file.c:952 +#: file.c:979 msgid "# Modification time never checked." msgstr "# La fecha de modificacin 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 modificacin %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 ejecutndose (ESTO ES UN BUG)." +msgstr "# Las instrucciones continan en ejecucin (ESTO ES UN BUG)." # No sera ms 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 ejecutndose (ESTO ES UN " +"# Las instrucciones de las dependencias continan en ejecucin (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 opcin -q est activa)." -#: file.c:987 +#: file.c:1014 msgid "# Failed to be updated." msgstr "# Fallo al ser actualizado." -# ## Le he aadido un "" con tu permiso. -# Gracias. No lo puse porque no se como poner ese smbolo con el -# iso-accents-mode y luego se me olvid. Por cierto, como se hace? -# tambin tengo duda de la interrogacin abierta. -#: file.c:990 -msgid "# Invalid value in `update_status' member!" -msgstr "# Valor invlido 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 invlido 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 "" "# estadsticas 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 funcin `word' no es numrico" -#: 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 funcin `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 funcin `wordlist' no es numrico" -#: 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 funcin `wordlist' no es numrico" -#: 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 "insufficient number of arguments (%d) to function `%s'" +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 simultneamente. 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 notars 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'" msgstr "Nmero de argumentos (%d) insuficientes para la funcin `%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: funcin `%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 funcin `%s' no concluy: falta `%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" +msgid "Invalid function name: %s\n" +msgstr "" + +#: function.c:2550 +#, c-format +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 "Nmero de argumentos (%d) insuficientes para la funcin `%s'" + +#: function.c:2555 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%d) for function %s\n" +msgstr "Nmero de argumentos (%d) insuficientes para la funcin `%s'" + +#: getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" msgstr "%s: la opcin `%s' es ambigua\n" # No admite ningn 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 opcin `--%s' no admite ningn 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 opcin `%c%s' no admite ningn 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 opcin `%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: opcin 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: opcin no reconocida `%c%s'\n" -#: getopt.c:766 +#: getopt.c:764 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opcin invlida -- %c\n" -#: getopt.c:769 +#: getopt.c:767 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opcin invlida -- %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 opcin 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 opcin `-W %s' es ambigua\n" # No admite ningn 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 opcin `-W %s' no admite ningn 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 ms # 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 implcita para `%s'.\n" # Lo mismo. # Buscando una regla impltita 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 implcita para el miembro del archivo `%s'.\n" # Pues si ilegal le suena a crcel a Enrique, "evade" me suena a m a @@ -627,10 +696,15 @@ msgstr "Buscando una regla implcita para el miembro del archivo `%s'.\n" # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm # No me gusta se evita, pondra evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dnde la dejas? mm -#: implicit.c:317 +#: implicit.c:310 msgid "Avoiding implicit rule recursion.\n" msgstr "Evitando la recursin en la regla implcita.\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 podra entenderlo. @@ -640,8 +714,8 @@ msgstr "Evitando la recursin en la regla implcita.\n" # pondra a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero tambin 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 patrn con la ramificacin `%.*s'.\n" # ## Corrijo la palabra "dependencia". sv @@ -651,9 +725,9 @@ msgstr "Intentando una regla de patrn con la ramificacin `%.*s'.\n" # 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 # pondra a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero tambin 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 crcel 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, pondra evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dnde 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 implcita `%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 ncleo o algo as. Por el momento # no cambio nada. mm -#: job.c:460 +#: job.c:482 msgid " (core dumped)" msgstr " (core dumped) [Ncleo vaciado a un archivo]" +# Preferira mil veces "sin efecto" o algo parecido. sv +# Ok. Habamos 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 traduccin 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 "atencin: 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 ms 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 parntesis 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 parntesis 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 parntesis 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 parntesis 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 "tubera de trabajos ledos" -#: 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 lmites de carga en este sistema operativo" -#: job.c:1912 +#: job.c:2120 msgid "cannot enforce load limit: " msgstr "no se puede forzar la carga lmite: " -#: job.c:1985 +#: job.c:2199 msgid "no more file handles: could not duplicate stdin\n" msgstr "no hay ms 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 ms 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 ms 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, an esperando el pid %d\n" +msgstr "hacer un hijo descarriado %s, an 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 el programa" # 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 opinin ... 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 podra 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 errneo (!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 estn 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 "depuracin"? sv # Puse de depurado para evitar la cacofona informacin depuracin. # Sugerencias bienvenidas. mm -#: main.c:311 +#: main.c:320 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Se imprimirn grandes cantidades de informacin de depurado.\n" @@ -943,14 +1104,14 @@ msgstr "" # "depurado" o "depuracin"? sv # Puse de depurado para evitar la cacofona informacin depuracin. # Sugerencias bienvenidas. mm -#: main.c:313 +#: main.c:322 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BANDERAS] Se imprimirn varios tipos de informacin 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 Evalla la CADENA como una instruccin 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, preferira: Se ignoran los errores obtenidos # en la ejecucin 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 traducira "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 an 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 mltiples 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 " "simblicos 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 instruccin; slo 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 estn actualizados.\n" +" indicar si estn 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 implcitas " @@ -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 cmbialo 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 "depuracin"? sv +# Puse de depurado para evitar la cacofona informacin depuracin. +# Sugerencias bienvenidas. mm +#: main.c:372 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -d Se imprimirn grandes cantidades de informacin de depurado.\n" + # Me comera el "Se" inicial. "Muestra la versin..." 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 versin 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 ... ( cancin 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, an cuando haya sido activado " "implcitamente.\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 vaca 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 depuracin 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 interrupcin/excepcin (cdigo = 0x%x, direccin = 0x%x)\n" +"%s: Se atrap una interrupcin/excepcin (cdigo = 0x%lx, direccin = 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 excepcin no manejado desde el programa %s\n" -"Cdigo de excepcin %x\n" -"Banderas de excepcin %x\n" -"Direccin de la excepcin %x\n" +"Cdigo de la excepcin = %lx\n" +"Banderas de la excepcin = %lx\n" +"Direccin de la excepcin = 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 "Violacin de acceso: operacin de escritura en la direccin %x\n" +msgstr "Violacin de acceso: operacin de escritura en la direccin 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 "Violacin de acceso: operacin de lectura en la direccin %x\n" +msgstr "Violacin de acceso: operacin de lectura en la direccin 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 funcin 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 bsqueda find_and_set_shell est puesta como default_shell = %s\n" +"la funcin find_and_set_shell() pone el valor de la ruta de bsceda " +"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 estndard" - -#: 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 estn 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 invlida `%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 "" "atencin: 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 "" "atencin: el servidor de tareas no est disponible: se utilizar -j1. Aada `" "+' 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 estndard" + +#: 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 estn 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 tubera de trabajos" -#: main.c:1792 +#: main.c:2039 msgid "init jobserver pipe" msgstr "se inicializa la tubera al servidor de tareas" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." msgstr "Los enlaces simblicos no estn 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" # Pondra ( como en un mensaje anterior ) se autoreferencia ... em+ # He puesto makefile con minsculas , par ser coherentes em+ # Ok. Es ms 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 includo `%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 ms de un objetivo" # Sugerencia: "No se especific ningn objetivo ... " sv # Ok. Me gusta. mm -#: main.c:2270 +#: main.c:2518 msgid "No targets specified and no makefile found" msgstr "No se especific ningn objetivo y no se encontr ningn 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 "" "atencin: Se ha detectado una desviacin en el reloj. La construccin podra " @@ -1369,12 +1576,12 @@ msgstr "" # "target" es "objetivo", no "objetivos". Fjate 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 comera 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 opcin `-%c' requiere un argumento no-vaco de tipo cadena" +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "la opcin `%s%s' requiere un argumento no-vaco de tipo cadena" # Me comera 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 opcin `-%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 versin 3 o posterior <http://gnu.org/licenses/" +"gpl.html>\n" +"%sEste es software libre: cualquiera es libre para redistribuirlo y " +"modificarlo.\n" +"%sNo existe GARANTA ALGUNA, hasta los lmites permitidos por las leyes " +"aplicables.\n" -#: main.c:3086 +#: main.c:3287 #, c-format msgid "" "\n" @@ -1448,7 +1657,7 @@ msgstr "" # Porqu 'del', o pones 'del programa' Make o pones # 'de Make' em+ # Ok. mm -#: main.c:3096 +#: main.c:3297 #, c-format msgid "" "\n" @@ -1457,12 +1666,45 @@ msgstr "" "\n" "# Se termina la base de datos de Make en %s\n" -#: main.c:3237 +#: 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 dejara. 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" + +#: 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 notars 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 notars 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 notars 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 notars 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 algn 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 dejara. 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 simultneamente. 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 notars 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 algn 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 expansin 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 vlida 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 algn 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 patrn 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 patrn 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 vaco" -#: 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 despus de la instruccin `endef'" +"Hay un texto irrelevante o mal colocado despus de la instruccin `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 despus de la instruccin `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 despus de la instruccin `%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 "slo se admite un `else' por condicional" -#: read.c:1797 +#: read.c:1892 msgid "Malformed target-specific variable definition" msgstr "" "La definicin de las variables especficas 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 implcitas y las de patrn esttico estn 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 implcitas y las normales estn 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 patrn 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 lneas con : y ::" # Cambiara 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 ms de una vez en la misma regla." # No me gusta esta traduccin 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 "atencin: se imponen comandos para el objetivo `%s'" +msgid "warning: overriding recipe for target '%s'" +msgstr "atencin: 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 "atencin: 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 "atencin: hay un carcter NUL; se ignora el resto de la lnea" -#: 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 contina 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 razn. 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 compaero mo 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 razn. 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 contina 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 "" "*** Atencin: el archivo .LOW_RESOLUTION_TIME `%s' tiene una resolucin " "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 implcita 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 implcita 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 omisin 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 estn 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 ms 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 ningn 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 estn ejecutando.\n" # Target file no es archivo de objetivos, sino el archivo objetivo # make no tiene ningn 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 opcin -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 "Atencin: El archivo `%s' tiene una hora de modificacin 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 "" -"Atencin: El archivo `%s' tiene una hora de modificacin %.2g en el futuro" +"Atencin: El archivo `%s' tiene una hora de modificacin %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 patrn" # Las aduanas? sv @@ -2024,12 +2249,12 @@ msgstr "El elemento .LIBPATTERNS `%s' no es un patrn" # no se exportarn em+ # Muchsimo ms claro (es ms me gusta ms en espaol que en ingls 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 exportarn: %s\n" -#: rule.c:499 +#: rule.c:496 msgid "" "\n" "# Implicit Rules" @@ -2037,7 +2262,7 @@ msgstr "" "\n" "# Reglas implcitas." -#: rule.c:514 +#: rule.c:511 msgid "" "\n" "# No implicit rules." @@ -2045,7 +2270,7 @@ msgstr "" "\n" "# No hay reglas implcitas." -#: rule.c:517 +#: rule.c:514 #, c-format msgid "" "\n" @@ -2054,7 +2279,7 @@ msgstr "" "\n" "# %u reglas implcitas, %u" -#: rule.c:526 +#: rule.c:523 msgid " terminal." msgstr " terminal." @@ -2062,16 +2287,16 @@ msgstr " terminal." # Gracias. mm # qu tal errneo ? 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 errneo! %u != %u" -#: signame.c:86 +#: signame.c:84 msgid "unknown signal" msgstr "seal desconocida" -#: signame.c:94 +#: signame.c:92 msgid "Hangup" msgstr "Colgado" @@ -2079,25 +2304,25 @@ msgstr "Colgado" # Porque es una accin. De hecho es un mensaje que se enva a travs # del sistema en este caso le enviaras 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 "Instruccin no vlida" # 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 "Excepcin de coma flotante" @@ -2129,23 +2354,23 @@ msgstr "Excepcin de coma flotante" # Bueno, creo que mi traduccin es ms exacta, concisa y clara # pero si insisten... Adems recuerda en que estoy en un pas # en donde asesinado es palabra de todos los das. 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 segmentacin" -#: signame.c:132 +#: signame.c:130 msgid "Bad system call" msgstr "Llamada al sistema errnea" -#: signame.c:135 +#: signame.c:133 msgid "Broken pipe" msgstr "Tubera rota" @@ -2156,36 +2381,36 @@ msgstr "Tubera rota" # 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 "Seal 1 definida por el usuario" -#: signame.c:147 +#: signame.c:145 msgid "User defined signal 2" msgstr "Seal 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 # Alimentacin elctrico em+ # Ok. mm -#: signame.c:158 +#: signame.c:156 msgid "Power failure" msgstr "Falla de alimentacin elctrica" -#: 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 seal)" -#: 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 tamao mximo 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 da. 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 generacin 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 "Condicin 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 "Seal de peligro" -#: signame.c:219 +#: signame.c:217 msgid "Information request" msgstr "Peticin de informacin" -#: 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) / mx = %d / mn = %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) / mx = %d / mn = %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) / mx = %d / mn = %d / promedio = %d\n" + +#: strcache.c:287 +#, fuzzy, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" "\n" -"# strcache hash-table stats:\n" +"%s # de cadenas en strcache: %d / bsquedas = %lu / coincidencias = %lu\n" + +#: strcache.c:289 +#, fuzzy +msgid "" +"# hash-table stats:\n" "# " msgstr "" "\n" "# estadsticas de la tabla de hash de los archivos:\n" "# " -#: variable.c:1541 +# Lo he cmabiado em+ +# Ok. Deberamos platicarlo con Ulrich. mm +#: variable.c:1607 +msgid "automatic" +msgstr "automtica/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 inversin en los idiomas sajones se pega. mm -#: variable.c:1550 +#: variable.c:1619 msgid "environment under -e" msgstr "con -e activo" # Lnea 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 "lnea de instrucciones" # Creo que tendremos un problema con instruccin, 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 sobreposicin `override'" -# Lo he cmabiado em+ -# Ok. Deberamos platicarlo con Ulrich. mm -#: variable.c:1559 -msgid "automatic" -msgstr "automtica/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', lnea %lu):" # Bueno. Aqu un punto de discusin. Traduzco buckets por cubetas o @@ -2357,11 +2606,11 @@ msgstr " (de `%s', lnea %lu):" # Estos mensajes son para debug, no creo que haga falta usar cubetas ;) em+ # Tienes razn, 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 "# estadsticas 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 especficas al patrn" -#: variable.c:1641 +#: variable.c:1728 msgid "" "\n" "# No pattern-specific variable values." @@ -2385,7 +2634,7 @@ msgstr "" "\n" "# No hay valores de variables especficas al patrn." -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" @@ -2396,59 +2645,59 @@ msgstr "" # Qu te parece "atencin"? Lo hemos usado mucho en otros programas. sv # Pero que bestia soy. Perdn 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 "atencin: 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 "Atencin: redireccin vaca\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 "-atencin, debers 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 "Instruccin interconstruida desconocida `%s'.\n" -#: vmsjobs.c:493 +#: vmsjobs.c:489 #, c-format msgid "Error, empty command\n" msgstr "Error, comando vaco\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 notars 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 revs?: Rutas de bsqueda 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 ms comn. mm -#: vpath.c:603 -msgid "# No `vpath' search paths." +#: vpath.c:600 +#, fuzzy +msgid "# No 'vpath' search paths." msgstr "# No hay rutas de bsqueda `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 bsqueda `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 bsqueda 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 bsqueda general (variable `VPATH'):\n" "# " +# ## Le he aadido un "" con tu permiso. +# Gracias. No lo puse porque no se como poner ese smbolo con el +# iso-accents-mode y luego se me olvid. Por cierto, como se hace? +# tambin tengo duda de la interrogacin abierta. +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valor invlido 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 bfers strcache: %d (* %d B/bfer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# estadsticas 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" -# Preferira mil veces "sin efecto" o algo parecido. sv -# Ok. Habamos 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 Binary files differ@@ -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ä." @@ -6,124 +6,132 @@ # Marc Baudoin <babafou@ensta.fr>, Frdric 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 caractristique non prise en charge : %s " +#: ar.c:46 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "tentative d'utiliser une caractristique 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 bibliothque %s pour rcuprer le membre %s " +#: arscan.c:185 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member '%s'" +msgstr "impossible d'ouvrir la bibliothque %s pour rcuprer 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 problme ; il n'a pas t " +"*** [%s] le membre d'archive %s peut avoir un problme ; 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 problme; il n'a pas t supprim" +"*** Le membre d'archive %s peut avoir un problme; 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 excuter" -#: 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" "# Rpertoires\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 (priphrique %d, inode [%d,%d,%d]) : ouverture impossible.\n" +msgstr "# %s (priphrique %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 (priphrique %ld, inode %ld) : ouverture impossible.\n" +msgstr "# %s (priphrique %ld, inode %ld): ouverture impossible.\n" -#: dir.c:1048 +#: dir.c:1041 #, c-format msgid "# %s (key %s, mtime %d): " -msgstr "# %s (priphrique %s, mtime %d) : " +msgstr "# %s (priphrique %s, mtime %d): " -#: dir.c:1052 +#: dir.c:1045 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " -msgstr "# %s (priphrique %d, inode [%d,%d,%d]) : " +msgstr "# %s (priphrique %d, inode [%d,%d,%d]): " -#: dir.c:1057 +#: dir.c:1050 #, c-format msgid "# %s (device %ld, inode %ld): " -msgstr "# %s (priphrique %ld, inode %ld) : " +msgstr "# %s (priphrique %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 " impossibilits dans %lu rpertoires.\n" -#: expand.c:127 -#, c-format -msgid "Recursive variable `%s' references itself (eventually)" -msgstr "La variable rcursive %s se rfrence elle-mme (finalement)" +#: expand.c:125 +#, fuzzy, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "La variable rcursive %s se rfrence elle-mme (finalement)" -#: expand.c:276 +#: expand.c:269 msgid "unterminated variable reference" msgstr "rfrence incomplte une variable" -#: file.c:267 -#, c-format -msgid "Recipe was specified for file `%s' at %s:%lu," -msgstr "Une recette a t spcifie 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 spcifie 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 trouve par une recherche de rgle " +"La recette pour le fichier %s a t trouve par une recherche de rgle " "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 considr comme tant le mme fichier que %s ." +"mais %s est maintenant considr comme tant le mme 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 ignore 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 ignore 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 intermdiaire %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 intermdiaire %s" + +#: file.c:400 msgid "Removing intermediate files...\n" msgstr "Suppression des fichiers intermdiaires...\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 prcieux (dpendance de .PRECIOUS)." -#: file.c:931 +#: file.c:956 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Cible factice (dpendance 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 dfaut, MAKEFILES ou -include/sinclude makefile." -#: file.c:937 +#: file.c:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Pas de rgle implicite." + +#: file.c:964 msgid "# Implicit rule search has been done." msgstr "# La recherche de rgle implicite a t effectue." -#: file.c:938 +#: file.c:965 msgid "# Implicit rule search has not been done." msgstr "# La recherche de rgle implicite n'a pas t effectue." -#: file.c:940 -#, c-format -msgid "# Implicit/static pattern stem: `%s'\n" -msgstr "# Prfixe de motif implicite ou statique : %s \n" +#: file.c:967 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Prfixe de motif implicite ou statique: %s\n" -#: file.c:942 +#: file.c:969 msgid "# File is an intermediate prerequisite." msgstr "# Le fichier est une dpendance intermdiaire." -#: 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 vrifie." -#: 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 trs ancien." -#: file.c:961 +#: file.c:988 #, c-format msgid "# Last modified %s\n" msgstr "# Dernire 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'excution (CECI EST UNE ANOMALIE)." -#: file.c:971 +#: file.c:998 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Recette de dpendances en cours d'excution (CECI EST UNE ANOMALIE)." -#: file.c:980 +#: file.c:1007 msgid "# Successfully updated." msgstr "# Mise jour russie." -#: 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 active)." +msgstr "# besoin d'tre mis jour (l'option -q est active)." -#: 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 numrique" +#: 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 numrique" -#: 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 numrique" +#: function.c:767 +#, fuzzy +msgid "non-numeric first argument to 'wordlist' function" +msgstr "le premier argument de la fonction wordlist doit tre numrique" -#: function.c:785 -msgid "non-numeric second argument to `wordlist' function" -msgstr "le deuxime argument de la fonction wordlist doit tre numrique" +#: function.c:769 +#, fuzzy +msgid "non-numeric second argument to 'wordlist' function" +msgstr "le deuxime argument de la fonction wordlist doit tre numrique" -#: 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 implment 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 implment 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 ncessite 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 ncessite 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 ncessite un argument -- %c\n" +msgstr "%s: l'option ncessite 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 : mmoire puise" +"impossible d'allouer %lu octets pour la table de hachage: mmoire puise" #: 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 rgle implicite pour %s .\n" +#: implicit.c:38 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Recherche d'une rgle implicite pour %s.\n" -#: implicit.c:56 -#, c-format -msgid "Looking for archive-member implicit rule for `%s'.\n" -msgstr "Recherche d'une rgle 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 rgle implicite de membre d'archive pour %s.\n" -#: implicit.c:317 +#: implicit.c:310 msgid "Avoiding implicit rule recursion.\n" -msgstr "vitement de rcursion dans une rgle 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 rcursion dans une rgle implicite.\n" -#: implicit.c:674 +#: implicit.c:486 #, c-format -msgid "Rejecting impossible rule prerequisite `%s'.\n" -msgstr "Rejet d'une dpendance de rgle impossible %s .\n" - -#: implicit.c:675 -#, c-format -msgid "Rejecting impossible implicit prerequisite `%s'.\n" -msgstr "Rejet d'une dpendance implicite impossible %s .\n" - -#: implicit.c:688 -#, c-format -msgid "Trying rule prerequisite `%s'.\n" -msgstr "Essai de la dpendance de rgle %s .\n" +msgid "Stem too long: '%.*s'.\n" +msgstr "" -#: implicit.c:689 -#, c-format -msgid "Trying implicit prerequisite `%s'.\n" -msgstr "Essai de la dpendance 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 dpendance de rgle impossible %s.\n" + +#: implicit.c:698 +#, fuzzy, c-format +msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgstr "Rejet d'une dpendance implicite impossible %s.\n" + +#: implicit.c:711 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Essai de la dpendance de rgle %s.\n" + +#: implicit.c:712 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Essai de la dpendance implicite %s.\n" + +#: implicit.c:751 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'\n" +msgstr "Dpendance trouve %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 rgle contenant le fichier intermdaire %s.\n" + +#: job.c:361 +msgid "Cannot create a temporary file\n" +msgstr "Impossible de crer un fichier temporaire\n" -#: implicit.c:728 -#, c-format -msgid "Found prerequisite `%s' as VPATH `%s'\n" -msgstr "Dpendance trouve %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 rgle contenant le fichier intermdaire %s .\n" +#: job.c:487 +msgid " (ignored)" +msgstr " (ignore)" -#: job.c:335 -msgid "Cannot create a temporary file\n" -msgstr "Impossible de crer 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 (ignore)" +#: 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 (ignore)" - -#: 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 tches non termines...." -#: 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 "Rcolte 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 "Rcolte 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 chane.\n" -#: job.c:920 -msgid "write jobserver" -msgstr "criture vers le serveur de tches" +#: 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 relch 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 tches" + +#: 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 compts 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 chane.\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 incorpore pour mettre jour la cible %s .\n" +"%s Aucune rgle pour fabriquer la cible %s, ncessaire 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 systme 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 rcolt 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 "Cration 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 tches en parallle (-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 RPERTOIRE 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 dbogage.\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 " "dbogage.\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 RPERTOIRE les makefiles " "traits 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 tches simultanes ; 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 mme si certaines cibles n'ont pas " "pu tre fabriques.\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 tches multiples moins que " "la charge soit infrieure 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 rcent entre les " +" -L, --check-symlink-times Utiliser le mtime le plus rcent 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'excuter 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 "" " Considrer le FICHIER comme tant trs 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 donnes 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 excuter 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 Dsactiver les rgles 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 Dsactiver les rglages 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 rpter 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" " Dsactiver -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 dbogage.\n" + +#: main.c:374 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Afficher le numro 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 rpertoire 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 Dsactiver l'option -w, mme si elle a t " "active 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 "" " Considrer 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 Prvenir lorsqu'une variable non dfinie est " "rfrence.\n" -#: main.c:564 +#: main.c:647 msgid "empty string invalid as file name" msgstr "une chane 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 dbogage inconnu %s" + +#: main.c:777 #, c-format -msgid "unknown debug level specification `%s'" -msgstr "niveau de dbogage 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'accs : opration d'criture l'adresse 0x%p\n" +msgstr "Violation d'accs: opration 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'accs : opration de lecture l'adresse 0x%p\n" +msgstr "Violation d'accs: opration 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() dfinit 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 dfinit default_shell = %s\n" -#: main.c:1273 +#: main.c:1447 #, c-format msgid "%s is suspending for 30 seconds..." msgstr "%s s'arrte 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: chane --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: dsactivation du mode serveur de " +"tches." + +#: main.c:1583 +msgid "dup jobserver" +msgstr "duplication du serveur de tches" + +#: main.c:1586 +#, fuzzy +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"AVERTISSEMENT: le serveur de tches n'est pas disponible: utilisation de -" +"j1. Ajouter + la rgle parent du make." + +#: main.c:1752 msgid "Makefile from standard input specified twice." msgstr "Makefile depuis l'entre standard spcifi 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 tches en parallle (-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 monotche (-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 : chane --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 : dsactivation du mode serveur de " -"tches." - -#: main.c:1750 -msgid "dup jobserver" -msgstr "duplication du serveur de tches" - -#: 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 tches n'est pas disponible: utilisation de -" -"j1. Ajouter + la rgle parent du make." -#: main.c:1777 +#: main.c:2019 msgid "creating jobs pipe" msgstr "cration d'un tube pour les tches" -#: main.c:1792 +#: main.c:2039 msgid "init jobserver pipe" msgstr "initialisation du tube du serveur de tches" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." msgstr "" -"Les liens symboliques ne sont pas pris en charge : dsactivation de -L." +"Les liens symboliques ne sont pas pris en charge: dsactivation 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 rpertoire d'origine." -#: main.c:2102 +#: main.c:2354 #, c-format msgid "Re-executing[%u]:" -msgstr "R-excution[%u] :" +msgstr "R-excution[%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 spcifie 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 : dcalage d'horloge dtect. La construction peut tre " +"AVERTISSEMENT: dcalage d'horloge dtect. La construction peut tre " "incomplte." -#: 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 chane 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 chane 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 ultrieure <http://gnu.org/licenses/" +"%sLicence GPLv3+: GNU GPL version 3 ou ultrieure <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 donnes de Make, imprime le %s" -#: main.c:3096 +#: main.c:3297 #, c-format msgid "" "\n" @@ -1203,107 +1402,107 @@ msgstr "" "\n" "# Base de donnes de Make termine le %s\n" -#: main.c:3237 -#, c-format -msgid "%s: Entering an unknown directory\n" -msgstr "%s : on entre dans un rpertoire inconnu\n" - -#: main.c:3239 -#, c-format -msgid "%s: Leaving an unknown directory\n" -msgstr "%s : on quitte un rpertoire inconnu\n" - -#: main.c:3242 -#, c-format -msgid "%s: Entering directory `%s'\n" -msgstr "%s : on entre dans le rpertoire %s \n" - -#: main.c:3245 -#, c-format -msgid "%s: Leaving directory `%s'\n" -msgstr "%s: on quitte le rpertoire %s \n" - -#: main.c:3250 -#, c-format -msgid "%s[%u]: Entering an unknown directory\n" -msgstr "%s[%u] : on entre dans un rpertoire inconnu\n" - -#: main.c:3253 -#, c-format -msgid "%s[%u]: Leaving an unknown directory\n" -msgstr "%s[%u] : on quitte un rpertoire inconnu\n" - -#: main.c:3257 -#, c-format -msgid "%s[%u]: Entering directory `%s'\n" -msgstr "%s[%u] : on entre dans le rpertoire %s \n" - -#: main.c:3260 -#, c-format -msgid "%s[%u]: Leaving directory `%s'\n" -msgstr "%s[%u] : on quitte le rpertoire %s \n" - -#: misc.c:316 -msgid ". Stop.\n" -msgstr ". Arrt.\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 "mmoire virtuelle puise" -#: misc.c:708 +#: misc.c:522 #, c-format msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s : utilisateur %lu (rel %lu), groupe %lu (rel %lu)\n" +msgstr "%s: utilisateur %lu (rel %lu), groupe %lu (rel %lu)\n" -#: misc.c:729 +#: misc.c:543 msgid "Initialized access" msgstr "Accs initialis" -#: misc.c:808 +#: misc.c:622 msgid "User access" msgstr "Accs utilisateur" -#: misc.c:856 +#: misc.c:670 msgid "Make access" msgstr "Accs de Make" -#: misc.c:890 +#: misc.c:704 msgid "Child access" msgstr "Accs des fils" -#: misc.c:954 +#: output.c:128 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: on entre dans un rpertoire inconnu\n" + +#: output.c:130 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: on quitte un rpertoire inconnu\n" + +#: output.c:133 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: on entre dans le rpertoire %s\n" + +#: output.c:135 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: on quitte le rpertoire %s\n" + +#: output.c:139 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: on entre dans un rpertoire inconnu\n" + +#: output.c:141 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: on quitte un rpertoire inconnu\n" + +#: output.c:144 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: on entre dans le rpertoire %s\n" + +#: output.c:146 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: on quitte le rpertoire %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 ". Arrt.\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 premire cible" -#: read.c:940 +#: read.c:1036 msgid "missing rule before recipe" msgstr "rgle manquante avant la recette" -#: read.c:1027 +#: read.c:1123 #, c-format msgid "missing separator%s" msgstr "sparateur 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 aprs 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 aprs la directive endef " +#: read.c:1465 +#, fuzzy +msgid "extraneous text after 'define' directive" +msgstr "Texte superflu aprs la directive define" #: read.c:1490 -#, c-format -msgid "Extraneous text after `%s' directive" -msgstr "Texte superflu aprs 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 aprs la directive endef" + +#: read.c:1589 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texte superflu aprs 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 "Dfinition malforme de variable spcifique une cible" -#: read.c:1855 +#: read.c:1951 msgid "prerequisites cannot be defined in recipes" msgstr "les prrequis ne peuvent tre dfinis dans des recettes" -#: read.c:1908 +#: read.c:2009 msgid "mixed implicit and static pattern rules" msgstr "mlange de rgles 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 "mlange de rgles 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 possde la fois des entres : et ::" +#: read.c:2099 read.c:2144 +#, fuzzy, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "le fichier cible %s possde la fois des entres : et::" -#: read.c:1997 -#, c-format -msgid "target `%s' given more than once in the same rule." -msgstr "la cible %s apparat plus d'une fois dans la mme rgle." +#: read.c:2105 +#, fuzzy, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "la cible %s apparat plus d'une fois dans la mme rgle." -#: 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 ignore pour la cible %s " +#: read.c:2117 +#, fuzzy, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "AVERTISSEMENT: ancienne recette ignore pour la cible %s" -#: read.c:2392 +#: read.c:2530 msgid "warning: NUL character seen; rest of line ignored" msgstr "" -"AVERTISSEMENT : caractre NUL dtect ; le reste de la ligne est ignor" +"AVERTISSEMENT: caractre NUL dtect ; 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 rgle pour fabriquer la cible %s %s" +#: remake.c:377 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sAucune rgle 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 rgle pour fabriquer la cible %s , ncessaire pour %s %s" +#: remake.c:379 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%s Aucune rgle pour fabriquer la cible %s, ncessaire 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 rcente choue de mettre jour le fichier %s .\n" +#, fuzzy, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Tentative rcente choue de mettre jour le fichier %s.\n" #: remake.c:432 -#, c-format -msgid "File `%s' was considered already.\n" -msgstr "Le fichier %s a dj t tudi.\n" +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "Le fichier %s a dj 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 rsolution" -#: remake.c:494 remake.c:1016 -#, c-format -msgid "Found an implicit rule for `%s'.\n" -msgstr "Rgle implicite trouve pour %s .\n" +#: remake.c:494 remake.c:1019 +#, fuzzy, c-format +msgid "Found an implicit rule for '%s'.\n" +msgstr "Rgle implicite trouve pour %s.\n" -#: remake.c:496 remake.c:1018 -#, c-format -msgid "No implicit rule found for `%s'.\n" -msgstr "Pas de rgle implicite trouve pour %s .\n" +#: remake.c:496 remake.c:1021 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pas de rgle implicite trouve pour %s.\n" #: remake.c:502 -#, c-format -msgid "Using default recipe for `%s'.\n" -msgstr "Utilisation de la recette par dfaut pour %s .\n" +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Utilisation de la recette par dfaut pour %s.\n" -#: remake.c:535 remake.c:1057 +#: remake.c:535 remake.c:1067 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dpendance circulaire %s <- %s abandonne." -#: remake.c:651 -#, c-format -msgid "Finished prerequisites of target file `%s'.\n" -msgstr "Fin des dpendances du fichier cible %s .\n" - -#: remake.c:657 -#, c-format -msgid "The prerequisites of `%s' are being made.\n" -msgstr "Les dpendances 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 refabrique cause d'erreurs." - -#: remake.c:727 -#, c-format -msgid "Prerequisite `%s' is order-only for target `%s'.\n" -msgstr "Le prrequis %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 dpendance %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 dpendance %s est plus rcente que la cible %s .\n" - -#: remake.c:740 -#, c-format -msgid "Prerequisite `%s' is older than target `%s'.\n" -msgstr "La dpendance %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 dpendance.\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 dpendance 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'excution.\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 russie 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 dfaut 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 dpendances du fichier cible %s.\n" + +#: remake.c:661 +#, fuzzy, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Les dpendances 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 refabrique cause d'erreurs." + +#: remake.c:731 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Le prrequis %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 dpendance %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 dpendance %s est plus rcente que la cible %s.\n" + +#: remake.c:744 +#, fuzzy, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "La dpendance %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 dpendance.\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 dpendance 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'excution.\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 russie 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 dfaut 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'lment %s de .LIBPATTERNS n'est pas un motif" +#: remake.c:1583 +#, fuzzy, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "l'lment %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" -"# Rgles Implicites" +"# Rgles implicites" -#: rule.c:514 +#: rule.c:511 msgid "" "\n" "# No implicit rules." @@ -1661,7 +1881,7 @@ msgstr "" "\n" "# Pas de rgle implicite." -#: rule.c:517 +#: rule.c:514 #, c-format msgid "" "\n" @@ -1670,244 +1890,263 @@ msgstr "" "\n" "# %u rgles 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/arrt" -#: 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 systme" -#: 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 "Arrt" -#: signame.c:164 +#: signame.c:162 msgid "Stopped (tty input)" msgstr "Arrt (entre tty)" -#: signame.c:167 +#: signame.c:165 msgid "Stopped (tty output)" msgstr "Arrt (sortie tty)" -#: signame.c:170 +#: signame.c:168 msgid "Stopped (signal)" msgstr "Arrt (signal)" -#: signame.c:173 +#: signame.c:171 msgid "CPU time limit exceeded" msgstr "Limite du temps CPU dpasse" -#: signame.c:176 +#: signame.c:174 msgid "File size limit exceeded" msgstr "Limite de taille de fichier dpasse" -#: 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 "Fentre modifie" -#: 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 "dfaut" -#: 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 spcifiques 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 spcifiques au motif" -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" @@ -1940,94 +2179,94 @@ msgstr "" "\n" "# %u valeurs de variable spcifiques au motif" -#: variable.h:219 -#, c-format -msgid "warning: undefined variable `%.*s'" -msgstr "AVERTISSEMENT : variable indfinie %.*s " +#: variable.h:224 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "AVERTISSEMENT: variable indfinie %.*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 ractiver 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 "Entre redirige depuis %s\n" -#: vmsjobs.c:513 +#: vmsjobs.c:509 #, c-format msgid "Redirected error to %s\n" msgstr "Erreur redirige vers %s\n" -#: vmsjobs.c:523 +#: vmsjobs.c:518 #, c-format msgid "Append output to %s\n" msgstr "Sortie ajoute %s\n" -#: vmsjobs.c:529 +#: vmsjobs.c:524 #, c-format msgid "Redirected output to %s\n" msgstr "Sortie redirige 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 "Excution 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 gnral (variable VPATH )." +"# Aucun chemin de recherche gnral (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 gnral (variable VPATH ) :\n" +"# Chemin de recherche gnral (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 (ignore)" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] Erreur %d (ignore)" + +#~ 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 incorpore 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 ADQUATION 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 "Rinitialisation de make en mode de traitement simple des tches." #~ msgid "Syntax error, still inside '\"'\n" -#~ msgstr "Erreur de syntaxe, toujours l'intrieur de \" \n" +#~ msgstr "Erreur de syntaxe, toujours l'intrieur de \"\n" #~ msgid "Got a SIGCHLD; %u unreaped children.\n" #~ msgstr "" @@ -2106,10 +2377,10 @@ msgstr "" #~ "sortie n'a pas t rcup.\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 schma de dpendance vide" +#~ msgstr "la cible %s a laiss un schma de dpendance vide" #~ msgid "" #~ "\n" @@ -2238,9 +2509,6 @@ msgstr "" #~ msgid "intermediate" #~ msgstr "intermdiaire" -#~ msgid " (ignored)" -#~ msgstr " (ignore)" - #~ msgid "Unknown%s job %d" #~ msgstr "Tche%s inconnue %d" @@ -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 tacaocht a sid: `%s'" -#: ar.c:125 +#: ar.c:123 msgid "touch archive member is not available on VMS" msgstr "n fidir 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: Nl 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: Nl `%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: Nl a leithid 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-chd 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 "" -"norbh fhidir le lbr$set_module an t-eolas modil a bhaint amach, stdas = %" -"d" +"norbh fhidir le lbr$set_module an t-eolas modil a bhaint amach, stdas = " +"%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 stdas = %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 fidir leabharlann `%s' a oscailt chun cuardach a dhanamh ar an mball `%" -"s'" +"n fidir leabharlann `%s' a oscailt chun cuardach a dhanamh 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 fidir go bhfuil an t-ainm teasctha)" -#: arscan.c:853 +#: arscan.c:850 #, c-format msgid " Date %s" msgstr " Dta %s" -#: arscan.c:854 +#: arscan.c:851 #, c-format msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, md = 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 fidir gur ball brige `%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 fidir gur ball brige `%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', lne %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: norbh fhidir 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 fidir 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 (glas %d, i-nd [%d,%d,%d]): n fidir a oscailt.\n" -#: dir.c:1021 +#: dir.c:1014 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (glas %ld, i-nd %ld): norbh fhidir 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 (glas %d, i-nd [%d,%d,%d]): " -#: dir.c:1057 +#: dir.c:1050 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (glas %ld, i-nd %ld): " -#: dir.c:1063 dir.c:1084 +#: dir.c:1056 dir.c:1077 msgid "No" msgstr "N Dan" -#: 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 "nl" -#: dir.c:1071 +#: dir.c:1064 msgid " impossibilities" msgstr " ruda neamhfhideartha" -#: 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 neamhfhideartha 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 "Danann an athrg athchrsach `%s' tagairt d fin (sa deireadh)" -#: expand.c:276 +#: expand.c:269 msgid "unterminated variable reference" msgstr "tagairt athrige gan chrochn" -#: 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 "Sonraodh 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 "" "Aimsodh 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 "" "Danfar neamhshuim ar orduithe le haghaidh `%s'; sidfear 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 fidir idirstad aonair `%s' a athainmnigh le hidirstad dbailte `%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 fidir idirstad dbailte `%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 idirmhenach `%s' scriosadh" -#: file.c:396 +#: file.c:400 msgid "Removing intermediate files...\n" msgstr "Comhaid idirmhenacha 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 sid 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 (ramhriachtanas de .PRECIOUS)." -#: file.c:931 +#: file.c:956 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sprioc bhrige (ramhriachtanas de .PHONY)." -#: file.c:933 +#: file.c:958 #, fuzzy msgid "# Command line target." msgstr "# Sprioc lne na n-orduithe." -#: file.c:935 +#: file.c:960 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile ramhshocraithe, n MAKEFILES, n -include/sinclude." -#: file.c:937 +#: file.c:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Nl 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 patrin intuigthe/statach: `%s'\n" -#: file.c:942 +#: file.c:969 msgid "# File is an intermediate prerequisite." msgstr "# T an comhad ina ramhriachtanas idirmhenach." -#: file.c:946 +#: file.c:973 msgid "# Also makes:" msgstr "# Dantar fosta:" -#: file.c:952 +#: file.c:979 msgid "# Modification time never checked." msgstr "# Nor seiceladh an t-am mionathraithe riamh." -#: file.c:954 +#: file.c:981 msgid "# File does not exist." msgstr "# Nl a leithid 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 "# Nuashonraodh an comhad." -#: file.c:964 +#: file.c:991 msgid "# File has not been updated." msgstr "# Nor nuashonraodh 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 lthair (IS FABHT SEO)." -#: file.c:971 +#: file.c:998 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# T orduithe splechais 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-tbla 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 chad argint neamhuimhriil 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 chad argint 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 neamhuimhriil an chad argint 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 neamhuimhriil an dara hargint 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 "earrid sa scrobh: %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 argint (%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 "nl an fheidhm `%s' ar fil ar an chras 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 chrochn: `%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' dbhroch\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 argint (%d) d'fheidhm `%s'" + +#: function.c:2555 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%d) for function %s\n" +msgstr "easpa argint (%d) d'fheidhm `%s'" + +#: getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: T an rogha `%s' dbhroch\n" + +#: getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: n cheadatear argint 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 cheadatear argint 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 argint de dhth 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 argint de dhth 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' dbhroch\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 cheadatear argint 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-haiseil=%d, " msgid "Collisions=%ld/%ld=%.0f%%" msgstr "Tuairteanna haisela=%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 danamh 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 danamh cuardach ar riail intuigthe le haghaidh bhall cartlainne `%s'.\n" -#: implicit.c:317 +#: implicit.c:310 msgid "Avoiding implicit rule recursion.\n" msgstr "Athchrsil 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 phatrin 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 "Ramhriachtanas neamhfhideartha rialach `%s' dhilt.\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 "Ramhriachtanas intuigthe neamhfhideartha `%s' dhilt.\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 ramhriachtanas 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 ramhriachtanas 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 "Aimsodh ramhriachtanas `%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 danamh cuardach ar riail le comhad idirmhenach `%s'.\n" -#: job.c:335 +#: job.c:361 msgid "Cannot create a temporary file\n" msgstr "N fidir comhad sealadach a chruth\n" -#: job.c:449 -#, c-format -msgid "*** [%s] Error 0x%x (ignored)" -msgstr "*** [%s] Earrid 0x%x (rinneadh neamhshuim air)" - -#: job.c:450 -#, c-format -msgid "*** [%s] Error 0x%x" -msgstr "*** [%s] Earrid 0x%x" +#: job.c:482 +msgid " (core dumped)" +msgstr " (crdhumpa)" -#: job.c:454 -#, c-format -msgid "[%s] Error %d (ignored)" +#: job.c:487 +#, fuzzy +msgid " (ignored)" msgstr "[%s] Earrid %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] Earrid 0x%x" + +#: job.c:513 +#, fuzzy, c-format +msgid "%s[%s] Error %d%s" msgstr "*** [%s] Earrid %d" -#: job.c:460 -msgid " (core dumped)" -msgstr " (crdhumpa)" +#: 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 neamhchrochnaithe..." -#: 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 "scrobh 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 "scrobh jabfhreastala" + +#: job.c:1612 job.c:2332 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "theip ar process_easy(); nor tosaodh priseas (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 argint 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 "ladh popa 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: Nl an chartlann `%s' ann" -#: job.c:1802 +#: job.c:2005 #, fuzzy, c-format -msgid "Invoking builtin recipe to update target `%s'.\n" -msgstr "Nl g leis an sprioc `%s' a athdhanamh" +msgid "%s: update target '%s' due to: %s" +msgstr "" +"%sNl aon riail chun an sprioc `%s' a dhanamh, riachtanach le haghaidh `" +"%s'%s" -#: job.c:1910 +#: job.c:2118 msgid "cannot enforce load limits on this operating system" msgstr "n fidir srianta lid a chur i bhfeidhm ar an chras oibrichin seo" -#: job.c:1912 +#: job.c:2120 msgid "cannot enforce load limit: " msgstr "n fidir srian lid a chur i bhfeidhm: " -#: job.c:1985 +#: job.c:2199 msgid "no more file handles: could not duplicate stdin\n" msgstr "nl aon hanla comhaid le fil: norbh fhidir stdin a chipeil\n" -#: job.c:1987 +#: job.c:2210 msgid "no more file handles: could not duplicate stdout\n" msgstr "nl aon hanla comhaid le fil: norbh fhidir stdout a chipeil\n" -#: job.c:2015 +#: job.c:2223 +#, fuzzy +msgid "no more file handles: could not duplicate stderr\n" +msgstr "nl aon hanla comhaid le fil: norbh fhidir stdin a chipeil\n" + +#: job.c:2238 msgid "Could not restore stdin\n" msgstr "Norbh fhidir stdin a athchiri\n" -#: job.c:2023 +#: job.c:2246 msgid "Could not restore stdout\n" msgstr "Norbh fhidir stdout a athchiri\n" -#: job.c:2127 +#: job.c:2254 +#, fuzzy +msgid "Could not restore stderr\n" +msgstr "Norbh fhidir stdin a athchiri\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 fs\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 clr blaoisce" -#: job.c:2237 +#: job.c:2472 msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: is fidir 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 "Athraodh $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 (lne %d) Droch-chomhthacs 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 "Nl jabanna parailalacha (-j) ar fil ar an gcras 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 Dan neamhshuim (comhoirinacht)\n" -#: main.c:306 +#: main.c:315 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Dan gach sprioc, gan choinnollacha.\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" " Tigh go COMHADLANN roimh dhanamh aon rud.\n" -#: main.c:311 +#: main.c:320 msgid " -d Print lots of debugging information.\n" msgstr " -d Taispein go leor eolas dfhabhtaithe.\n" -#: main.c:313 +#: main.c:322 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BRATACHA] Taispein eolas fabhtaithe de chinelacha " "agsla.\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" " Sraonn athrga 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" " Ligh COMHAD mar makefile.\n" -#: main.c:323 +#: main.c:332 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Taispein 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 Dan neamhshuim ar earrid 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 chile; igroch 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 fidir sprioc a " "dhanamh.\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 iomadla mura bhfuil an ld " "nos 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; taispein tortha mar dhea " "amhin.\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 " "hathdhan .\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 Taispein an bunachar sonra inmhenach.\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; stdas 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 Dchumasaigh 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 Dchumasaigh na hathrga insuite.\n" -#: main.c:353 +#: main.c:365 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet N dan 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" " Mch -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 " "athdhanamh.\n" -#: main.c:360 +#: main.c:372 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr " -d Taispein go leor eolas dfhabhtaithe.\n" + +#: main.c:374 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Taispein 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 Taispein 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 Mch -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 " "higroch).\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 dhantar tagairt d'athrg " "gan sainmhni.\n" -#: main.c:564 +#: main.c:647 msgid "empty string invalid as file name" msgstr "n fidir teaghrn folamh a sid 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 leibhal dfhabhtaithe" -#: 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 "earrid inmhenach: roghanna --jobserver-fds iomadla" + +#: main.c:848 #, fuzzy, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cd = 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 "Sr rochtana: oibrocht scrofa ag seoladh %lx\n" -#: main.c:706 +#: main.c:864 #, fuzzy, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Sr rochtana: oibrocht limh 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 trimhse 30 soicind..." -#: main.c:1275 +#: main.c:1449 #, c-format msgid "done sleep(30). Continuing.\n" msgstr "sleep(30) crochnaithe. Ag gabhil ar aghaidh.\n" -#: main.c:1501 -msgid "Makefile from standard input specified twice." -msgstr "Sonraodh Makefile n ionchur caighdenach 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 "Nl jabanna parailalacha (-j) ar fil ar an gcras 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 "earrid inmhenach: roghanna --jobserver-fds iomadla" -#: 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 "earrid inmhenach: teaghrn 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 frsilte i bhfo-make: md jabfhreastala dhchumas." -#: 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: nl jabfhreastala ar fil: ag baint sid as -j1. Cuir `+' leis " "an mthair-riail." -#: main.c:1777 +#: main.c:1752 +msgid "Makefile from standard input specified twice." +msgstr "Sonraodh Makefile n ionchur caighdenach 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 "Nl jabanna parailalacha (-j) ar fil ar an gcras 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 "popa na jabanna chruth" -#: main.c:1792 +#: main.c:2039 msgid "init jobserver pipe" msgstr "popa an jabfhreastala ths" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." msgstr "n thacatear le naisc shiombalacha: -L dhchumas." -#: 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 fidir go lbfar an Makefile `%s'; n athdhanfar .\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 athdhanamh 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 "Nor aimsodh 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 "Nor aimsodh an makefile `%s'" -#: main.c:2086 +#: main.c:2341 msgid "Couldn't change back to original directory." msgstr "Norbh fhidir an chomhadlann oibre a athr ar ais." -#: main.c:2102 +#: main.c:2354 #, c-format msgid "Re-executing[%u]:" msgstr " rith ars[%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 nos m n aon sprioc amhin i .DEFAULT_GOAL" -#: main.c:2270 +#: main.c:2518 msgid "No targets specified and no makefile found" msgstr "Nor sonraodh aon sprioc agus nor aimsodh aon makefile" -#: main.c:2272 +#: main.c:2520 msgid "No targets" msgstr "Nl 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 fidir go bhfuil an tgil neamhiomln." -#: main.c:2470 +#: main.c:2718 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "sid: %s [roghanna] [sprioc] ...\n" -#: main.c:2476 +#: main.c:2724 #, c-format msgid "" "\n" @@ -1113,7 +1306,7 @@ msgstr "" "\n" "Tgadh an clr seo le haghaidh %s\n" -#: main.c:2478 +#: main.c:2726 #, c-format msgid "" "\n" @@ -1122,36 +1315,36 @@ msgstr "" "\n" "Tgadh an clr 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 teaghrn nach folamh a thabhairt mar argint 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 slnuimhir dheimhneach a thabhairt mar argint le `-%c'" -#: main.c:3054 +#: main.c:3253 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sTgadh an clr seo le haghaidh %s\n" -#: main.c:3056 +#: main.c:3255 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "%sTgadh an clr 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, priontilte ar %s" -#: main.c:3096 +#: main.c:3297 #, c-format msgid "" "\n" @@ -1178,106 +1371,106 @@ msgstr "" "\n" "# Crochnaodh an bunachar sonra Make seo ar %s\n" -#: main.c:3237 +#: misc.c:201 +#, c-format +msgid "Unknown error %d" +msgstr "Earrid 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 fhoril dithe" + +#: misc.c:522 +#, c-format +msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +msgstr "%s: sideoir %lu (for %lu), grpa %lu (for %lu)\n" + +#: misc.c:543 +msgid "Initialized access" +msgstr "Rochtain tsaithe" + +#: misc.c:622 +msgid "User access" +msgstr "Rochtain sideora" + +#: 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 "earrid sa scrobh: %s" + +#: output.c:517 +msgid "write error" +msgstr "earrid sa scrobh" + +#: output.c:740 msgid ". Stop.\n" msgstr ". Stop.\n" -#: misc.c:337 -#, c-format -msgid "Unknown error %d" -msgstr "Earrid 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 fhoril dithe" - -#: misc.c:708 -#, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: sideoir %lu (for %lu), grpa %lu (for %lu)\n" - -#: misc.c:729 -msgid "Initialized access" -msgstr "Rochtain tsaithe" - -#: misc.c:808 -msgid "User access" -msgstr "Rochtain sideora" - -#: 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 "earrid sa scrobh: %s" - -#: misc.c:956 -msgid "write error" -msgstr "earrid sa scrobh" - -#: read.c:179 +#: read.c:180 msgid "Reading makefiles...\n" msgstr "Makefileanna lamh...\n" #: read.c:333 -#, c-format -msgid "Reading makefile `%s'" +#, fuzzy, c-format +msgid "Reading makefile '%s'" msgstr "Makefile `%s' lamh" #: 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 "comhrir neamhbhail i gcoinnollach" -#: 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 chad 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 TB in ionad ocht sps?)" -#: read.c:1163 +#: read.c:1263 msgid "missing target pattern" msgstr "patrn sprice ar iarraidh" -#: read.c:1165 +#: read.c:1265 msgid "multiple target patterns" msgstr "patrin iomadla sprice" -#: read.c:1169 -#, c-format -msgid "target pattern contains no `%%'" +#: read.c:1269 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" msgstr "nl aon `%%' sa phatrn 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 athrige" -#: read.c:1367 +#: read.c:1465 #, fuzzy -msgid "extraneous text after `define' directive" +msgid "extraneous text after 'define' directive" msgstr "Tacs 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 chrochn" -#: read.c:1420 +#: read.c:1518 #, fuzzy -msgid "extraneous text after `endef' directive" +msgid "extraneous text after 'endef' directive" msgstr "Tacs 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 "Tacs 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 cheadatear ach aon `else' amhin le gach coinnollach" -#: read.c:1797 +#: read.c:1892 msgid "Malformed target-specific variable definition" msgstr "Is mchumtha an sainmhni athrige (le haghaidh aon sprioc amhin)" -#: read.c:1855 +#: read.c:1951 #, fuzzy msgid "prerequisites cannot be defined in recipes" msgstr "n fidir ramhriachtanais 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 chile" -#: read.c:1931 read.c:2112 +#: read.c:2032 read.c:2220 msgid "mixed implicit and normal rules" msgstr "rialacha intuigthe agus gnthrialacha measctha le chile" -#: 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 "nl an sprioc `%s' comhoirinach leis an phatrn 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 iontrlacha : 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 amhin nos m n uair amhin." -#: 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 sr 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 danamh 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 danamh neamhshuim ar an chuid eile " "den lne" -#: 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 "Nl faic le danamh 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 "Nl 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 "%sNl aon riail chun an sprioc `%s' a dhanamh%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 "" -"%sNl aon riail chun an sprioc `%s' a dhanamh, riachtanach le haghaidh `%s'%" -"s" +"%sNl aon riail chun an sprioc `%s' a dhanamh, 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 lmha.\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 dana, 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 scrd 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 fs.\n" #: remake.c:445 -#, c-format -msgid "Finished updating file `%s'.\n" +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" msgstr "Nuashonraodh 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 "Nl a leithid 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 "Aimsodh 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 "Nor aimsodh 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 sid as orduithe ramhshocraithe 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 "Trigeadh an splechas 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 "Crochnaodh na ramhriachtanais 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 "Ramhriachtanais de `%s' ndanamh 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 trigean 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' ars s rud go bhfuil earrid 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 "" "Sonraonn an ramhriachtanas `%s' ord rite amhin 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 "Nl an ramhriachtanas `%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 ramhriachtanas `%s' nos 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 ramhriachtanas `%s' nos 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 nl aon ramhriachtanas 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 "" "Nl aon ord le haghaidh `%s' agus nor athraigh aon ramhriachtanas.\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' dhanamh 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 "Nl g leis an sprioc `%s' a athdhanamh" -#: remake.c:780 -#, c-format -msgid "; using VPATH name `%s'" +#: remake.c:784 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" msgstr "; ag baint sid 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 athdhanamh.\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 danamh 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 athdhanamh 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 hathdhanamh 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 athdhanamh 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 sid as orduithe ramhshocraithe 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 "Nl eilimint .LIBPATTERNS `%s' ina patrn" -#: remote-cstms.c:125 +#: remote-cstms.c:122 #, c-format msgid "Customs won't export: %s\n" msgstr "N easprtlfar 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" "# Nl 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 " teirminal." -#: rule.c:534 +#: rule.c:531 #, fuzzy, c-format msgid "BUG: num_pattern_rules is wrong! %u != %u" msgstr "FABHT: num_pattern_rules mcheart! %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 snmhphointe" -#: signame.c:123 +#: signame.c:121 msgid "Killed" msgstr "Maraithe" -#: signame.c:126 +#: signame.c:124 msgid "Bus error" msgstr "Busearrid" -#: 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 gcras" -#: signame.c:135 +#: signame.c:133 msgid "Broken pipe" msgstr "Popa briste" -#: signame.c:138 +#: signame.c:136 msgid "Alarm clock" msgstr "Clog alraim" -#: 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 mhacphriseas" -#: 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 sraithe" -#: signame.c:176 +#: signame.c:174 msgid "File size limit exceeded" msgstr "Uasmhid na gcomhad sraithe" -#: signame.c:179 +#: signame.c:177 msgid "Virtual timer expired" msgstr "Am foril caite" -#: signame.c:182 +#: signame.c:180 msgid "Profiling timer expired" msgstr "Am prifle caite" -#: signame.c:188 +#: signame.c:186 msgid "Window changed" msgstr "Athraodh 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 phrinneach A/I" -#: signame.c:201 signame.c:210 +#: signame.c:199 signame.c:208 msgid "I/O possible" msgstr "A/I indanta" -#: 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 "Nl comhphrisela snmhphointe ar fil" -#: 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 lon na dteaghrn i strcache: %d\n" +"%s No strcache buffers\n" +msgstr "%s lon na maoln 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 lon na maoln strcache: %d\n" +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "%s strcache saor: iomln = %d / uas = %d / os = %d / men = %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 mid strcache: iomln = %d / uas = %d / os = %d / men = %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: iomln = %d / uas = %d / os = %d / men = %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-tbla stait:\n" "# " -#: variable.c:1541 +#: variable.c:1607 +msgid "automatic" +msgstr "uathoibroch" + +#: variable.c:1610 msgid "default" msgstr "ramhshocraithe" -#: 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 "lne 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 "uathoibroch" - -#: variable.c:1570 -#, c-format -msgid " (from `%s', line %lu)" +#: variable.c:1636 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" msgstr " ( `%s', lne %lu)" -#: variable.c:1612 +#: variable.c:1699 msgid "# variable set hash-table stats:\n" msgstr "# athrg tacar hais-tbla stait:\n" -#: variable.c:1623 +#: variable.c:1710 msgid "" "\n" "# Variables\n" @@ -1899,7 +2125,7 @@ msgstr "" "\n" "# Athrga\n" -#: variable.c:1627 +#: variable.c:1714 msgid "" "\n" "# Pattern-specific Variable Values" @@ -1907,7 +2133,7 @@ msgstr "" "\n" "# Luachanna Athrige sainiil don phatrn" -#: variable.c:1641 +#: variable.c:1728 msgid "" "\n" "# No pattern-specific variable values." @@ -1915,7 +2141,7 @@ msgstr "" "\n" "# Nl aon luach athrige at sainiil don phatrn." -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" @@ -1924,93 +2150,93 @@ msgstr "" "\n" "# %u luach athrige at sainiil don phatrn" -#: variable.h:219 -#, c-format -msgid "warning: undefined variable `%.*s'" +#: variable.h:224 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" msgstr "rabhadh: athrg gan sainmhni: `%.*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 "earrid inmhenach: `%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 fidir gur g duit ionramhil 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 "Earrid, ord folamh\n" -#: vmsjobs.c:506 +#: vmsjobs.c:502 #, c-format msgid "Redirected input from %s\n" msgstr "Atreoraodh ionchur %s\n" -#: vmsjobs.c:513 +#: vmsjobs.c:509 #, c-format msgid "Redirected error to %s\n" msgstr "Atreoraodh earrid go %s\n" -#: vmsjobs.c:523 +#: vmsjobs.c:518 #, fuzzy, c-format msgid "Append output to %s\n" msgstr "Atreoraodh aschur go %s\n" -#: vmsjobs.c:529 +#: vmsjobs.c:524 #, c-format msgid "Redirected output to %s\n" msgstr "Atreoraodh 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 "Earrid 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 "# Nl 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" "# Nl aon chonair ghinearlta cuardaigh (athrg `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 ghinearlta cuardaigh (athrg `VPATH'):\n" "# " +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Luach neamhbhail sa bhall `update_status'!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Earrid 0x%x (rinneadh neamhshuim air)" + #~ msgid "process_easy() failed failed to launch process (e=%ld)\n" #~ msgstr "theip ar process_easy(); nor tosaodh priseas (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 lon na dteaghrn i strcache: %d\n" + #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" #~ msgstr "-rabhadh, fgfaidh CTRL-Y fo-phrisis gan ghlanadh.\n" Binary files differ@@ -1,123 +1,136 @@ # 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 caracterstica 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 operacin de tocar un membro do arquivo non est dispoible en VMS" +msgstr "a operación de tocar un membro do arquivo non está dispoñíbel en VMS" -#: ar.c:149 -#, c-format -msgid "touch: Archive `%s' does not exist" -msgstr "touch: O arquivo `%s' non existe" - -#: ar.c:152 -#, c-format -msgid "touch: `%s' is not a valid archive" -msgstr "touch: `%s' non un arquivo vlido" +#: 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: Cdigo 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 informacin do mdulo, 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', lia %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 operacin 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 "Especificronse 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 "" -"Atopronse os comandos do ficheiro `%s' por busca de regras implcitas," -#: file.c:275 +#: file.c:274 #, c-format -msgid "but `%s' is now considered the same file as `%s'." -msgstr "pero agora considrase 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' sern 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 fra de rango; substitundo %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 lia 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 "# Fxose a busca de regras implcitas." +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 implcitas." +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 patrn implcito/esttico: `%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 "# Tamn 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 modificacin." +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 modificacin: %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 estn 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 estn 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." - -#: file.c:990 -msgid "# Invalid value in `update_status' member!" -msgstr "# Valor non vlido no membro `update_status'!" +msgstr "# Produciuse un erro ao actualizar." -#: file.c:997 -msgid "# Invalid value in `command_state' member!" -msgstr "# Valor non vlido 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" -"# estatsticas da tboa 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 funcin `word' non numrico" +#: 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 funcin `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 funcin `wordlist' non numrico" +#: 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 funcin `wordlist' non numrico" +#: 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 "Nmero de argumentos insuficiente (%d) na chamada funcin `%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: funcin `%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 funcin `%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 opcin `%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 opcin `--%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 opcin `%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 opcin `%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: opcin `--%s' non recoecida\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: opcin `%c%s' non recoecida\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: opcin non vlida -- %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: opcin non vlida -- %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 opcin 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 opcin `-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 opcin `-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 tboa 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 "Colisins=%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 implcita 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 implcita 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 recursin de regras implcitas.\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 patrn 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 implcito 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 implcito `%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 gaador 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" -"Contronse %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 "Poendo 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 "Obtvose 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 impoer lmites 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 impoer un lmite 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: Intrprete 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 (lia %d) Contexto do intrprete 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 "Opcins:\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 tdolos 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 informacin de depuracin.\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 informacin de " -"depuracin.\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 substiten 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 sar.\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 includos\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" -" algns 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 ningn 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 ningn comando; o estado de\n" -" sada 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 implcitas 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 Tocar os obxectivos no canto de os refacer.\n" + +#: main.c:372 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -d Mostrar moita información de depuración.\n" -#: main.c:360 +#: main.c:374 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -" -v, --version Amosa-lo nmero de versin de make e sar.\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 vlida coma nome de ficheiro" +msgstr "a cadea baleira non é válida como nome de ficheiro" -#: main.c:650 +#: 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:777 #, c-format -msgid "unknown debug level specification `%s'" -msgstr "especificacin de nivel de depuracin descoecido `%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 Interrupcin/Excepcin (cdigo = 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 excepcins 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 "Violacin de acceso: operacin 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 "Violacin de acceso: operacin 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 camios 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 estndar foi especificado das 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 estn 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: opcins --jobserver-fds mltiples" +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 vlida `%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 dispoible: usando -j1. Engada `+' " +"aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " "regra do make pai." -#: main.c:1777 +#: 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 "" + +#: 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' podera 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: Detectronse inconsistencias de reloxo. A operacin 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 [opcins] [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 traduccin 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 opcin `-%c' precisa dun argumento integral positivo" - -#: main.c:2617 -#, c-format -msgid "the `-%c' option requires a positive integral argument" -msgstr "a opcin `-%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 descoecido" - -#: main.c:3239 -#, fuzzy, c-format -msgid "%s: Leaving an unknown directory\n" -msgstr "%s: Sando dun directorio descoecido" - -#: 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: Sando do directorio `%s'\n" - -#: main.c:3250 -#, fuzzy, c-format -msgid "%s[%u]: Entering an unknown directory\n" -msgstr "%s[%u]: Entrando nun directorio descoecido" - -#: main.c:3253 -#, fuzzy, c-format -msgid "%s[%u]: Leaving an unknown directory\n" -msgstr "%s[%u]: Sando dun directorio descoecido" - -#: 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]: Sando 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 descoecido" - -#: 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" -#: read.c:179 +#: output.c:740 +msgid ". Stop.\n" +msgstr ". Detido.\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 "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 " (camio 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 expansin 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 vlida 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 tabulacin 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 patrn obxectivo" +msgstr "falta un patrón obxectivo" -#: read.c:1165 +#: read.c:1265 msgid "multiple target patterns" -msgstr "patrns de obxectivo mltiples" +msgstr "patróns de obxectivo múltiples" -#: read.c:1169 -#, c-format -msgid "target pattern contains no `%%'" -msgstr "o patrn obxectivo non contn `%%'" +#: 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'" - -#: read.c:1392 -msgid "missing `endef', unterminated `define'" -msgstr "falla `endef', `define' sen rematar" +msgid "extraneous text after 'define' directive" +msgstr "texto superfluo trala directiva «define»" -#: 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 "Definicin 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 "regrs de patrn implcitas e estticas 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 implcitas e normais mesturadas" - -#: read.c:1976 -#, c-format -msgid "target `%s' doesn't match the target pattern" -msgstr "o obxectivo `%s' non coincide co patrn 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 ::" +msgstr "regras implícitas e normais mesturadas" -#: read.c:1997 -#, c-format -msgid "target `%s' given more than once in the same rule." -msgstr "o obxectivo `%s' aparece mis dunha vez na mesma regra." - -#: 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: ignranse 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 carcter NUL; ignrase o resto da lia" +#: 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 resolucin" +"*** 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 implcita 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 implcita 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 "Rematronse 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' mis 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' mis 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 modificacin 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 modificacin %.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 patrn" +#: 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 Implcitas" +"# Regras implícitas" -#: rule.c:514 +#: rule.c:511 msgid "" "\n" "# No implicit rules." msgstr "" "\n" -"# Non hai regras implcitas." +"# Non hai regras implícitas." -#: rule.c:517 +#: rule.c:514 #, c-format msgid "" "\n" "# %u implicit rules, %u" msgstr "" "\n" -"# %u regras implcitas, %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 descoecido" +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 "Sar" +msgstr "Saír" -#: signame.c:103 +#: signame.c:101 msgid "Illegal Instruction" -msgstr "Instruccin Ilegal" +msgstr "Instrución inaceptábel" -#: signame.c:106 +#: signame.c:104 msgid "Trace/breakpoint trap" -msgstr "Trampa de trazado/punto de detencin" +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 "Excepcin 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 elctrico" +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 (sada 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 "Lmite 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 "Lmite de tamao 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 "Condicin 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 "Peticin de informacin" +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 dispoible" +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" -"# estatsticas da tboa 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 "lia de comandos" - -#: variable.c:1556 -msgid "`override' directive" -msgstr "directiva `override'" +msgstr "liña de ordes" -#: variable.c:1559 -msgid "automatic" -msgstr "automtico" +#: variable.c:1625 +#, fuzzy +msgid "'override' directive" +msgstr "directiva «override»" -#: variable.c:1570 -#, c-format -msgid " (from `%s', line %lu)" -msgstr " (de `%s', lia %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 "# estatsticas da tboa 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 especficos do patrn" +"# 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 especficos do patrn." +"# 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 especficos do patrn" +"# %u valores de variábeis específicos do patrón" -#: variable.h:219 -#, c-format -msgid "warning: undefined variable `%.*s'" -msgstr "aviso: variable non definida `%.*s'" - -#: 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: Redireccin 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 tea 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 descoecido '%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 "Sada redirixida a %s\n" +msgstr "" -#: vmsjobs.c:529 +#: vmsjobs.c:524 #, c-format msgid "Redirected output to %s\n" -msgstr "Sada 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" -"# Camios de Busca VPATH\n" +"# Rutas de busca VPATH\n" -#: vpath.c:603 -msgid "# No `vpath' search paths." -msgstr "# Non hai camios 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 camios 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 camio 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" -"# Camio 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 dispoible." +#~ 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 cdigo fonte polas condicins de copia.\n" -#~ "%sNON hai garanta; 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 vlida" +#~ 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 patrn 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, mximo 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 teen 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 mltiples 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 ningn 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, mximo 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, mximo 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 funcin `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 descoecido" +#~ msgstr "%s: sinal descoñecido" #~ msgid "%sGNU Make version %s" -#~ msgstr "%sGNU Make versin %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 cdigo do carcter 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 descoecido" +#~ msgstr "Erro 12345678901234567890 descoñecido" #~ msgid "Unknown%s job %d" -#~ msgstr "Traballo%s %d descoecido" +#~ 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 comias 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 dxitos 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 "implcita" +#~ msgstr "implícita" #~ msgid "intermediate" #~ msgstr "intermedia" @@ -2302,31 +2535,31 @@ msgstr "" #~ msgstr "nunca" #~ msgid "newer" -#~ msgstr "mis novo" +#~ msgstr "máis novo" #~ msgid "non-option ARGV-elements: " -#~ msgstr "elementos ARGV que non son opcins: " +#~ msgstr "elementos ARGV que non son opcións: " #~ msgid "older" -#~ msgstr "mis vello" +#~ msgstr "máis vello" #~ msgid "option %c\n" -#~ msgstr "opcin %c\n" +#~ msgstr "opción %c\n" #~ msgid "option %s" -#~ msgstr "opcin %s" +#~ msgstr "opción %s" #~ msgid "option a\n" -#~ msgstr "opcin a\n" +#~ msgstr "opción a\n" #~ msgid "option b\n" -#~ msgstr "opcin b\n" +#~ msgstr "opción b\n" #~ msgid "option c with value `%s'\n" -#~ msgstr "opcin c co valor `%s'\n" +#~ msgstr "opción c co valor `%s'\n" #~ msgid "option d with value `%s'\n" -#~ msgstr "opcin 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 gaa" +#~ msgstr "que gaña" #~ msgid "write" #~ msgstr "escritura" Binary files differ@@ -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" @@ -1,121 +1,130 @@ -# 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 "pokuaj koritenja nepodrane mogunosti: `%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 rapoloiv na VMS-u" +msgstr "touch elementa arhive nije dostupan 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" - -#: 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 naem 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 moda 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] Briem 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 "*** Briem 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 izvravanje" +msgstr "# recept za izvršavanje" -#: commands.c:679 +#: commands.c:687 msgid " (built-in):" -msgstr " (ugraeno):" +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 moe 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 " nemogunost" +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 " nemogunosti 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 "nedovrena 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 naznaene 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' naene su implicitnim pretraivanjem propisa," +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:275 -#, c-format -msgid "but `%s' is now considered the same file as `%s'." -msgstr "ali `%s' se sada smatra istim spisom kao i `%s'." - -#: file.c: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 dvotokom u `%s' s dvije dvotoke" +#: 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 dvotoke u `%s' s jednom dvotokom" +#: 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 "*** Briem 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 "Briem 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 "# Lana 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:937 +#: file.c:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Nema implicitnih propisa." + +#: file.c:964 msgid "# Implicit rule search has been done." -msgstr "# Implicitna pretraga propisa je izvrena." +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 izvrena." +msgstr "# Implicitna pretraga propisa nije izvršena." -#: file.c:940 -#, c-format -msgid "# Implicit/static pattern stem: `%s'\n" -msgstr "# Korijen implicitnog/statikog 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 "# Takoer 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 auriran." +msgstr "# Datoteka je ažurirana." -#: file.c:964 +#: file.c:991 msgid "# File has not been updated." -msgstr "# Spis nije auriran." +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 izvravaju (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 izmeu naredbi koje se izvravaju (OVO JE BUG)." +msgstr "# Recept ovisnosti koji se izvršava (OVO JE BUG)." -#: file.c:980 +#: file.c:1007 msgid "# Successfully updated." -msgstr "# Uspjeno auriran." +msgstr "# Uspješno ažuriran." -#: file.c:984 +#: file.c:1011 msgid "# Needs to be updated (-q is set)." -msgstr "# Treba ga aurirati (-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 auriralo." +msgstr "# Nije ažuriran." -#: file.c:990 -msgid "# Invalid value in `update_status' member!" -msgstr "# Neispravna vrijednost u elementu `update_status'!" - -#: 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:763 -msgid "first argument to `word' function must be greater than 0" -msgstr "prvi argument funkcije `word' mora biti vei od 0" +#: function.c:742 +#, fuzzy +msgid "non-numeric first argument to 'word' function" +msgstr "prvi argument funkcije „word” nije broj" -#: function.c:783 -msgid "non-numeric first argument to `wordlist' function" -msgstr "drugi argument funkcije `wordllist' nije broj" +#: 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:785 -msgid "non-numeric second argument to `wordlist' function" -msgstr "drugi arument funkcije `wordlist' nije broj" +#: function.c:767 +#, fuzzy +msgid "non-numeric first argument to 'wordlist' function" +msgstr "drugi argument funkcije „wordlist” nije broj" -#: function.c:1458 -#, fuzzy, c-format -msgid "windows32_openpipe(): DuplicateHandle(In) failed (e=%ld)\n" -msgstr "create_child_process: DuplicateHandle(In) je zakazao (e=%d)\n" +#: function.c:769 +#, fuzzy +msgid "non-numeric second argument to 'wordlist' function" +msgstr "drugi argument funkcije „wordlist” nije broj" -#: function.c:1469 +#: function.c:1460 #, 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(In) failed (e=%ld)\n" +msgstr "windows32_openpipe(): DuplicateHandle(In) nije uspio (e=%ld)\n" -#: function.c:1474 +#: function.c:1483 #, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n" +msgstr "windows32_open_pipe(): DuplicateHandle(Err) nije uspio (e=%ld)\n" + +#: 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 "nedovren 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 vieznana\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 doputa 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”" + +#: 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:766 +#: 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: nedoputena 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 trai argument -- %c\n" +msgstr "%s: opcija zahtijeva argument -- %c\n" -#: getopt.c:846 +#: 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" + +#: guile.c:55 #, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "%s: opcija `-W %s' je vieznana\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 doputa 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 "Optereenje=%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 "Traim 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 "Traim 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 "Pokuavam 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 nemogue 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 "Pokuavam 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 "Pokuavam 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 "Naao 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 "Traim 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] Greka 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] Greka 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] Greka %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] Greka %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 " (izbaen 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 nedovrene 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 promaeno 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 uspjeno 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 ii? -#: 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 "Smjetam 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 ogranienje 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 ogranienje 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 ponjeo 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 naena" +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 naen" +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:2963 +#: 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: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 "" + +#: load.c:87 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" -#: main.c:303 +#: 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" -" Prijei u DIREKTORIJ prije no to ita " -"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 Ispii 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] Ispii 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 veu vanost od\n" -" makefileova.\n" +" Varijable okoline imaju veću 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" -" Proitaj 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 Ispii ovu poruku i izai.\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 greke 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" -" Potrai u DIREKTORIJU ukljuene 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 beskonano.\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 pokrei viestruke poslove, osim ako pri\n" -" optereenju 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 ispii.\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 Ispii 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 pokrei naredbe; izlazni status oznaava\n" -" je li sve aurirano.\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 Onemogui ugraene 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 Onemogui ugraene 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" -" Iskljuuje -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 izrauje.\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 Ispii verziju makea i izai.\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 Ispii 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 Iskljui -w, ak i ako je implicitno " -"ukljuen.\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 beskonano 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 uhvaena (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 neobraene 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 prekraj: 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 prekraj: 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:1539 vmsjobs.c:500 -msgid "fopen (temporary file)" -msgstr "fopen (privremeni spis)" - -#: main.c:1545 -msgid "fwrite (temporary file)" -msgstr "fwrite(privremeni spis)" - -#: main.c:1703 -msgid "Parallel jobs (-j) are not supported on this platform." -msgstr "Paralelni poslovi (-j) nisu podrani na ovoj platformi." - -#: main.c:1704 -msgid "Resetting to single job (-j1) mode." -msgstr "Resetiram na mod jednog posla (-j1)." - -#: main.c:1719 +#: main.c:1534 msgid "internal error: multiple --jobserver-fds options" -msgstr "interna greja: viestruko pojavljivanje opcije --jobserver-fds" +msgstr "interna greška: višestruko pojavljivanje opcije --jobserver-fds" -#: main.c:1727 +#: main.c:1544 #, c-format -msgid "internal error: invalid --jobserver-fds string `%s'" -msgstr "interna greka: neispravan --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 "Klijent poslužitelja poslova (fds %d,%d)\n" + +#: 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:1730 +#: main.c:1554 #, c-format msgid "Jobserver client (fds %d,%d)\n" -msgstr "" +msgstr "Klijent poslužitelja poslova (fds %d,%d)\n" -#: main.c:1740 +#: main.c:1567 msgid "warning: -jN forced in submake: disabling jobserver mode." -msgstr "upozorenje: -jN se forsira u pod-makeu: onemoguujem jobserver mod." +msgstr "" +"upozorenje: pod-make prisilno postavlja -jN: onemogućujem poslužitelj " +"poslova." # Treba li ovo prevesti? -#: main.c:1750 +#: main.c:1583 msgid "dup jobserver" -msgstr "dup jobserver" +msgstr "dup poslužitelj poslova" -#: 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 "" +"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:1985 +msgid "Resetting to single job (-j1) mode." +msgstr "Vraćam način rada s jednim poslom (-j1)." + +#: main.c:2006 +#, fuzzy, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Klijent poslužitelja poslova (fds %d,%d)\n" + +#: 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 "Auriram 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 izgraujem 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 "Ukljueni makefile `%s' ne moe se nai." +#: 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 moe se nai" +#: 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 izvravam:" +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 pronaen" +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 "Auriram 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: uoena je nepravilnost sata. Izgradnja bi mogla biti nedovrena." +"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 "Uoene greke 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' trai pozitivan cjelobrojni argument" - -#: main.c:2617 -#, c-format -msgid "the `-%c' option requires a positive integral argument" -msgstr "opcija `-%c' trai 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 greka %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 potroena" - -# 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 "Korisniki 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 greke u %s\n" - -# to bi ovdje trebalo ii? -#: 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 pretraivanje)" +msgstr " (putanja pretraživanja)" #: read.c:339 #, c-format msgid " (don't care)" -msgstr " (nije vano)" +msgstr " (nije važno)" #: read.c:341 #, c-format msgid " (no ~ expansion)" -msgstr " (bez ekspanzije ~)" +msgstr " (bez proširenja ~)" -#: 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 "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 poinju 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 mnoina! 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 "viestruki uzorci meta" +msgstr "višestruki uzorci meta" -#: read.c:1169 -#, c-format -msgid "target pattern contains no `%%'" -msgstr "uzorak mete ne sadri `%%'" +#: 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 "Suvian tekst nakon direktive `endef'" - -#: read.c:1392 -msgid "missing `endef', unterminated `define'" -msgstr "nedostaje `endef', nedovren `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 "Suvian 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 "Suvian 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 "suvian `%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 "Izobliena 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 "pomijeani implicitni i statiki 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 "pomijeani 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 vie 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: ponitavam postojee 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 uoen; 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 "Nita 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 auriran." +#: remake.c:233 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "„%s” 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 trai `%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 bezuspjeno pokuao aurirati 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 auriram 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 "Zavrio s auriranjem 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 "Naao 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 naao 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 "Kruna ovisnost %s <- %s isputena." +msgstr "Kružna ovisnost %s <- %s ispuštena." -#: remake.c:651 -#, c-format -msgid "Finished prerequisites of target file `%s'.\n" -msgstr "Zavreni 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 izraen zbog greaka." +#: 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' slui 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 dvotoka, 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 izvravaju.\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 "Uspjeno 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 budunosti" +#: 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 budunosti" +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 nee 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 " zavrni." +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: pogrean 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 "Nedoputena instrukcija" +msgstr "Nedozvoljena instrukcija" -#: signame.c:106 +#: signame.c:104 msgid "Trace/breakpoint trap" -msgstr "Zamka za slijed/prekidnu toku" +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 "Sabirnika greka" +msgstr "Sabirnička greška" -#: signame.c:129 +#: signame.c:127 msgid "Segmentation fault" -msgstr "Segmentacijska greka" +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 "Korisniki definiran signal 1" +msgstr "Korisnički definiran signal 1" -#: signame.c:147 +#: signame.c:145 msgid "User defined signal 2" -msgstr "Korisniki 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 izalo" +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 "prekoraeno ogranienje CPU vremena" +msgstr "Prekoračeno ograničenje procesorskog vremena" -#: signame.c:176 +#: signame.c:174 msgid "File size limit exceeded" -msgstr "Prekoraeno ogranienje veliine 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 sluaju, ovo su samo -# descriptioni. Za svaki sluaj, 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 "Aritmetiki 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" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" "\n" -"# strcache hash-table stats:\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 "unutranja greka: `%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, moda ete morati ponovo omoguiti 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 "UGRAEN [%s][%s]\n" +msgstr "UGRAĐEN [%s][%s]\n" -#: vmsjobs.c:432 +#: vmsjobs.c:428 #, c-format msgid "BUILTIN CD %s\n" -msgstr "UGRAEN CD %s\n" +msgstr "UGRAĐEN CD %s\n" -#: vmsjobs.c:450 +#: vmsjobs.c:446 #, c-format msgid "BUILTIN RM %s\n" -msgstr "UGRAEN 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 ugraena naredba `%s'\n" +msgstr "Nepoznata ugrađena naredba „%s”\n" -#: vmsjobs.c:493 +#: vmsjobs.c:489 #, c-format msgid "Error, empty command\n" -msgstr "Greka, 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 greke 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, izvravam %s\n" +msgstr "Umjesto toga, izvršavam %s\n" -#: vmsjobs.c:712 +#: vmsjobs.c:706 #, c-format msgid "Error spawning, %d\n" -msgstr "Greka 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 pretraivanje\n" +"# VPATH putanje za pretraživanje\n" -#: vpath.c:603 -msgid "# No `vpath' search paths." -msgstr "# Nema `vpath' staza za pretraivanje." +#: 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 pretraivanje.\n" +"# %u „vpath” 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 ope (iz varijable `VPATH') staze za pretraivanje." +"# 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" -"# Opa (iz varijable `VPATH') staza za pretraivanje:\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 "Greka u sintaksi, jo uvijek unutar '\"'\n" +#~ msgstr "Greška u sintaksi, još uvijek unutar '\"'\n" -# Nepoetene ili neponjete? +# Nepožetene ili nepožnjete? #~ msgid "Got a SIGCHLD; %u unreaped children.\n" -#~ msgstr "Dobio SIGCHLD; %u nepoetene 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 će ostaviti potproces(e) na životu.\n" #~ msgid "Do not specify -j or --jobs if sh.exe is not available." #~ msgstr "Nemojte koristiti -j ili --jobs ako sh.exe nije dostupan." @@ -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 "suvian `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 rasprenih depova.\n" +#~ "# %u spisa u %u raspršenih džepova.\n" #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" -#~ msgstr "# prosjeno %.3f spisa po depu, maks. %u spisa u jednom depu.\n" +#~ msgstr "# prosječno %.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 ita 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 moe zakaiti" +#~ msgstr "Zaustavi proces tako da se debugger može zakačiti" #~ msgid "Environment variables override makefiles" -#~ msgstr "Varijable iz okolia imaju veu vanost od makefilea" +#~ msgstr "Varijable iz okoliša imaju veću važnost od makefilea" #~ msgid "FILE" #~ msgstr "SPIS" #~ msgid "Read FILE as a makefile" -#~ msgstr "Proitaj SPIS kao makefile" +#~ msgstr "Pročitaj SPIS kao makefile" #~ msgid "Search DIRECTORY for included makefiles" -#~ msgstr "Pretrai DIREKTORIJ za ukljuenim makefileovima" +#~ msgstr "Pretraži DIREKTORIJ za uključenim makefileovima" #~ msgid "Don't start multiple jobs unless load is below N" -#~ msgstr "Ne pokrei viestruke poslove osim ako je optereenje 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 ispii" +#~ 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 "Iskljuuje -k" +#~ msgstr "Isključuje -k" #~ msgid "Consider FILE to be infinitely new" -#~ msgstr "Smatraj SPIS beskonano 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 "# prosjeno %.1f varijabli po depu, maks. %u u jednom depu.\n" +#~ msgstr "# prosječno %.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 "# prosjeno %d.%d varijabli po depu, maks. %u u jednom depu.\n" +#~ msgstr "# prosječno %d.%d varijabli po džepu, maks. %u u jednom džepu.\n" Binary files differ@@ -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" @@ -1,124 +1,132 @@ -# 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 a 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" +#~ "# " Binary files differ@@ -1,123 +1,131 @@ -# 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:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# ۥ롼ʤ." -#: file.c:937 +#: 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 "insufficient number of arguments (%d) to function `%s'" +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'" 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:2223 +#, fuzzy +msgid "no more file handles: could not duplicate stderr\n" +msgstr "եϥɥȤԤޤ: ɸϤʣǤޤ\n" -#: job.c:2015 +#: 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 " (̵뤵ޤ)" Binary files differ@@ -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" @@ -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" diff --git a/po/make.pot b/po/make.pot index 175984e..d2ff216 100644 --- a/po/make.pot +++ b/po/make.pot @@ -6,454 +6,514 @@ #, 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 "" Binary files differ@@ -1,125 +1,133 @@ -# 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" @@ -1,124 +1,130 @@ # 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 "prba uycia nieistniejcej 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 niedostpny 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: Bdny 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 udao 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 powiodo 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 "bd 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 bajtw 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 moe 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' moe by faszywy; nie usunity" +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' moe by faszywy; nie usunity" +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 bd.\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 byo niemoliwe.\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 (urzdzenie %d, i-wze [%d,%d,%d]): otwarcie byo niemoliwe.\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 (urzdzenie %ld, i-wze %ld): otwarcie byo niemoliwe.\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 (urzdzenie %d, i-wze [%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 (urzdzenie %ld, i-wze %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 " niemoliwoci" +msgstr " niemożliwości" -#: dir.c:1075 +#: dir.c:1068 msgid " so far." -msgstr " jak dotd." +msgstr " jak dotąd." -#: dir.c:1092 +#: dir.c:1085 #, c-format msgid " impossibilities in %lu directories.\n" -msgstr " niemoliwoci 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 "niezakoczone odwoanie 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' zostay 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' zostay 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 mona przemianowa `%s' z pojedynczym dwukropkiem na `%s' z podwjnym" +"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 mona przemianowa `%s' z podwjnym 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 poredniego `%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 plikw porednich...\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; zastpiono %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 (zaleno .PRECIOUS)." +msgstr "# Cenny plik (zależność .PRECIOUS)." -#: file.c:931 +#: file.c:956 msgid "# Phony target (prerequisite of .PHONY)." -msgstr "# Obiekt niejawny (zaleno .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 domylnych zostao 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 domylnych nie zostao 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 wzorcw domylnych/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 zalenoci przejciow." +msgstr "# Plik jest zależnością przejściową." -#: file.c:946 +#: file.c:973 msgid "# Also makes:" -msgstr "# Robi rwnie:" +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 BD)." +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 zalenoci (TO JEST BD)." +msgstr "# Aktualnie uruchamiane polecenia zależności (TO JEST BŁĄD)." -#: file.c:980 +#: file.c:1007 msgid "# Successfully updated." -msgstr "# Uaktualnienie powiodo 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 wczone)." +msgstr "# Powinien być uaktualniony (-q jest włączone)." -#: file.c:987 +#: file.c:1014 msgid "# Failed to be updated." -msgstr "# Uaktualnianie nie powiodo si." - -#: file.c:990 -msgid "# Invalid value in `update_status' member!" -msgstr "# Bdna warto w elemencie `update_status'!" +msgstr "# Uaktualnianie nie powiodło się." -#: file.c:997 -msgid "# Invalid value in `command_state' member!" -msgstr "# Bdna 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 haszujcych plikw:\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 wikszy 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 powiodo 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 powiodo 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 powiodo 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 powiodo 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 "niewystarczajca liczba argumentw (%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 dokoczone wywoanie 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 argumentw\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 argumentw\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: bdna 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 argumentw\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 mona przydzieli %lu bajtw na tablic haszujc: 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 "Wypenienie=%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 reguy 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 reguy 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 wywoania reguy 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 "Prbowanie reguy wzorcowej z gazi `%.*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 niemoliwej zalenoci reguy `%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 niemoliwej zalenoci domylnej `%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 "Prbowanie zalenoci reguy `%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 "Prbowanie zalenoci domylnej `%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 zaleno `%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 reguy zawierajcej plik przejciowy `%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 mona 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] Bd 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] Bd 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] Bd %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] Bd %d" +msgid "%s[%s] Error %d%s" +msgstr "%s[%s] Błąd %d%s" -#: job.c:460 -msgid " (core dumped)" -msgstr " (zrzut pamici)" +#: 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 niezakoczone 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 "yjcy 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 przegrywajcego 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 wygrywajcego 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 "piszcy 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 mg 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 parametrw 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 czytajcy 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 "niemoliwe wymuszenie limitw obcienia 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 "niemoliwe wymuszenie limitu obcienia: " +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 wicej uchwytw plikw: nie mona 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 wicej uchwytw plikw: nie mona 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 mona odtworzy stdin\n" +msgstr "Nie można odtworzyć stdin\n" -#: job.c:2023 +#: job.c:2246 msgid "Could not restore stdout\n" -msgstr "Nie mona 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 powoki" +msgstr "%s: Nie znaleziono programu powłoki" -#: job.c:2237 +#: job.c:2472 msgid "spawnvpe: environment space might be exhausted" -msgstr "spawnvpe: mogo 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) Zy kontekst powoki (!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 obiektw.\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 Wywietla duo 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] Wywietla rne 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=ACUCH Wyznacza ACUCH 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 Wywietla ten komunikat i koczy dziaanie.\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 bdy 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 doczanych 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 jeli nie da si zrobi jakich\n" -" obiektw.\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 jeli load nie " +" Nie uruchamiaj wielu zadań jeśli load nie " "jest\n" -" poniej 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 Uywanie ostatniego mtime midzy dowizaniem 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 wywietla.\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 Wywietla wewntrzn 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 Wycza wbudowane reguy 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 Wycza 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" -" Wycza -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 Wywietla wersj make i koczy dziaanie.\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 Wycza -w, nawet jeli byo ono wczone\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 nieskoczenie 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 odwoaniach 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 acuch nie moe 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: zapano przerwanie/wyjtek (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" -"Nieobsugiwany filtr wyjtku wywoany 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 dostpu: 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 dostpu: 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 ciek 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 "zakoczono 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 "Rwnolege zadania (-j) nie s obsugiwane 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 "Przeczanie w tryb jednozadaniowy (-j1)." - -#: main.c:1719 -msgid "internal error: multiple --jobserver-fds options" -msgstr "bd wewntrzny: 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 "bd wewntrzny: bdny acuch --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: wyczanie 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 niedostpny: uywanie -j1. Naley doda `+' do " -"nadrzdnej reguy 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 "Dowizania symboliczne nie s obsugiwane: wyczono -L." +msgstr "Dowiązania symboliczne nie są obsługiwane: wyłączono -L." -#: main.c:1892 +#: main.c:2149 msgid "Updating makefiles....\n" -msgstr "Uaktualnianie plikw 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' moe si zaptli; 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 udao 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 wczanych 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 "Niemoliwy powrt 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 wicej 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 obiektw i nie znaleziono makefile" +msgstr "Nie podano obiektów i nie znaleziono makefile" -#: main.c:2272 +#: main.c:2520 msgid "No targets" -msgstr "Brak obiektw" +msgstr "Brak obiektów" -#: main.c:2277 +#: main.c:2525 msgid "Updating goal targets....\n" -msgstr "Uaktualnianie obiektw 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 moe 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 "Skadnia: %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 "Bdy prosz zgasza 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 acucha 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 cakowitego 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 wolnodostpne: mona 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" -"# Zakoczono 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: Wejcie 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]: Wejcie 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 bd %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 pamici wirtualnej" - -#: misc.c:708 -#, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: uytkownik %lu (rzeczywisty %lu), grupa %lu (rzeczywista %lu)\n" - -#: misc.c:729 -msgid "Initialized access" -msgstr "Zainicjalizowany dostp" - -#: misc.c:808 -msgid "User access" -msgstr "Dostp uytkownika" - -#: misc.c:856 -msgid "Make access" -msgstr "Dostp make" - -#: misc.c:890 -msgid "Child access" -msgstr "Dostp potomka" - -#: misc.c:954 -#, c-format -msgid "write error: %s" -msgstr "bd zapisu: %s" - -#: misc.c:956 -msgid "write error" -msgstr "bd 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 cieka)" +msgstr " (przeszukiwana ścieżka)" #: read.c:339 #, c-format msgid " (don't care)" -msgstr " (niewane)" +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 "bdna skadnia wyraenia 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 reguy przed poleceniami" +msgstr "brakuje reguły przed poleceniami" -#: read.c:1027 +#: read.c:1123 #, c-format msgid "missing separator%s" -msgstr "brakujcy separator%s" +msgstr "brakujący separator%s" -#: read.c:1029 +#: read.c:1125 msgid " (did you mean TAB instead of 8 spaces?)" -msgstr " (czyby 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 "brakujcy 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 "brakujcy `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 "brakujcy `endef', niezakoczone `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 "Niezwizany 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 "niezwizany `%s'" +msgid "extraneous '%s'" +msgstr "nadmiarowy '%s'" -#: read.c:1518 -msgid "only one `else' per conditional" -msgstr "tylko jedno `else' w wyraeniu 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 sformuowana 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 reguy wzorcw" +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 reguy" +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 zakrywajce 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: napotkaem 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 prbowaem 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 "Skoczyem 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 "Okrna 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 "Zakoczono zalenoci 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 "Zalenoci `%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 bdw." +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 "Zaleno `%s' dotyczy tylko kolejnoci 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 "Zaleno `%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 "Zaleno `%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 "Zaleno `%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 zalenoci.\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 zalenoci.\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 "; uyto 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 powiodo 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' powiodo 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 przyszoci" +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 przyszoci" +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" -"# Reguy 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 "BD: ze 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 "Rozczenie" +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 "Bdna instrukcja" +msgstr "Błędna instrukcja" -#: signame.c:106 +#: signame.c:104 msgid "Trace/breakpoint trap" -msgstr "Puapka 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 "Puapka IOT" +msgstr "Pułapka IOT" -#: signame.c:117 +#: signame.c:115 msgid "EMT trap" -msgstr "Puapka EMT" +msgstr "Pułapka EMT" -#: signame.c:120 +#: signame.c:118 msgid "Floating point exception" -msgstr "Wyjtek 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 "Bd szyny" +msgstr "Błąd szyny" -#: signame.c:129 +#: signame.c:127 msgid "Segmentation fault" -msgstr "Naruszenie ochrony pamici" +msgstr "Naruszenie ochrony pamięci" -#: signame.c:132 +#: signame.c:130 msgid "Bad system call" -msgstr "Bdne wywoanie 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 "Zakoczony" +msgstr "Zakończony" -#: signame.c:144 +#: signame.c:142 msgid "User defined signal 1" -msgstr "Sygna uytkownika 1" +msgstr "Sygnał użytkownika 1" -#: signame.c:147 +#: signame.c:145 msgid "User defined signal 2" -msgstr "Sygna uytkownika 2" +msgstr "Sygnał użytkownika 2" -#: signame.c:152 signame.c:155 +#: signame.c:150 signame.c:153 msgid "Child exited" -msgstr "Potomek powrci" +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 profilujcy" +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 "Naga 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 moliwe" +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 niebezpieczestwa" +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 niedostpny" +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 acuchw 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 buforw 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: cakowity = %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: cakowite = %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 haszujcych 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 haszujcych 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 powiodo 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 "bd wewntrzny: `%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, bdzie trzeba ponownie umoliwi obsug 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 "Bd, 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 "Doczanie wyjcia 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 "Doczanie %.*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 "Bd 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" -"# cieki przeszukiwania VPATH\n" +"# Ścieżki przeszukiwania VPATH\n" -#: vpath.c:603 -msgid "# No `vpath' search paths." -msgstr "# Brak cieek 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 cieek 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 oglnej (zmienna `VPATH') cieki 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" -"# Oglna (zmienna `VPATH') cieka przeszukiwania:\n" +"# Ogólna (zmienna 'VPATH') ścieżka przeszukiwania:\n" "# " diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo Binary files differindex 28ced11..c19c8c5 100644 --- a/po/pt_BR.gmo +++ b/po/pt_BR.gmo diff --git a/po/pt_BR.po b/po/pt_BR.po index e734c06..95f25c9 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,128 +1,135 @@ -# translation of make-3.80.po to portugues # Mensagem do GNU make em Portugus (Brasil) -# Copyright (C) 2000, 2008 Free Software Foundation, Inc. -# -# Caso voc encontre alguma mensagem que no est bem traduzida, por -# favor me informe dando sua sugesto. +# Copyright (C) 2000 Free Software Foundation, Inc. # +# This file is distributed under the same license as the make package. # Fbio Henrique F. Silva <fabiohfs@mail.com>, 2000. -# Fbio Henrique F. Silva <fabiohfs@netscape.net>, 2008. +# Fbio 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: Fbio 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 no est bem traduzida, por +# favor me informe dando sua sugesto. +#: ar.c:46 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" msgstr "caracterstica no suportada: `%s'" -#: ar.c:125 +#: ar.c:123 msgid "touch archive member is not available on VMS" msgstr "o touch no est disponvel 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' 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 um arquivo vlido" -#: 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' no 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 cdigo de erro invlido 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 informaes do mdulo, estado = %d" +msgstr "o lbr$set_module() falhou ao obter informaes do mdulo, 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. No 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. No foi apagado." -#: commands.c:625 -#, c-format -msgid "*** Archive member `%s' may be bogus; not deleted" -msgstr "*** O arquivo membro `%s' pode ser falso. No 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. No foi apagado." -#: commands.c:638 -#, c-format -msgid "*** [%s] Deleting file `%s'" -msgstr "** [%s] Apagando o 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 o 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" "# Diretrios\n" -#: dir.c:1008 +#: dir.c:1001 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: no pde 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): no pde 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]): no pde 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): no pde 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 "No" -#: 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 "no" -#: 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 diretrios.\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 "Varivel recursiva `%s' faz referncia a ela mesma (eventualmente)" -#: expand.c:276 +#: expand.c:269 msgid "unterminated variable reference" -msgstr "referncia a uma varivel no finalizada" +msgstr "referncia a varivel no 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 implcita," +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Os comandos para o arquivo `%s' foram encontrados por uma regra implcita," -#: 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' sero 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' sero 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 "no pde 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 "no pde renomear de dois-pontos duplos `%s' para dois-pontos `%s'" - -#: file.c:392 -#, c-format -msgid "*** Deleting intermediate file `%s'" -msgstr "** Apagando o arquivo intermedirio `%s'" +#: file.c:305 +#, fuzzy, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "no pde renomer de dois-pontos duplos `%s' para dois-pontos `%s'" #: file.c:396 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "** Apagando arquivo intermedirio `%s'" + +#: file.c:400 msgid "Removing intermediate files...\n" msgstr "Apagando arquivo intermedirio...\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 "# No 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 Padro ou arquivo MAKEFILES." +msgstr "# Um Padro, arquivo MAKEFILES ou -include/sinclude makefile." + +#: file.c:962 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Faltam as regras implcitas." -#: file.c:937 +#: file.c:964 msgid "# Implicit rule search has been done." -msgstr "# A pesquisa por regra implcita foi concluida." +msgstr "# Pesquisa por regra implcita concluida." -#: file.c:938 +#: file.c:965 msgid "# Implicit rule search has not been done." -msgstr "# A pesquisa por regra implcita no foi concluida." +msgstr "# Pesquisa por regra implcita no 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 "# Derivao padro implcita/esttica: `%s'\n" -#: file.c:942 +#: file.c:969 msgid "# File is an intermediate prerequisite." msgstr "# O arquivo um pr-requisito intermedirio." -#: file.c:946 +#: file.c:973 msgid "# Also makes:" msgstr "# Tambm faz:" -#: file.c:952 +#: file.c:979 msgid "# Modification time never checked." msgstr "# O Perodo da modificao nunca foi verificado." -#: file.c:954 +#: file.c:981 msgid "# File does not exist." msgstr "# O Arquivo no 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 modificao %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 no foi atualizado." -#: file.c:968 -#, fuzzy +#: file.c:995 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Comandos em execuo (ISTO UMA FALHA)." -#: file.c:971 -#, fuzzy +#: file.c:998 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Comandos de dependncias em execuo (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 atualizao." -#: file.c:990 -msgid "# Invalid value in `update_status' member!" -msgstr "# Valor invlido 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 invlido 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 no numrico para a funo `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 funo `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 no numrico para a funo `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 no numrico para a funo `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 temporrio %s\n" -#: function.c:2150 +#: function.c:2151 #, fuzzy, c-format -msgid "insufficient number of arguments (%d) to function `%s'" -msgstr "O nmero de argumentos insuficiente (%d) para a funo `%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 funo `%s' no foi implementada nesta plataforma" +msgid "write: %s: %s" +msgstr "Erro de gravao: %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 nmero de argumentos insuficiente (%d) para a funo `%s' " + +#: function.c:2291 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "A funo `%s' no foi implementada nesta plataforma " + +#: function.c:2354 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" msgstr "Chamada no terminada para a funo `%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 opo `%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 nmero de argumentos insuficiente (%d) para a funo `%s' " + +#: function.c:2555 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%d) for function %s\n" +msgstr "O nmero de argumentos insuficiente (%d) para a funo `%s' " + +#: getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: a opo `%s' ambigua\n" + +#: getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opo `--%s' no 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 opo `%c%s' no 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 opo `%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 opo 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 opo desconhecida `%c%s'\n" -#: getopt.c:766 +#: getopt.c:764 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: a opo ilegal -- %c\n" -#: getopt.c:769 +#: getopt.c:767 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: a opo invlida -- %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 opo 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 opo `-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 opo `-W %s' no 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 "no foi possvel alocar %ld bytes para a tabela hash: memria cheia" +msgstr "no foi possvel alocar %lu bytes para a tabela hash: memria cheia" #: hash.c:280 #, c-format @@ -494,132 +559,156 @@ msgstr "Rehash=%d, " msgid "Collisions=%ld/%ld=%.0f%%" msgstr "Colises=%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 implcita 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 implcita de arquivo-membro para `%s'.\n" -#: implicit.c:317 +#: implicit.c:310 msgid "Avoiding implicit rule recursion.\n" msgstr "Evitando recurso em regra implcita.\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 padro para regra com `%.*s'.\n" -#: implicit.c:674 -#, c-format -msgid "Rejecting impossible rule prerequisite `%s'.\n" -msgstr "Rejeitando o 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 implcitos `%s'.\n" +#: implicit.c:698 +#, fuzzy, c-format +msgid "Rejecting impossible implicit prerequisite '%s'.\n" +msgstr "Rejeitando pr-requisitos implcitos `%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 o pr-requisito implcito `%s'.\n" +#: implicit.c:712 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Tentando pr-requisito implcito `%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 intermedirio `%s'.\n" -#: job.c:335 -#, fuzzy +#: job.c:361 msgid "Cannot create a temporary file\n" -msgstr "fwrite (arquivo temporrio)" +msgstr "No foi possvel criar um arquivos temporrio\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 temporrio: %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 temporrio: %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 execuo\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' no existe" -#: job.c:1802 +#: job.c:2005 #, fuzzy, c-format -msgid "Invoking builtin recipe to update target `%s'.\n" -msgstr "No necessrio reprocessar o alvo `%s'" +msgid "%s: update target '%s' due to: %s" +msgstr "%sSem regra para processar o alvo `%s', necessrio por `%s'%s" -#: job.c:1910 +#: job.c:2118 msgid "cannot enforce load limits on this operating system" msgstr "no pde forar os limites de carga neste sistema operacional" -#: job.c:1912 +#: job.c:2120 msgid "cannot enforce load limit: " msgstr "no pde forar 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: no possvel 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: no possvel duplicar stdout\n" + +#: job.c:2223 +#, fuzzy +msgid "no more file handles: could not duplicate stderr\n" +msgstr "sem manipuladores de arquivos: no possvel duplicar stdin\n" -#: job.c:2015 +#: job.c:2238 msgid "Could not restore stdin\n" -msgstr "" +msgstr "No possvel restaurar stdin\n" -#: job.c:2023 +#: job.c:2246 msgid "Could not restore stdout\n" -msgstr "" +msgstr "No possvel restaurar stdout\n" -#: job.c:2127 -#, fuzzy, c-format +#: job.c:2254 +#, fuzzy +msgid "Could not restore stderr\n" +msgstr "No possvel 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 no encontrado" -#: job.c:2228 +#: job.c:2463 #, c-format msgid "%s: Shell program not found" msgstr "%s: Interpretador de comandos no encontrado" -#: job.c:2237 +#: job.c:2472 msgid "spawnvpe: environment space might be exhausted" -msgstr "" +msgstr "spawnvpe: o espao 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 temporrio %s\n" -#: job.c:2963 +#: job.c:3148 +#, fuzzy +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contedo do arquivo de lote:%s\n" +"\t%s\n" + +#: job.c:3337 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" +"Contedo 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 invlido (!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) no so suportadas nesta plataforma." + +#: main.c:312 msgid "Options:\n" msgstr "Opes:\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 DIRETRIO, --directory= DIRETRIO\n" -" muda para o DIRETRIO antes de fazer algo.\n" +" -C DIRETRIO, --directory=DIRETRIO\n" +" Muda para o DIRETRIO antes de fazer algo.\n" -#: main.c:311 +#: main.c:320 msgid " -d Print lots of debugging information.\n" msgstr " -d Imprime muita informao de depurao.\n" -#: main.c:313 +#: main.c:322 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -" --debug[=OPES] Imprime vrios tipos de informaes de " +" --debug[=OPES] Imprime vrios tipos de informaes de " "depurao.\n" -#: main.c:315 +#: main.c:324 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -" -e,--envrionment-overrides\n" -" As variveis de ambiente sobrescrevem os " -"arquivos make.\n" +" -e, --environment-overrides\n" +" Assume os valores das variveis 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 declarao 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 DIRETRIO, --include-dir= DIRETRIO\n" -" Procura no DIRETRIO por arquivos make.\n" +" -I DIRETRIO, --include-dir=DIRETRIO\n" +" Pesquisa o DIRETRIO 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 vrias 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 no 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 "" " No inicia mltiplas 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 vnculo simblico " +"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 "" " No 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 no o " -"refaz.\n" +" -o ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n" +" Considera o ARQUIVO como muito antigo e no " +"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 cdigo de sada " -"informa se est atualizado.\n" +" -q, --question No executa os comandos; O cdigo 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 implcitas embutidas.\n" +msgstr " -r, --no-builtin-rules Desabilita as regras implcitas.\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 configuraes das varivies " +" -R, --no-builtin-variables Desabilita a configurao das variveis " "embutidas.\n" -#: main.c:353 -#, fuzzy +#: main.c:365 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet No 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 opo -k.\n" +" Desativa a opo -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 invs de " "reprocess-los.\n" -#: main.c:360 +#: main.c:372 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr " -d Imprime muita informao de depurao.\n" + +#: main.c:374 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Imprime o nmero de verso 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 diretrio 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 opo -w, mesmo que tenha sido " -"ativada implicitamente.\n" +" --no-print-directory Desativa a opo -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 varivel no definida for " "referenciada.\n" -#: main.c:564 +#: main.c:647 msgid "empty string invalid as file name" msgstr "Cadeia de caracteres vazia no vlida 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 "nvel de depurao 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: mltiplas opes --jobserver-fds" + +#: main.c:848 +#, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" -msgstr "%s: Interrupo/Exceo capturada (cdigo = 0x%x, endereo = 0x%x)\n" +msgstr "%s: Interrupo/Exceo capturada (cdigo = 0x%lx, endereo = 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" "No pde tratar o filtro de exceo chamado por %s\n" -"CdigoExceo = %x\n" -"SinalExceo = %x\n" -"EndereoExceo = %x\n" +"CdigoExceo = %lx\n" +"SinalExceo = %lx\n" +"EndereoExceo = 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 "Violao de acesso: operao de escrita no endereo %x\n" +msgstr "Violao de acesso: operao de escrita no endereo 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 "Violao de acesso: operao de leitura no endereo %x\n" +msgstr "Violao de acesso: operao de leitura no endereo 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: mltiplas opes --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' invlido 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 forado 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 indisponvel: usando -j1. Inclua `+' na regra pai." + +#: main.c:1752 msgid "Makefile from standard input specified twice." msgstr "Makefile na entrada padro especificado duas vezes." -#: main.c:1539 vmsjobs.c:500 +#: main.c:1790 vmsjobs.c:496 msgid "fopen (temporary file)" msgstr "fopen (arquivo temporrio)" -#: main.c:1545 +#: main.c:1796 msgid "fwrite (temporary file)" msgstr "fwrite (arquivo temporrio)" -#: main.c:1703 +#: main.c:1984 msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Tarefas paralelas (-j) no so 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: mltiplas opes --jobserver-fds" - -#: main.c:1727 -#, c-format -msgid "internal error: invalid --jobserver-fds string `%s'" -msgstr "erro interno: valor `%s' invlido 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 forado 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 indisponvel: usando -j1. Inclua `+' na regra pai." - -#: main.c:1777 +#: main.c:2019 msgid "creating jobs pipe" msgstr "criando canalizao de tarefas" -#: main.c:1792 +#: main.c:2039 msgid "init jobserver pipe" msgstr "inicializando a canalizao do jobserver" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." -msgstr "" +msgstr "Vnculos simblicos no so 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; no 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' includo no foi encontrado." +#: main.c:2270 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "Arquivo `%s' incluido no foi encontrado." -#: main.c:2018 -#, c-format -msgid "Makefile `%s' was not found" -msgstr "O arquivo `%s' no foi encontrado" +#: main.c:2275 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "O arquivo `%s' no foi encontrado." -#: main.c:2086 +#: main.c:2341 msgid "Couldn't change back to original directory." msgstr "No foi possvel voltar ao diretrio 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 temporrio): " -#: main.c:2247 +#: main.c:2495 msgid ".DEFAULT_GOAL contains more than one target" -msgstr "" +msgstr ". DEFAULT_GOAL contm 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 relgio est errado. Sua compilao pode ficar incompleta." -#: main.c:2470 +#: main.c:2718 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uso: %s [opes] [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,36 +1307,32 @@ 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 +#: main.c:2810 #, fuzzy, c-format -msgid "the `%s%s' option requires a non-empty string argument" -msgstr "a opo `-%c' requer um argumento inteiro positivo" +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "a opo `%s%s' requer um argumento no vazio" -#: 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 "a opo `-%c' requer um argumento inteiro positivo" -#: main.c:3054 -#, fuzzy, c-format +#: main.c:3253 +#, c-format msgid "%sBuilt for %s\n" -msgstr "" -"\n" -"Este programa foi compilado 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 foi compilado 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." @@ -1153,8 +1340,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 "" +"%sLicena GPLv3+: GNU GPL verso 3 ou posterior <http://gnu.org/licenses/gpl." +"html>\n" +"%sIsto um aplicativo livre: voc pode alter-lo e redistribui-lo " +"livremente.\n" +"%sNO H GARANTIAS, exceto o que for permitido por lei.\n" -#: main.c:3086 +#: main.c:3287 #, c-format msgid "" "\n" @@ -1163,7 +1355,7 @@ msgstr "" "\n" "# Banco de dados do Make, impresso em %s" -#: main.c:3096 +#: main.c:3297 #, c-format msgid "" "\n" @@ -1172,107 +1364,106 @@ msgstr "" "\n" "# Banco de dados do Make finalizado em %s\n" -#: main.c:3237 -#, fuzzy, c-format -msgid "%s: Entering an unknown directory\n" -msgstr "%s: Entrando em um diretrio desconhecido" - -#: main.c:3239 -#, fuzzy, c-format -msgid "%s: Leaving an unknown directory\n" -msgstr "%s: Saindo de um diretrio desconhecido" - -#: main.c:3242 -#, c-format -msgid "%s: Entering directory `%s'\n" -msgstr "%s: Entrando no diretrio `%s'\n" - -#: main.c:3245 -#, c-format -msgid "%s: Leaving directory `%s'\n" -msgstr "%s: Saindo do diretrio `%s'\n" - -#: main.c:3250 -#, fuzzy, c-format -msgid "%s[%u]: Entering an unknown directory\n" -msgstr "%s[%u]: Entrando em um diretrio desconhecido" - -#: main.c:3253 -#, fuzzy, c-format -msgid "%s[%u]: Leaving an unknown directory\n" -msgstr "%s[%u]: Saindo de um diretrio desconhecido" - -#: main.c:3257 -#, c-format -msgid "%s[%u]: Entering directory `%s'\n" -msgstr "%s[%u]: Entrando no diretrio `%s'\n" - -#: main.c:3260 -#, c-format -msgid "%s[%u]: Leaving directory `%s'\n" -msgstr "%s[%u]: Saindo do diretrio `%s'\n" - -#: misc.c:316 -msgid ". Stop.\n" -msgstr ". Pare.\n" - -#: misc.c:337 +#: misc.c:201 #, c-format msgid "Unknown error %d" msgstr "Erro desconhecido %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 "A memria virtual encheu" -#: misc.c:708 +#: misc.c:522 #, c-format msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" msgstr "%s: usurio %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 usurio" -#: 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 diretrio desconhecido\n" + +#: output.c:130 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Saindo de um diretrio desconhecido\n" + +#: output.c:133 #, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Entrando no diretrio `%s'\n" + +#: output.c:135 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Saindo do diretrio `%s'\n" + +#: output.c:139 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Entrando em um diretrio desconhecido\n" + +#: output.c:141 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Saindo de um diretrio desconhecido\n" + +#: output.c:144 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Entrando no diretrio `%s'\n" + +#: output.c:146 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Saindo do diretrio `%s'\n" + +#: output.c:515 +#, c-format msgid "write error: %s" -msgstr "Erro redirecionado para %s\n" +msgstr "Erro de gravao: %s" -#: misc.c:956 -#, fuzzy +#: output.c:517 msgid "write error" -msgstr "gravar jobserver" +msgstr "erro de gravao" + +#: 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 importncia)" msgid " (no ~ expansion)" msgstr " (sem expanso ~)" -#: 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 "sntaxe invlida 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 comeam 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 invs de 8 espaos?)" -#: read.c:1163 +#: read.c:1263 msgid "missing target pattern" msgstr "faltando o padro dos alvos" -#: read.c:1165 +#: read.c:1265 msgid "multiple target patterns" msgstr "mltiplos padres 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 "padro para o alvo no contm `%%'" -#: 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 varivel 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' no 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 "Definio de varivel por alvo mau formada" +msgstr "Definio de varivel para o alvo mau formada" -#: read.c:1855 +#: read.c:1951 msgid "prerequisites cannot be defined in recipes" -msgstr "" +msgstr "os pr-requisitos no podem ser definidos no comando" -#: read.c:1908 +#: read.c:2009 msgid "mixed implicit and static pattern rules" msgstr "As regras implcitas e de padro esttico misturadas" -#: read.c:1931 read.c:2112 +#: read.c:2032 read.c:2220 msgid "mixed implicit and normal rules" msgstr "As regras implcitas 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' no coincide com o padro" -#: 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', necessrio 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', necessrio 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 "Atualizao do arquivo `%s' concluda.\n" +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Atualizao 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' 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 "" "*** Aviso: arquivo .LOW_RESOLUTION_TIME `%s' tem uma etiqueta de tempo de " "alta resoluo" -#: 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 implcita 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 implcita 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 padres para `%s'.\n" -#: remake.c:535 remake.c:1057 +#: remake.c:535 remake.c:1067 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Dependncia circular %s <- %s abandonada." -#: remake.c:651 -#, c-format -msgid "Finished prerequisites of target file `%s'.\n" -msgstr "Pr-requisitos do alvo `%s' concludo.\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' esto 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' no 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' no 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 no 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 opo 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 necessrio 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' esto 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 padres 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' no um padro" -#: remote-cstms.c:125 +#: remote-cstms.c:122 #, c-format msgid "Customs won't export: %s\n" msgstr "Customizaes no exportadas: %s\n" -#: rule.c:499 +#: rule.c:496 msgid "" "\n" "# Implicit Rules" @@ -1624,7 +1830,7 @@ msgstr "" "\n" "# Regras implcitas." -#: rule.c:514 +#: rule.c:511 msgid "" "\n" "# No implicit rules." @@ -1632,7 +1838,7 @@ msgstr "" "\n" "# Faltam as regras implcitas." -#: rule.c:517 +#: rule.c:514 #, c-format msgid "" "\n" @@ -1641,242 +1847,261 @@ msgstr "" "\n" "# %u regras implcitas, %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 "Interrupo" -#: signame.c:100 +#: signame.c:98 msgid "Quit" msgstr "Sair" -#: signame.c:103 +#: signame.c:101 msgid "Illegal Instruction" msgstr "Instruo 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 "Exceo 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 segmentao" -#: signame.c:132 +#: signame.c:130 msgid "Bad system call" msgstr "Chamada de sistema invlida" -#: signame.c:135 +#: signame.c:133 msgid "Broken pipe" msgstr "Canalizao 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 usurio" -#: signame.c:147 +#: signame.c:145 msgid "User defined signal 2" msgstr "Sinal 2 definido pelo usurio" -#: 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 Eltrica" -#: 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 (sada 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 "Continuao" -#: signame.c:194 +#: signame.c:192 msgid "Urgent I/O condition" msgstr "Condio de E/S urgente" -#: signame.c:201 signame.c:210 +#: signame.c:199 signame.c:208 msgid "I/O possible" msgstr "Possvel 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 "Solicitao de informao" -#: signame.c:222 +#: signame.c:220 msgid "Floating point co-processor not available" msgstr "Co-processador aritmtico indisponvel" -#: 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 "automtico" + +#: variable.c:1610 msgid "default" msgstr "padro" -#: 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 "automtico" - -#: 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 varivies:\n" -#: variable.c:1623 +#: variable.c:1710 msgid "" "\n" "# Variables\n" @@ -1884,8 +2109,7 @@ msgstr "" "\n" "# Variveis\n" -#: variable.c:1627 -#, fuzzy +#: variable.c:1714 msgid "" "\n" "# Pattern-specific Variable Values" @@ -1893,7 +2117,7 @@ msgstr "" "\n" "# Valores da varivel de padres especficos" -#: variable.c:1641 +#: variable.c:1728 msgid "" "\n" "# No pattern-specific variable values." @@ -1901,7 +2125,7 @@ msgstr "" "\n" "# Faltam valores para varivel de padres especficos" -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" @@ -1910,92 +2134,92 @@ msgstr "" "\n" "# %u valores para varivel de padres especficos" -#: 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: varivel 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: Redireo 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 "Sada 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 "Sada 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 invs de\n" -#: vmsjobs.c:712 +#: vmsjobs.c:706 #, c-format msgid "Error spawning, %d\n" msgstr "Erro de execuo, %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 genrico (varivel `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 genrico (varivel `VPATH'):\n" "# " -#~ msgid "Syntax error, still inside '\"'\n" -#~ msgstr "Erro de sintaxe dentro de '\"'\n" +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valor invlido 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 "No especifique -j ou --jobs se o sh.exe no estiver disponvel." +#~ 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 "" #~ "%sFUNO 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' invlida" +#~ 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 "No especifique -j ou --jobs se o sh.exe no estiver disponvel." + +#~ 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 padro vazio" +#~ msgstr "O alvo `%s' deixou pre-requisito padro vazio" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Nenhum arquivo." Binary files differ@@ -5,125 +5,131 @@ # # 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 "недостаточно аргументов (всего %d) функции `%s'" +msgid "Function name too long: %s\n" +msgstr "Слишком длинное имя функции: %s\n" -#: function.c:2162 +#: function.c:2552 #, c-format -msgid "unimplemented on this platform: function `%s'" -msgstr "не реализовано на этой платформе: функция `%s'" +msgid "Invalid minimum argument count (%d) for function %s\n" +msgstr "Некорректное минимальное число аргументов (всего %d) функции %s\n" -#: function.c:2212 +#: function.c:2555 #, c-format -msgid "unterminated call to function `%s': missing `%c'" -msgstr "незавершённый вызов функции `%s': пропущено `%c'" +msgid "Invalid maximum argument count (%d) for function %s\n" +msgstr "Некорректное максимальное число аргументов (всего %d) функции %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 "неизвестный способ задания уровня отладки `%s'" +msgid "unknown output-sync type '%s'" +msgstr "неизвестный тип 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; режим сервера " +"заданий запрещён" -#: 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 "создаю канал задач" +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 "Символические ссылки не поддерживаются: отменяется ключ -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: Вход в каталог `%s'\n" +msgid "%s: Entering directory '%s'\n" +msgstr "%s: вход в каталог «%s»\n" -#: main.c:3245 +#: output.c:135 #, c-format -msgid "%s: Leaving directory `%s'\n" -msgstr "%s: Выход из каталога `%s'\n" +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" +msgstr "%s[%u]: вход в неизвестный каталог\n" -#: main.c:3253 +#: output.c:141 #, c-format msgid "%s[%u]: Leaving an unknown directory\n" -msgstr "%s[%u]: Выход из неизвестного каталога\n" +msgstr "%s[%u]: выход из неизвестного каталога\n" -#: main.c:3257 +#: output.c:144 #, c-format -msgid "%s[%u]: Entering directory `%s'\n" -msgstr "%s[%u]: Вход в каталог `%s'\n" +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: вход в каталог «%s»\n" -#: main.c:3260 +#: output.c:146 #, c-format -msgid "%s[%u]: Leaving directory `%s'\n" -msgstr "%s[%u]: Выход из каталога `%s'\n" +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),\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 "пропущена `endif'" +#: read.c:1391 +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" -msgstr "излишний текст после директивы `define'" +#: 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 "отсутствует «endif», незавершённая «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 содержит " -"метку времени с высокой точностью" +"*** Предупреждение: у файла «%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 "Предупреждение: Время изменения файла `%s' находится в будущем" +msgid "Warning: File '%s' has modification time in the future" +msgstr "Предупреждение: время изменения файла «%s» находится в будущем" -#: remake.c:1370 +#: remake.c:1385 #, c-format -msgid "Warning: File `%s' has modification time %s s in the future" -msgstr "Предупреждение: Время изменения файла `%s' находится в будущем (%s)" +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 "Элемент .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 "задан ключ -e" +msgstr "окружение с -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" @@ -1,123 +1,131 @@ # 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 "frsk att anvnda en funktion som inte stds: \"%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 tillgngligt 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 ngot 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 frn 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\" fr 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 utfra" +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 " (frn \"%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 " omjligheter" +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 " omjligheter 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\" hnvisar till sig sjlv (s smningom)" +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 fr 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 fr filen \"%s\" hittades genom skning 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 frn kommandon fr \"%s\" till frmn fr dem som gller " -"\"%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 frn 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 frn 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 vergngsfilen \"%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 vergngsfiler...\n" +msgstr "Tar bort mellanfiler …\n" -#: file.c:803 +#: file.c:808 #, c-format msgid "%s: Timestamp out of range; substituting %s" -msgstr "%s: Tidsvrde utanfr grnser; erstter 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 ml:" +msgstr "# Inte ett mål:" -#: file.c:929 +#: file.c:954 msgid "# Precious file (prerequisite of .PRECIOUS)." -msgstr "# Vrdefull fil (ndvndig fr .PRECIOUS)." +msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." -#: file.c:931 +#: file.c:956 msgid "# Phony target (prerequisite of .PHONY)." -msgstr "# Ltsasml (ndvndig fr .PHONY)." +msgstr "# Låtsasmål (nödvändig för .PHONY)." -#: file.c:933 -#, fuzzy +#: file.c:958 msgid "# Command line target." -msgstr "# Kommandoradsml." +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 regelskning har genomfrts." +msgstr "# Implicit regelsökning har genomförts." -#: file.c:938 +#: file.c:965 msgid "# Implicit rule search has not been done." -msgstr "# Implicit regelskning har inte genomfrts." +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 mnsterstam: \"%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 vergende 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 "# Kommandokrning pgr (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 krs (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 "# Behver 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 vrde i medlem av \"update_status\"!" - -#: file.c:997 -msgid "# Invalid value in `command_state' member!" -msgstr "# Ogiltigt vrde 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 fr filhashtabell:\n" +"# statistik för filhashtabell:\n" "# " -#: function.c:758 -msgid "non-numeric first argument to `word' function" -msgstr "icke-numeriskt frsta 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 frsta argumentet till funktionen \"word\" mste vara strre 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 frsta 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 "Stdar bort tillfllig omgngsfil %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 "otillrckligt 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\" krver 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: oknd 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: oknd 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: otillten 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 krver 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 fr 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 fr \"%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 fr 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 "Prvar mnsterregel 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 omjliga 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 omjliga 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 "Prvar 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 "Prvar 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 ndvndiga \"%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 vergngsfilen \"%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 temporrfil\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 "*** Invntar 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 " (fjrr)" +msgstr " (fjärr)" -#: job.c:758 -#, fuzzy, c-format +#: job.c:829 +#, c-format msgid "Reaping losing child %p PID %s %s\n" -msgstr "Inhstar 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 "Inhstar 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 "Stdar bort tillfllig omgngsfil %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 frn 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 fr 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" -"Rknade 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 "Fr 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 "Erhll symbol fr 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 "lser frn 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 "Mlet \"%s\" behver 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 upprtthlla lastbegrnsningar 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 upprtthlla lastbegrnsning: " +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 terstlla 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 terstlla 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 inhstade barnprocessen pid %ld, invntar 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: miljutrymmet 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 tillfllig omgngsfil %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 kompatibilitetsskl.\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 ml.\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 ngot grs.\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 felskningsinformation.\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 " -"felskningsinformation.\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" -" Miljvariabler sidostter 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" -" Anvnd 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" -" Genomsk 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] Tillt N samtidiga jobb; ondligt mnga 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 Fortstt ven om vissa ml 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" -" Pbrja 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 Anvnd den senaste av mtiderna fr symboliska " -"lnkar eller ml.\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" -" Kr 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 Kr inga kommandon; slutstatus visar " -"frskheten.\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 " -"variabelinstllningarna.\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" -" Stng 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 ml i stllet fr 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 Stng av -w, ven om det r implicit " -"pslaget.\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 anvndning 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 strng 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 "oknd felskningsniv \"%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 fngat (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 frn 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 "tkomstfrseelse: 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 "tkomstfrseelse: lsinstruktion 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-skvgen 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 "frdig med sleep(30). Fortstter.\n" - -#: main.c:1501 -msgid "Makefile from standard input specified twice." -msgstr "Makefil frn 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 (temporrfil)" - -#: main.c:1545 -msgid "fwrite (temporary file)" -msgstr "fwrite (temporrfil)" - -#: main.c:1703 -msgid "Parallel jobs (-j) are not supported on this platform." -msgstr "Parallella jobb (-j) stds inte p denna plattform." - -#: main.c:1704 -msgid "Resetting to single job (-j1) mode." -msgstr "terstller till enkeljobbslge (-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\"-strng \"%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 jobbserverlge." +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 otillgnglig: anvnder -j1. Lgg till \"+\" i " -"frldraregeln." +"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 "iordningstller ledning till jobbserver" +msgstr "iordningställer ledning till jobbserver" -#: main.c:1812 +#: main.c:2064 msgid "Symbolic links not supported: disabling -L." -msgstr "Symboliska lnkar stds 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 "Utfr p nytt[%u]:" +msgstr "Utför på nytt[%u]:" -#: main.c:2215 +#: main.c:2463 msgid "unlink (temporary file): " -msgstr "avlnka (temporrfil): " +msgstr "avlänka (temporärfil): " -#: main.c:2247 +#: main.c:2495 msgid ".DEFAULT_GOAL contains more than one target" -msgstr ".DEFAULT_GOAL innehller fler n ett ml" +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 ml 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 ml" +msgstr "Inga mål" -#: main.c:2277 +#: main.c:2525 msgid "Updating goal targets....\n" -msgstr "Uppdaterar slutml...\n" +msgstr "Uppdaterar slutmål...\n" -#: main.c:2306 +#: main.c:2550 msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -"varning: Klockfrskjutning upptckt. Bygget kan ha blivit ofullstndigt." +"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 "Anvndning: %s [flaggor] [ml] ...\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 fr %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 fr %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 "" -"Anml fel till <bug-make@gnu.org>.\n" -"Skicka synpunkter p versttningen 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\" krver ett strngargument 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\" krver 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 fr %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 fr %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" -"# Frdigstllde 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: Gr till en oknd 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: Lmnar en oknd 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: Gr 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: Lmnar 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]: Gr till en oknd 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]: Lmnar en oknd 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]: Gr 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]: Lmnar 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 "Oknt 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 uttmt" - -#: misc.c:708 -#, c-format -msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" -msgstr "%s: anvndare %lu (verklig %lu), grupp %lu (verklig %lu)\n" - -#: misc.c:729 -msgid "Initialized access" -msgstr "tkomst inledd" - -#: misc.c:808 -msgid "User access" -msgstr "Anvndartkomst" - -#: misc.c:856 -msgid "Make access" -msgstr "Make-tkomst" - -#: misc.c:890 -msgid "Child access" -msgstr "Barntkomst" - -#: 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 "Lser makefiler...\n" +msgstr "Läser makefiler...\n" #: read.c:333 #, c-format -msgid "Reading makefile `%s'" -msgstr "Lser makefil \"%s\"" +msgid "Reading makefile '%s'" +msgstr "Läser makefilen ”%s”" #: read.c:335 #, c-format msgid " (no default goal)" -msgstr " (inget standardml)" +msgstr " (inget standardmål)" #: read.c:337 #, c-format msgid " (search path)" -msgstr " (skvg)" +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 fre frsta mlet" +msgstr "recept inleds före första målet" -#: read.c:940 -#, fuzzy +#: read.c:1036 msgid "missing rule before recipe" -msgstr "regel saknas fre 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 stllet fr 8 mellanslag?)" +msgstr " (var avsikten TAB i stället för 8 mellanslag?)" -#: read.c:1163 +#: read.c:1263 msgid "missing target pattern" -msgstr "mlmnster saknas" +msgstr "målmönster saknas" -#: read.c:1165 +#: read.c:1265 msgid "multiple target patterns" -msgstr "flera mlmnster" +msgstr "flera målmönster" -#: read.c:1169 +#: read.c:1269 #, c-format -msgid "target pattern contains no `%%'" -msgstr "mlmnstret innehller 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 "verfldig 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 "verfldig 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 "verfldig 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 "verfldigt \"%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 mlberoende 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 mnsterregler" +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 "mlet \"%s\" motsvarar inte mlmnstret" +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 "mlfilen \"%s\" har bde 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 "mlet \"%s\" anges flera gnger 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: sidostter kommandon fr mlet \"%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 frn gamla kommandon fr mlet \"%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 upptckt, bortser frn 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 behver gras fr \"%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 frsk." +msgid "'%s' is up to date." +msgstr "”%s” är aktuell." -#: remake.c:306 +#: remake.c:305 #, c-format -msgid "Pruning file `%s'.\n" -msgstr "Beskr 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 fr att skapa mlet \"%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 fr att skapa mlet \"%s\", som behvs 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 "vervger mlfilen \"%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 vervgts.\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 "Slutfrde 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 hgupplst tidsstmpel" +"*** 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 fr \"%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 fr \"%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 "Anvnder standardkommandon fr \"%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 cirkulra beroendet %s <- %s slpptes." +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 "Frdigstllde de ndvndiga frutsttningarna fr mlfilen \"%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 ndvndiga frutsttningarna fr \"%s\" hller 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 mlfilen \"%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 "Mlet \"%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 ndvndiga frutsttningen \"%s\" fr mlet \"%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 ndvndiga frutsttningen \"%s\" fr mlet \"%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 ndvndiga frutsttningen \"%s\" r nyare n mlet \"%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 ndvndiga frutsttningen \"%s\" r ldre n mlet \"%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 "Mlet \"%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 ndvndiga frutsttningar fr \"%s\" har frndrats.\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 "Mlet \"%s\" behver 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 "; anvnder 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 "Mste terskapa mlet \"%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 frn 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 fr \"%s\" krs.\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 mlfilen \"%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 "Mlfilen \"%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 "Mlfilen \"%s\" behver 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 "Anvnder standardkommandon fr \"%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 ngot mnster" +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 "oknd 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 "Otillten instruktion" +msgstr "Otillåten instruktion" -#: signame.c:106 +#: signame.c:104 msgid "Trace/breakpoint trap" -msgstr "Sprningsflla" +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-flla" +msgstr "IO-fälla" -#: signame.c:117 +#: signame.c:115 msgid "EMT trap" -msgstr "Emulatorflla" +msgstr "Emulatorfälla" -#: signame.c:120 +#: signame.c:118 msgid "Floating point exception" msgstr "Flyttalsundantag" -#: signame.c:123 +#: signame.c:121 msgid "Killed" -msgstr "Ddad" +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 "Anvndarsignal 1" +msgstr "Användarsignal 1" -#: signame.c:147 +#: signame.c:145 msgid "User defined signal 2" -msgstr "Anvndarsignal 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 "Strmavbrott" +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-lsning)" +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-tidsgrns verskreds" +msgstr "CPU-tidsgräns överskreds" -#: signame.c:176 +#: signame.c:174 msgid "File size limit exceeded" -msgstr "Filstorleksgrns verskreds" +msgstr "Filstorleksgräns överskreds" -#: signame.c:179 +#: signame.c:177 msgid "Virtual timer expired" -msgstr "Virtuellt tidur lpte ut" +msgstr "Virtuellt tidur löpte ut" -#: signame.c:182 +#: signame.c:180 msgid "Profiling timer expired" -msgstr "Profileringstidur lpte ut" +msgstr "Profileringstidur löpte ut" -#: signame.c:188 +#: signame.c:186 msgid "Window changed" -msgstr "Fnster 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 "Brdskande I/O-lge" +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-tillflle" +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 "Informationsbegran" +msgstr "Informationsbegäran" -#: signame.c:222 +#: signame.c:220 msgid "Floating point co-processor not available" -msgstr "Flyttalsprocessor inte tillgnglig" +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 strngar 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 fr 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 " (frn \"%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 fr variabelmngd-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" -"# Mnsterspecifika variabelvrden" +"# Mönsterspecifika variabelvärden" -#: variable.c:1641 +#: variable.c:1728 msgid "" "\n" "# No pattern-specific variable values." msgstr "" "\n" -"# Inga mnsterspecifika variabelvrden." +"# Inga mönsterspecifika variabelvärden." -#: variable.c:1643 +#: variable.c:1730 #, c-format msgid "" "\n" "# %u pattern-specific variable values" msgstr "" "\n" -"# %u mnsterspecifika variabelvrden" +"# %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 behver terstllas frn 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 "Oknt 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 "Utfr %s i stllet\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-skvgar\n" +"# VPATH-sökvägar\n" -#: vpath.c:603 -msgid "# No `vpath' search paths." -msgstr "# Inga \"vpath\"-skvgar." +#: 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\"-skvgar.\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 allmn skvg (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" -"# Allmn skvg (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 kllkoden fr kopieringsvillkor.\n" -#~ "%sINGA garantier lmnas, inte ens vid KP eller FR NGOT SPECIFIKT\n" -#~ "%sNDAML.\n" - -#~ msgid "extraneous `endef'" -#~ msgstr "verfldigt \"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 lmnar 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 hashbehllare.\n" - -#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" -#~ msgstr "" -#~ "# i genomsnitt %.3f filer per behllare, hgst %u filer i samma " -#~ "behllare.\n" - -#~ msgid "Syntax error, still inside '\"'\n" -#~ msgstr "Syntaxfel, r fortfarande innanfr '\"'\n" - -#~ msgid "Got a SIGCHLD; %u unreaped children.\n" -#~ msgstr "Erhll SIGCHLD; %u kvarvarande barnprocesser.\n" - -#~ msgid "DIRECTORY" -#~ msgstr "KATALOG" - -#~ msgid "Change to DIRECTORY before doing anything" -#~ msgstr "Byt till KATALOG frst" - -#~ msgid "FLAGS" -#~ msgstr "FLAGGOR" - -#~ msgid "Suspend process to allow a debugger to attach" -#~ msgstr "Suspendera processen fr att mjliggra anslutning av felskare" - -#~ msgid "Environment variables override makefiles" -#~ msgstr "Miljvariabler sidostter makefiler" - -#~ msgid "FILE" -#~ msgstr "FIL" - -#~ msgid "Read FILE as a makefile" -#~ msgstr "Anvnd FIL som makefil" - -#~ msgid "Search DIRECTORY for included makefiles" -#~ msgstr "Genomsk KATALOG efter inkluderade makefiler" - -#~ msgid "Don't start multiple jobs unless load is below N" -#~ msgstr "Pbrja flera jobb endast om lasten understiger N" - -#~ msgid "Don't actually run any commands; just print them" -#~ msgstr "Kr 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 "Stnger 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 tillgnglig." - -#~ msgid "Resetting make for single job mode." -#~ msgstr "terstller make fr enkeljobbslge." - -#~ msgid "Entering" -#~ msgstr "Gr till" - -#~ msgid "Leaving" -#~ msgstr "Lmnar" - -#~ msgid "no file name for `%sinclude'" -#~ msgstr "inget filnamn till \"%sinclude\"" - -#~ msgid "target `%s' leaves prerequisite pattern empty" -#~ msgstr "mlet \"%s\" har ett tomt beroendemnster" - -#~ 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 behllare, hgst %u i samma behllare.\n" - -#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" -#~ msgstr "" -#~ "# i genomsnitt %d.%d variabler per behllare, hgst %u i samma " -#~ "behllare.\n" Binary files differ@@ -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" @@ -1,894 +1,1097 @@ -# 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" +"поганий код відповіді для \"%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 (ключ %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" +msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): неможливо відкрити.\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 (пристрій %ld, івузол %ld): не вдалося відкрити.\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 (пристрій %d, івузол [%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 (пристрій %ld, івузол %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: параметр «%s» не є однозначним\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: додавання аргументів до параметра «--%s» не передбачено\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: додавання аргументів до параметра «%c%s» не передбачено\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: додавання аргументів до параметра «-W %s» не передбачено\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 "порожній рядок не може бути назвою файла" -#: 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 "пропущено правило до способу" -#: read.c:1027 +#: read.c:1123 #, c-format msgid "missing separator%s" -msgstr " Ħ%s" +msgstr "пропущений розділювач%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 "пропущений шаблон цілі" -#: 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 "пропущена \"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 "порожнє ім'я змінної" -#: 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 "пропущена \"endif\", незавершена \"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 "попередження: замінюємо спосіб для мети «%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 "попередження: ігноруємо застарілий спосіб для мети «%s»" -#: read.c:2392 +#: read.c:2530 msgid "warning: NUL character seen; rest of line ignored" -msgstr ": Ҧ NUL; դ ˦ " +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 -#, 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 "попередження: невизначена змінна \"%.*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»" Binary files differ@@ -1,123 +1,136 @@ # 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ị cụt)" +msgstr " (có lẽ tên bị 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 tại" -#: 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ị bỏ qua để 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 "Đạng đọc các tập tin tạo (makefile)...\n" +msgstr "Đọc makefile...\n" #: read.c:333 #, c-format -msgid "Reading makefile `%s'" -msgstr "Đạng đọc tập tin tạo (makefile) « %s »..." +msgid "Reading makefile '%s'" +msgstr "Đọc makefile “%s”" #: 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ước các lệnh" +msgstr "thiếu quy tắc trước 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 "Đang chạy các lệnh của « %s ».\n" +#: remake.c:819 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Đang chạy công thức của “%s”.\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 Đường dẫn tìm kiếm « vpath ».\n" +"# %u đường dẫn tìm kiếm “vpath”.\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." diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo Binary files differindex 61cffca..2046413 100644 --- a/po/zh_CN.gmo +++ b/po/zh_CN.gmo diff --git a/po/zh_CN.po b/po/zh_CN.po index 657264f..35a1dba 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,122 +2,128 @@ # 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" @@ -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))) -/* 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; } /* 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); } @@ -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) @@ -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); -/* 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) } /* 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; } -/* 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; } /* 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; } -/* 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; } /* 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); } -/* 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); diff --git a/remote-cstms.c b/remote-cstms.c index a0c5cb7..8d6c635 100644 --- a/remote-cstms.c +++ b/remote-cstms.c @@ -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; diff --git a/remote-stub.c b/remote-stub.c index e58b72c..45c3a7c 100644 --- a/remote-stub.c +++ b/remote-stub.c @@ -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" @@ -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, /* 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.")); @@ -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. */ @@ -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); @@ -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); } diff --git a/subproc.bat b/subproc.bat index e5a0528..9a90487 100644 --- a/subproc.bat +++ b/subproc.bat @@ -1,6 +1,5 @@ @echo off
-rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-rem 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1996-2013 Free Software Foundation, Inc.
rem This file is part of GNU Make.
rem
rem GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/tests/ChangeLog b/tests/ChangeLog index d036568..653c5a7 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -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 @@ -299,7 +650,7 @@ * 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> @@ -386,9 +737,9 @@ 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> @@ -459,7 +810,7 @@ 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> @@ -479,7 +830,7 @@ 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> @@ -1062,8 +1413,7 @@ ChangeLog file for the test suite created. -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 @@ -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): ------------------------------------------------------------------------------- -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 diff --git a/tests/README b/tests/README index 3860bdb..0663082 100644 --- a/tests/README +++ b/tests/README @@ -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 index 0000000..9e9b01b --- /dev/null +++ b/tests/guile.supp @@ -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 +} diff --git a/tests/mkshadow b/tests/mkshadow index d41b40e..5e0a402 100755 --- a/tests/mkshadow +++ b/tests/mkshadow @@ -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 diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl index 2c8c08b..54c2892 100755..100644 --- a/tests/run_make_tests.pl +++ b/tests/run_make_tests.pl @@ -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 @@ -29,13 +27,17 @@ # 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 index 0000000..a7ec881 --- /dev/null +++ b/tests/scripts/features/archives @@ -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; diff --git a/tests/scripts/features/default_names b/tests/scripts/features/default_names index e53127e..2e83880 100644 --- a/tests/scripts/features/default_names +++ b/tests/scripts/features/default_names @@ -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; diff --git a/tests/scripts/features/double_colon b/tests/scripts/features/double_colon index cad605d..1097775 100644 --- a/tests/scripts/features/double_colon +++ b/tests/scripts/features/double_colon @@ -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; diff --git a/tests/scripts/features/errors b/tests/scripts/features/errors index e372fe0..c0339cb 100644 --- a/tests/scripts/features/errors +++ b/tests/scripts/features/errors @@ -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); diff --git a/tests/scripts/features/escape b/tests/scripts/features/escape index 97a2994..bf069df 100644 --- a/tests/scripts/features/escape +++ b/tests/scripts/features/escape @@ -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; diff --git a/tests/scripts/features/include b/tests/scripts/features/include index ba8908c..ee014bd 100644 --- a/tests/scripts/features/include +++ b/tests/scripts/features/include @@ -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 index 0000000..cedd4b3 --- /dev/null +++ b/tests/scripts/features/jobserver @@ -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 index 0000000..2e3f263 --- /dev/null +++ b/tests/scripts/features/load @@ -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 index 0000000..6d3b03f --- /dev/null +++ b/tests/scripts/features/loadapi @@ -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; diff --git a/tests/scripts/features/mult_rules b/tests/scripts/features/mult_rules index 6f120f1..e706e17 100644 --- a/tests/scripts/features/mult_rules +++ b/tests/scripts/features/mult_rules @@ -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 index 0000000..75d7e81 --- /dev/null +++ b/tests/scripts/features/output-sync @@ -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; diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism index cc0f84f..c702c26 100644 --- a/tests/scripts/features/parallelism +++ b/tests/scripts/features/parallelism @@ -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. diff --git a/tests/scripts/features/patspecific_vars b/tests/scripts/features/patspecific_vars index 8ca228d..a530bba 100644 --- a/tests/scripts/features/patspecific_vars +++ b/tests/scripts/features/patspecific_vars @@ -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 diff --git a/tests/scripts/features/patternrules b/tests/scripts/features/patternrules index eebe7c0..0ff49a7 100644 --- a/tests/scripts/features/patternrules +++ b/tests/scripts/features/patternrules @@ -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); diff --git a/tests/scripts/features/recursion b/tests/scripts/features/recursion index a6b8f90..fd5e351 100644 --- a/tests/scripts/features/recursion +++ b/tests/scripts/features/recursion @@ -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. diff --git a/tests/scripts/features/reinvoke b/tests/scripts/features/reinvoke index 9952ced..eb1a349 100644 --- a/tests/scripts/features/reinvoke +++ b/tests/scripts/features/reinvoke @@ -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 index 0000000..2d377e7 --- /dev/null +++ b/tests/scripts/features/rule_glob @@ -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; diff --git a/tests/scripts/features/se_explicit b/tests/scripts/features/se_explicit index 79e0a36..790017a 100644 --- a/tests/scripts/features/se_explicit +++ b/tests/scripts/features/se_explicit @@ -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; diff --git a/tests/scripts/features/se_implicit b/tests/scripts/features/se_implicit index e9acb2f..ec09d8d 100644 --- a/tests/scripts/features/se_implicit +++ b/tests/scripts/features/se_implicit @@ -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 index 0000000..686e4bd --- /dev/null +++ b/tests/scripts/features/shell_assignment @@ -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; diff --git a/tests/scripts/features/targetvars b/tests/scripts/features/targetvars index ddd6c1f..a9b8dbe 100644 --- a/tests/scripts/features/targetvars +++ b/tests/scripts/features/targetvars @@ -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 index 0000000..54bc471 --- /dev/null +++ b/tests/scripts/features/utf8 @@ -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; diff --git a/tests/scripts/features/varnesting b/tests/scripts/features/varnesting index 15d5071..d8f3ffb 100644 --- a/tests/scripts/features/varnesting +++ b/tests/scripts/features/varnesting @@ -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; diff --git a/tests/scripts/features/vpath b/tests/scripts/features/vpath index a3aebd9..ec24165 100644 --- a/tests/scripts/features/vpath +++ b/tests/scripts/features/vpath @@ -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'); diff --git a/tests/scripts/features/vpath3 b/tests/scripts/features/vpath3 index 978c5ee..c6ede28 100644 --- a/tests/scripts/features/vpath3 +++ b/tests/scripts/features/vpath3 @@ -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; diff --git a/tests/scripts/features/vpathgpath b/tests/scripts/features/vpathgpath index f7683f5..5e6217b 100644 --- a/tests/scripts/features/vpathgpath +++ b/tests/scripts/features/vpathgpath @@ -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)); diff --git a/tests/scripts/features/vpathplus b/tests/scripts/features/vpathplus index a37fbed..361788c 100644 --- a/tests/scripts/features/vpathplus +++ b/tests/scripts/features/vpathplus @@ -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 "; diff --git a/tests/scripts/functions/call b/tests/scripts/functions/call index f3c5470..9db9da7 100644 --- a/tests/scripts/functions/call +++ b/tests/scripts/functions/call @@ -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 index 0000000..9a4cd02 --- /dev/null +++ b/tests/scripts/functions/file @@ -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; diff --git a/tests/scripts/functions/filter-out b/tests/scripts/functions/filter-out index 6c8b27a..1fe4819 100644 --- a/tests/scripts/functions/filter-out +++ b/tests/scripts/functions/filter-out @@ -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; diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach index 82e99d7..4d1a11d 100644 --- a/tests/scripts/functions/foreach +++ b/tests/scripts/functions/foreach @@ -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 index 0000000..c63bec9 --- /dev/null +++ b/tests/scripts/functions/guile @@ -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; diff --git a/tests/scripts/functions/sort b/tests/scripts/functions/sort index d472102..b558910 100644 --- a/tests/scripts/functions/sort +++ b/tests/scripts/functions/sort @@ -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; - - - - - - diff --git a/tests/scripts/functions/wildcard b/tests/scripts/functions/wildcard index 2841f5d..bcd84ad 100644 --- a/tests/scripts/functions/wildcard +++ b/tests/scripts/functions/wildcard @@ -88,4 +88,16 @@ all: ; @echo $(wildcard xz--y*.7) !, '', "\n"); +# TEST #5: wildcard used to verify file existence + +touch('xxx.yyy'); + +run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, + '', "file=xxx.yyy\n"); + +unlink('xxx.yyy'); + +run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, + '', "file=\n"); + 1; diff --git a/tests/scripts/functions/word b/tests/scripts/functions/word index 34527ea..4dcc940 100644 --- a/tests/scripts/functions/word +++ b/tests/scripts/functions/word @@ -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 index 0000000..4fc3f63 --- /dev/null +++ b/tests/scripts/misc/bs-nl @@ -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 index 0000000..6580e51 --- /dev/null +++ b/tests/scripts/misc/fopen-fail @@ -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; diff --git a/tests/scripts/misc/general3 b/tests/scripts/misc/general3 index b3142c2..8ad0f8e 100644 --- a/tests/scripts/misc/general3 +++ b/tests/scripts/misc/general3 @@ -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 diff --git a/tests/scripts/options/dash-B b/tests/scripts/options/dash-B index e36842e..9c708b7 100644 --- a/tests/scripts/options/dash-B +++ b/tests/scripts/options/dash-B @@ -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 diff --git a/tests/scripts/options/dash-C b/tests/scripts/options/dash-C index 5864ffd..42d0a8b 100644 --- a/tests/scripts/options/dash-C +++ b/tests/scripts/options/dash-C @@ -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)); diff --git a/tests/scripts/options/dash-I b/tests/scripts/options/dash-I index 8dc5d9b..d47a8d8 100644 --- a/tests/scripts/options/dash-I +++ b/tests/scripts/options/dash-I @@ -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)); diff --git a/tests/scripts/options/dash-W b/tests/scripts/options/dash-W index d3fde87..20b9f74 100644 --- a/tests/scripts/options/dash-W +++ b/tests/scripts/options/dash-W @@ -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 diff --git a/tests/scripts/options/dash-k b/tests/scripts/options/dash-k index d87a786..e784e0d 100644 --- a/tests/scripts/options/dash-k +++ b/tests/scripts/options/dash-k @@ -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); diff --git a/tests/scripts/options/dash-n b/tests/scripts/options/dash-n index de19f42..dfed419 100644 --- a/tests/scripts/options/dash-n +++ b/tests/scripts/options/dash-n @@ -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; diff --git a/tests/scripts/options/eval b/tests/scripts/options/eval index 06a035c..0f82409 100644 --- a/tests/scripts/options/eval +++ b/tests/scripts/options/eval @@ -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 index 0000000..a05bbee --- /dev/null +++ b/tests/scripts/options/print-directory @@ -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; diff --git a/tests/scripts/options/symlinks b/tests/scripts/options/symlinks index 40d2564..a1bfce0 100644 --- a/tests/scripts/options/symlinks +++ b/tests/scripts/options/symlinks @@ -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'); diff --git a/tests/scripts/options/warn-undefined-variables b/tests/scripts/options/warn-undefined-variables index 34bfaea..ce15507 100644 --- a/tests/scripts/options/warn-undefined-variables +++ b/tests/scripts/options/warn-undefined-variables @@ -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; diff --git a/tests/scripts/targets/DEFAULT b/tests/scripts/targets/DEFAULT index 0cabde9..f3d5148 100644 --- a/tests/scripts/targets/DEFAULT +++ b/tests/scripts/targets/DEFAULT @@ -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 diff --git a/tests/scripts/targets/INTERMEDIATE b/tests/scripts/targets/INTERMEDIATE index 4fdd7a2..2b3021b 100644 --- a/tests/scripts/targets/INTERMEDIATE +++ b/tests/scripts/targets/INTERMEDIATE @@ -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 diff --git a/tests/scripts/targets/ONESHELL b/tests/scripts/targets/ONESHELL index 997423f..87713da 100644 --- a/tests/scripts/targets/ONESHELL +++ b/tests/scripts/targets/ONESHELL @@ -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! diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX index 9c30e18..a24e3bc 100644 --- a/tests/scripts/targets/POSIX +++ b/tests/scripts/targets/POSIX @@ -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; diff --git a/tests/scripts/targets/SECONDARY b/tests/scripts/targets/SECONDARY index c954ee9..447c275 100644 --- a/tests/scripts/targets/SECONDARY +++ b/tests/scripts/targets/SECONDARY @@ -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'); diff --git a/tests/scripts/variables/DEFAULT_GOAL b/tests/scripts/variables/DEFAULT_GOAL index 1c06506..8188ce7 100644 --- a/tests/scripts/variables/DEFAULT_GOAL +++ b/tests/scripts/variables/DEFAULT_GOAL @@ -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 index 0000000..e9c0d55 --- /dev/null +++ b/tests/scripts/variables/GNUMAKEFLAGS @@ -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; diff --git a/tests/scripts/variables/LIBPATTERNS b/tests/scripts/variables/LIBPATTERNS index 826f2fa..9182954 100644 --- a/tests/scripts/variables/LIBPATTERNS +++ b/tests/scripts/variables/LIBPATTERNS @@ -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 diff --git a/tests/scripts/variables/MAKE b/tests/scripts/variables/MAKE index d1081da..dc62160 100644 --- a/tests/scripts/variables/MAKE +++ b/tests/scripts/variables/MAKE @@ -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"); diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS index 0b567e8..8a5d0f6 100644 --- a/tests/scripts/variables/MAKEFLAGS +++ b/tests/scripts/variables/MAKEFLAGS @@ -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; diff --git a/tests/scripts/variables/MAKE_RESTARTS b/tests/scripts/variables/MAKE_RESTARTS index 53ab738..ef8e368 100644 --- a/tests/scripts/variables/MAKE_RESTARTS +++ b/tests/scripts/variables/MAKE_RESTARTS @@ -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'); diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL index 7b7e7fe..1d01ba3 100644 --- a/tests/scripts/variables/SHELL +++ b/tests/scripts/variables/SHELL @@ -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; diff --git a/tests/scripts/variables/define b/tests/scripts/variables/define index f91519e..7324cbc 100644 --- a/tests/scripts/variables/define +++ b/tests/scripts/variables/define @@ -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. diff --git a/tests/scripts/variables/flavors b/tests/scripts/variables/flavors index 92feed6..ba133ea 100644 --- a/tests/scripts/variables/flavors +++ b/tests/scripts/variables/flavors @@ -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; diff --git a/tests/scripts/variables/private b/tests/scripts/variables/private index b4baf5f..8967ffb 100644 --- a/tests/scripts/variables/private +++ b/tests/scripts/variables/private @@ -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; diff --git a/tests/scripts/variables/special b/tests/scripts/variables/special index a1e15c2..4637b2a 100644 --- a/tests/scripts/variables/special +++ b/tests/scripts/variables/special @@ -53,7 +53,7 @@ all: # Test the .RECIPEPREFIX variable &run_make_test(' define foo -: foo-one \ +: foo-one\ foo-two : foo-three : foo-four diff --git a/tests/test_driver.pl b/tests/test_driver.pl index dec869d..2f83270 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -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); } } @@ -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) /* 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) /* 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; } } @@ -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; } +/* 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; +} + /* 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, /* 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; } /* 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 @@ -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)) @@ -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 @@ -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 */ /* diff --git a/vmsfunctions.c b/vmsfunctions.c index 5b867d9..1907e3a 100644 --- a/vmsfunctions.c +++ b/vmsfunctions.c @@ -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" @@ -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 @@ -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)) @@ -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 index 9ce06a8..0000000 --- a/w32/.deps/libw32_a-misc.Po +++ /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 index 9ce06a8..0000000 --- a/w32/.deps/libw32_a-pathstuff.Po +++ /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 index 9ce06a8..0000000 --- a/w32/.deps/libw32_a-sub_proc.Po +++ /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 index 9ce06a8..0000000 --- a/w32/.deps/libw32_a-w32err.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/w32/Makefile b/w32/Makefile deleted file mode 100644 index 8c95760..0000000 --- a/w32/Makefile +++ /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: diff --git a/w32/Makefile.am b/w32/Makefile.am index b8e2071..be757fe 100644 --- a/w32/Makefile.am +++ b/w32/Makefile.am @@ -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) diff --git a/w32/Makefile.in b/w32/Makefile.in index c5ea5b5..9683105 100644 --- a/w32/Makefile.in +++ b/w32/Makefile.in @@ -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 @@ -34,6 +33,23 @@ # 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: diff --git a/w32/compat/dirent.c b/w32/compat/dirent.c index 8d66e47..bc776dd 100644 --- a/w32/compat/dirent.c +++ b/w32/compat/dirent.c @@ -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 index 0000000..1d852f5 --- /dev/null +++ b/w32/compat/posixfcn.c @@ -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 */ + diff --git a/w32/include/dirent.h b/w32/include/dirent.h index 6e77c8b..e75a1b1 100644 --- a/w32/include/dirent.h +++ b/w32/include/dirent.h @@ -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 index 0000000..e920703 --- /dev/null +++ b/w32/include/dlfcn.h @@ -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 */ diff --git a/w32/include/pathstuff.h b/w32/include/pathstuff.h index e56e822..4e34a13 100644 --- a/w32/include/pathstuff.h +++ b/w32/include/pathstuff.h @@ -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 diff --git a/w32/include/sub_proc.h b/w32/include/sub_proc.h index 8166dce..c7d9fee 100644 --- a/w32/include/sub_proc.h +++ b/w32/include/sub_proc.h @@ -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 diff --git a/w32/include/w32err.h b/w32/include/w32err.h index 65369ba..938a119 100644 --- a/w32/include/w32err.h +++ b/w32/include/w32err.h @@ -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 */ diff --git a/w32/pathstuff.c b/w32/pathstuff.c index 1f8269e..0e33821 100644 --- a/w32/pathstuff.c +++ b/w32/pathstuff.c @@ -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" diff --git a/w32/subproc/NMakefile b/w32/subproc/NMakefile index 46c838c..5258fa3 100644 --- a/w32/subproc/NMakefile +++ b/w32/subproc/NMakefile @@ -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 diff --git a/w32/subproc/build.bat b/w32/subproc/build.bat index dee4072..ecd2ab7 100644 --- a/w32/subproc/build.bat +++ b/w32/subproc/build.bat @@ -1,24 +1,23 @@ -@if "%1" == "gcc" GoTo GCCBuild
+@if "%COMPILER%" == "gcc" GoTo GCCBuild
if not exist .\WinDebug\nul mkdir .\WinDebug
-cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c
+cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c misc.c
cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c sub_proc.c
-cl.exe /nologo /MT /W4 /GX /Z7 /YX /Od /I .. /I . /I ../include /D WIN32 /D WINDOWS32 /D _DEBUG /D _WINDOWS /FR.\WinDebug/ /Fp.\WinDebug/subproc.pch /Fo.\WinDebug/ /c w32err.c
+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
lib.exe /NOLOGO /OUT:.\WinDebug\subproc.lib .\WinDebug/misc.obj .\WinDebug/sub_proc.obj .\WinDebug/w32err.obj
if not exist .\WinRel\nul mkdir .\WinRel
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c misc.c
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /I ../.. /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c sub_proc.c
-cl.exe /nologo /MT /W4 /GX /YX /O2 /I ../include /D WIN32 /D WINDOWS32 /D NDEBUG /D _WINDOWS /FR.\WinRel/ /Fp.\WinRel/subproc.pch /Fo.\WinRel/ /c w32err.c
+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
+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
+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
lib.exe /NOLOGO /OUT:.\WinRel\subproc.lib .\WinRel/misc.obj .\WinRel/sub_proc.obj .\WinRel/w32err.obj
GoTo BuildEnd
:GCCBuild
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o
-gcc -mthreads -Wall -gdwarf-2 -g3 -O2 -I.. -I. -I../include -I../.. -DWINDOWS32 -c w32err.c -o ../../w32err.o
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I.. -I. -I../include -I../.. -DWINDOWS32 -c misc.c -o ../../w32_misc.o
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I.. -I. -I../include -I../.. -DWINDOWS32 -c sub_proc.c -o ../../sub_proc.o
+gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I.. -I. -I../include -I../.. -DWINDOWS32 -c w32err.c -o ../../w32err.o
:BuildEnd
@echo off
-rem Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-rem 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+rem Copyright (C) 1996-2013 Free Software Foundation, Inc.
rem This file is part of GNU Make.
rem
rem GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/w32/subproc/misc.c b/w32/subproc/misc.c index 6759c17..1e3f3a1 100644 --- a/w32/subproc/misc.c +++ b/w32/subproc/misc.c @@ -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 diff --git a/w32/subproc/proc.h b/w32/subproc/proc.h index 00b4bac..259a119 100644 --- a/w32/subproc/proc.h +++ b/w32/subproc/proc.h @@ -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 diff --git a/w32/subproc/sub_proc.c b/w32/subproc/sub_proc.c index dcb77bf..f790ca3 100644 --- a/w32/subproc/sub_proc.c +++ b/w32/subproc/sub_proc.c @@ -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); diff --git a/w32/subproc/w32err.c b/w32/subproc/w32err.c index 80d796e..facfabc 100644 --- a/w32/subproc/w32err.c +++ b/w32/subproc/w32err.c @@ -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 |